STM32控制SG90舵机:硬件连接与程序设计详解
创作时间:
作者:
@小白创作中心
STM32控制SG90舵机:硬件连接与程序设计详解
引用
CSDN
1.
https://m.blog.csdn.net/qq_50749196/article/details/145636471
本文将详细介绍如何使用STM32F103C8T6微控制器控制SG90舵机。通过硬件连接、PWM信号配置、代码实现等步骤,帮助读者掌握舵机控制的基本原理和具体实现方法。
前言
STM32F103C8T6是一款性价比极高的ARM Cortex-M3内核微控制器,广泛应用于嵌入式开发。SG90舵机则是小型舵机的代表,常用于机器人、智能家居等场景。本文将通过硬件连接、PWM信号配置、代码实现等步骤,详细讲解如何用STM32F103C8T6控制SG90舵机。
视频讲解链接:
STM32之SG90舵机教学(附源码)
一、硬件准备与接线
1.1 硬件清单
器件 | 数量 | 备注 |
---|---|---|
STM32F103C8T6最小系统板 | 1 | 核心控制器 |
SG90舵机 | 1 | 工作电压4.8-6V,信号线需PWM |
5V电源模块 | 1 | 独立供电,避免板载电流不足 |
杜邦线 | 若干 | 连接电路 |
1.2 接线
SG90舵机 | STM32F103C8T6 | 外部电源 |
---|---|---|
棕色线(GND) | GND引脚 | GND |
红色线(VCC) | 连外部5V | 5V |
橙色线(信号) | PB0(TIM3_CH3) |
注意:若需驱动多个舵机,建议使用独立电源供电,避免STM32板载电源过载。
二、 SG90舵机简介
1.1 外观
1.2 基本参数
参数 | 数值 |
---|---|
工作电压 | 4.8V - 6V(典型5V) |
电流消耗 | 100mA(空闲),250mA(运行) |
扭矩 | 1.2kg·cm(4.8V),1.6kg·cm(6V) |
转速 | 0.12秒/60°(4.8V),0.10秒/60°(6V) |
重量 | 9克 |
尺寸 | 22.2mm × 11.8mm × 31mm |
转动角度 | 180°(部分型号支持360°) |
齿轮材质 | 塑料(部分型号为金属齿轮) |
接口类型 | 3针(信号、电源、地) |
1.3 引脚说明
SG90舵机通常有3根线
- 棕色线(GND):接地。
- 红色线(VCC):接电源(4.8V-6V)。
- 橙色线(信号线):接收PWM信号控制角度。
1.4 控制原理
PWM信号控制:
- 信号周期:20ms(50Hz)。
- 脉冲宽度:0.5ms - 2.5ms,对应角度0° - 180°。
1.5 特点
优点:
- 体积小、重量轻:适合空间受限的项目。
- 价格低廉:成本低,适合批量使用。
- 易于控制:标准PWM信号接口,兼容性强。
缺点:
- 扭矩较小:仅适合轻负载场景。
- 塑料齿轮易磨损:长时间高负载工作可能导致损坏。
1.6 常见问题
1)舵机抖动或不转动:
- 检查电源电压是否足够。
- 检查PWM信号是否正确。
2) 舵机发热严重:
- 检查是否超负荷运行。
- 确保转动范围内无机械卡阻。
3) 角度不准确:
- 校准PWM信号脉冲宽度。
- 检查舵机齿轮是否磨损。
三、 单片机简介
STM32F103C8T6最小系统板:
本文使用的开发板为STM32F103C8T6最小系统板,SG90舵机使用到的引脚为PB0引脚。
四、 程序设计
4.1 定时器配置
使用 TIM3的通道3(PB0)生成PWM,步骤如下:
- 时钟配置:
- 系统时钟设为72MHz(默认配置)。
- APB1总线预分频系数为2。
- TIM3时钟源为APB1总线(36*2=72MHz)。
- 定时器参数计算:
- PWM频率:50Hz → 周期20ms 。
- 预分频值(PSC):72MHz / (719 + 1) = 1MHz → 每个计数周期10μs。
- 自动重装载值(ARR):20,000μs / 10μs = 2000 → ARR = 1999(从0计数)。
- 脉冲宽度计算(以90°为例):
- 1.5ms = 1500μs → 占空比 = 1500 / 20000 = 7.5%。
- 比较寄存器(CCR):2000 * 7.5% = 150 → CCR = 150 - 1 = 149 。
定时器初始化代码如下:
void SG90_PWM_Init(u16 arr, u16 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
// 使能定时器TIM3时钟,注意TIM3时钟为APB1,而非APB2
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
// 使能PWM输出GPIO口时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; // 定时器TIM3的PWM输出通道3,TIM3_CH3
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // 复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure); // 初始化GPIO
TIM_TimeBaseStructure.TIM_Period = arr;//自动重装值
TIM_TimeBaseStructure.TIM_Prescaler =psc; //时钟预分频数
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//TIM向上计数模式
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //初始化TIM3
//初始化TIM3_CH3的PWM模式
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = 0;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OC3Init(TIM3, &TIM_OCInitStructure);
TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable);//使能通道的预装载寄存器
TIM_ARRPreloadConfig(TIM3, ENABLE); //使能重装寄存器
TIM_Cmd(TIM3, ENABLE);//使能定时器TIM3,准备工作
}
初始化参数如下:
SG90_PWM_Init(1999,719); //初始化舵机
4.2 角度控制函数
将角度转换为对应的占空比,角度最大为180° 。
void SG90_Set_Angle(uint8_t angle)
{
if (angle > 180)
angle = 180;
uint16_t duty = 10 * (angle + 45) / 9; // 角度转化为占空比
TIM_SetCompare3(TIM3, duty); // 设置占空比
}
4.3 主函数调用
SG90_Set_Angle(0); //占空比2.5%,0度
delay_ms(1000);
SG90_Set_Angle(90); //占空比7.5%,90度
delay_ms(1000);
五、 总结
通过STM32F103C8T6的定时器PWM功能,可精准控制SG90舵机角度。关键在于正确配置定时器的预分频值和自动重装载值,并合理映射角度到脉宽。本方案成本低、可靠性高,适合机器人、智能家居等应用场景。
热门推荐
新生儿肚脐这样清就对!护理长教你四妙招
哪些美国研究生专业的就业前景较好?
上海区级消费券难抢,二手平台上却全都有!揭露黄牛抢券手法
止泻吃什么水果好 哪些有效缓解拉肚子
你有没有这样的经历:早上刷牙,突然牙龈出血……
高手钓鲫鱼常用的三种鱼钩,你用对了吗?
臀肌挛缩症的病因、症状与治疗
中年男士发型选择指南:露额发型、背头、飞机头与分头
如何缓解久站后的身体不适,试试这些舒缓练习
车开一会刹车片咋这么烫手
爆炒猪肝如何掌握火候,保持鲜嫩?
在南京,追寻少先队的红色记忆
中老年请注意:做好这四件事,就能远离脑梗死和大脑供血不足
重庆出发2-3日自驾游最佳线路推荐,10条重庆自驾游火爆景点路线
格罗滕迪克:圣愚、疯狂的天才以及遁世的修行者
物是人非在物质丰富时代实践无欲则刚
鲁丽欧松板和万华禾香板的优缺点及选择指南
如何正确为摩托车链条上油?上油的频率和方法是什么?
一体机电脑与台式电脑有哪些区别?
土地回收来了,农民退出补偿6万一亩,是真的吗?
NBA:Jonathan Kuminga能否成为勇士队的新王牌?
未来十年,农村升值最快的10样东西,并不是车子和房子
如何高效出售自己的房子?这样的出售策略有哪些需要注意的细节?
痤疮的中医辨证分型及治疗方法
Kubernetes核心组件解析
晚清军队装备真的很差?先进程度在当时的亚洲首屈一指!
美媒发现中国双航母"亮点":歼15B和歼15D已服役
马斯克在气候问题上立场转变,遭到亿万富翁抨击
实战 | IPv6环境下秒拨攻击抑制方案研究
水果与酸奶的完美融合(草莓炒酸奶)