如何使用ESP32和L298N电机驱动模块控制速度和方向

如何使用ESP32和L298N电机驱动模块控制速度和方向L298N 电机驱动模块 L298N 电机驱器 它可以在 35V 下处理高达 3A 的电流 此外 它允许同时驱动两个直流电机 这非常适合构建机器人 L298N 电机驱动器如下图所示 L298N 电机驱动器引脚排列让我们看一下 L298N 电机驱

大家好,欢迎来到IT知识分享网。

L298N 电机驱动模块

L298N 电机驱器、它可以在 35V 下处理高达 3A 的电流。此外,它允许同时驱动两个直流电机,这非常适合构建机器人。

L298N电机驱动器如下图所示:

如何使用ESP32和L298N电机驱动模块控制速度和方向

L298N 电机驱动器引脚排列

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

如何使用ESP32和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 之间的任何电压。在

  • +12V:+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和L298N电机驱动模块控制速度和方向

    如何使用ESP32和L298N电机驱动模块控制速度和方向

    直流电机需要较大的电流才能工作,因此应使用 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

    (0)
    上一篇 2025-03-02 10:15
    下一篇 2025-03-02 10:20

    相关推荐

    发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注

    关注微信