Micropython——L298N电机驱动模块

news/2025/3/19 0:38:20/

文章目录

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

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


http://www.ppmy.cn/news/235551.html

相关文章

9x9数独算法

下面给出了源代码 sdks文件里面含有120个数独 请各位大大纠正 这个算法也可以用来做生成数独,然后取出几个 比如你给定数独为 000000000000000000000000000000000000000000000000000000000000000000000000000000001# 嘿嘿,这解可多了,机器…

java 字节替换_java 替换四个字节的字符 '\xF0\x9F\x98\x84\xF0\x9F)的解决方案

/** * 替换四个字节的字符 \xF0\x9F\x98\x84\xF0\x9F)的解决方案 😁 * author ChenGuiYong * data 2015年8月11日 上午10:31:50 * param content * return */ public static String removeFourChar(String content) { byte[] conbyte content.getBytes(); for (int…

【SemiDrive源码分析】【X9 Audio音频模块分析】16 - 音频模块框图及硬件原理图分析

【SemiDrive源码分析】【X9 Audio音频模块分析】16 - 音频模块框图及硬件原理图分析 一、X9HP 音频模块框图及硬件原理图分析1.1 音频接口 I2S 介绍1.2 X9 平台音频模块框图1.3 X9 平台各 Domain 用的 I2S接口 及 CLK 介绍1.3.1 `Safety OS Domain` 的 `I2S1` 接口:送数据入DS…

EndNote X9 教程入门到进阶 win mac

数据库创建 打开EndNote(激活版下载),界面如下: 首先需要新建文献数据库文件,File- New- 选择文件夹: 选择保存路径后点击确定即完成数据库文件创建,创建后生成两个文件:MyEndNote L…

【SemiDrive源码分析】【X9芯片启动流程】30 - AP1 Android Kernel 启动流程 start_kernel 函数详细分析(一)

【SemiDrive源码分析】【X9芯片启动流程】30 - AP1 Android Kernel 启动流程 start_kernel 函数详细分析(一) 一、Android Kernel 启动流程分析1.1 入口汇编代码 arch\arm64\kernel\head.S : 跳转start_kernel() 入口函数1.2 入口函数 start_…

mysql 字符串值不正确,不正确的字符串值:“ \ xF0 \ x9F \ x8E \ xB6 \ xF0 \ x9F…” MySQL...

我正在尝试在我的MYSQL表中存储一条推文。的鸣叫是: quiero que me escuches,no te burles no te rias,anoche tuve unsueoque te fuiste de mi vida🎶🎶 tweet_text我表格中的字段编码为utf8mb4。但是,当我…

【SemiDrive源码分析】【X9芯片启动流程】11 - freertos_safetyos目录Cortex-R5 DIL2.bin 引导程序源代码分析

【SemiDrive源码分析】【X9芯片启动流程】11 - freertos_safetyos目录Cortex-R5 DIL2.bin 引导程序源代码分析 一、freertos_safetyos目录结构分析二、DIL2 抓取编译log三、DIL2 代码流程分析3.1 start.S 入口汇编代码,初始化环境后跳转lk_main()3.2 lk_main() 创建并执行 boo…

EndNote X9 快捷键 官方大全

EndNote X9 快捷键 大全 没有baidu到靠谱的EndNote快捷键,故找到官方手册并节选出来以飨读者。 本文摘自EndNote X9官方用户手册 P463-468 将就看看呗,当中只有加号的地方省略了 ctrl Pages from EndNote Keyboard Commands Editing Keyboard Commands…