L293D电机驱动盾接Arduino控制直流电机:硬件接线与代码全攻略
做机器人/智能小车,电机控制是核心。L293D双H桥驱动芯片凭借双通道、600mA连续/1.2A峰值、4.5-36V宽电压、内置续流二极管、热保护,成为Arduino入门首选。配合L293D扩展板(含2片L293D+74HC595移位寄存器),仅占用Arduino 4根IO即可独立控制4路直流电机/2路步进电机的正反转与PWM调速。本文从引脚定义、内部原理、硬件接线、库安装、代码实战、等效替换、应用拓展全维度讲透。
L293D核心参数速查
| 参数 | 数值 | 备注 |
|---|---|---|
| 封装 | 16-DIP/SOIC/TSSOP | DIP适合面包板/插针板 |
| 通道数 | 2 个 H桥 (4半桥) | 驱动2路DC或1路步进 |
| 电机电压 Vs (Vcc2) | 4.5V ~ 36V | 独立于逻辑电源 |
| 逻辑电压 Vss (Vcc1) | 4.5V ~ 7V (典型5V) | Arduino 5V直供 |
| 连续输出电流 | 600mA / 通道 | 需散热片大电流 |
| 峰值电流 | 1.2A / 通道 | 短时<100ms |
| 开关转换时间 | 300ns (5V→24V) | 支持>20kHz PWM |
| 热关断 | 内置 | 过温自动关断输出 |
引脚定义完整表 (单片L293D)
| 引脚 | 名称 | 功能 |
|---|---|---|
| 1 | EN1,2 (1,2EN) | 通道1&2使能,高电平有效,接PWM调速 |
| 2 | IN1 | 通道1输入A,控制OUT1 |
| 3 | OUT1 | 电机A端1 |
| 4,5 | GND | 电源地/散热焊盘(需铺大面积铜) |
| 6 | OUT2 | 电机A端2 |
| 7 | IN2 | 通道1输入B,控制OUT2 |
| 8 | Vcc2 (Vs) | 电机供电输入 4.5-36V |
| 9 | EN3,4 (3,4EN) | 通道3&4使能,高电平有效,接PWM调速 |
| 10 | IN3 | 通道2输入A,控制OUT3 |
| 11 | OUT3 | 电机B端1 |
| 12,13 | GND | 电源地/散热焊盘 |
| 14 | OUT4 | 电机B端2 |
| 15 | IN4 | 通道2输入B,控制OUT4 |
| 16 | Vcc1 (Vss) | 逻辑供电 5V |
内部H桥工作原理
每通道由两组达林顿对(Q1/Q4、Q2/Q3)组成全桥,集电极-发射极并联续流二极管吸收反电动势:
- 正转:IN1=H, IN2=L → Q1/Q4导通 → 电流Vcc2→OUT1→电机→OUT2→GND
- 反转:IN1=L, IN2=H → Q2/Q3导通 → 电流Vcc2→OUT2→电机→OUT1→GND
- 制动:IN1=IN2=H → 两下管导通,电机短路制动
- 滑行:IN1=IN2=L 或 EN=L → 全桥高阻,电机自由滑行
PWM加在EN端,调节有效电压占空比 → 调速。
Arduino + L293D扩展板 实战接线 (2路DC电机)
硬件清单
- Arduino Uno / Nano / Pro Mini
- L293D Motor Shield (Adafruit兼容/Keyes/通用版)
- 2× 直流减速电机 (6-12V额定)
- 外部电源:12V/2A+ 电池/开关电源 (接Shield PWR_IN)
- 跳线若干
接线步骤 (视频同步演示)
- 电机接线:M1、M2端子块分别接两电机两线,极性任意(代码控制方向)
- 外部供电:12V接Shield PWR_IN端子(或VIN跳线帽拔除后接VIN引脚),切勿用Arduino USB供电驱动电机
- 逻辑供电:Shield从Arduino 5V引脚取电(或自带稳压),跳线帽确认
- 信号连接:Shield堆叠在Arduino顶部,自动连接SPI/控制引脚
软件环境准备
// 1. 安装 Adafruit Motor Shield Library
// Arduino IDE → 草图 → 包含库 → 管理库 → 搜索 "Adafruit Motor Shield" → 安装 v1.0.0+
// 2. 依赖 Adafruit_GFX (如需OLED显示可选)
完整控制代码 (含加减速、正反转、制动、滑行)
#include
// M4 接口对应 Shield 上 M4 端子 (L293D 第2片 通道3&4)
AF_DCMotor motor(4);
void setup() {
Serial.begin(9600);
motor.setSpeed(200); // 0-255 PWM占空比
motor.run(RELEASE); // 启动时滑行
}
void loop() {
// 正向加速
motor.run(FORWARD);
for (uint8_t i=0; i<255; i++) {
motor.setSpeed(i);
delay(10);
}
// 正向减速
for (uint8_t i=255; i>0; i--) {
motor.setSpeed(i);
delay(10);
}
// 反向加速
motor.run(BACKWARD);
for (uint8_t i=0; i<255; i++) {
motor.setSpeed(i);
delay(10);
}
// 反向减速
for (uint8_t i=255; i>0; i--) {
motor.setSpeed(i);
delay(10);
}
// 制动停止 1秒
motor.run(BRAKE);
delay(1000);
// 滑行停止 1秒
motor.run(RELEASE);
delay(1000);
}
双电机差速转向扩展
AF_DCMotor motorL(1), motorR(2); // M1, M2 接口
void turnLeft(uint8_t speed) {
motorL.run(BACKWARD); motorL.setSpeed(speed);
motorR.run(FORWARD); motorR.setSpeed(speed);
}
void turnRight(uint8_t speed) { /* 对称 */ }
void moveForward(uint8_t speed) { /* 同向 */ }
void moveBackward(uint8_t speed) { /* 同向反 */ }
void stopMotors() { motorL.run(RELEASE); motorR.run(RELEASE); }
常见等效替代芯片
| 型号 | 特点 | 适用场景 |
|---|---|---|
| SN754410 | 引脚兼容、四路半桥、无内置续流二极管 | 外部加肖特基二极管、成本更低 |
| ULN2003A | 7路达林顿阵列、仅低侧开关、500mA/通道 | 单向驱动/步进单极性/继电器/LED阵列 |
| LB1909MC | 双H桥、1A连续、内置续流、热保护 | 更大电流替代L293D |
| TB6612FNG | 双H桥、1.2A/3.2A峰值、MOSFET、低RDS(on)、体积小 | 高效率、低发热、首选升级 |
| DRV8833/DRV8871 | 双/单H桥、MOSFET、1.5A/3.6A、极小封装 | 空间受限/电池供电项目 |
典型应用场景拓展
- 四轮/履带机器人底盘驱动
- 2相/4相步进电机驱动(3D打印机/CNC/云台)
- 高亮LED阵列/灯带PWM调光(利用H桥大电流能力)
- 继电器/电磁阀/蜂鸣器阵列驱动(配合续流二极管)
- 磁悬浮/线性电机驱动(双H桥推拉)
工程避坑指南
- 电源分离:电机电源(VS)与逻辑电源(VSS)必须共地但独立供电,防止电机噪声复位MCU
- 散热设计:>500mA连续电流必须加散热片/风扇,DIP封装GND引脚铺大面积铜散热
- 反电动势:虽然内置续流二极管,长线缆感性负载建议外加TVS/肖特基并联
- PWM频率:Arduino默认490Hz/980Hz可听噪音大,用Timer1/2设置20kHz+超声频段
- 电容去耦:VS端贴片100µF电解+100nF陶瓷,靠近芯片引脚
- 代码保护:使能前检查EN引脚状态,异常复位时motor.run(RELEASE)防止飞车
结语
L293D虽非最高性能,但引脚兼容性最好、资料最全、容错率最高,是电机控制入门的“黄金标准”。掌握H桥原理、PWM调速、库函数封装、电源隔离、热设计,即可无缝迁移到TB6612/DRV8833/BTS7960等新一代驱动。需要定制Motor Shield PCB、多电机同步控制固件、电流采样闭环代码?联系我们获取完整工程包。
工业技术
- 基于 Arduino Uno 的人体检测救援机器人:传感器集成分步指南
- Arduino 解码遥控接收机 PPM 信号——分步指南
- Android 手势遥控车:Raspberry Pi + Arduino 101 + 电机扩展板,I2T 协同控制
- 用 Arduino 测量地球质量:DIY 分步指南
- 构建基于 PHP 的 Web 界面控制 Arduino Uno
- DIY 手势控制机械臂:基于 Arduino + 柔性传感器 + IMU + 蓝牙的六自由度仿生臂
- 基于 Arduino 的智能温室监测与自动灌溉系统
- DIY 迷你示波器:基于 Arduino Nano 与 OLED 显示屏的逐步教程
- 废旧 DVD 光驱改装迷你 CNC 2D 绘图机 —— 基于 L293D 电机扩展板
- Arduino 实时数字罗盘:HMC5883L + Processing 可视化教程
- 有刷直流电机原理与选型全解析:四大励磁方式与四大工程优势
- 直流电机故障检测诊断分步指南:从断电到换向器排查