在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 17768|回复: 0

[原创] 用树莓派Pico 控制电机

[复制链接]
发表于 2021-1-31 09:32:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 zhongyan 于 2021-1-31 09:36 编辑

640?wx_fmt=png.jpg



来源:EETOP公众号



640?wx_fmt=png.jpg

由树莓派基金会刚刚发布的RaspberryPi Pico(树莓派Pico)是一个小巧而强大的板子,它可以为用户提供了创建大大小小的项目的机会。其中一个项目是机器人,为此我们需要用到马达。那么我们如何用RaspberryPi Pico来控制直流电机呢?我们可以把它们直接连接到GPIO吗?

答案是否定的。RaspberryPi Pico的GPIO引脚无法提供直流电机所需的电流,如果尝试连接,很可能会损坏Pico。为此我们需要一个电机驱动器,充当Pico和电动机之间的桥梁。我们打开/关闭两个PicoGPIO引脚,让它们控制电机驱动器,电机驱动器输出较大的电流来控制电机运动。

对于这个小项目,将需要以下准备
  • 运行MicroPython的Raspberry Pi Pico
  • 安装在您的电脑上的Thonny
  • 4 x公对公跳线
  • 半尺寸或全尺寸面包板
  • 电机驱动板。在我们的案例中,我们使用了DRV8833芯片,但L298或L9110S芯片应该也可以。
  • 5V / 6V直流电机。我们使用了一个微型齿轮金属电机,电机需要2根公对公的跳线来连接到面包板上。

640?wx_fmt=gif.jpg

使用RaspberryPi Pico的直流电动机的硬件设置
我们在该项目中使用的芯片是DRV8833,选定的特定版本是为面包板制作的,但是还有许多其他版本,包括设计用于嵌入机器人的版本。市场上还有其他电机控制器,例如L298D和L9110S,所有这些电机控制器都有相同的输入/输出约定。

640?wx_fmt=png.jpg

  • 将Raspberry     Pi Pico放入面包板,使微型USB端口挂在面包板的末端。
  • 将DRV8833电机控制器放入面包板,使插针位于中间通道的两侧。
  • 使用跳线将Raspberry     Pi Pico的VBUS引脚连接到DRV8833的VCC引脚。这将直接通过USB提供的5V为电机控制器供电。
  • 将Raspberry Pi     Pico的GND引脚连接到DRV8833的GND引脚。
  • 将Raspberry Pi     Pico的GPIO 14连接到DRV8833的IN1。
  • 将Raspberry Pi Pico的GPIO     15连接到DRV8833的IN2。
  • 将OUT1和OUT2连接至电动机的引脚


640?wx_fmt=png.jpg

Raspberry Pi Pico直流电动机的软件设置
1. 建立电路后,连接您的Raspberry Pi Pico并打开Thonny应用程序。用于设定拥有控制DRV8833电机控制器的输出的I/O管脚。
import utimefrom
machine import Pin

2.创建两个对象,motor1amotor1b这些将存储用作输出的GPIO引脚号,以控制DRV8833电机控制器。
motor1a = Pin(14, Pin.OUT)
motor1b = Pin(15, Pin.OUT)

3.创建一个使电动机前进的函数。为此,我们需要将一个引脚拉高,另一个引脚拉低。这继而将我们的预期方向传达给电机控制器,并且相应的输出引脚将紧随其后,迫使电机沿设定方向移动。
def forward():
  motor1a.high()
  motor1b.low()

4.创建一个向后移动的函数。这会看到GPIO引脚状态反转,从而导致电动机沿相反方向旋转。
def backward():
  motor1a.low()
  motor1b.high()

5.创建一个停止电动机的函数。通过将两个引脚都拉低,我们告诉电动机控制器停止电动机的所有运动。
def stop():
  motor1a.low()
  motor1b.low()

6.创建一个最终的测试函数,该函数将调用先前的函数并运行一个测试程序,该程序将使电动机“向前”旋转两秒钟,再“向后”旋转两秒钟。然后它将停止电动机。
def test():
  forward()
  utime.sleep(2)
  backward()
  utime.sleep(2)
  stop()

7.创建一个for循环,该循环将连续5次运行此测试函数
for i in range(5):
test()

将代码作为motor.py保存到Raspberry Pi Pico,然后单击绿色箭头以运行代码。电机将双向旋转五次。


您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-25 18:43 , Processed in 0.018022 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表