关于在STM32中如何调整舵机角度

第一次发博客有点小激动,如果我有的地方写的不对,欢迎指出,嘻嘻。

如何用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);
	}
}

用词如有不妥,请及时指出,多谢!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值