PWM控制舵机角度

PWM控制舵机角度(keilc

本文主要关于参数配置:arr,psc,ccrx(setcompare函数参数)

TIM相关配置简单提一嘴:
(涉及到寄存器,但仅有库函数知识不妨碍实践)
配置时最关键的两个参数:

  • 自动装载值寄存器中的arr;
  • 分频寄存器中的psc;

arr在TIM_TimeBaseInit的结构体中的TIM_Period配置,其决定着pwm周期(period英文意思时也是周期);psc在结构体中的TIM_Presaler配置,其决定了分频系数,
分频是什么呢?哟西,引脚所用的时钟不完全等于时钟源产生的,而是经过处理的,最大的处理就是分频,分频有啥好处呢?时钟源只能产生特定频率的时钟,而我们的外设有自己的时钟,只有当两者的时钟相符时,外设才能正常工作,分频就是将大块频率的时钟分割(除法)成小块时钟,供外设使用,

好,那么就涉及计算了:
Tout(溢出时间,周期时间单位是s)=(ARR+1)(PSC+1)/Tclk(Tckl是APB1*倍频来的,一般是72M,即常数)

通过pwm波原理,我们需要往ccrx寄存器中写入一个数值(介于0到srr之间)

这时,需要拿起笔来在纸上算一算:我们将一个周期的事件映射到arr上:

void TIM3_PWM_Init(u16 arr,u16 psc);
TIM3_PWM_Init(199,7199);

周期:(199+1)*(7199+1)/72000=0.02s
arr约为200;
那么arr中的1相当于0.1ms(数学映射思想)
由舵机控制原理知道:(sg90)要求0.5ms~2.5ms对应 0至180°(数学映射思想),那么我i们在写入setcompare函数参数范围为5至25;

此外,一般stm32io口输出为3.3v电压,而低配的sg90电机驱动电压要求4.2到6.0,如果3.3v强行驱动则会出现舵机抖动强烈,不稳定的情况。

猜你喜欢

转载自blog.csdn.net/weixin_43322322/article/details/112771911