0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在树莓派Pico上编程使用舵机呢?

jf_zGNBEhbi 来源:趣无尽 2023-11-30 09:04 次阅读

舵机是一种位置伺服的驱动器,主要是由外壳、电路板、无核心马达、齿轮与位置检测器所构成。其工作原理是由接收机或者单片机发出信号给舵机,其内部有一个基准电路,产生周期为 20ms,宽度为 1.5ms 的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。经由电路板上的 IC 判断转动方向,再驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回信号,判断是否已经到达定位。适用于哪些需要角度不断变化并可以保持的控制系统。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为 0,电机停止转动。

一般舵机旋转的角度范围是 0 度到 180 度。舵机转动的角度与脉宽在 0.5ms~2.5ms 的区间内呈线性关系。舵机有 90°、180°、270°、360° 最大转角。

控制原理

通过向舵机的信号信号线发送 PWM 信号来控制舵机的输出量;一般来说,PWM 的周期以及占空比,我们是可控的,所以 PWM 脉冲的占空比直接决定了输出轴的位置。

当我们向舵机发送脉冲宽度为 1.5 毫秒的信号时,舵机的输出轴将移至中间位置(90度);脉冲宽度为 1ms 时,舵机的输出轴将移至最小的位置(0度);脉冲宽度为 2ms 时,舵机的输出轴将移至最小的位置(180度)。

注意:不同类型和品牌伺服电机之间最大位置和最小位置的角度可能会不同。许多伺服器仅旋转约 170 度(或者只有 90 度),但宽度为 1.5ms 的伺服脉冲通常会将伺服设置为中间位置(通常是指定全范围的一半)。

以 180 度角度伺服为例,对应的控制关系是这样的:

0.5ms – 0 度;
1.0ms – 45 度;
1.5ms – 90 度;
2.0ms – 135 度;
2.5ms – 180 度;

既然是要控制输出 PWM 的周期和占空比,需要明确定时器的周期、PWM 输出占空比计算公式:

定义几个相关量,系统运行时钟(sys_clk)、定时器时钟预分频值(psc)、计数重装载值(arr)、比较计数值(ccr)。

定时器频率计算公式:f = sys_clk / [( arr + 1 ) * ( psc + 1 )];

占空比计算公式:duty = ccr/arr * 100%;

定时器设置与角度值换算

本示例使用的舵机为周期 20ms、转角 180° 的模拟舵机。本示例编程推导思路如下:

1、任意角脉宽计算公式 :angle = 0.5ms + 角度值 *(2ms/180°)[角度值=[0,180]]
2、占空比计算公式 :duty = ccr/arr * 100%
3、定时器频率计算公式:f = sys_clk / [( arr + 1 ) * ( psc + 1 )]

1. 设置 arr
公式 1 推导:从 0 位置转到 180 位置,脉宽的最大增量 = (2.5ms – 0.5ms) = 2ms;此处将 arr 设置为 (2000-1)。

2. 设置 psc
公式 3 推导:psc = sys_clk/[ f * (arr + 1) ] – 1;本示例中 f=50hz,sys_clk=72Mhz,arr=(2000-1),即:psc = 72Mhz/(50hz * 2000) – 1; psc = 720。

3. 角度与 ccr 值换算:ccr = 500 + 角度值 *(2000/180°)

硬件接线

舵机具有三个接线:
棕色:GND,接 Pico 的 GND。
红色:+4.5 ~ +6V 电源输入,接 Pico 的 VSYS。
橙色:指令脉冲信号,接 Pico 的 GP28。

例程

以市面上常见的 9g 舵机为例,下面的代码将舵机的角度在 -90、0、90 三个角度中间切换,并循环 3 次。

from machine import Pin,PWM
import time
  
pwm = PWM(Pin(28))
pwm.freq(50)
 
for _ in range(3):
    pwm.duty_u16(1600)
    time.sleep(1)
 
    pwm.duty_u16(4815)
    time.sleep(1)
 
    pwm.duty_u16(7953)
    time.sleep(1)
 
    pwm.duty_u16(4815)
    time.sleep(1)

使用电位器控制舵机角度

这个例子读取电位器的输入,并转为舵机的角度。使舵机的角度从 -90 度到 90 度之间变化。

电位器接线

电位器模块的 VCC 接树莓派 Pico 的 3V3 引脚。
电位器模块的 GND 接树莓派 Pico 的 GND 引脚。
电位器模块的 OUT 引脚接树莓派 Pico 的 GP27 引脚。

代码如下:

from machine import Pin,PWM
import time
  
pwm = PWM(Pin(28))
  
pwm.freq(50)
  
control = machine.ADC(27)
  
while True:
    adc = control.read_u16()
    duty = int(adc * (7953-1600)/0xffff) + 1600
    pwm.duty_u16(duty)
    time.sleep(0.1)

运行之后,转动电位器,可以看到舵机的角度随之变化。







审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 驱动器
    +关注

    关注

    52

    文章

    8120

    浏览量

    145865
  • 检测器
    +关注

    关注

    1

    文章

    857

    浏览量

    47635
  • 电位器
    +关注

    关注

    14

    文章

    1005

    浏览量

    66688
  • 舵机
    +关注

    关注

    17

    文章

    264

    浏览量

    40922
  • 树莓派
    +关注

    关注

    116

    文章

    1697

    浏览量

    105465

原文标题:在树莓派 Pico 上编程使用舵机

文章出处:【微信号:趣无尽,微信公众号:趣无尽】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    何在树莓Pico用PWM实现LED呼吸灯

    树莓 Pico 的模拟-数字转换器只能以一种方式工作,它将模拟信号转换为微控制器可以理解的数字信号。
    发表于 10-07 17:46 1291次阅读
    如<b class='flag-5'>何在</b><b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b><b class='flag-5'>上</b>用PWM实现LED呼吸灯<b class='flag-5'>呢</b>?

    树莓Pico RP2040怎样使用MicroPython

    RP2040 是一款由树莓公司设计的 32 位双核 ARM Cortex-M0+ 微控制器芯片,于 2021 年 1 月发布,作为树莓 Pico
    的头像 发表于 11-08 14:29 3055次阅读
    在<b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b> RP2040<b class='flag-5'>上</b>怎样使用MicroPython<b class='flag-5'>呢</b>?

    树莓pico入门学习笔记(一)相关资料推荐

    树莓pico入门学习笔记选择自己熟悉的编程语言树莓pic
    发表于 07-01 09:28

    树莓pico如何入门?

    树莓pico如何入门?
    发表于 10-13 08:11

    怎么实现树莓Pico电机运动控制MicroPython+pioasm编程

    怎么实现树莓Pico电机运动控制MicroPython+pioasm编程
    发表于 10-27 06:37

    树莓Pico的相关资料分享

    关注、星标公众号,直达精彩内容1月22日,树莓基金会最新发布一款低成本、高性能的微控制器开发板Raspberry Pi Pico,新产品相比普通树莓
    发表于 11-03 08:44

    树莓Pico的相关资料推荐

    1月22日,树莓基金会最新发布一款低成本、高性能的微控制器开发板Raspberry Pi Pico,新产品相比普通树莓体积更小,售价仅4
    发表于 02-07 07:37

    树莓驱动舵机介绍_树莓驱动舵机代码

    本文主要详细介绍了树莓驱动舵机以及它的驱动代码,具体的跟随小编一起来了解一下。
    的头像 发表于 05-30 14:47 1.4w次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>驱动<b class='flag-5'>舵机</b>介绍_<b class='flag-5'>树莓</b><b class='flag-5'>派</b>驱动<b class='flag-5'>舵机</b>代码

    远程控制树莓3b的pi pico

    树莓pi pico树莓4相比差别很大,但是pi pico有一些特点是
    的头像 发表于 03-05 17:23 3929次阅读

    树莓Pico:仅4美元的MCU

    1月22日,树莓基金会最新发布一款低成本、高性能的微控制器开发板Raspberry Pi Pico,新产品相比普通树莓体积更小,售价仅4
    发表于 12-04 13:06 13次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>:仅4美元的MCU

    树莓pico入门学习笔记(一)

    树莓pico入门学习笔记选择自己熟悉的编程语言树莓pic
    发表于 12-17 18:42 21次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>pico</b>入门学习笔记(一)

    距离检测报警使用树莓Pico

    电子发烧友网站提供《距离检测报警使用树莓Pico.zip》资料免费下载
    发表于 11-09 11:49 0次下载
    距离检测报警使用<b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>

    基于树莓pico的可编程游戏手柄设计

    方案介绍组件12x12x7.3mm 瞬时触觉按钮按钮树莓Pico通用 D1286464 OLED 显示屏操纵杆模块 PS210 欧姆电阻 组装将树莓
    发表于 12-26 15:10 0次下载

    树莓PICO pio使用

    树莓 Pico 小小的板子总是能让我们发现一些惊喜。其所使用的RP2040芯片还具备8个可编程I/O(PIO)状态机,用于自定义外围设
    的头像 发表于 10-18 15:17 1493次阅读

    何在树莓Pico使用红外线接收模块?

    树莓 Pico 使用红外线接收模块(HX1838 型),我们采用开源的 pico_ir 库。
    的头像 发表于 11-30 09:08 2082次阅读
    如<b class='flag-5'>何在</b><b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b><b class='flag-5'>上</b>使用红外线接收模块?