3、驱动电路基础:H桥与MOS管驱动原理、续流二极管与保护电路、电源滤波与去耦设计
好,咱们进入第三节。这一节讲的是驱动电路的基础,说白了就是怎么让电机听话地转起来、停下来,以及怎么保证它不出事。
血压计里的充气泵和放气阀,本质上都是小电机和电磁阀。驱动它们,不能直接用单片机的IO口——电流太小,电压也可能不对。所以我们需要一个“中间人”,也就是驱动电路。
3.1 H桥与MOS管驱动原理
先说说H桥。为什么叫H桥?你看它的电路拓扑,四个开关管(通常是MOS管)摆成一个“H”形,负载电机接在中间横杠上。通过控制四个管的通断,就能让电机正转、反转、刹车或者自由滑行。
对于血压计充气泵,我们通常只需要它往一个方向转,也就是充气。但为什么还要用H桥?嗯,这里有个细节:有些泵需要快速泄气,这时候让电机反转一下,泄气速度会快很多。另外,H桥还能实现“刹车”功能,让泵迅速停转,避免过冲。
我个人习惯用N沟道MOS管来做H桥的下管,P沟道做上管。为什么?N管导通电阻小,价格便宜,驱动也简单。但N管做上管时,需要自举电路把栅极电压抬上去,有点麻烦。所以小功率场合,直接用P管做上管,N管做下管,省事。
来看一个典型的半桥驱动电路:
// 伪代码:H桥控制逻辑(以充气泵为例)
// 假设:IN1=高,IN2=低 => 正转(充气)
// IN1=低,IN2=高 => 反转(快速泄气)
// IN1=低,IN2=低 => 刹车(电机两端短路)
void motor_control(uint8_t state) {
switch(state) {
case MOTOR_FORWARD:
GPIO_SetBits(IN1_PORT, IN1_PIN);
GPIO_ResetBits(IN2_PORT, IN2_PIN);
break;
case MOTOR_REVERSE:
GPIO_ResetBits(IN1_PORT, IN1_PIN);
GPIO_SetBits(IN2_PORT, IN2_PIN);
break;
case MOTOR_BRAKE:
GPIO_ResetBits(IN1_PORT, IN1_PIN);
GPIO_ResetBits(IN2_PORT, IN2_PIN);
break;
default:
break;
}
}
这里要注意,上下管绝对不能同时导通,否则就是短路,MOS管瞬间冒烟。我在项目中遇到过这种情况——代码里一个延时没处理好,两个管子同时开了,板子直接冒烟,吓得我赶紧拔电源。从那以后,我写驱动代码都会在切换状态时加一个“死区时间”,比如先关掉所有管子,等几微秒再打开另一边。
3.2 续流二极管与保护电路
电机和电磁阀都是感性负载。感性负载有个特点:电流不能突变。当你关断MOS管时,电机线圈里的电流还想继续流,但通路被切断了,于是会在漏极上产生一个很高的反向电压——这个电压可能达到几十伏甚至上百伏,直接击穿MOS管。
怎么办?加续流二极管。说白了,就是给电流一个“泄洪通道”。
续流二极管的接法很简单:反向并联在电机或电磁阀两端。注意是反向,也就是二极管的阴极接电源正,阳极接漏极。这样当MOS管关断时,线圈产生的反向电压会让二极管正向导通,电流通过二极管续流,电压就被钳位在二极管的正向压降(约0.7V)附近。
我建议用肖特基二极管,比如SS34、SS54。为什么?肖特基管正向压降更低(0.3V左右),开关速度更快,更适合高频PWM驱动的场合。普通整流管(比如1N4007)恢复时间太慢,高频下会发热严重。
关键参数选择:
- 续流二极管的反向耐压:至少是电源电压的2倍。比如12V系统,选40V以上的管子。
- 正向电流:至少是电机额定电流的1.5倍。
- 开关速度:越快越好,肖特基管是首选。
除了续流二极管,我还习惯在MOS管的漏源之间加一个TVS管(瞬态电压抑制二极管)。这东西反应速度比二极管还快,能吸收尖峰电压。我曾经在一个项目中,电机启动瞬间产生了很高的尖峰,把MCU的ADC采样都干扰了。加了TVS管之后,波形干净多了。
3.3 电源滤波与去耦设计
电机启动时,电流会突然增大,导致电源电压瞬间跌落。这个跌落如果太大,MCU可能会复位,或者ADC采样不准。你想想看,血压计正在测量,突然MCU复位了,那数据就全丢了。
所以电源滤波和去耦是必须的。这里我分两个层面来讲:
3.3.1 大电容:储能与滤波
在电机驱动电路的电源入口,我会放一个大电解电容,通常是100μF到470μF,耐压25V以上。这个电容的作用是“蓄水池”——电机启动时,它提供瞬时大电流,避免电源电压被拉低。
电解电容的ESR(等效串联电阻)要小,否则发热严重。我一般选低ESR的型号,比如铝电解电容或者固态电容。
3.3.2 小电容:去耦与高频噪声
大电容对低频有效,但对高频噪声效果不好。因为电解电容的寄生电感比较大,高频下阻抗反而升高。所以需要在每个MOS管的电源引脚附近,放一个0.1μF的陶瓷电容,用来滤除高频噪声。
这个0.1μF电容要尽量靠近MOS管的引脚,走线要短。我见过有人把去耦电容放在板子另一边,中间还绕了一大圈走线——那基本没用,因为走线电感已经把电容的效果抵消了。
我的布局习惯:
- 大电解电容放在电源入口,距离驱动芯片不超过2cm。
- 小陶瓷电容放在每个MOS管的漏极和源极之间,距离引脚不超过5mm。
- 如果空间允许,再加一个10μF的陶瓷电容,放在大电容旁边,覆盖中频段。
3.3.3 电源与地的处理
电机驱动电路的地和MCU的地,我建议用“单点接地”或者“星形接地”。也就是驱动电路的地和MCU的地只在一点连接,其他地方分开走线。这样可以避免电机的大电流回流干扰MCU的弱信号。
我曾经在一个项目中,因为没注意地线布局,电机一转,MCU的ADC读数就跳来跳去。后来把驱动地和信号地分开,用0欧电阻单点连接,问题就解决了。
另外,电源走线要尽量宽。电机电流可能达到1A甚至更高,细走线会产生压降和发热。我一般用至少1mm宽的走线,如果电流超过2A,就用2mm以上,或者直接铺铜。
注意:
- 不要用MCU的3.3V电源直接驱动电机,电流不够,而且会干扰MCU工作。
- 电机驱动电源和MCU电源要分开,可以用两个LDO或者一个DCDC加一个LDO。
- 如果使用PWM调速,频率不要太高,一般1kHz到10kHz就够了。频率太高,MOS管开关损耗会增大,发热严重。
好了,这一节的内容就这些。H桥、续流二极管、电源滤波,这三样东西是驱动电路的基础。你把这些搞明白了,血压计的充气泵和放气阀驱动基本就不会出大问题。下一节我们讲具体的驱动芯片选型,到时候会结合实战案例来分析。