Micropython——L298N电机驱动模块

L298N电机驱动模块

L298N 电机驱动模块可以直接驱动两路 3-16V 直流电机,并提供了 5V 输出接口(输入最低只要 6V),可以给5V单片机电路系统供电 (低纹波系数),支持3.3V MCU ARM 控制,可以方便的控制直流电机速度和方向,也可以控制2相步进电机, 5线4相步进电机,是智能小车必备利器。

参考推荐:最详细的L298N模块使用说明

在这里插入图片描述

PWM调速原理

PWM全称为“Pulse Width Modulation”。中文:脉冲宽度调制。脉冲宽度指的是 脉冲持续的时间,既高电平或低电平保持(持续)的时间。而PWM通俗的说就是人为的(通过微处理器)去控制电平高低保持的时间占空比:在一个脉冲的循环中,通电时间相对于总时间所占的比例

  • 在本图中高电平相对总时间所占的比例即为“占空比”:如75%、50%、20%
    在这里插入图片描述

编码器电机接线

接线时,将使能端的跳线帽拔掉,然后将PWM引脚接到ENA引脚即可,通过IN1和IN2控制方向,通过使能端控制PWM。其他引脚于直流电机接线相同,IN1、IN2接普通IO口即可
在这里插入图片描述

直流电机接线

在STM32芯片中,因为需要通过定时器输出的PWM进行直流电机的调速控制,所以在L298N驱动模块的输入端口需要设置为有定时器的IO口,具体的定时器对应IO口参考TPYboard的PCB原理图

注意:L298N的12V电源输入端电压务必高于5.8V,否则驱动无法正常工作!亲测使用7.4V电池,当电压低于5.6V左右时即无法正常工作!输入信号无输出响应。

L298N直流电机(5-12V)TPYboard
IN1X9(TIM4,CH1)
IN2X10(TIM4,CH2)
IN3Y7(TIM1,CH2)
IN4Y8(TIM1,CH3)
OUT1+
OUT2-
OUT3+
OUT4-
5VVIN(5V)
12V12V外接电源的正极
GNDGND和外接电源的负极

PWM代码

from pyb import Pin, Timer
#伸缩杆
rod_P1 = Pin('X9', Pin.OUT_PP)
rod_P2 = Pin('X10', Pin.OUT_PP)
#伸缩杆(rod)对应定时器
tim_rod = Timer(4, freq=100) #要实现每秒0.1ms量级
rod_go = tim_rod.channel(1, Timer.PWM, pin=rod_P1)
rod_back = tim_rod.channel(2, Timer.PWM, pin=rod_P2)
while True:
	#前进
	rod_go.pulse_width_percent(100) # =Pin.high() 
	rod_back.pulse_width_percent(0) # =Pin.low()
	pyb.delay(1000) #调时间就是调距离
	#后退
	rod_go.pulse_width_percent(0)  
	rod_back.pulse_width_percent(100) 
	pyb.delay(1000) #调时间就是调距离

手动调节代码的PWM值即可调速:

from pyb import Pin, Timer
#左轮
left1 = Pin('X9', Pin.OUT_PP)
left2 = Pin('X10', Pin.OUT_PP)
#左轮对应定时器
tim_left = Timer(4, freq=100) #要实现每个脉冲持续10ms
left_go = tim_left.channel(1, Timer.PWM, pin=left1)
left_stop = tim_left.channel(2, Timer.PWM, pin=left2)

#右轮
right1 = Pin('Y7', Pin.OUT_PP)
right2 = Pin('Y8', Pin.OUT_PP)
#左轮对应定时器
tim_right = Timer(1, freq=100) #要实现每个脉冲持续10ms
right_go = tim_left.channel(2, Timer.PWM, pin=right1)
right_stop = tim_left.channel(3, Timer.PWM, pin=right2)

while True:
    #左轮,可PWM调速
    left_go.pulse_width_percent(100) #0-100进行调速,100为全速,0为停止
    left_stop.pulse_width_percent(0) #默认为0,作为调速基准
    #右轮,可PWM调速
    right_go.pulse_width_percent(100) #0-100进行调速,100为全速,0为停止
    right_stop.pulse_width_percent(0) #默认为0,作为调速基准

如果读者按照博主的教程学会了传感器的使用,不要忘了点个赞哦~

  • 13
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
L298N电机驱动模块是一种常用的电机驱动模块,它可以通过控制GPIO引脚的高低电平来控制直流电机的转动方向和速度。而使用MicroPython语言可以方便地对L298N电机驱动模块进行控制。 在MicroPython中,可以使用Pyboard或者ESP32等开发板来与L298N电机驱动模块进行通信。首先需要使用import关键字将驱动库导入程序中。具体的代码如下: ```python from machine import Pin, PWM #设置引脚 INA = Pin(16, Pin.OUT) INB = Pin(17, Pin.OUT) ENA = PWM(Pin(18), freq=1000, duty=0) ENB = PWM(Pin(19), freq=1000, duty=0) #控制电机正转 INA.value(1) INB.value(0) ENA.duty(512) ENB.duty(512) #停止电机 ENA.duty(0) ENB.duty(0) ``` 以上代码中,我们首先定义了IN1和IN2两个引脚用于控制电机的正反转,ENA和ENB两个引脚用于控制电机的速度。然后使用INA.value(1)和INB.value(0)来控制电机正转,同时使用ENA.duty(512)和ENB.duty(512)来设置电机的转速。最后使用ENA.duty(0)和ENB.duty(0)来停止电机。需要注意的是,这里的引脚编号需要根据自己的硬件连接进行修改。 除了以上的代码示例,我们还可以使用MicroPython的内置函数pwm来实现PWM信号输出控制电机的速度。代码如下: ```python from machine import Pin, PWM #设置引脚 INA = Pin(16, Pin.OUT) INB = Pin(17, Pin.OUT) ENA = PWM(Pin(18), freq=1000, duty=0) ENB = PWM(Pin(19), freq=1000, duty=0) #控制电机正转并设置速度 INA.value(1) INB.value(0) ENA.freq(1000) ENA.duty(512) #停止电机 ENA.duty(0) ENB.duty(0) ``` 这段代码与前面的代码示例类似,只是在控制电机速度时使用了ENA.freq(1000)来设定PWM信号频率,并且在ENA.duty(512)中改变占空比来实现不同的转速。 综上所述,使用MicroPython可以方便地对L298N电机驱动模块进行控制,并且可以通过修改代码来实现不同的控制方式。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值