STM32F103C8T6实现 SG90 360 °舵机转动
简介
基于上一篇 STM32F103C8T6实现 SG90 180 °电机任意角度转动
本来想实现角度转动, 但靠舵机本身无法实现限位, 需要记录位置, 并且根据转速计算大概位置, 存在误差, 不实现角度转动了, 只实现正反转
代码
正向速度0.75为最大速度, 反向2.25, 接近1.5ms则速度降低
void Servo_SetDirection(uint8_t direction)
{
int ccrMs = 2000;
uint16_t pulse = 0;
switch (direction)
{
case 0: // 正向最大速度
pulse = 0.75 * ccrMs; // 0.75ms
break;
case 1: // 停止
pulse = 1.5 * ccrMs; // 1.5ms
break;
case 2: // 反向最大速度
pulse = 2.25 * ccrMs; // 2.25ms
break;
default:
pulse = backMax * ccrMs; // 默认停止
break;
}
__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, pulse);
}