l298n(l298n引脚图和说明)硬核推荐
本教程介绍了如何使用ESP32和L298N电机驱动器来控制DC电机的方向和速度。首先,我们将快速了解L298N电机驱动器的工作原理。然后,我们将
本教程介绍了如何使用ESP32和L298N电机驱动器来控制DC电机的方向和速度首先,我们将快速了解L298N电机驱动器的工作原理然后,我们将向您展示一个示例,说明如何使用带有Arduino IDE的ESP32和L298N电机驱动器来控制DC电机的速度和方向。
注意:有很多方法可以控制直流电动机。我们将使用L298N电机驱动器。本教程还与类似的电机驱动器模块兼容。所需部件要完成本教程,您需要以下部分:
ESP32 DOIT DEVKIT V1直流马达L298N电机驱动器电源: 4节1.5节AA电池 或 开关电源2个100nF陶瓷电容器 (可选)1个SPDT滑动开关 (可选)跳线L298N电机驱动器介绍
有许多方法可以控制直流电动机我们将在这里使用的方法适用于大多数需要6V或12V操作的业余爱好者电机我们将使用L298N电动机驱动器,该驱动器在35V电压下可处理高达3A的电流此外,它还允许我们同时驱动两个直流电动机,这非常适合构建机器人。
L298N电机驱动器如下图所示:
L298N电机驱动器引脚排列让我们看一下L298N电机驱动器的引脚排列,看看它是如何工作的。
电机驱动器在每个电机的每侧都有两个接线端子OUT1和OUT2在左侧,OUT3和OUT4在右侧OUT1:直流电机A +端子OUT2:直流电动机A –端子OUT3:直流电机B +端子OUT4:直流电动机B –端子。
在底部,有一个带+ 12V,GND和+ 5V的三个接线端子+ 12V端子用于马达电源+ 5V端子用于L298N芯片但是,如果安装了跳线,则芯片将使用电动机的电源供电,并且您无需通过+ 5V端子提供5V 电压。
注意:如果您提供的电压超过12V,则需要卸下跳线,并向+ 5V端子提供5V的电压重要的是要注意,尽管端子名称为+ 12V,但在这里我们将使用设置(在有跳线的情况下)可以提供6V至12V之间的任何电压在本教程中,将使用4节AA 1.5V电池,这些电池的总输出约为6V,但是您可以使用任何其他合适的电源。
例如,您可以使用开关电源来测试本教程综上所述:+ 12V:+ 12V端子是您应该连接电源的地方GND:电源GND+ 5V:如果移除了跳线,则提供5V如果有跳线,则充当5V输出跳线:默认的跳线–使用电动机电源为芯片加电。
跳线已移除:您需要为+ 5V端子提供5V电压如果您提供的电压超过12V,则应卸下跳线在右下角,您有四个输入引脚和两个启用端子输入引脚用于控制直流电动机的方向,而使能引脚用于控制每个电动机的速度IN1: 。
电动机A的输入1IN2:电动机A的输入2IN3:电机B的输入1IN4:电机B的输入2EN1:电机A的使能引脚EN2:电机B的使能引脚默认情况下,使能引脚上有跳线帽您需要卸下那些跳线帽以控制电动机的速度使用L298N控制直流电动机
现在您已经熟悉了L298N电动机驱动器,让我们看看如何使用它来控制直流电动机使能引脚使能引脚就像电动机的ON和OFF开关例如:如果将HIGH信号发送到使能1引脚,则电动机A准备好以最大速度进行控制;如果将
低电平信号发送到使能1引脚,则电动机A关闭;否则,电动机A启用如果发送PWM信号,则可以控制电动机的速度电机速度与占空比成正比但是,请注意,在较小的占空比下,电动机可能不会旋转,并且会发出持续的嗡嗡声输入脚
输入引脚控制电动机旋转的方向输入1和输入2控制马达A,输入3和4控制马达B.如果将LOW应用于输入1,将HIGH应用于输入2,则电动机将正转;如果以相反的方式加电:输入1为高,输入2为低,电动机将向后旋转。
可以使用相同的方法来控制电动机B,但是将HIGH或LOW应用于输入3和输入4控制2台直流电动机–是构建机器人的理想选择如果要使用2个直流电动机建造机器人汽车,则这些电动机应沿特定方向旋转,以使机器人向左,向右,向前或向后移动。
例如,如果您希望机器人向前移动,则两个电动机都应向前旋转为了使其向后移动,两者都应向后旋转为了使机器人朝一个方向旋转,您需要更快地旋转相反的电机例如,要使机器人向右转,请在左侧启用电动机,然后在右侧禁用电动机。
使用ESP32控制直流电机–速度和方向现在,您知道如何使用L298N电动机驱动器控制直流电动机,让我们建立一个简单的示例来控制一个直流电动机的速度和方向原理图我们将控制的电机连接到电机A的输出引脚,因此我们需要将电机驱动器的ENABLEA,INPUT1和INPUT2引脚连接到ESP32。
将直流电动机和L298N电动机驱动器连接到ESP32DC电动机需要较大的电流跳跃才能启动,因此应使用ESP32的外部电源为电动机供电例如,我们使用4AA电池,但是您可以使用任何其他合适的电源在此配置中,您可以使用6V至12V的电源。
电池座和电机驱动器之间的开关是可选的,但切断和接通电源非常方便这样,您就不需要不断地连接然后断开电线以节省功率我们建议将0.1uF陶瓷电容器焊接到直流电动机的正负极,以帮助消除任何电压尖峰(注意:电动机也可以在没有电容器的情况下工作。
)准备Arduino IDEArduino IDE有一个附加组件,可让您使用Arduino IDE及其编程语言对ESP32进行编程确保已安装ESP32插件后,可以继续本教程上传代码以下代码控制直流电动机的速度和方向。
该代码在现实世界中没有用,这只是一个简单的示例,可以更好地了解如何使用ESP32控制DC电动机的速度和方向/*********Rui SantosComplete project details at https://randomnerdtutorials.com
*********/// Motor Aint motor1Pin1 = 27;int motor1Pin2 = 26;int enable1Pin = 14;// Setting PWM properties
const int freq = 30000;const int pwmChannel = 0;const int resolution = 8;int dutyCycle = 200;void setup() {
// sets the pins as outputs:pinMode(motor1Pin1, OUTPUT);pinMode(motor1Pin2, OUTPUT);pinMode(enable1Pin, OUTPUT);
// configure LED PWM functionalititesledcSetup(pwmChannel, freq, resolution);// attach the channel to the GPIO to be controlled
ledcAttachPin(enable1Pin, pwmChannel);Serial.begin(115200);// testingSerial.print("Testing DC Motor...");
}void loop() {// Move the DC motor forward at maximum speedSerial.println("Moving Forward");digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);delay(2000);// Stop the DC motorSerial.println("Motor stopped");digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);delay(1000);// Move DC motor backwards at maximum speedSerial.println("Moving Backwards");
digitalWrite(motor1Pin1, HIGH);digitalWrite(motor1Pin2, LOW);delay(2000);// Stop the DC motorSerial.println("Motor stopped");
digitalWrite(motor1Pin1, LOW);digitalWrite(motor1Pin2, LOW);delay(1000);// Move DC motor forward with increasing speed
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;}将代码上传到ESP32确保选择了正确的板和COM端口让我们看一下代码是如何工作的声明电机引脚首先,定义电机引脚连接的GPIO在这种情况下,电机A的输入1连接到GPIO 27,输入2连接到GPIO 26,使能引脚连接到GPIO 14。
int motor1Pin1 = 27;int motor1Pin2 = 26;int enable1Pin = 14;设置PWM属性以控制速度如前所述,您可以通过向L298N电机驱动器的使能引脚施加PWM信号来控制直流电机的速度。
速度将与占空比成正比要将PWM与ESP32一起使用,您需要首先设置PWM信号属性const int freq = 30000;const int pwmChannel = 0;const int resolution = 8;
int dutyCycle = 200;在这种情况下,我们将在通道0上以8位分辨率生成30000 Hz的信号我们从200的占空比开始(您可以将占空比值设置为0到255)对于我们使用的频率,当您应用小于200的占空比时,电机将不会移动,并且会发出奇怪的蜂鸣声。
因此,这就是为什么我们一开始将占空比设置为200的原因注意:我们在此处定义的PWM属性只是一个示例电机可以在其他频率下正常工作设定()在setup()中,首先将电动机引脚设置为输出pinMode(motor1Pin1, OUTPUT);。
pinMode(motor1Pin2, OUTPUT);pinMode(enable1Pin, OUTPUT);您需要通过使用ledcSetup()函数来配置具有先前定义的属性的PWM信号,该函数接受pwmChannel,frequency和resolution作为参数,如下所示:
ledcSetup(pwmChannel, freq, resolution);接下来,您需要选择将从其获取信号的GPIO为此,请使用 ledcAttachPin()函数,该函数接受要获取信号的GPIO以及生成信号的通道作为参数。
在此示例中,我们将在enable1Pin GPIO中获取信号,该GPIO与GPIO 14相对应生成信号的通道为pwmChannel,与通道0相对应ledcAttachPin(enable1Pin, pwmChannel);
向前移动直流电动机在loop()中是电动机运动的地方该代码很好地说明了代码各部分的功能要使电动机向前移动,请将输入1引脚设置为LOW,将输入2引脚设置为HIGH在此示例中,电动机向前旋转2秒钟(2000毫秒)。
// Move the DC motor forward at maximum speedSerial.println("Moving Forward");digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);delay(2000);向后移动直流电动机要向后移动直流电动机,请反方向向电动机输入引脚供电高输入1,低输入2// Move DC motor backwards at maximum speed。
Serial.println("Moving Backwards");digitalWrite(motor1Pin1, HIGH);digitalWrite(motor1Pin2, LOW);delay(2000);
停止直流电机要使直流电动机停止,您可以将使能引脚设置为LOW,或者将输入1和输入2引脚都设置为LOW在此示例中,我们将两个输入引脚都设置为LOW// Stop the DC motorSerial.println("Motor stopped");。
digitalWrite(motor1Pin1, LOW);digitalWrite(motor1Pin2, LOW);delay(1000);控制直流电动机速度要控制直流电动机的速度,我们需要更改PWM信号占空比。
为此,您可以使用ledcWrite()函数,该函数接受生成信号的PWM通道(而不是输出GPIO)和占空比的参数,如下所示ledcWrite(pwmChannel, dutyCycle);在我们的示例中,我们有一个while循环,可以在每个循环中将占空比增加5。
// Move DC motor forward with increasing speeddigitalWrite(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);}当while条件不再成立时,我们将占空比再次设置为200dutyCycle = 200;写在最后在本教程中,我们向您展示了如何使用ESP32和L298N电机驱动器来控制DC电机的方向和速度。
综上所述:要控制直流电动机旋转的方向,请使用输入1和输入2引脚;将LOW应用于输入1,将HIGH应用于输入2,以使电动机向前旋转用另一种方法加电以使其向后旋转要控制直流电动机的速度,请在使能引脚上使用PWM信号。
直流电动机的速度与占空比成正比
- 标签:
- 编辑:李松一
- 相关文章
-
wifi密码忘记了怎么办(wifi密码忘记了怎么办找回密码)太疯狂了
无线wfii已经越来越普遍了,生活、工作处处都有它的身影,通过它让电脑手机等电子设备连接互联网进行娱乐、办公或学习。…
-
VIVO S15(vivo s15详细参数)一看就会
5月19日,vivo召开了全新的S系列新品发布会,发布了vivo S15系列的两款手机以及一款TWS耳机——vivo TWS Air。…
- 信号放大器(信号放大器怎么连接)一看就会
- cba冠军(cba冠军是谁2023)怎么可以错过
- 伺服电机工作原理(伺服电机工作原理图)硬核推荐
- 陈虹伊(陈虹伊个人简介)硬核推荐
- 成都地铁2号线(成都地铁2号线站点)没想到