F FisherHub Docs

电源管理

电源管理的核心问题

智能硬件产品中,电源设计直接影响续航、发热、成本和可靠性。三个核心问题:电压转换、电池充放电、系统功耗优化。

LDO 与 DC-DC 转换器

LDO (低压差线性稳压器)

LDO 通过调整管线性降压,输入输出压差小。

优点:电路简单(只需输入输出电容)、输出纹波极低、响应快、噪声小。 缺点:效率低(效率 = Vout/Vin),仅适合降压场景,大电流下发热严重。

# LDO 功耗计算
def ldo_power(vin, vout, iout):
    p_diss = (vin - vout) * iout  # 耗散功率 W
    efficiency = vout / vin * 100
    return p_diss, efficiency

# 5V -> 3.3V @ 200mA
p, eff = ldo_power(5.0, 3.3, 0.2)
print(f"LDO 耗散: {p*1000:.0f}mW, 效率: {eff:.0f}%")
# 输出: 耗散 340mW, 效率 66%

适用场景:模拟电路供电(ADC 参考电压、音频)、待机供电、小电流 (<200mA) 场景。

常用型号:AMS1117-3.3(廉价通用)、XC6206(超低静态功耗 1μA)。

DC-DC 转换器

DC-DC 通过电感储能和开关切换实现电压转换。

优点:效率高(80-96%)、可升降压或反压。 缺点:电路复杂、有开关噪声、输出纹波较大。

类型效率纹波成本适用场景
降压(Buck)90-96%电池降压到 3.3V/1.8V
升压(Boost)85-93%单节锂电升到 5V
升降压(Buck-Boost)80-90%电池电压跨域 Vout
// ESP32 低功耗深度睡眠
void enter_deep_sleep(void) {
    // 设置唤醒源:定时器 RTC 唤醒
    esp_sleep_enable_timer_wakeup(60 * 1000000);  // 60秒
    esp_deep_sleep_start();
    
    // 此后的代码不会执行
}

void setup(void) {
    Serial.begin(115200);
    Serial.println("设备唤醒");
    
    // 读取传感器,上传数据
    read_sensors_and_upload();
    
    // 任务完成后立即入睡
    Serial.println("准备睡眠...");
    enter_deep_sleep();
}
参数LDODC-DC
效率(Vout/Vin)×100%80%-96%
纹波<1mV10-50mV
静态电流1μA-100μA10μA-1mA
电路复杂度极低(2电容)中(电感+电容+反馈)
EMI有开关噪声

选型准则:电池供电产品的主电源用 DC-DC,模拟敏感电路用 LDO 做后级稳压。

电池充电管理

锂电池充电曲线

锂电池充电分三个阶段:预充(电池电压 <3V,小电流)、恒流(3V-4.2V,大电流)、恒压(4.2V 恒压,电流递减到 1/10 终止)。

def estimate_charge_time(capacity_mah, charge_current_ma, voltage_v=3.7):
    """估算锂电池充电时间(近似)"""
    # 恒流阶段充入约 70% 容量
    cc_time = (capacity_mah * 0.7) / charge_current_ma
    # 恒压阶段约 40% 的恒流时间
    cv_time = cc_time * 0.4
    total_hours = (cc_time + cv_time) / 60
    return total_hours

print(f"2000mAh 电池 @ 1A 充电: {estimate_charge_time(2000, 1000):.1f}小时")

常用充电 IC

型号最大电流特点
TP40561A最便宜,线性充电,发热大
IP53062.4A集成升压+充电,常用在移动电源
MCP73831500mA封装小,适合可穿戴
BQ258953ATI 制品,支持快充,I2C 控制

电池保护注意事项

  • 必须加保护板(BMS)防止过充/过放/短路
  • 充电电流不超过电池 1C 速率
  • 工作温度范围:充电 0-45°C,放电 -20-60°C
  • 锂聚合物电池长期存储电压 3.7-3.85V

低功耗设计策略

系统级低功耗

传感器(100μA) ──┬── MCU(睡眠 5μA) ── WiFi(关)    → 总功耗 ~10μA
                 │                       Android
                 └── 定时唤醒(10s周期) ──→ 传感器读取(30ms) + WiFi发送(200ms)
                                         平均电流: ~0.3mA
                                         2000mAh / 0.3mA ≈ 277天

硬件低功耗要点

  1. 选择低静态电流的 LDO(如 XC6206 静态 1μA)
  2. 降压电阻分压电路 — 测量电池电压时用大电阻(1MΩ+)
  3. 断开不用的外设电源 — 用 MOSFET 或负载开关控制
  4. 选择低功耗传感器 — 如 BME280 比 DHT22 功耗更低

软件低功耗要点

// 外设电源控制 (ESP32 + MOSFET)
#define SENSOR_POWER_PIN GPIO_NUM_4

void read_sensor_low_power(void) {
    // 打开传感器电源
    gpio_set_level(SENSOR_POWER_PIN, 1);
    vTaskDelay(pdMS_TO_TICKS(10));  // 等待稳定
    
    // 读取数据
    float temp = bme280_read_temperature();
    
    // 立即关闭传感器电源
    gpio_set_level(SENSOR_POWER_PIN, 0);
    
    // 处理数据时传感器已断电
    process_and_sleep(temp);
}

功耗估算方法

用示波器串联一个 10Ω 采样电阻,测量电压波形即可得到实时电流曲线。也可以用专门的功耗分析仪(如 Nordic PPK2)。

电源树设计实例

以 ESP32 温湿度传感器为例:

锂电池(3.7V) 
    ├── TP4056 (充电) ── USB 5V
    ├── ME6217 (LDO 3.3V) ── ESP32 (深度睡眠 5μA)
    │                                   └── 工作时 ~80mA
    └── SHT30 传感器 ── MOSFET(IO控制)
    
待机功耗: 5μA (ESP32) + 1μA (LDO) = 6μA
工作功耗: 80mA (ESP32) + 0.2mA (SHT30) ≈ 80mA
周期: 每10分钟唤醒一次,工作2秒
日均功耗: ≈ 0.27mAh → 2000mAh 电池可用 ~7400天(理论)

小结

电源管理是决定智能硬件产品竞争力的核心技术。DC-DC 做主电源转换、LDO 做敏感电路稳压、选用低静态电流的器件、使用深度睡眠和电源开关控制,这些策略结合使用可以将产品续航从几天提升到几个月甚至一年。