Time_PWM_SG90舵机控制
1. 本章硬件准备
SG90 舵机一个
舵机的控制是通过不同的PWM占空比去调整电机角度,PWM则是通过定时器去实现
1.1 硬件连接
名称 | 信号 |
---|---|
负极接 | GND |
正极接 | 3V3或者5V |
信号线接 | PA15 |
2. stm32cubmx 生成代码
2.1 配置定时器
定时器2 配置为1通道输出,
舵机需要配置20ms的周期,20ms = 0.02s = (720*2000)/72000000
所以代码配置的信息,只需要修改其中的计数值即可
t = 0.5ms——————-舵机会转到 0 °-------对应计数值50
t = 1.0ms——————-舵机会转到 45°
t = 1.5ms——————-舵机会转到 90°
t = 2.0ms——————-舵机会转到 135°
t = 2.5ms——————-舵机会转到 180° ------对应计数值250
2.2 整体配置
这里配置了定时器,外部时钟,Debug口,串口,
3. 编写代码
代码只有两个流程
- HAL_TIM_PWM_Start 配置定时器启动
- __HAL_TIM_SET_COMPARE 配置定时器的占空比,可以根据自己的需要去灵活调整
C
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_TIM1_Init();
MX_TIM2_Init();
MX_USART1_UART_Init();
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);
/* USER CODE END 2 */
/* USER CODE BEGIN WHILE */
while (1)
{
/*
t = 0.5ms——————-舵机会转到 0 °
t = 1.0ms——————-舵机会转到 45°
t = 1.5ms——————-舵机会转到 90°
t = 2.0ms——————-舵机会转到 135°
t = 2.5ms——————-舵机会转到 180°
*/
__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,50);//0
HAL_Delay(1000);
__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,150);
HAL_Delay(1000);
__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,250);//180
HAL_Delay(1000);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
}