第一次发博客有点小激动,如果我有的地方写的不对,欢迎指出,嘻嘻。
如何用STM32调整舵机角度
在编写用PWM来控制舵机转动的32程序中,因为找不到如何让它转动适当的角度,所以询问了学长,知道了舵机转动0度代表它的占空比是2.5%,转动180度代表它的占空比是12.5%。
即设arr(自动重装载值)为x时。
转动角度所对应的值=(x+1)*(1-占空比)(将PWM极性设置为TIM_OCPolarity_High时)
程序如下:
int main(void)
{
delay_init(); //延时函数初始化
LED_Init(); //LED端口初始化
TIM2_PWM_Init(1999,719); //不分频,PWM频率=72000000/720/2000=50hz
while(1)
{
TIM_SetCompare2(TIM2,1950); //对应0度 2.5%
delay_ms(1000);
TIM_SetCompare2(TIM2, 1900); //对应45度 5%
delay_ms(1000);
TIM_SetCompare2(TIM2, 1850); //对应90度 7.5%
delay_ms(1000);
TIM_SetCompare2(TIM2, 1800); //对应135度 10%
delay_ms(1000);
TIM_SetCompare2(TIM2,1750); //对应180度 12.5%
delay_ms(1000);
}
}
转动角度所对应的值=(x+1)*占空比(将PWM极性设置为TIM_OCPolarity_Low时),程序如下:
int main(void)
{
delay_init(); //延时函数初始化
LED_Init(); //LED端口初始化
TIM2_PWM_Init(1999,719); //不分频,PWM频率=72000000/720/2000=50hz
while(1)
{
TIM_SetCompare2(TIM2,250); //对应180度 12.5%
delay_ms(1000);
TIM_SetCompare2(TIM2, 200); //对应135度 10%
delay_ms(1000);
TIM_SetCompare2(TIM2, 150); //对应90度 7.5%
delay_ms(1000);
TIM_SetCompare2(TIM2, 100); //对应45度 5%
delay_ms(1000);
TIM_SetCompare2(TIM2,50); //对应0度 2.5%
delay_ms(1000);
}
}
用词如有不妥,请及时指出,多谢!