咸鱼硬件—舵机Servo

舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。目前在高档遥控玩具,如航模,包括飞机模型,潜艇模型;遥控机器人中已经使用得比较普遍。舵机是一种俗称,其实是一种伺服马达。

舵机的工作原理
在这里插入图片描述

舵机内部的控制电路,电位计(可变电阻器)和电机均被连接到电路板上,如内部结构图的右边部分。控制电路通过电位计可监控舵机的当前角度。
如果轴的位置与控制信号相符,那么电机就会关闭。如果控制电路发现这个角度不正确,它就会控制马达转动,直到它达到指定的角度。舵机角度根据制造商的不同而有所不同。比如,一个180度的舵机,它可以在0度至180度之间运动。
由于限位装置被安装在主输出装置上,超出这个范围机械结构就不能再转动了。 舵机的输出功率与它所需要转动的距离成正比。如果输出轴需要转动很长的距离,马达就会全速运转,如果它只需要短距离转动,马达就会以较慢的速度运行,这叫做速度比例控制。

如何让舵机转到指定角度?
在这里插入图片描述

控制线用于传输角度控制信号。这个角度是由控制信号脉冲的持续时间决定的,这叫做脉冲编码调制(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度;

示例用法:
from pyb import Servo
s1=Servo(1#使用X1控制(X1,VIN,GND) 
s1.angle(45#转到45°
s1.angle(-60,1500)#1500ms内转到-60°
s1.speed(50)#以速度50继续转动

伺服对象使用定时器(5)产生 pwm 输出。 您可以使用定时器(5)进行伺服控制,或者您自己的目的,但不能同时使用两者。在这里插入图片描述

Class pyb.Servo(id)
pyb.Servo(1#创建一个伺服对象。
#id 是1-4,对应于针脚 x1到 x4。
方法

angle()

 '''没有参数,这个函数返回当前角,
 有参数,这个函数设置伺服器的角度: '''
Servo.angle(angle, time=0)
'''
angle:角度:度数中移动到的角度
time:时间:时间是到达指定角度所需的毫秒数。 
 	 如果省略,然后伺服移动尽快到它的新位置。
 '''

在这里插入图片描述
speed()

 '''没有参数,这个函数返回当前速度。
 有参数,这个函数设置伺服器的速度:'''
Servo.speed(speed, time=0)
'''
speed:速度:取值-100到100之间
time:时间:时间是达到指定速度所需的毫秒数。 如果省略,然后伺服加速尽可能快。
 '''

pulse_width()

 '''没有参数,这个函数返回当前原始脉冲宽度值。
 有参数,这个函数设置原始脉冲宽度值。'''
Servo.pulse_width(value)

calibration()
在这里插入图片描述

 '''没有参数,此函数将以5元组的形式返回当前的校准数据。 '''
Servo.calibration(pulse_min, pulse_max, pulse_centre, pulse_angle_90, pulse_speed_100)
如果给出参数,这个函数设置定时校准: 
pulse_min :允许的最小脉冲宽度
pulse_max :允许的最大脉冲宽度
pulse_centre :是与中心 / 零位相对应的脉冲宽度
pulse_angle_90 :90度相对应的脉冲宽度
pulse_speed_100 :脉冲速度100是与速度100相对应的脉冲宽度。

参考链接:
秒懂舵机角度控制原理
micropython

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章