【RC电子硬件】舵机的入门
一、舵机简介
我——舵机,是一种位置(角度)伺服的电机,适用于那些需要角度变化并可以保持的控制系统。
舵机(Servo motor)英文常简称 Servo,中文也有人称伺服机,由控制电路、齿轮、直流马达等组成,可使用 PWM 技术来控制舵机转动角度。

图 舵机实物图
舵机的种类多种多样,可以按照不同的标准进行分类:



图 舵机接线图
舵机一般有三条线,一条接电源(5V即可,电压越高,速度越快),一条接地,最后一条接控制(即单片机输出的PWM控制)
舵机的控制一般需要一个20ms左右的时基脉冲(50Hz),该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度为例,的其控制关系是这样的:
- 0.5ms--------------0度;
- 1.0ms------------45度;
- 1.5ms------------90度;
- 2.0ms-----------135度;
- 2.5ms-----------180度;
另一种表示方式是 -90度~90度(这里,对舵机输出轴转角进行重定义:-90°认为是0位置,90°认为是180位置),如下图

可以归纳为以下的公式:
任意角脉宽 = 0°脉冲宽度 + 角度值 *(脉宽的最大增量 / 180°),即:任意角脉宽 = 0.5ms + 角度值 *(2ms/180°)
至于360度舵机,是无法控制角度的,相当于一种特殊的减速电机。
- 0.5ms-------------- -180度;以最大速度正向持续转
- 1.5ms------------0度;停止转动,速度无
- 2.5ms-----------180度;以最大速度逆向持续转
二、舵机如何控制?
舵机的信号线是做为输入线就是接收PWM信号(定时器产生)。
一般PWM的周期是20ms(50hz)。那么改变不同的占空比就可以控制转动的角度。其中占空比从0.5-2.5ms(如果占空比大于2.5ms也只会在最大角度。),相对应的舵盘位置为0-180度,呈线性变化。
给它提供一定的脉宽,无论外界转矩怎么改变(不超过最大力矩),它的输出轴就会保持一定对应角度上,。
舵机内部有一个基准电路,产生周期为20ms,宽度1.5ms的基准信号,有一个比较器,将外加信号与基准信号相比较,判断出方向和大小,从而生产电机的转动信号。由此可见,舵机是一种位置伺服驱动器,转动范围不能超过180度,适用于那些需要不断变化并可以保持的驱动器中,比如说机器人的关节、飞机的舵面等。
注:建议先写一个0度的程序,方便确定舵机转动的方向和角度
这里,对舵机输出轴转角进行重定义:-90°认为是0位置,90°认为是180位置:
| 脉冲宽度 | 0.5ms | 1ms | 1.5ms | 2ms | 2.5ms |
| 转动角度 | -90° | -45° | 0° | 34° | 90° |
| 重定义转角 | 0° | 45° | 90° | 135° | 180° |
以0.5ms为0位置时,
从0位置转到180位置,脉宽的最大增量 = (2.5ms - 0.5ms) = 2ms,有:
任意角脉宽 = 0°脉冲宽度 + 角度值 *(脉宽的最大增量 / 180°),即:任意角脉宽 = 0.5ms + 角度值 *(2ms/180°)
任意角占空比 = 任意角脉宽/20ms
三、STM32 定时器控制舵机
STM32 定时器基本计算公式:
|
定时器频率计算公式:f = sys_clk / [ ( arr + 1 ) * ( psc + 1 ) ]; 占空比计算公式:duty = ccr/arr * 100%; |
|
| sys_clk | 系统运行时钟 |
| psc | 定时器时钟预分频值 |
| arr | 计数重装载值 |
| ccr | 比较计数值 |
另外:任意角脉宽计算公式 :脉宽 = 0.5ms + 角度值 *(2ms/180°)(其中角度值范围[0,180])
1. 设置arr(计算重装载值)
因为一个周期为20ms, 脉宽范围为0.5~2.5ms,因此将arr设置为(2000-1),ccr的范围就是50到250.
2. 设置psc(预分频值)
根据STM32基本定时器公式有:psc = sys_clk/[ f * (arr + 1) ] - 1;
本示例中f=50hz,sys_clk=72Mhz,arr=(2000-1),即:
psc = 72Mhz/(50hz * 2000) - 1;
= 720
3. 角度与ccr值换算
ccr = 50+ 角度值 *(200/180°)
即当角度为0的时候,CCR=50;角度为180的时候,CCR=250。
四、常见的舵机
SG90s


MG90s
MG90S舵机的主要参数包括产品扭矩、产品速度、转动角度、工作电压、齿轮形式、死区设定、产品重量、产品尺寸。
- 产品扭矩:在4.8V电压下为2.0kg/cm,在6V电压下为2.8kg/cm。
- 产品速度:在4.8V电压下,舵机以0.11秒/60°的速度转动,而在6V电压下,速度提升到0.09秒/60°。

由上面可知,电压越高,转矩和转速越快。
二、中型舵机
1. MG996R
MG996R是一种中型舵机,具有高扭矩,转速为0.13秒/60度,扭矩为11kg/cm。工作电压为4.8V-7.2V。
2. MG945
MG945是中型舵机中的一种,转速为0.13秒/60度,扭矩为13kg/cm。工作电压为4.8V-7.2V。
三、大型舵机
1. S3003
S3003是一种大型舵机,重量为38g,转速为0.23秒/60度,扭矩为3.5kg/cm。工作电压为4.8V-7.2V。
2. S3004
S3004是大型舵机中的一种,转速为0.23秒/60度,扭矩为5.5kg/cm。工作电压为4.8V-7.2V。
四、航模专用舵机
1. DS3218
DS3218是一种航模专用舵机,具有高转速和扭矩。转速为0.12秒/60度,扭矩为17kg/cm。工作电压为4.8V-6.8V。
2. DS3235
DS3235是航模专用舵机中的一种,具有极高的转速和扭矩。转速为0.09秒/60度,扭矩为35kg/cm。工作电压为6V-8.4V。
参考文章:
1. <STM32f1之舵机驱动+转动角度调整(含主代码和计算)>:https://blog.csdn.net/weixin_45930808/article/details/119117499
2. <舵机的控制>:https://blog.csdn.net/qq_44125275/article/details/128521102
3. <舵机篇(二)舵机控制>: https://blog.csdn.net/weixin_38288325/article/details/132367150
4. 常用舵机型号及参数解析:https://b2b.baidu.com/q/aland?q=7A6A1A0A7F2F72331904730C75797B070334742B073
5. Plotclock就应用了三个舵机,以手臂在白板上绘制出目前的时间。
Plotclock 用的是Tower Pro 9g servos(SG90 digital servo),为三线式舵机,红线接电源,棕色的线接 GND,橘色线为信号线:

浙公网安备 33010602011771号