树莓派33/100 - Pico控制直流小马达,为智能避障小车提供动力
直流小电机接线非常简单,只有2根线,而且不分正负极,接线方式只会决定电机正转或是反转,没有其它影响,下图是我从某多平台里花15元买的2个小电机和轮子。
L293D及连线
一般需要5V以上的动力,而Pico的工作电压为3.3V,所以马达不能直接混入Pico的电路里,还需要一个芯片来驱动马达,一个廉价且好用的芯片就是L293D。
它的引脚比较多,16个,由于它几乎是对称的,接地的引脚有4个,接正极的有2个,所以还是很快能搞明白它们的作用的。
第1引脚是2、3、6、7的控制开关,2、7接Pico,给它高/低电位,让3、6口产生输出电流,驱动马达正转或反转。
基本原理差不多明白了,准备与Pico连线了,还需要一个外接电源,我在买面包板的时候,还买了一个电源模块,上面的跳线可以在3.3V或5V输出之间进行选择。
先把正极和GND接好,这里的接地一边与外部电源模块的负极相连,另外还要与Pico的GND相连,我曾经少接了这条线,电机一直不转,排查了许久的原因。
再把马达的两极分别与L293D的3、6引脚相连,用Pico的GP17和GP16分别连2、6引脚,最后用GP21与1号引脚相连,控制马达的启停,还可以利用PWM技术控制其转速。
实际连线需要认真仔细看好正负极和引脚编号,否则Pico毁了,还得花30多元再买一个。
MicroPython编程
import machine
import utimepwmPin = 21 #控制马达的转速
cwPin = 16
acwPin = 17# speed:速度,0到100
# direction: 旋转方向,1为顺时针,0停止,-1逆时针
# speed_pin:控制小马达起停的引脚编号
def motorRun(speed, direction, speed_pin, clockwise_pin, anti_clockwise_pin):if speed > 100: speed=100if speed < 0: speed=0cw = machine.Pin(clockwise_pin, machine.Pin.OUT)acw = machine.Pin(anti_clockwise_pin, machine.Pin.OUT)pwm = machine.PWM(machine.Pin(speed_pin))pwm.freq(50)pwm.duty_u16(int(speed/100*65535))if direction < 0:cw.value(0)acw.value(1)if direction == 0:cw.value(0)acw.value(0)if direction > 0:cw.value(1)acw.value(0)motorRun(100, 1, pwmPin, cwPin, acwPin)
utime.sleep(5)
motorRun(80, -1, pwmPin, cwPin, acwPin)
utime.sleep(5)
motorRun(100, 0, pwmPin, cwPin, acwPin)
代码并不难懂,用PWM技术控制旋转速度,最后主程序是全速顺转5秒,再用80%的速度反转5秒,最后停止。
除了前面接地的问题之外,实际过程中还遇到电池不稳定的问题,一开始用电池供电,电机转了2次就不动了,我一度以为烧毁了,后来观察电源模块上的小灯,当电机工作时,小灯变得非常暗,所以怀疑电机工作时,电量已经非常不稳定,可能无法达到5V的工作电压,所以电机不转。最后,用电源适配器给电源模块供电,电机可以长时间旋转也没问题。
最后的视频效果:
https://v.qq.com/x/page/x3302xid62q.html
树莓派Pico控制直流小电机,用microPython编程,正转5秒,再反转5秒,然后停止。
参考资料:
https://peppe8o.com/l293d-and-dc-motor-with-raspberry-pi-pico-and-micropython/
https://dmccreary.medium.com/raspberry-pi-pico-robot-in-micropython-51f956486270
推荐阅读:
树莓派Pico开发系列文章
树莓派33/100 - Pico控制直流小马达,为智能避障小车提供动力相关推荐
- 树莓派40/100 - Pico控制WS2812B,一根信号线实现多种LED灯光效果(1)
从某多平台花了15元钱买了一米长的WS2812B彩灯,用于我的Pico编程试验,这种灯的神奇之处在于只需一根信号线,能够控制串联在一起的30颗LED灯珠(好像能长达1024颗灯),实现各种彩灯效果. ...
- 树莓派26/100 - Pico控制RGB三色灯
RGB三色LED灯,相当于把三种颜色的LED灯组合在一起,它有4条腿,最长的那条腿是阴极或阳极,根据这个灯是共阴的,还是共阳的而定. 与以前接LED灯的情况类似,不过这次要接三个电阻,我把它们分别接到 ...
- STM32蓝牙控制循迹避障小车源代码——3.舵机、超声波测距模块
STM32蓝牙控制循迹避障小车源代码--3.舵机.超声波测距模块 注意-所需模块: US-015超声波模块 SG90舵机云台 接线:舵机超声波: A1–P2.7 B8–Trig B9–Echo 代码 ...
- STM32蓝牙控制循迹避障小车——2.循迹模块
STM32蓝牙控制循迹避障小车源代码--2.循迹模块 注意-所需模块: 接线:四个循迹模块(从左到右分别为1,2,3,4) B4–第1个循迹模块的D0 B5–第2个循迹模块的D0 B6–第3个循迹模块 ...
- STM32蓝牙控制循迹避障小车源代码——4.蓝牙控制
STM32蓝牙控制循迹避障小车源代码--4.蓝牙控制 注意-所需模块: 蓝牙模块 接线: 串口通信 A2–RX A3–TX 所有的代码都是直接从工程里面复制的,实测是没有问题的. 蓝牙控制原理: 设计 ...
- STM32蓝牙控制循迹避障小车源代码——5.最终程序
STM32蓝牙控制循迹避障小车源代码--5.最终程序 将前面4讲的内容整合一起.主函数里用switch函数或者if语句来判断接收到的数据,改变小车的运动. 注意要将控制循迹和避障的参数单独定义一个.否 ...
- 将循迹小车改为蓝牙控制自动避障小车#arduino
演示视频:https://www.bilibili.com/video/BV1CM41187oh/?share_source=copy_web&vd_source=d43eaf7cae2ed3 ...
- 树莓派红外避障小车python_基于树莓派的环保“捡垃圾”机器人小车(避障、摄像、红外、WIFI)...
项目:基于树莓派的环保"捡垃圾"机器人小车控制平台 功能:避障.锁定某个障碍物 概述: 目前这个控制平台能够识别是"垃圾"只是塑料瓶,核心是利用Arduino控 ...
- Arduino教程-09.L298N控制直流电机(避障小车)
目录 3.1 电机 3.2 控制直流电机 PWM – 控制速度 H桥 – 控制转动方向 L298N 电机驱动芯片 技术规格 L298N 电机驱动器模块引脚排列 电源引脚 输出引脚 方向控制引脚 速度控 ...
- 基于控制的角度无人机集群——避障(有源代码)
无人机集群--避障 前言 一.浅谈避障 二.复杂公式 三.仿真效果 1.集群效果 2.避障效果 总结 前言 关于无人机集群避障的问题,我在之前的博客中已经简单描述了一下. 三维空间无人机集群编队控制, ...
最新文章
- 服务器内存傲腾基本参数信息,服务器加傲腾内存
- 扩展 lua require 的行为
- 使用ActiveMQ和HornetQ通过WebSocket通过STOMP轻松进行消息传递
- Oracle数据库的三种标准的备份方法
- 信息学奥赛一本通(1094:与7无关的数)
- Mybatis-Plus批量插入数据太慢,使用rewriteBatchedStatements属性优化,堪称速度与激情!
- Hyper-V虚拟机安装及网卡无法找到,驱动无法安装解决办法
- java new 新对象_java基础(五)-----new一个对象的具体过程
- 深度学习基础之线性回归
- 十分钟入门 Kafka,通俗易懂地理解分布式消息系统!!
- php base64 转 amr,base64转amr文件
- npm查看依赖包报错:npm ERR! extraneous解决!!
- 鼠标左键双击图标出现属性窗口的问题
- ios15.6RC-15.7.1系统降级iOS14,适用于checkm8机型
- C语言基础之13:文件输入/输出
- 为何Adobe国际认证证书被那么多人吐槽,看完你就明白了
- 360手机:360N6 Twrp、Root、Magisk教程
- 如何用Xinstall来做一款App运营推广?
- OA系统二十四:请假审批五:【点击“审批”后的审批弹出框】的后台逻辑;(审批结果提交的Dao层和Service层逻辑)
- qrcode生成固定大小的二维码