3、电机驱动核心:H桥电路原理、L298N与TB6612驱动芯片对比、驱动电路搭建
好,咱们进入电机驱动的核心环节。说实话,搞点钞机最怕什么?不是电机转不起来,而是转起来之后突然卡住,然后——啪,烧了。所以这一章,我带你彻底搞懂H桥怎么工作,以及怎么选驱动芯片。
3.1 H桥电路原理:说白了就是个换向开关
H桥这个名字,你看它的电路图就明白了。四个开关管(通常是MOS管或三极管)摆成"H"字形,电机接在中间横杠上。嗯,就这么简单。
它的核心任务就两个:让电机正转,或者反转。怎么做到?
- 正转:左上和右下导通,电流从左往右流过电机。
- 反转:右上和左下导通,电流从右往左流过电机。
- 刹车:同时导通上管或同时导通下管,电机两端短路,快速停转。
- 滑行:四个管子全关,电机靠惯性自由转动。
关键点来了:绝对不能让左上和右上同时导通!那叫"直通",相当于直接把电源正负极短路。我见过不少新手焊完板子一上电,管子直接冒烟。嗯,那味道,一辈子忘不了。
实际项目中,我们不会手动去开关这四个管子。太累了,而且容易出错。所以就有了专用的驱动芯片,比如L298N和TB6612。
3.2 L298N vs TB6612:老将与新秀的较量
这两款芯片我都用过,各有各的脾气。先看个对比表,心里有个底。
| 参数 | L298N | TB6612 |
|---|---|---|
| 工作电压 | 4.5V - 46V | 2.7V - 13.5V |
| 最大持续电流 | 2A(实际建议1A以下) | 1.2A(峰值3.2A) |
| 导通内阻 | 约2Ω(双极型晶体管) | 约0.5Ω(MOS管) |
| PWM频率 | 最高约40kHz | 最高约100kHz |
| 封装 | MultiWatt15(大体积) | SSOP24(小体积) |
| 价格 | 便宜(约5-8元) | 稍贵(约8-12元) |
你看,L298N电压范围宽,能驱动大电机。但它的内阻大,发热严重。我记得有一次做项目,L298N没加散热片,连续跑了10分钟,手都不敢摸——烫得能煎鸡蛋。
TB6612就不一样了。MOS管的内阻低,发热小很多。而且体积小,适合做在PCB上。不过它的电压上限只有13.5V,点钞机用的12V电机刚好卡在边缘。我个人习惯留点余量,所以会选TB6612,但前提是电源要稳。
我的建议:如果电机电流小于1A,优先选TB6612。如果电机电流在1-2A之间,或者电压超过12V,那就老老实实用L298N,但一定要加散热片。
3.3 驱动电路搭建:从原理图到实物
好,理论说完了,咱们动手。我以TB6612为例,因为它更适合点钞机这种小功率场景。
3.3.1 引脚功能速览
TB6612有16个引脚,但常用的就这几个:
- VM:电机电源(2.7V - 13.5V)
- VCC:逻辑电源(2.7V - 5.5V)
- GND:共地
- AIN1/AIN2:通道A的方向控制
- PWMA:通道A的PWM调速
- AOUT1/AOUT2:接电机A
- BIN1/BIN2、PWMB、BOUT1/BOUT2:通道B同理
- STBY:待机控制,高电平使能
3.3.2 典型接线图
别怕,接线其实很简单。我直接给你一个标准接法:
// TB6612 与 Arduino 接线示例
// 通道A控制一个电机
TB6612 Arduino
VM ——> 12V电源正极
VCC ——> 5V
GND ——> GND(与电源共地)
STBY ——> 5V(一直使能)
AIN1 ——> D8
AIN2 ——> D9
PWMA ——> D10(PWM引脚)
AOUT1 ——> 电机正极
AOUT2 ——> 电机负极
嗯,这里要注意:VM和VCC是分开的。VM接电机电源,VCC接逻辑电源。我见过有人把两个接一起,结果逻辑部分烧了。为什么?因为电机启动时会把VM拉低,逻辑芯片就跟着掉电重启了。
3.3.3 控制逻辑表
控制电机其实就四个状态,记牢了:
| AIN1 | AIN2 | PWM | 电机状态 |
|---|---|---|---|
| 0 | 0 | X | 刹车(停止) |
| 0 | 1 | PWM | 正转(速度由PWM占空比决定) |
| 1 | 0 | PWM | 反转 |
| 1 | 1 | X | 刹车(更猛的刹车) |
避坑指南:我曾经在调试时发现电机嗡嗡响但不转。查了半天,原来是STBY引脚没拉高。TB6612的STBY默认是低电平,芯片处于待机状态,你给什么信号它都不理你。所以,记得把STBY接到高电平。
3.3.4 实战代码片段
给你一段Arduino的示例代码,直接就能跑:
// TB6612 电机驱动示例
#define AIN1 8
#define AIN2 9
#define PWMA 10
void setup() {
pinMode(AIN1, OUTPUT);
pinMode(AIN2, OUTPUT);
pinMode(PWMA, OUTPUT);
// 初始状态:停止
digitalWrite(AIN1, LOW);
digitalWrite(AIN2, LOW);
analogWrite(PWMA, 0);
}
void loop() {
// 正转,50%速度
digitalWrite(AIN1, LOW);
digitalWrite(AIN2, HIGH);
analogWrite(PWMA, 128); // 0-255,128约50%
delay(2000);
// 停止
digitalWrite(AIN1, LOW);
digitalWrite(AIN2, LOW);
analogWrite(PWMA, 0);
delay(1000);
// 反转,75%速度
digitalWrite(AIN1, HIGH);
digitalWrite(AIN2, LOW);
analogWrite(PWMA, 192); // 约75%
delay(2000);
// 停止
digitalWrite(AIN1, LOW);
digitalWrite(AIN2, LOW);
analogWrite(PWMA, 0);
delay(1000);
}
这段代码很简单,但已经包含了正反转和调速的核心逻辑。你把它烧进Arduino,接上电机和TB6612,就能看到电机乖乖听话了。
3.4 驱动电路搭建的注意事项
最后,我总结几个实战中容易踩的坑:
- 电源滤波:电机启动瞬间电流很大,会在电源线上产生尖峰。我习惯在VM引脚附近加一个100μF的电解电容,再加一个0.1μF的瓷片电容。一个滤低频,一个滤高频。
- 地线处理:逻辑地和电机地要分开走线,最后在电源入口处单点接地。否则电机的大电流会干扰逻辑信号,导致误动作。
- 散热问题:TB6612虽然发热小,但如果长时间满负荷运行,还是建议在芯片背面贴一个小散热片。L298N就更不用说了,散热片是标配。
- 保护二极管:TB6612内部已经集成了续流二极管,但如果你用的是分立元件搭H桥,一定要在电机两端反向并联一个二极管,否则关断瞬间的反向电动势会击穿MOS管。
嗯,这一章的内容就到这里。H桥的原理你搞懂了,L298N和TB6612的区别也清楚了,电路搭建的要点也记住了。下一章,咱们就进入实战——用PWM调速,让电机转得又快又稳。