| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> STM32定时器多路PWM输出(附代码) -> 正文阅读 |
|
[嵌入式]STM32定时器多路PWM输出(附代码) |
最近有个项目需要用到SG90舵机,舵机需要使用单片机产生PWM波来控制。SG90舵机的黄线接IO口PWM输出,红线和黑线分别接5V和GND,注意:在测试中发现,该型号舵机的输入电压如果是在单片机上的5V引脚接线,一定要保证给单片机供电的地方也是5V,这里我用的ST-Link下载器供电,下载程序时单片机跟他本身接的3.3V,这时在单片机上的5V口实际电压是不足的,这会导致舵机抖动不转、不按程序乱转等问题。我是在下载完程序后把3.3V杜邦线换到5V上,问题解决。 ?PWM控制舵机转动原理回归正题,脉冲宽度调制(PWM),是英文“Pulse Width Modulation” 的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽 STM32 的定时器除了 TIM6 和 TIM 7。其他的定时器都可以用来产生 PWM 输出。其中高级定 ?舵机控制需要一个20ms的时基脉冲,该脉冲高电平部分为0.5ms--2.5ms范围内的角度控制对应的脉冲,总间隔为2ms。对应的角度控制关系: 0°? ? ? --------------------? 0.5ms 45°? ? --------------------? 1.0ms 90°? ? --------------------? 1.5ms 135°? --------------------? 2.0ms 180°? --------------------? 2.5ms PWM占空比是指在一个周期内,高电平信号占整个信号周期的百分比,通过改变占空比实现各个角度的转动。计算方法(以45°为例):PWM周期为20ms,占空比应为1ms / 20ms=5%。 预分频系数psc设为7199,自动重装载寄存器arr设为199,则PWM周期: 20 ms =((7199+1)*(199+1))/72000000 = 0.02 因此TIM_SetComparex(TIM3, uint16_t? Comparex) 中 Comparex值与角度对应关系: 0°? ? ? --------------------? 195 45°? ? --------------------? 190 90°? ? --------------------? 185 135°? --------------------? 180 180°? --------------------? 175 ?STM32的定时器TIM3?我们要利用 TIM3 的 四个通道输出 PWM 来控制不同的舵机,但是 TIM3的各个通道又有不同的IO接口,STM32它比较高级的地方在于为了方便接线,提供了重映像和IO复用功能,查阅STM32F1开发指南手册,如下表,TIM3的四个通道利用部分重映像或者完全重映像功能可以全部放在PB或者PC口下,我的单片机是STM32F103mini板,PC6-PC9在一块儿,所以我使用了完全重映像功能,把四个通道输出分别映射到PC6、PC7、PC8、PC9。? 代码实现pwm.h :
pwm.c 文件复制过来太乱了,放压缩包里。 ?主程序main.h :
实物控制效果?视频发不了,如图红框部分是两个SG90舵机组成的机械臂,附录代码是调试前写的测试代码,反正简单实现机械臂的初期调试没问题,哈哈...... 白嫖党福音,附上调试代码:详细pwm.c和pwm.h文件如下,有不当之处欢迎评论互相学习! 本文参考:STM32F1开发指南-库函数版本_V3.1? |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 22:48:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |