做小车、做双轮平衡、做云台,控制直流电机正反转和调速,L293D是一个经典的便宜选择。它是一颗双通道H桥驱动芯片,一片就能同时带两个直流电机,还能用PWM调速。这篇把它接到Arduino上的过程和最容易出问题的地方讲清楚。
L293D和H桥是怎么回事
单片机的IO脚电流能力很小,不能直接拖动电机,L293D相当于一个功率放大的开关,用内部的三极管组成两个H桥,通过IN1、IN2的高低电平组合,让电流正向或反向流过电机两端,从而正转或反转;EN使能脚用来开断,也能接PWM做调速。

整颗芯片有16个脚:VCC1(16脚)供逻辑5V,VCC2(8脚)单独给电机供电,GND(4、5、12、13脚)要共地,EN1/EN2管使能,IN1~IN4管方向,OUT1~OUT4接电机两端。一片芯片两路电机,各管各的。
L293D怎么接线到Arduino
拿其中一个电机举例:OUT1接电机一端、OUT2接另一端,IN1、IN2接Arduino两个数字脚控制方向,EN1接PWM脚调速。电机2同理接OUT3、OUT4和IN3、IN4、EN2。逻辑侧VCC1接5V,电机电源VCC2接外部电池正极。

供电这关最烧板子
这是新手最容易踩的坑:电机启动电流很大,千万别把电机电源VCC2直接接到Arduino的5V上,那样会把板子稳压器拖垮甚至复位重启。正确做法是给电机单独一路电源(比如9V干电池或12V适配器),同时把电池负极和Arduino的GND接在一起共地,这样IO信号才有参考电位。区分好逻辑电源和电机电源,这关就稳了。
调速和方向的控制表
逻辑很简单:EN拉高、IN1高IN2低就正转,IN1低IN2高就反转,两个同高或同低就刹车停转;用analogWrite给EN输入PWM占空比,0到255之间就能调速。记住这条真值表,正反转和快慢就全在掌握里了。接线对、电源分路,一套皮实的双电机驱动就完成了。


EN使能脚接PWM调速,真值表记一下就通了
电机电源千万别接Arduino的5V,吃了大亏才记住
VCC2单独接电池再共地,这是新手最容易栽的地方