MicroPython+L298N+ESP32控制电机转速

发布于:2025-05-31 ⋅ 阅读:(21) ⋅ 点赞:(0)

要使用MicroPython控制L298N电机驱动板来控制电机的转速,你可以通过PWM(脉冲宽度调制)信号来调节电机速度。L298N是一个双H桥驱动器,可以同时控制两个电机的正反转和速度。

硬件准备:

1. L298N 电机控制板

2. ESP32 开发板,我用的是:USB Type-C ESP32开发板 CH340C

3. 直流电机一个

4. 电池,12v

硬件连接

1. VCC  连接到电机驱动板,我这里连接到的是驱动板上的12v供电

2. GND  接地线,驱动板与开发板要共用底线

3. 输入 IN1 IN2 电机驱动板与ESP32开发板连接,我这里连接对应的开发板GPIO口是:2和4

4. ENA或者ENB 我这里只有一个电机,所以用的ENA,将电机驱动板上的ENA接口与ESP32上的 GPIO 15 连接

完整的联系图如下:

编写代码测试

打开 Thonny 在里面新建一个py脚本,编写测试代码如下:

代码

from machine import Pin, PWM
import time
 
# 定义GPIO引脚
in1 = Pin(2, Pin.OUT)  # 例如ESP32的GPIO2
in2 = Pin(4, Pin.OUT)  # 例如ESP32的GPIO4
enA = PWM(Pin(15), freq=5000)  # 例如ESP32的GPIO15,频率为5000Hz
 
# 电机正转
def motor_forward(duty_cycle):
    in1.value(1)
    in2.value(0)
    enA.duty(duty_cycle)  # duty_cycle范围从0到1023,代表0%到100%的占空比
 
# 电机反转
def motor_backward(duty_cycle):
    in1.value(0)
    in2.value(1)
    enA.duty(duty_cycle)
 
# 电机停止
def motor_stop():
    in1.value(0)
    in2.value(0)
    enA.duty(0)  # 完全关闭PWM信号
 
# 示例:让电机以不同的速度运行和停止
motor_forward(512)  # 50%速度正转
time.sleep(2)
motor_stop()       # 停止
time.sleep(1)
motor_backward(768) # 75%速度反转
time.sleep(2)
motor_stop()       # 停止

注意事项

  • 频率:PWM信号的频率可以根据你的需要进行调整,但通常5kHz到10kHz是常见的选择。

  • 占空比duty()函数的值从0(0%)到1023(100%),你可以根据需要调整这个值来改变电机的速度。

  • 引脚选择:根据你的具体硬件平台(如ESP8266, ESP32等),GPIO引脚的选择可能会有所不同。请参考你的开发板文档。

  • 电源:确保你的电机和驱动板能够承受所选择的电压和电流。建议大于5v,不然电机带不动,无反应


网站公告

今日签到

点亮在社区的每一天
去签到