首页 置换 选车 估价 问答 生活 经销商 车管所 汽车资讯 汽车销量 车牌查询 今日油价 天气预报
您的位置: 首页 > 生活 > 生活 > 树莓派四轴机器人(树莓派打造机械臂)
树莓派四轴机器人(树莓派打造机械臂)
更新时间:2024-07-09 00:46:21

如何让控制树莓派让舵机转起来

前面讲了使用pycharm配置树莓派代码远程调试,目前手里面只有舵机,没有舵机支架,这篇文章就说一下如何让控制树莓派让舵机转起来。

首先说下舵机的工作原理,伺服电机通常被称为舵机,它是一种带有输出轴的小装置。当我们向伺服器发送一个控制信号时,输出轴就可以转到特定的位置。只要控制信号持续不变,伺服机构就会保持轴的角度位置不改变。如果控制信号发生变化,输出轴的位置也会相应发生变化。

树莓派四轴机器人(树莓派打造机械臂)1

舵机的工作原理

树莓派四轴机器人(树莓派打造机械臂)2

舵机内部的控制电路,电位计(可变电阻器)和电机均被连接到电路板上,如内部结构图的右边部分。控制电路通过电位计可监控舵机的当前角度。

如果轴的位置与控制信号相符,那么电机就会关闭。如果控制电路发现这个角度不正确,它就会控制马达转动,直到它达到指定的角度。舵机角度根据制造商的不同而有所不同。比如,一个180度的舵机,它可以在0度至180度之间运动。由于限位装置被安装在主输出装置上,超出这个范围机械结构就不能再转动了。

舵机的输出功率与它所需要转动的距离成正比。如果输出轴需要转动很长的距离,马达就会全速运转,如果它只需要短距离转动,马达就会以较慢的速度运行,这叫做速度比例控制。

如何让舵机转到指定角度?

树莓派四轴机器人(树莓派打造机械臂)3

控制线用于传输角度控制信号。这个角度是由控制信号脉冲的持续时间决定的,这叫做脉冲编码调制(PCM)。舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围,总间隔为2ms。脉冲的宽度将决定马达转动的距离。例如:1.5毫秒的脉冲,电机将转向90度的位置(通常称为中立位置,对于180°舵机来说,就是90°位置)。如果脉冲宽度小于1.5毫秒,那么电机轴向朝向0度方向。如果脉冲宽度大于1.5毫秒,轴向就朝向180度方向。以180度舵机为例,对应的控制关系是这样的:

0.5ms————-0度;

1.0ms————45度;

1.5ms————90度;

2.0ms———–135度;

2.5ms———–180度;

看完原理后,试着看让舵机动起来,这里我们使用GPIOzero这个库,先安装下sudo pip3 install gpiozero,

安装完后先看看这个库的帮助说明, https://gpiozero.readthedocs.io/en/stable/recipes.html#servo,帮助给的示例代码如下:

from gpiozero import Servo from time import sleep servo = Servo(18) while True: servo.min() sleep(2) servo.mid() sleep(2) servo.max()

树莓派与舵机的具体的接线图如下:

树莓派四轴机器人(树莓派打造机械臂)4

舵机由2块3.7V的18650电池串联提供7.4的电压,树莓派的(0V)与舵机的0V共地,舵机的pwn线接树莓派的12pin(默认情况下,所有 GPIO 引脚编号都使用 Broadcom (BCM) 编号)。

然后运行上面的Python代码,这样舵机就动起来了。

问题出现:这段代码虽然可以使舵机转动,但是如果在调用time.sleep()函数时,舵机会不规则的抖动,最后查阅资料https://gpiozero.readthedocs.io/en/stable/api_output.html?highlight=pigpio,给出这样的解释:

To reduce servo jitter, use the pigpio pin driver rather than the default RPi.GPIO driver (pigpio uses DMA sampling for much more precise edge timing). See Changing the pin factory for further information.大意就是说"要减少伺服抖动,请使用pigpio引脚驱动器,而不是默认的RPi"。

树莓派四轴机器人(树莓派打造机械臂)5

使用pigpio库调整代码:

先安装pigpio库,sudo pip3 install pigpio ,然后我继续修改代码:

import pigpio import time pin = 18 #要控制的io口 pi = pigpio.pi() pi.set_PWM_range(pin, 20000)#pin是要输出PWM的IO口, 20000设定PWM的调节范围, #我们的舵机的控制信号是50Hz,就是20ms为一个周期。就是20000us。 #设为20000,就是最小调节为1us pi.set_PWM_frequency(pin, 50) #设定PWM的频率,pin是要设定的IO口, 50 是频率 # pi.set_PWM_dutycycle(pin, 1500) #设定占空比 while True: for i in range(500, 2500 1,5): pi.set_PWM_dutycycle(pin, i) #设定pwm的脉宽, pin为引脚,i为脉宽 time.sleep(0.01) time.sleep(10) for i in range(2500, 500-1,-5): pi.set_PWM_dutycycle(pin, i) time.sleep(0.01) time.sleep(10)

这样舵机会连续转动,而且在调用time.sleep()期间没有抖动现象。

至此,树莓派控制单舵机的教程完毕!

,
相关推荐RECOMMEND
板栗鸡腿饭如何做(用电饭煲做板栗鸡腿饭的方法)
板栗鸡腿饭如何做?把鸡腿洗干净切成两半起锅烧油放鸡肉,生抽,老抽,蚝油,一点水,板栗仁翻炒盖上锅盖焖一会,今天小编就来聊一聊关于板栗鸡腿饭如何做?接下来我们就一起去研究一下吧!板栗鸡腿饭如何做把鸡腿洗...
不锈钢可以用微波炉加热吗(能不能把不锈钢放微波炉加热)
不锈钢可以用微波炉加热吗?不锈钢是不能放到微波炉里加热的,因为放入炉内的铁、铝、不锈钢、搪瓷等器皿,微波炉在加热时会与之产生电火花并反射微波,既损伤炉体又加热不熟食物,接下来我们就来聊聊关于不锈钢可以...
梦见建房子是什么预兆(究竟是吉是凶呢)
梦见建房子是什么预兆?女人梦见自己盖房子,预示着你的运势将逐渐变好,建议提前做好应对的准备,这样才能在运势最好的时候取得最大的成效,今天小编就来聊一聊关于梦见建房子是什么预兆?接下来我们就一起去研究一...
文言文是什么(关于文言文简介)
文言文是什么?文言文是以古汉语口语为基础的书面语,在远古时代文言文与口语的差异微乎其微,今天小编就来聊一聊关于文言文是什么?接下来我们就一起去研究一下吧!文言文是什么文言文是以古汉语口语为基础的书面语...
什么时候端午节(端午节资料)
什么时候端午节?农历2020年端午节的日期:2020年06月25日星期四(庚子年(鼠年)五月初五,距离农历2020年端午节已过4天)农历五月初五是端午节,中国传统节日又称“端阳节”、“午日节”等,中国...
蒜蓉金针菇的做法(蒜蓉金针菇怎么做)
蒜蓉金针菇的做法?食材:生抽10克,盐10克,蚝油10克,糖10克,香油5克,蒜5瓣,香菜10克,小米椒10克,金针菇200克,接下来我们就来聊聊关于蒜蓉金针菇的做法?以下内容大家不妨参考一二希望能帮...