硬件电路设计基础:充电电路拓扑、MOSFET驱动、电流采样电阻、保护电路设计
好,咱们进入正题。这一章聊的是硬件电路设计,说白了就是剃须刀充电管理的那一套“骨架”。你软件写得再漂亮,硬件扛不住,一切都是白搭。我个人习惯,设计任何充电电路前,先想清楚三个问题:能量怎么流?开关怎么控?电流怎么测?
充电电路拓扑:选型与取舍
剃须刀这种小功率设备,充电拓扑其实没太多花哨的。主流方案就两种:线性充电和开关充电。
线性充电,结构简单,成本低。一个PMOS加一个运放就能搭起来。但效率嘛,说实话,有点感人。输入5V,电池3.7V,压差1.3V,电流500mA,那0.65W的功率就白白变成热量了。我在项目中遇到过,小体积产品里热量散不出去,芯片直接进入热保护,充电断断续续的。
开关充电,比如buck拓扑,效率能做到90%以上。但外围器件多,电感、电容、MOSFET一个都不能少。而且PCB布局要小心,不然纹波大得吓人。
我个人建议,如果电池容量在500mAh以下,用线性充电就够了。超过这个数,还是老老实实上开关充电吧。
关键点:剃须刀充电拓扑的选择,本质是成本与热管理的博弈。线性充电适合小电流,开关充电适合大电流。
MOSFET驱动:别小看这个“开关”
MOSFET是充电电路的核心开关。你想想看,它导通时电阻只有几十毫欧,关断时阻抗无穷大。但驱动它,是有讲究的。
驱动电压不够,MOSFET会工作在线性区,发热严重。我记得有一次,客户反馈充电时MOSFET烫手。查了半天,发现是MCU的GPIO直接驱动PMOS,电压只有3.3V,而PMOS的阈值电压是2.5V。嗯,这里要注意,驱动电压至少要高于阈值电压2-3V,才能保证充分导通。
驱动电流也很关键。MOSFET的栅极有寄生电容,驱动电流太小,开关速度慢,开关损耗就大。我习惯用专门的栅极驱动芯片,比如TC4427,或者用分立的三极管搭一个推挽电路。
// 伪代码:MOSFET驱动控制逻辑
void charge_mosfet_control(uint8_t state) {
if (state == CHARGING) {
// 拉高栅极,导通PMOS
GPIO_SetLevel(MOSFET_GATE_PIN, HIGH);
} else {
// 拉低栅极,关断PMOS
GPIO_SetLevel(MOSFET_GATE_PIN, LOW);
}
}
小技巧:在MOSFET栅极串联一个10-100欧姆的电阻,可以抑制振铃。这是我调试时踩坑踩出来的经验。
电流采样电阻:精度与功耗的平衡
电流采样电阻,说白了就是一个小阻值的电阻,串联在充电回路里。通过测量它两端的压降,就能算出充电电流。
阻值怎么选?举个例子,采样电阻10毫欧,满充电流1A,压降就是10mV。这个电压很小,需要运放放大后才能给ADC用。我建议用差分放大器,比如INA180,共模抑制比高,能滤掉噪声。
功率也要算。1A电流流过10毫欧电阻,功耗是0.01W,没问题。但如果是100毫欧,功耗就变成0.1W了。小封装电阻扛不住,会发热,阻值漂移,采样就不准了。
| 采样电阻阻值 | 满充电流1A时压降 | 功耗 | 推荐场景 |
|---|---|---|---|
| 10 mΩ | 10 mV | 0.01 W | 大电流充电 |
| 50 mΩ | 50 mV | 0.05 W | 中等电流 |
| 100 mΩ | 100 mV | 0.1 W | 小电流、高精度 |
警告:采样电阻的布局要远离大功率器件,比如MOSFET和电感。否则热耦合会导致采样值漂移。我曾经因为这个原因,充电电流控制偏差了20%。
保护电路设计:安全第一
充电保护,不是可选项,是必选项。剃须刀天天拿在手里,万一出问题,可不是闹着玩的。
过流保护:当充电电流超过设定值,比如1.2A,立即关断MOSFET。硬件上可以用比较器加参考电压实现,软件上也可以做,但响应速度慢。我建议硬件为主,软件为辅。
过压保护:电池电压超过4.2V,必须停止充电。这个通常由充电IC内部完成,但为了保险,外部再加一个电压检测电路。
反接保护:用户把电池装反了怎么办?最简单的办法是在充电回路里串联一个二极管。但二极管有压降,会损耗能量。更好的方案是用PMOS做理想二极管,压降只有几十毫伏。
温度保护:电池温度超过45°C,或者低于0°C,停止充电。锂电在低温下充电,会析锂,有安全隐患。我习惯用NTC热敏电阻贴在电池表面,通过ADC读取温度值。
// 伪代码:温度保护逻辑
uint16_t adc_value = ADC_Read(NTC_CHANNEL);
float temperature = ntc_to_temperature(adc_value);
if (temperature > 45.0f || temperature < 0.0f) {
charge_stop();
set_error_flag(ERROR_TEMP_PROTECT);
} else {
charge_resume();
}
核心原则:保护电路要“宁可误判,不可漏判”。哪怕因为误保护导致充电中断,也比电池爆炸强一万倍。
好了,这一章的内容就这些。充电拓扑、MOSFET驱动、采样电阻、保护电路,这四个点你吃透了,硬件设计这块基本就稳了。下一章咱们聊聊软件层面的充电状态机,到时候见。