3、电机驱动基础:直流电机与步进电机的工作原理,H桥驱动电路(L298N、TB6612)接线与控制逻辑,PWM调速原理

好,咱们进入第三讲。这一章是硬核基础课,说白了就是搞清楚电机怎么转、怎么让它听话。我当年刚入行时,觉得电机驱动不就是给个电嘛,结果烧了好几个驱动板才明白——这里面的门道,真不少。

3.1 直流电机与步进电机:两种脾气

先聊聊直流电机。你想想看,给它通上电,转子就转起来了。电压越高,转得越快;负载越大,电流就往上窜。我在项目里遇到过一个问题:窗帘电机堵转了,电流直接飙到2A,驱动芯片烫得能煎鸡蛋。后来加了电流检测,才稳住了。

直流电机的控制逻辑其实很简单:

  • 正转:A端接正极,B端接负极
  • 反转:A端接负极,B端接正极
  • 停止:两端都断开,或者都接地

但步进电机就不一样了。它是一步一步走的,每给一个脉冲信号,它就转一个固定角度。我习惯叫它「数字电机」,因为它的位置完全由脉冲数决定,不需要编码器反馈。

核心区别一句话:直流电机适合连续旋转,步进电机适合精确定位。窗帘的行程校准,步进电机是首选。

3.2 H桥驱动电路:让电机正反转的秘诀

为什么叫H桥?你画一下电路图就明白了——四个开关管组成一个H形状,电机在中间横杠上。通过控制四个开关的通断,就能改变电流方向。

我刚开始学的时候,总觉得这玩意儿很玄乎。其实说白了,就是四个开关的排列组合:

Q1 Q2 Q3 Q4 电机状态
ON OFF OFF ON 正转
OFF ON ON OFF 反转
OFF OFF OFF OFF 停止(高阻)
ON ON OFF OFF 刹车(短路)

警告:千万不要让Q1和Q2同时导通,或者Q3和Q4同时导通。这就是传说中的「直通短路」,我曾经亲眼看着一个MOS管冒烟,那味道,记忆犹新。

3.3 L298N与TB6612:两个经典驱动芯片

市面上常见的H桥驱动芯片,L298N和TB6612是绕不开的。我两个都用过,说说我的感受。

L298N:皮实耐造的老将

L298N是个老芯片了,驱动电流大,最高能到2A。但它的缺点也很明显——压降大,发热严重。我记得有一次做测试,连续运行10分钟,散热片烫得不敢碰。接线方式是这样的:

// L298N 典型接线
ENA  → GPIO (PWM调速)
IN1  → GPIO (方向控制)
IN2  → GPIO (方向控制)
OUT1 → 电机A端
OUT2 → 电机B端
VS   → 12V电源
VSS  → 5V逻辑电源
GND  → 共地

TB6612:小巧高效的现代方案

TB6612是我现在项目中的首选。它体积小,效率高,压降只有0.5V左右。虽然最大电流只有1.2A,但驱动窗帘电机绰绰有余。接线逻辑和L298N类似,但多了个STBY引脚——这个引脚必须拉高,否则芯片不工作。我刚开始就栽在这个坑里,查了半天才发现STBY没接。

// TB6612 典型接线
PWMA → GPIO (PWM调速)
AIN1 → GPIO (方向控制)
AIN2 → GPIO (方向控制)
AOUT1 → 电机A端
AOUT2 → 电机B端
VM   → 电机电源 (2.7V-15V)
VCC  → 逻辑电源 (2.7V-5.5V)
STBY → 3.3V (使能)
GND  → 共地

我的建议:如果项目对体积和效率有要求,选TB6612。如果只是做实验或者驱动大功率电机,L298N更皮实。但不管用哪个,一定要加续流二极管,保护芯片不被反电动势击穿。

3.4 PWM调速原理:让电机温柔地转

直接给电机通12V,它会猛地转起来,像脱缰的野马。我们需要的是温柔地控制速度,这就是PWM的用武之地。

PWM,脉冲宽度调制,说白了就是快速开关电源。占空比越高,平均电压越高,电机转得越快。频率一般设在1kHz-20kHz之间。我习惯用10kHz,既听不到噪音,又能保证电机响应够快。

为什么会这样?因为电机是个感性负载,电流不会突变。PWM开关时,电感的续流作用会让电流保持平滑,平均电压就等于占空比乘以电源电压。

// Arduino PWM控制示例
int pwmPin = 9;    // PWM引脚
int speed = 128;   // 占空比 0-255

void setup() {
  pinMode(pwmPin, OUTPUT);
  // 设置PWM频率为10kHz (需要修改定时器)
  TCCR1B = TCCR1B & B11111000 | B00000001;
}

void loop() {
  analogWrite(pwmPin, speed);  // 50%占空比
  delay(2000);
  analogWrite(pwmPin, 200);    // 约78%占空比
  delay(2000);
}

避坑指南:我曾经在PWM频率上吃过亏。用1kHz的频率驱动电机,结果电机发出刺耳的尖叫声,客户投诉说产品有噪音。后来改成16kHz,人耳听不到了,问题解决。记住,频率要避开人耳敏感区(2kHz-5kHz)。

3.5 实战:窗帘电机的驱动接线

好,理论说完了,咱们来点实际的。以TB6612驱动一个12V步进电机为例,我通常这样接线:

  1. 电源部分:VM接12V,VCC接5V,GND共地
  2. 控制部分:PWMA接GPIO9,AIN1接GPIO8,AIN2接GPIO7
  3. 电机部分:AOUT1和AOUT2接步进电机的A+和A-
  4. 使能部分:STBY接3.3V,别忘了

控制逻辑也很直接:

// 正转:AIN1=HIGH, AIN2=LOW, PWMA=PWM值
// 反转:AIN1=LOW, AIN2=HIGH, PWMA=PWM值
// 停止:AIN1=LOW, AIN2=LOW, PWMA=0

嗯,这里要注意一点。步进电机和直流电机的驱动逻辑不太一样。步进电机需要按顺序给脉冲,而直流电机只需要控制方向和PWM。如果你用的是步进电机,记得加上步进驱动库,比如AccelStepper,不然手动写脉冲时序会累死。

我个人习惯在调试时先用低速PWM(比如占空比10%),确认电机能正常转动,再慢慢提速。这样即使接线有误,也不容易烧东西。你想想看,一上来就全速,万一正负极接反了,那画面太美我不敢看。

好了,这一章的内容就到这里。电机驱动是物联网设备的基础,搞懂了它,后面的行程校准和联网控制才能玩得转。下一章咱们聊聊编码器和限位开关,让电机知道它转到哪儿了。