零基础入门Arduino:L298N电机驱动
·
今天让我们继续学习,利用Arduino与驱动板L298N控制电机。在开始之前,先介绍下驱动板L298N吧!
L298N 是一款双 H 桥电机驱动芯片,常用于控制直流电机或步进电机。该芯片可同时驱动两个直流电机或一个两相四线步进电机,支持宽电压输入(5V~35V),最大输出电流为 2A(单桥)。
主要特性
- 双通道驱动:可独立控制两个直流电机或一个步进电机。
- 逻辑电压兼容:支持 5V 电平输入,与 Arduino、STM32 等微控制器直接连接。
- 过流保护:内置二极管续流保护,防止电机反电动势损坏电路。
- PWM 调速:通过输入 PWM 信号实现电机调速。

引脚功能
- 电源部分
VCC:驱动电压(5V~35V),接电机电源。GND:公共地线。5V:逻辑供电输出(可为微控制器供电,若外接 5V 需断开板载跳线)。
- 控制部分
IN1~IN4:控制电机转向的输入信号(接微控制器 GPIO)。ENA/ENB:使能端(接 PWM 信号可调速)。
接下来我们进入今天的学习用Arduino与驱动板L298N控制电机
硬件准备
- Arduino开发板(如Arduino Uno)
- L298N控制电机
- 小黄电机(如下图)
- 杜邦线若干
- 面包板(可选)

硬件连接
将L298N模块与Arduino连接时,需要确保电源和信号线正确对接。L298N的ENA和ENB引脚用于控制电机速度,通常连接到Arduino的PWM引脚(如D5、D6),这里也可以用跳帽直接连接,不管电机的速度。IN1、IN2、IN3、IN4控制电机转向,可连接到任意数字引脚(如D2、D3、D4、D7)。注意:电机电源(VMS)需单独供电(7-12V),逻辑电源(VSS)可接Arduino的5V输出!
基础代码示例
// 定义引脚
const int enA = 5; // PWM引脚控制速度
const int in1 = 2;
const int in2 = 3;
const int in3 = 4;
const int in4 = 7;
const int enB = 6;
void setup() {
// 设置引脚模式
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void loop() {
// 电机正转
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enA, 200); // 设置速度(0-255)
analogWrite(enB, 200);
delay(2000);
// 电机反转
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(2000);
// 停止电机
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(1000);
}
电机速度控制
通过PWM信号调节ENA和ENB引脚的占空比可改变电机速度。analogWrite(pin, value)中value范围为0(停止)至255(全速)。例如,analogWrite(enA, 128)将电机速度设为50%。
转向逻辑
IN1和IN2控制电机A的转向,IN3和IN4控制电机B:
- 正转:IN1=HIGH, IN2=LOW(电机A);IN3=HIGH, IN4=LOW(电机B)
- 反转:IN1=LOW, IN2=HIGH;IN3=LOW, IN4=HIGH
- 停止:IN1=IN2=LOW;IN3=IN4=LOW
注意事项
- 电源隔离:电机电源(VMS)与逻辑电源(VSS)需分开供电,避免电流干扰导致Arduino重启。
- 散热:大电流负载时,L298N可能发热,建议安装散热片。
- 二极管保护:若驱动感性负载(如直流电机),模块内部需有续流二极管。
谢谢大家的观看,同时如果喜欢3d打印和嵌入式开发的可以私信我!
更多推荐



所有评论(0)