要使用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,不然电机带不动,无反应