大家好,欢迎来到IT知识分享网。
L298N 电机驱动模块
L298N 电机驱器、它可以在 35V 下处理高达 3A 的电流。此外,它允许同时驱动两个直流电机,这非常适合构建机器人。
L298N电机驱动器如下图所示:

L298N 电机驱动器引脚排列
让我们看一下 L298N 电机驱动器的引脚排列,看看它是如何工作的。

电机驱动器的每侧都有一个用于每个电机的两个端子块。OUT1 和 OUT2 在左侧,OUT3 和 OUT4 在右侧。
- OUT1:直流电机A+端子
- OUT2:直流电机A-端子
- OUT3:直流电机B+端子
- OUT4:直流电机B-端子
底部有一个三端子块+12V, 接地, 和+5V。这+12V接线端子用于为电机供电。这+5V端子用于给L298N芯片供电。可以使用跳线使用芯片使用电机电源供电,而无需通过+5V终端。
注意:如果供电超过12V,则需要不能使用跳线,而需要直接通过+5V端子供电5V。
值得注意的是,尽管有 +12V 端子名称,但通过跳线就位,可以提供 6V 到 12V 之间的任何电压。在
- GND:电源地
- +5V:如果不用跳线供 5V。通过跳线充当 5V 输出
- 跳线:跳线到位 – 使用电机电源为芯片供电。去掉跳线:需要给+5V端子提供5V电压。如果供电超过12V,则应去掉跳线
右下角有四个输入引脚和两个使能端子。输入引脚用于控制直流电机的方向,启用引脚用于控制每个电机的速度。
- IN1: 电机 A 的输入 1
- IN2:电机 A 的输入 2
- IN3:电机 B 的输入 1
- IN4:电机 B 的输入 2
- EN1:电机 A 的使能引脚
- EN2:电机 B 的使能引脚
默认情况下,使能引脚上有跳线帽。需要拆下这些跳线帽来控制电机的速度。
使用 L298N 控制直流电机
启用引脚
启用引脚就像电机的开关。例如:
- 如果向使能 1 引脚发送高电平信号,则电机 A 已准备好受控制并处于最大速度;
- 如果向使能1引脚发送低电平信号,则电机A关闭;
- 如果发送PWM信号,就可以控制电机的速度。电机速度与占空比成正比。但请注意,对于较小的工作周期,电机可能不会旋转,并发出连续的嗡嗡声。
使能引脚上的信号 |
电机状态 |
高的 |
电机启用 |
低的 |
电机未启用 |
脉宽调制 |
电机启用:速度与占空比成正比 |
输入引脚
输入引脚控制电机旋转的方向。输入1和输入2控制电机A,输入3和4控制电机B。
- 如果对输入 1 施加低电平,对输入 2 施加高电平,电机将向前旋转;
- 如果以相反的方式供电:输入 1 为高电平,输入 2 为低电平,电机将向后旋转。可以使用相同的方法控制电机 B,但对输入 3 和输入 4 应用高电平或低电平。
控制 2 个直流电机 – 构建机器人
如果想使用 2 个直流电机构建机器人汽车,这些电机应该沿特定方向旋转,以使机器人向左、向右、向前或向后移动。
例如,如果希望机器人向前移动,则两个电机都应该向前旋转。为了使其向后移动,两者都应该向后旋转。
要使机器人向一个方向转动,需要更快地旋转相反的电机。例如,要让机器人右转,则启用左侧电机,禁用右侧电机。下表显示了机器人方向的输入引脚的状态组合。
方向 |
输入1 |
输入2 |
输入3 |
输入4 |
向前 |
0 |
1 |
0 |
1 |
落后 |
1 |
0 |
1 |
0 |
正确的 |
0 |
1 |
0 |
0 |
左边 |
0 |
0 |
0 |
1 |
停止 |
0 |
0 |
0 |
0 |
使用 ESP32 控制直流电机 – 速度和方向
要控制的电机连接到电机 A 输出引脚,因此需要将电机驱动器的 ENABLEA、INPUT1 和 INPUT2 引脚连接到 ESP32。按照下一个原理图将直流电机和 L298N 电机驱动器连接到 ESP32。


直流电机需要较大的电流才能工作,因此应使用 ESP32 的外部电源为电机供电。例如,使用 4 节 AA 电池,但可以使用任何其他合适的电源。在此配置中,可以使用 6V 至 12V 的电源。
。
以下代码控制直流电机的速度和方向。
// 电机A int motor1Pin1 = 27; int motor1Pin2 = 26; int enable1Pin = 14; // 设置 PWM 属性来控制速度 const int freq = 30000; const int pwmChannel = 0; const int resolution = 8; int dutyCycle = 200; void setup() { // 设输出端口s: pinMode(motor1Pin1, OUTPUT); pinMode(motor1Pin2, OUTPUT); pinMode(enable1Pin, OUTPUT); //使用之前定义的属性来配置 PWM 信号ledc设置()接受作为参数的函数 ledcSetup(pwmChannel, freq, resolution); // 控制的 GPIO ledcAttachPin(enable1Pin, pwmChannel); Serial.begin(); // testing Serial.print("Testing DC Motor..."); } void loop() { // 向前运动 Serial.println("Moving Forward"); digitalWrite(motor1Pin1, LOW); digitalWrite(motor1Pin2, HIGH); delay(2000); // 停止 Serial.println("Motor stopped"); digitalWrite(motor1Pin1, LOW); digitalWrite(motor1Pin2, LOW); delay(1000); // 向后运动 Serial.println("Moving Backwards"); digitalWrite(motor1Pin1, HIGH); digitalWrite(motor1Pin2, LOW); delay(2000); // 停止 Serial.println("Motor stopped"); digitalWrite(motor1Pin1, LOW); digitalWrite(motor1Pin2, LOW); delay(1000); // 向前加速运动 digitalWrite(motor1Pin1, HIGH); digitalWrite(motor1Pin2, LOW); while (dutyCycle <= 255){ ledcWrite(pwmChannel, dutyCycle); Serial.print("Forward with duty cycle: "); Serial.println(dutyCycle); dutyCycle = dutyCycle + 5; delay(500); } dutyCycle = 200; }
- 要控制直流电机旋转的方向,您可以使用输入 1 和输入 2 引脚;
- 将低电平施加到输入 1,将高电平施加到输入 2,以使电机向前旋转。反过来施加动力,使其向后旋转;
- 要控制直流电机的速度,您可以在使能引脚上使用 PWM 信号。直流电机的速度与占空比成正比。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/172206.html