mothercup/hardware_design/开关机电路设计方案.md
2026-09-12 10:52:17 +08:00

7.0 KiB
Raw Blame History

软开关机电路设计方案(长按 2 秒开机 + 自动关机)

适用于 MotherCup 整机:电池供电,按键软开关,防误触开机,无操作自动断电。


1. 需求

项 要求
开机 长按按键 2 秒才开机(防误触,短按不开机)
关机 自动关机:无操作超时后自动断电(固件定时,超时值可配)
掉电后 整机彻底断电(VSYS=0),待机电流仅 P-MOS 漏电流(<1µA 级)

2. 电路设计

                        VBAT(电池 3.0~4.2V)
                         │
                         │ S
                 Q1 ─────┤   P-MOS (AO3401)
                         │ D
                         ├─────────────────────── VSYS(整机电源,去 LDO/升压/制冷片)
                         │ G(栅极节点 G)
                         │
        R2 100K ─────────┼────┬──────────────────┬─────────────────────┐
        (接 VBAT)         │    │                  │                     │
                          │    │D                 │D                    │
                          │   Q2(N-MOS 2N7002)   Q3(N-MOS 2N7002)      │
                          │    │G                 │G                    │
                          │    │                  │                     │
                          │    ├─ R3 10K ─┐       ├── C1 3.3µF ── GND   │
                          │    │          │       │                     │
                          │    ├─ R5 100K ┴ GND   ├── R4 10M ── GND      │
                          │    │    (PWR_HOLD 下拉,MCU 掉电时确保 Q2 关) │
                          │    │                  │                     │
                          │    └──── PWR_HOLD (MCU 输出)                │
                          │                               R1 1M         │
                          │                                │            │
                          │                               SW1 ──── VBAT │
                          │                                │            │
                          │                    (可选) KEY_DET (MCU 输入) │
                          │     Q2/Q3 源极 ── GND        Q2/Q3 源极 ── GND

说明:Q2 的漏极与 Q3 的漏极都并到栅极节点 G,任一路导通都能把 Q1 栅极拉低。


3. 工作原理

3.1 开机(长按 2 秒)

  1. 初始:PWR_HOLD 悬空(MCU 未上电),R5 把 Q2 栅极拉低 → Q2 关断; R2 把 Q1 栅极拉高到 VBAT → Q1 关断 → VSYS=0,整机断电。
  2. 按住 SW1:VBAT 经 SW1 → R1 给 C1 充电(τ = R1×C1 ≈ 3.3s)。
  3. 约 2.1 秒后 C1 电压达到 Q3(2N7002) 阈值(~2V) → Q3 导通 → 拉低 Q1 栅极 → Q1 导通 → VSYS 得电。
  4. MCU 上电启动,第一时间置 PWR_HOLD=高 → Q2 导通 → 持续拉低 Q1 栅极(锁存开机)。
  5. 松开 SW1:C1 经 R4 缓慢泄放,Q3 逐渐关断,但 Q2 已锁存,不影响供电。
  6. 若按的时间不足 2 秒就松手:C1 没充到阈值,Q3 不导通,Q1 不开机(防误触)。

3.2 自动关机

  1. MCU 运行中检测「无操作」超时(BLE 无指令 / 按键无动作,超时值可配,见 §6)。
  2. 超时到 → 置 PWR_HOLD=低 → Q2 关断 → R2 把 Q1 栅极拉高 → Q1 关断 → VSYS=0 → 整机断电。

4. 器件清单(BOM)

位号 器件 参数/型号 封装 数量 说明
Q1 P-MOSFET AO3401(-30V/-4A,低压开启) SOT23 1 高边主开关
Q2 N-MOSFET 2N7002(Vth≈2V) SOT23 1 PWR_HOLD 锁存
Q3 N-MOSFET 2N7002(Vth≈2V) SOT23 1 长按开机触发
R1 电阻 1MΩ ±5% 0402 1 C1 充电电阻(定 2s 延时)
R2 电阻 100KΩ 0402 1 Q1 栅极上拉(默认关机)
R3 电阻 10KΩ 0402 1 PWR_HOLD → Q2 栅极
R4 电阻 10MΩ 0402 1 C1 泄放
R5 电阻 100KΩ 0402 1 Q2 栅极下拉(MCU 掉电时确保 Q2 关)
C1 电容 3.3µF / 10V X7R 0603 1 延时电容
SW1 轻触按键 6×6 侧按/顶按 — 1 电源键
(可选) D1 二极管 BAT54 SOT23 1 如 KEY_DET 需隔离时用

5. RC 延时计算

  • 充电:Vc(t) = VBAT × (1 − e^(−t/RC)),RC = R1×C1 = 1M×3.3µF = 3.3s。
  • 2N7002 阈值约 2V,取 VBAT=4.2V:到达 2V 的时间 t = −RC·ln(1 − 2/4.2) = −3.3·ln(0.524) ≈ 2.13s ✓(约 2 秒)。
  • 若需更精确 2.0s,可调 R1=910K 或 C1=3.0µF;最终以实测为准微调 R1/C1。

6. 固件配合

6.1 GPIO

引脚 方向 说明
PWR_HOLD 输出 main() 最开头就置高(先于 banner/初始化),锁存开机;自动关机时置低
KEY_DET(可选) 输入 接 C1 节点/按键节点,运行中检测按键,用于复位自动关机定时器

注意:PWR_HOLD 必须在 MCU 复位后立即拉高,否则用户一松键就掉电。

6.2 自动关机定时(伪代码)

// 空闲超时值(可做成 APP_DATA 参数,appset 配置)
#define AUTO_OFF_TIMEOUT_MS   120000   /* 默认 2 分钟,可配 */

void activity_heartbeat(void) {        // 任何活动(BLE 指令/按键)都调
    s_last_activity = xTaskGetTickCount();
}

// 在某个常驻任务里(如 BLE 调度任务)周期性检查:
if ((xTaskGetTickCount() - s_last_activity) >= pdMS_TO_TICKS(AUTO_OFF_TIMEOUT_MS)) {
    display_set(0, DISP_TYPE_CELSIUS, DISP_BASE_DECIMAL); // 可先清屏/提示
    vTaskDelay(pdMS_TO_TICKS(500));
    PWR_HOLD_LOW();    // 断电
    for(;;) {}         // 等电源跌落
}

7. 注意事项

  1. 开机时序:PWR_HOLD 必须在 MCU 启动后立即置高,且 R5 保证 MCU 掉电时 Q2 可靠关断。
  2. C1 泄放:R4 取 10M 时泄放 τ≈33s;若担心「短按后快速再长按」会把上次残余电荷算进去,可把 R4 调小(如 4.7M)或加受控泄放。
  3. 待机功耗:关机时只有 R2(100K→VBAT) 与 P-MOS 漏电流,约 0.04µA + 漏电流,可满足低待机要求。
  4. VBAT 下限:Q3(2N7002) 阈值 2V,电池低到 ~2.5V 时 C1 充不到阈值会导致开不了机;若需支持更低电压,换低压开启的 N-MOS(如 SI2302,Vth<1V)并重算 RC。
  5. 栅极保护:Q1 栅极如需加 TVS/钳位(防静电/浪涌),可在 G 节点对 VBAT 加 4.7~6.8V 稳压管(可选)。

8. 待确认

  1. 自动关机超时值:本文默认 2 分钟(AUTO_OFF_TIMEOUT_MS),你之前写的是「2 秒」——请确认用多少。
  2. 是否需要 KEY_DET(按键复位自动关机定时 / 手动关机)。
  3. 电池最低电压(决定 Q3 选型与 RC 是否需重算)。