为什么舵机抖动那么厉害?如何平稳控制舵机?
控制舵机,你需要先了解舵机,上电置位(归0°),舵机参数:f=50hz,t=20ms。
--------------------------
|0 |45 |90 |135|180| 度|
-------------------------
|0.5|1.0|1.5|2.0|2.5| 毫秒|
--------------------------
占空比 =舵机角度时间/t。
定时器配置:
配置定时器pwm通道,芯片80Mhz,所以要得到周期t=20ms的pwm。配置PSC、ARR。得到是s需要转换ms。由于(舵机参数:f=50hz,t=20ms。)所以:
TCK为时钟频率,PSC为时钟预分频系数,ARR为自动重装载值。
“4”,设置初始脉冲宽度(暂时不用管),“5”表示高电平有效,对于某些器件是低电平。
代码:
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);
//开启pwm通道
/* USER CODE END 2 */
10°到180°来回旋转。
注意:“pwm”变量5到25。 为什么?
对于定时中占空比计算:占空比。
舵机占空比=
/* USER CODE BEGIN 3 */
/*舵机参数:f=50hz,t=20ms
--------------------------
|0 |45 |90 |135|180| 度|
-------------------------
|0.5 |1.0|1.5|2.0|2.5| 毫秒|
--------------------------
*/
static uint16_t pwm=10;
static uint16_t dir=1;
if(dir){
__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, pwm);
HAL_Delay(100);
pwm++;
if(pwm>25)
dir=0;
}
else{
pwm--;
__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, pwm);
HAL_Delay(100);
if(pwm==10)
dir=1;
}
}
/* USER CODE END 3 */