MicroPython+L298N+ESP32控制电机转速

article/2025/7/27 15:26:48

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


http://www.hkcw.cn/article/QJICySmPut.shtml

相关文章

Chainlink:连接 Web2 与 Web3 的去中心化桥梁

区块链技术通过智能合约实现了去中心化的自动执行,但智能合约无法直接访问链下数据,限制了其在现实世界的应用。Chainlink 作为去中心化预言机网络,以信任最小化的方式解决了这一问题,成为连接传统互联网(Web2&#xf…

杨传辉:构建 Data × AI 能力,打造 AI 时代的一体化数据底座|OceanBase 开发者大会实录

5 月 17 日,OceanBase 在广州举办第三届开发者大会。主论坛环节,OceanBase CTO 杨传辉系统阐述了 Data AI 战略,并正式推出三大产品:PowerRAG、共享存储 及OceanBase桌面版。 杨传辉指出,数据与AI模型的一体化融合&a…

AU6825集成音频DSP的2x32W数字型ClaSSD音频功率放大器(替代TAS5825)

1.特性 ● 输出配置 - 立体声 2.0: 2 x 32W (8Ω,24V,THD N 10%) - 立体声 2.0: 2 x 26W (8Ω,21V,THD N 1%) ● 供电电压范围 - PVDD:4.5V -26.4V - DVDD: 1.8V 或者 3.3V ● 静态功耗 - 37mA at PVDD12V ● 音频性能指标 - THDN ≤ 0.02% at 1W,1kHz - SNR ≥ 107dB (A-wei…

关于ADS分辨率问题

笔记本上使用ADS(Advanced Design System )默认的界面挺大的,图标和字体都大,界面清新,给人一种呆呆易上手的感觉。 整个屏幕的截图 直到我打开了这个OPTIM的选项卡,它太长了,由于缩放太大&am…

海外DeepLink方案复杂?用openinstall一站式链接世界

App出海难免水土不服,商业模型、用户画像、增长方向没有一样是省心的,国内标配的DeepLink(深度链接)方案如果照搬出海同样无法达到最佳体验。 要知道国内外移动端生态是截然不同的,除了主流的URL Scheme和iOS Univers…

Ollama(1)知识点配置篇

ollama已经成功安装成功后,通常大家会对模型的下载位置和访问权限进行配置 1.模型下载位置修改 都是修改系统环境变量。 (1)默认下载位置 macOS: ~/.ollama/modelsLinux: /usr/share/ollama/.ollama/modelsWindows: C:\Users\你的电脑用户…

C# SolidWorks二次开发-实战1,找文件名不同实体相同的零件。

今天这篇文章话题来源于群里的聊天,在讨论有些插件功能的开发原理。 如标题,今天讲的是如何查找零件文件名不一样,但实际可能是同一个东西的办法。 - 题外话 熟悉Solidworks的人都知道,Solidworks有一个比较零件或者特征不同点的…

ES5时代的残党(被ES6淘汰的JS写法)

近年来,JavaScript语言经历了翻天覆地的变化。ES6(ECMAScript 2015)的发布标志着JavaScript进入了现代化时代,带来了大量新特性和更优雅的写法。但时至今日,许多开发者仍然固守着ES5时代的老旧模式,这不仅使代码显得过时&#xff…

【Python】4.字典和文件

文章目录 一、字典1、字典是什么?2、创建字典3、查找 key4、新增/修改元素5、删除元素6、遍历字典元素7、取出所有 key 和 value8、合法的 key 类型小结 二、文件1、文件是什么?2、文件路径3、文件操作1)打开文件2)关闭文件3&…

物流项目第十一期(智能调度之分配快递员)

本项目专栏: 物流项目_Auc23的博客-CSDN博客 整体核心业务流程 关键流程说明: 用户下单后,会产生取件任务,该任务也是由调度中心进行调度的订单转运单后,会发送消息到调度中心,在调度中心中对相同节点的运…

React 项目中封装 Excel 导入导出组件:技术分享与实践

文章目录 前言一、为什么需要封装 Excel 组件?二、技术选型三、核心实现1. 安装依赖2. 封装Excel导出3. 封装导入组件 (UploadExcel) 总结 前言 在 React 项目中,处理 Excel 文件的导入和导出是常见的业务需求。无论是导出报表数…

用calibredrv提取版图中指定类型cell,保留位置信息并输出新的gds

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 现在有一个gds,其中的bump位置信息是我们需要的,如何从现有的gds中提取我们需要的部分呢? 需要用到工具calibredrv,如果数量少,可以用图形界面操作,方法如下: 01 打开gds calibredrv -m inp…

iOS 使用CocoaPods 添加Alamofire 提示错误的问题

Sandbox: rsync(59817) deny(1) file-write-create /Users/aaa/Library/Developer/Xcode/DerivedData/myApp-bpwnzikesjzmbadkbokxllvexrrl/Build/Products/Debug-iphoneos/myApp.app/Frameworks/Alamofire.framework/Alamofire.bundle把这个改成 no 2 设置配置文件

Python基本运算符

White graces:个人主页 🐹今日诗词:相恨不如潮有信,相思始觉海非深🐹 ⛳️点赞 ☀️收藏⭐️关注💬卑微小博主🙏 ⛳️点赞 ☀️收藏⭐️关注💬卑微小博主🙏 目录 🧮 Pyt…

nginx: [emerg] bind() to 0.0.0.0:80 failed (10013: 80端口被占用

Nginx启动报错:nginx: [emerg] bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions) 这个报错代表80端口被占用 先查看占用80的端口 netstat -aon | findstr :80 把它杀掉,强…

vscode命令行debug

vscode命令行debug 一般命令行debug会在远程连服务器的时候用上,命令行debug的本质是在执行时暴露一个监听端口,通过进入这个端口,像本地调试一样进行。 这里提供两种方式: 直接在命令行中添加debugpy,适用于python…

(笔记+作业)第五期书生大模型实战营---L1G2000 OpenCompass 评测书生大模型实践

学员闯关手册:https://aicarrier.feishu.cn/wiki/QdhEwaIINietCak3Y1dcdbLJn3e 课程视频:https://www.bilibili.com/video/BV13U1VYmEUr/ 课程文档:https://github.com/InternLM/Tutorial/tree/camp4/docs/L0/Python 关卡作业:htt…

激光雷达的强度像和距离像误差与噪声分析(1)2025.5.30

激光雷达的强度像和距离像在测量过程中可能受到多种误差和噪声的影响,这些因素既包括硬件本身的物理特性,也涉及环境条件和算法处理等外部因素。以下是主要误差类型、噪声来源及其关键影响因素的综合分析: 一、强度像的误差与噪声 能量信号…

uboot移植之IOMUX介绍

本章节主要讲,如何将NXP官方i.MX6ULL EVK评估板的uboot源码移植适配到ELF 1开发板。本身uboot的作用就是启动内核,只要能成功启动内核,uboot使命便已完成。但是从开发调试的角度来讲,有时候我们需要在uboot阶段使用一些外设接口方…

3DMAX+Photoshop教程:将树木和人物添加到户外建筑场景中的方法

在本教程中,我将向您展示如何制作室外场景。我不会详细解释每一个细节,而是想快速概述一下我的方法。 在本教程中,我使用了一个相对简单的3D模型,并向您展示了在一些高质量纹理的帮助下可以做什么。此外,我将向您展示…