无意中翻到了一个舵机,想了解一下舵机的使用。
舵机与普通的电机不同,它可以根据指令旋转到0至180度之间的任意角度然后精准的停下来。
原理是啥我也不知道。
从找的资料看到
“很多舵机的位置等级有1024个,如果舵机的有效角度范围为180度的话,其控制的角度精度是可以达到180/1024度约0.18度了,从时间上看其实要求的脉宽控制精度为2000/1024us约2us。
如果你拿了个舵机,连控制精度为1度都达不到的话,而且还看到舵机在发抖。在这种情况下,只要舵机的电压没有抖动,那抖动的就是你的控制脉冲了。”
橙色信号线 红色正极 棕色负极
舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分。以180度角度伺服为例,那么对应的控制关系是这样的:
0.5ms--------------0度;
1.0ms------------45度;
1.5ms------------90度;
2.0ms-----------135度;
2.5ms-----------180度;
然而我的实测却不一样。
void Servo_Play(void)
{
TIM_SetCompare2(TIM2, 40);
delay_ms(500);
TIM_SetCompare2(TIM2, 75);
delay_ms(500);
TIM_SetCompare2(TIM2, 110);
delay_ms(500);
TIM_SetCompare2(TIM2, 149);
delay_ms(500);
TIM_SetCompare2(TIM2, 199);
delay_ms(500);
}
周期20ms,代码中的数字单位为10us。
对舵机有了初步的认识,先写下来,以免忘了。