首页 > 编程语言 >如何使用MicroPython将Raspberry Pi Pico W与伺服电机连接?

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

时间:2023-08-26 16:01:22浏览次数:55  
标签:MicroPython PWM 引脚 伺服电机 位置 Pico 占空比 Pi

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

伺服电机引脚分配

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

伺服电机有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先生电子商城www.mrchip.cn编辑整理发布,未经授权,请勿转载。

标签:MicroPython,PWM,引脚,伺服电机,位置,Pico,占空比,Pi
From: https://blog.51cto.com/u_15579956/7245015

相关文章

  • 科学网—VBox虚拟机中,deepin系统下共享文件夹 - 苏威的博文 (sciencenet.cn)
    科学网—VBox虚拟机中,deepin系统下共享文件夹-苏威的博文(sciencenet.cn) mount-tvboxsfnn(共享文件夹名称)/home/shared......
  • AppSpider Pro 7.4.054 for Windows - Web 应用程序安全测试
    AppSpiderPro7.4.054forWindows-Web应用程序安全测试Rapid7DynamicApplicationSecurityTesting(DAST)请访问原文链接:https://sysin.org/blog/appspider/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgappspider没有任何应用程序未经测试,没有未知风险......
  • Kali Linux 2023.3 发布(内部基础设施和 Kali Autopilot 重大更新)
    KaliLinux2023.3发布(内部基础设施和KaliAutopilot重大更新)请访问原文链接:https://sysin.org/blog/kali-linux-2023/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org更新说明2023年8月23日,星期三KaliLinux2023.3发布(内部基础设施和Kali自动驾驶仪)......
  • 【python】使用ddddocr模块报错处理:AttributeError: module 'PIL.Image' has no attri
    安装pipinstallddddocr安装特别慢,几kb每秒,而且容易超时报错使用清华源下载:pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simpleddddocr使用img_url="https://user.wangxiao.cn/apis//common/getImageCaptcha"img_resp=session.post(img_url)......
  • 项目学习 鱼皮 API 开放平台 stateful-backend 项目总结
    项目介绍用户中心功能介绍提供了一套基于Session的用户中心,提供以下功能登入登出注册用户信息管理增删改查登录用户查询ID查询列表查询分页查询用户态记录数据库表createtableuser(idbigintauto_incrementcomment'id'......
  • Typora+PicGo 上传图片至GitHub仓库
    提前准备好Github账号、PicGo、Typora创建Github账号地址:https://github.com/下载PicGo地址:https://github.com/Molunerfinn/PicGo/releases/下载Typora地址:https://typora.yjjxx.cn/index.html1.创建Github仓库 点击new新建仓库输入Repositoryname(PicGo中要用到),选择Public......
  • 玩转 PI 系列-看起来像服务器的 ARM 开发板矩阵-Firefly Cluster Server
    前言基于我个人的工作内容和兴趣,想要在家里搞一套服务器集群,用于容器/K8s等方案的测试验证。考虑过使用二手服务器,比如DellR730,还搞了一套配置清单,如下:DellR7303.5尺寸规格硬盘CPU:2686v4*2内存:16g*8存储:480Gintelssd系统盘+6tsas希捷*2个数据盘RAID卡:h73......
  • 玩转 PI 系列-看起来像服务器的 ARM 开发板矩阵-Firefly Cluster Server
    前言基于我个人的工作内容和兴趣,想要在家里搞一套服务器集群,用于容器/K8s等方案的测试验证。考虑过使用二手服务器,比如DellR730,还搞了一套配置清单,如下:DellR7303.5尺寸规格硬盘CPU:2686v4*2内存:16g*8存储:480Gintelssd系统盘+6tsas希捷*2个数据盘RAID卡:h7......
  • .NetCore WebAPI 导入、导出Excel文件 导入
    先下载一个NuGet包 在接口写方法//导入[HttpPost][Route("Import")]publicIActionResultImportExcel()//IFormFileformFile{try{varformFile=HttpContext.Request.Form.Files[0];//......
  • ping 收不到pong 关闭连接
    pkg\sky_engine\lib\_http\websocket.dart ///Apingmessageissentevery[pingInterval],startingatthefirst///[pingInterval]afteranewvaluehasbeenassignedorapongmessagehas///beenreceived.Ifapingmessageisnotansweredbyapong......