stm32控制SG90舵机
时间: 2025-05-16 15:36:28 浏览: 25
### STM32 控制 SG90 舵机的 PWM 配置
为了实现 STM32 对 SG90 舵机的有效控制,需要通过配置 PWM 波来驱动舵机转动到指定角度。以下是详细的说明以及示例代码。
#### 1. 硬件连接
硬件连接方式如下所示:
- **GND** 连接到 STM32 的 GND。
- **+5V** 提供电源给舵机(注意:某些开发板可能无法提供足够的电流支持舵机运行,建议外接稳压源)。
- **PWM 输出 IO 口** 使用 PC6 引脚作为信号输出端口[^1]。
#### 2. 定时器配置
这里选择了 TIM3 的通道 1 来生成 PWM 波形,并采用完全重映射模式输出至 PC6 引脚。TIM3 是一个通用定时器,在 STM32 中广泛用于生成精确的脉冲宽度调制 (PWM) 信号[^2]。
#### 3. PWM 参数设置
对于 SG90 舵机而言,其工作频率通常为 50 Hz(周期为 20 ms),而占空比决定了舵机的角度位置。常见的范围是:
- 占空比约为 2.5% 到 7.5%,对应于 0° 至 180° 的旋转范围。
#### 4. 示例代码
下面是一个基于 HAL 库的简单示例程序,展示如何初始化并发送 PWM 信号以控制 SG90 舵机:
```c
#include "stm32f1xx_hal.h"
// 初始化定时器3用于PWM输出
void MX_TIM3_Init(void)
{
__HAL_RCC_TIM3_CLK_ENABLE(); // 启用TIM3时钟
TIM_HandleTypeDef htim3;
htim3.Instance = TIM3; // 设置实例为TIM3
htim3.Init.Prescaler = 83; // 设定预分频器, 实际计数频率=APB1/Prescaler=(72MHz/(84+1))≈84kHz
htim3.Init.CounterMode = TIM_COUNTERMODE_UP; // 计数方向向上
htim3.Init.Period = 19999; // 自动重装载值(ARR), 周期约等于20ms -> f_pwm = 84k / 20000 ≈ 50Hz
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
if(HAL_TIM_PWM_Init(&htim3)!= HAL_OK){
Error_Handler();
}
TIM_OC_InitTypeDef sConfigOC;
sConfigOC.OCMode = TIM_OCMODE_PWM1; // 模式设为PWM Mode 1
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;// 极性高有效
sConfigOC.Pulse = 1500; // 初始占空比设定为中间位置
sConfigOC.OutputState = TIM_OUTPUTSTATE_ENABLE;
HAL_TIM_PWM_ConfigChannel(&htim3,&sConfigOC,TIM_CHANNEL_1);
}
// 主函数部分
int main(void)
{
HAL_Init(); // 初始化HAL库
SystemClock_Config(); // 配置系统时钟
MX_GPIO_Init(); // GPIO初始化
MX_TIM3_Init(); // 定时器3初始化
uint16_t duty_cycle = 1500; // 默认中间位置
while (1)
{
for(duty_cycle = 500 ;duty_cycle<=2500;duty_cycle+=10){ // 循环调整占空比从左极限到右极限
__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,duty_cycle);
HAL_Delay(20); // 给予时间让舵机响应变化
}
for(duty_cycle = 2500 ;duty_cycle>=500;duty_cycle-=10){// 返回循环调整占空比从右极限回到左极限
__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,duty_cycle);
HAL_Delay(20);
}
}
}
```
上述代码实现了基本的功能需求,即通过改变 `__HAL_TIM_SET_COMPARE` 函数中的参数值动态调节占空比从而达到控制舵机的目的。
#### 注意事项
- 如果发现舵机抖动或者不平稳运转的情况,请检查供电电压是否稳定充足;另外也可以适当增加滤波电容改善情况。
- 不同品牌型号的具体电气特性可能存在差异,实际应用前最好查阅产品规格书确认适用条件。
阅读全文
相关推荐



















