亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 工业技术

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/TSSOPDIP适合面包板/插针板
通道数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电机驱动盾接Arduino控制直流电机:硬件接线与代码全攻略
四路大电流H桥16引脚L293D驱动芯片

引脚定义完整表 (单片L293D)

引脚名称功能
1EN1,2 (1,2EN)通道1&2使能,高电平有效,接PWM调速
2IN1通道1输入A,控制OUT1
3OUT1电机A端1
4,5GND电源地/散热焊盘(需铺大面积铜)
6OUT2电机A端2
7IN2通道1输入B,控制OUT2
8Vcc2 (Vs)电机供电输入 4.5-36V
9EN3,4 (3,4EN)通道3&4使能,高电平有效,接PWM调速
10IN3通道2输入A,控制OUT3
11OUT3电机B端1
12,13GND电源地/散热焊盘
14OUT4电机B端2
15IN4通道2输入B,控制OUT4
16Vcc1 (Vss)逻辑供电 5V
L293D电机驱动盾接Arduino控制直流电机:硬件接线与代码全攻略
L293D双极性步进电机驱动引脚原理图

内部H桥工作原理

L293D电机驱动盾接Arduino控制直流电机:硬件接线与代码全攻略
L293D内部达林顿H桥结构(含续流二极管)

每通道由两组达林顿对(Q1/Q4、Q2/Q3)组成全桥,集电极-发射极并联续流二极管吸收反电动势:

PWM加在EN端,调节有效电压占空比 → 调速。

Arduino + L293D扩展板 实战接线 (2路DC电机)

硬件清单

接线步骤 (视频同步演示)

  1. 电机接线:M1、M2端子块分别接两电机两线,极性任意(代码控制方向)
  2. 外部供电:12V接Shield PWR_IN端子(或VIN跳线帽拔除后接VIN引脚),切勿用Arduino USB供电驱动电机
  3. 逻辑供电:Shield从Arduino 5V引脚取电(或自带稳压),跳线帽确认
  4. 信号连接: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引脚兼容、四路半桥、无内置续流二极管外部加肖特基二极管、成本更低
ULN2003A7路达林顿阵列、仅低侧开关、500mA/通道单向驱动/步进单极性/继电器/LED阵列
LB1909MC双H桥、1A连续、内置续流、热保护更大电流替代L293D
TB6612FNG双H桥、1.2A/3.2A峰值、MOSFET、低RDS(on)、体积小高效率、低发热、首选升级
DRV8833/DRV8871双/单H桥、MOSFET、1.5A/3.6A、极小封装空间受限/电池供电项目
L293D电机驱动盾接Arduino控制直流电机:硬件接线与代码全攻略
ULN2003A达林顿阵列(来源:Wikimedia Commons)

典型应用场景拓展

工程避坑指南

  1. 电源分离:电机电源(VS)与逻辑电源(VSS)必须共地但独立供电,防止电机噪声复位MCU
  2. 散热设计:>500mA连续电流必须加散热片/风扇,DIP封装GND引脚铺大面积铜散热
  3. 反电动势:虽然内置续流二极管,长线缆感性负载建议外加TVS/肖特基并联
  4. PWM频率:Arduino默认490Hz/980Hz可听噪音大,用Timer1/2设置20kHz+超声频段
  5. 电容去耦:VS端贴片100µF电解+100nF陶瓷,靠近芯片引脚
  6. 代码保护:使能前检查EN引脚状态,异常复位时motor.run(RELEASE)防止飞车

结语

L293D虽非最高性能,但引脚兼容性最好、资料最全、容错率最高,是电机控制入门的“黄金标准”。掌握H桥原理、PWM调速、库函数封装、电源隔离、热设计,即可无缝迁移到TB6612/DRV8833/BTS7960等新一代驱动。需要定制Motor Shield PCB、多电机同步控制固件、电流采样闭环代码?联系我们获取完整工程包。

工业技术

  1. 基于 Arduino Uno 的人体检测救援机器人:传感器集成分步指南
  2. Arduino 解码遥控接收机 PPM 信号——分步指南
  3. Android 手势遥控车:Raspberry Pi + Arduino 101 + 电机扩展板,I2T 协同控制
  4. 用 Arduino 测量地球质量:DIY 分步指南
  5. 构建基于 PHP 的 Web 界面控制 Arduino Uno
  6. DIY 手势控制机械臂:基于 Arduino + 柔性传感器 + IMU + 蓝牙的六自由度仿生臂
  7. 基于 Arduino 的智能温室监测与自动灌溉系统
  8. DIY 迷你示波器:基于 Arduino Nano 与 OLED 显示屏的逐步教程
  9. 废旧 DVD 光驱改装迷你 CNC 2D 绘图机 —— 基于 L293D 电机扩展板
  10. Arduino 实时数字罗盘:HMC5883L + Processing 可视化教程
  11. 有刷直流电机原理与选型全解析:四大励磁方式与四大工程优势
  12. 直流电机故障检测诊断分步指南:从断电到换向器排查