Micropython——L298N电机驱动模块

    技术2022-07-13  64

    文章目录

    L298N电机驱动模块PWM调速原理 编码器电机接线直流电机接线PWM代码

    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)TPYboardIN1X9(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,作为调速基准

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

    Processed: 0.014, SQL: 9