L298N电机驱动模块

发布时间:2026/6/27 9:46:05
L298N电机驱动模块 L298N电机驱动模块前言在Arduino项目中电机驱动是一个绕不开的话题。无论是智能小车、机械臂还是各类自动化装置都需要让电机按照我们的意愿转动起来。然而Arduino的GPIO引脚输出电流非常有限通常只有20-40mA远不足以驱动TT马达这类直流电机更不用说直接驱动还可能烧坏开发板。这时候就需要一个中间人——**电机驱动模块**它负责将Arduino输出的“小信号”转换成足以驱动电机的“大电流”。在众多电机驱动方案中**L298N**凭借成熟稳定、价格亲民、支持PWM调速等优点成为创客圈最受欢迎的电机驱动模块之一。本文将手把手教你如何使用Arduino Uno搭配L298N驱动TT马达内容包括硬件原理、接线方法、代码示例和常见问题排查非常适合刚接触电机驱动的朋友参考。一、L298N模块的核心原理H桥在动手接线之前先简单了解一下L298N是怎么工作的。L298N芯片内部集成了**两个独立的H桥电路**每个H桥可以控制一个直流电机的正转、反转和停止。所谓“H桥”可以理解为四个开关组成的电路通过控制不同开关的通断组合改变流过电机的电流方向从而控制转向- **正向旋转**电流从OUT1流向OUT2- **反向旋转**电流从OUT2流向OUT1- **刹车**电机两端短路产生制动力矩- **自由停止**所有开关断开电机惯性滑行此外L298N支持**PWM脉冲宽度调制调速**通过调整使能端接收的PWM信号占空比就能控制电机的转速而不是简单地转或不转。二、L298N模块引脚功能详解市面上常见的L298N模块通常包含以下引脚| 引脚 | 功能说明 ||------|----------|| **电源部分** | || 12V / VCC | 电机主电源输入建议7-12V || GND | 公共地 || 5V | 模块板载稳压输出或逻辑电源输入 || **控制引脚A通道** | || ENA | A通道使能端接PWM可实现调速 || IN1、IN2 | A通道方向控制 || **控制引脚B通道** | || ENB | B通道使能端接PWM可实现调速 || IN3、IN4 | B通道方向控制 || **电机输出** | || OUT1、OUT2 | 连接A通道电机 || OUT3、OUT4 | 连接B通道电机 |**关于跳线帽**模块上ENA和ENB通常默认用跳线帽短接到5V此时电机始终全速运行。如果需要通过PWM调速**必须拔掉这两个跳线帽**再将ENA/ENB引脚接到Arduino的PWM引脚。三、硬件接线指南所需材料- Arduino Uno开发板- L298N电机驱动模块- TT直流减速马达 × 2- 6-12V电池组如两节18650串联或9V电池- 杜邦线若干接线步骤以控制**两个TT马达**常见的小车双电机方案为例| L298N引脚 | 连接到 | 说明 ||-----------|--------|------|| **电源部分** | | || 12V | 电池正极 | 为电机供电 || GND | 电池负极 Arduino GND | **必须共地** || 5V | 可选Arduino 5V | 若电池电压合适可由此为Arduino供电 || **A通道控制** | | || ENA | Arduino D9PWM | 控制A电机速度 || IN1 | Arduino D2 | 控制A电机方向 || IN2 | Arduino D3 | 控制A电机方向 || **B通道控制** | | || ENB | Arduino D10PWM | 控制B电机速度 || IN3 | Arduino D4 | 控制B电机方向 || IN4 | Arduino D5 | 控制B电机方向 |**⚠️ 关键注意事项**1. **共地**Arduino的GND、L298N的GND、电池负极必须全部连接在一起否则控制信号无法正常工作。2. **外部供电**L298N需要独立的外部电源建议7-12V不要试图通过Arduino的5V引脚给电机供电电流不够。3. **跳线帽**如果需要调速必须拔掉ENA和ENB的跳线帽。四、Arduino代码示例示例1双电机正反转与停止这段代码会让两个电机依次执行前进、后退、左转、右转、停止每个动作持续2秒// 定义引脚 #define IN1 2 #define IN2 3 #define IN3 4 #define IN4 5 #define ENA 9 #define ENB 10 void setup() { pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); pinMode(ENA, OUTPUT); pinMode(ENB, OUTPUT); // 设置初始速度0-255 analogWrite(ENA, 200); analogWrite(ENB, 200); } void loop() { // 前进 digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); delay(2000); // 后退 digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); delay(2000); // 左转左轮后退右轮前进 digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); delay(2000); // 右转左轮前进右轮后退 digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); delay(2000); // 停止 digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); delay(2000); }示例2PWM调速与缓慢启动在电机启动时逐步增加速度可以减小启动电流冲击const int IN1 2; const int IN2 3; const int ENA 9; void setup() { pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(ENA, OUTPUT); } void loop() { // 正转缓慢加速到150 digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); for(int i 0; i 150; i) { analogWrite(ENA, i); delay(10); } delay(3000); // 停止 digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); analogWrite(ENA, 0); delay(2000); // 反转缓慢加速到150 digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); for(int i 0; i 150; i) { analogWrite(ENA, i); delay(10); } delay(3000); digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); analogWrite(ENA, 0); delay(2000); }五、常见问题与排查指南根据网上大量开发者的实战经验我整理了L298N最常见的几个坑和解决方案❌ 问题1电机不转但有嗡嗡声**原因**供电电压不足。L298N虽然标称5V起步但实际上用5V驱动TT马达很容易出现电压不足的情况。**解决**更换足量电池如两节18650串联电压约7.4-8.4VL298N在8-9V供电下工作最稳定。❌ 问题2只有一个轮子转**原因**可能是接线松动、代码只控制了一个通道或者电源电流不足以驱动两个电机。**解决**先检查所有杜邦线是否插牢再用示例代码分别测试A、B通道确认两个通道都正常。❌ 问题3PWM调速无效**原因**ENA或ENB的跳线帽没有拔掉模块仍处于“常开”状态。**解决**拔掉对应的跳线帽确保ENA接到Arduino的PWM引脚。❌ 问题4Arduino莫名重启**原因**电机启动瞬间电流过大导致电压跌落Arduino供电不稳定。**解决**使用独立电源为L298N供电Arduino通过USB或单独供电两个电路只在GND处共地。❌ 问题5两个轮子转速不一样**原因**L298N的两个H桥可能存在微小差异或者电机本身参数不一致。**解决**在代码中分别为ENA和ENB设置不同的PWM值用软件补偿速度差。六、进阶思路做成蓝牙遥控小车当你能熟练控制电机后可以继续加一个蓝牙模块如HC-05让手机App远程控制小车。核心思路是Arduino通过串口接收蓝牙指令再根据指令调用不同的电机控制函数。这样一台蓝牙遥控小车就诞生了这也是很多Arduino入门项目里的经典之作。总结L298N作为Arduino项目中经典的电机驱动方案接线简单、控制逻辑清晰非常适合初学者上手。核心要点可以总结为三句话1. **独立供电**电机需要自己的电源别想从Arduino借电。2. **必须共地**所有GND连在一起是电路工作的基本前提。3. **拔掉跳线帽才能调速**想用PWM控制速度必须先拔掉ENA/ENB的跳线帽。掌握这些你就能轻松控制TT马达把它用在智能小车、机械臂、自动门等各种有趣的项目中了。如果在实际接线或调试中遇到问题欢迎在评论区交流讨论