如何使用MicroPython将Raspberry Pi Pico W与伺服电机连接?
  OxmBLznM46Rx 2023年11月02日 97 0

Pico W 是一款经济实惠且紧凑的微控制器板,基于 RP2040 芯片,非常适合嵌入式系统和物联网项目。MicroPython 是 Python 的轻量级实现,为微控制器编程提供了用户友好的环境。通过遵循概述的步骤,读者将学习如何将伺服电机连接到 Pico W、编写 MicroPython 代码来控制其运动,并获得将精确电机控制集成到自己的项目中的技能。让我们深入了解吧!

伺服电机引脚分配

如何使用MicroPython将Raspberry Pi Pico W与伺服电机连接?_引脚

伺服电机有3个PIN脚,分别是:

  • VCC(+5V或+6V):向伺服电机提供电压。
  • GND接地引脚。
  • 控制信号  (PWM):通过 PWM 接收位置控制信号。

伺服电机的工作原理

在伺服电机中,脉冲宽度调制 (PWM) 用于控制电机输出轴的位置或角度。伺服电机接收 PWM 信号作为输入,其中每个 PWM 周期内的高状态持续时间(“开启”时间)决定所需位置。

如何使用MicroPython将Raspberry Pi Pico W与伺服电机连接?_伺服电机_02

通常,PWM 信号具有固定频率,通常约为 50 Hz,占空比范围为 5% 至 10%(代表伺服电机的最小角度)和 10% 至 20%(代表伺服电机的最大角度)。例如,如果 PWM 信号的周期为 20 ms,则 5% 的占空比将导致 1 ms 的脉冲宽度(对应于最小角度位置),而 10% 的占空比将导致 1 ms 的脉冲宽度。 2 ms,代表最大角度位置。

伺服电机的控制电路解释 PWM 信号并将脉冲宽度与其当前位置反馈进行比较。根据比较结果,控制电路调整提供给电机的功率,使其旋转并将输出轴移向所需位置。伺服电机的反馈机制持续监控位置并向控制电路提供反馈,从而实现精确调整以达到并保持所需角度。

通过调节PWM信号的占空比,可以控制伺服电机输出轴的位置。这使您能够在各种角度精确定位电机,使伺服电机成为需要精确和受控运动的应用的热门选择,例如机器人手臂、遥控车辆和自动化系统。

有关伺服电机的常见问题

伺服电机的典型应用有哪些?

伺服电机广泛应用于需要精确控制位置或角度的应用中。常见应用包括机器人、遥控车辆、工业自动化、相机万向节、3D 打印机、数控机床和机械臂。

伺服电机可以连续旋转吗?

大多数伺服电机设计用于有限范围的运动而不是连续旋转。然而,有一种称为“连续旋转伺服系统”的特定伺服电机模型,可以沿任一方向连续旋转,从而实现连续运动控制。

我可以直接从微控制器为伺服电机供电吗?

通常不建议直接从微控制器为伺服电机供电,因为伺服电机通常需要比微控制器输出引脚可以提供的电流更高的电流。相反,最好使用外部电源(例如电池、直流电源适配器)为伺服电机供电,并将控制信号线连接到微控制器。

带伺服电机的 Pico W 电路图

如何使用MicroPython将Raspberry Pi Pico W与伺服电机连接?_伺服电机_03

将伺服电机的电源线连接到 Raspberry Pi Pico W 上的 3.3V 引脚。

将伺服电机的地线连接到 Raspberry Pi Pico W 上的任意 GND 引脚。

将伺服电机的控制信号线连接到 Raspberry Pi Pico W 上的任意 GPIO 引脚。记下 GPIO 引脚编号以供后续使用。

对 Raspberry Pi Pico W 进行编程来控制伺服电机

from time import sleep
from machine import Pin
from machine import PWM

该代码导入必要的模块:来自时间模块的睡眠、来自机器模块的Pin和PWM。

pwm = PWM(Pin(0))

使用 Pin(0) 作为参数创建 PWM 对象。这会将 PWM 对象与微控制器上的 GPIO 引脚 0 相关联。

pwm.freq(50)

PWM 信号的频率设置为 50 Hz。

def setServoCycle(position): 
    pwm.duty_u16(position) 
    sleep(0.01)

setServoCycle 函数定义为设置 PWM 信号的占空比。位置参数预计为 0 到 65535 之间的值,表示占空比范围。PWM 对象的 Duty_u16() 方法用于根据提供的位置设置占空比。设置占空比后,该函数会休眠 0.01 秒。

while True: 
    for pos in range(1000, 9000, 50): 
        setServoCycle(pos) 
    for pos in range(9000, 1000, -50): 
        setServoCycle(pos)

该代码段运行无限循环。在循环内,使用两个 for 循环来迭代一系列值。第一个循环从 1000 开始,增加 50,并在 8950 处停止。它使用该范围中的每个值调用 setServoCycle() 函数来设置伺服电机的位置。

之后,第二个 for 循环从 9000 开始,减少 50,并在 1050 处停止。再次使用该范围中的每个值调用 setServoCycle() 函数来设置伺服电机的位置。

这会产生伺服电机的来回运动,反复将其从一个极限位置扫到另一个极限位置。

如何使用MicroPython将Raspberry Pi Pico W与伺服电机连接?_伺服电机_04

本项目由IC先生电子商城编辑整理发布,未经授权,请勿转载。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  QtpjMRSUUfXb   2023年12月08日   53   0   0 引脚#include看门狗
  UYSNSBVoGd8R   2023年12月08日   26   0   0 引脚#include#define
OxmBLznM46Rx