发 帖  
原厂入驻New
[文章]

【原创】图解边沿对齐,中心对齐PWM....

2021-6-28 09:25:24  2171 PWM
分享
3
本帖最后由 松山归人 于 2021-6-29 10:51 编辑

作者:黄忠老师(张飞实战电子高级工程师)
在说边沿对齐,中心对齐前,我们先来段铺垫,PWM又称脉冲宽度调制,我们通过调节脉冲的占空比,我们可以控制电压的大小(比如我们满占空比时电压为12V,我们可以通过调节占空比让电压变为7V、5V甚至变为0V,实现输出电压可控)。

调节占空比后,输出电压怎么就变化了呢?可以用等效面积法来解释,例如在1ms周期里,满占空比时输出电压为12V,50%占空比时(即低电平各占时间为0.5ms)高电平在整个周期的面积只有原来的1/2了,此时输出电压就等效为12*1/2=6V,那么通过调节不同的占空比,也就实现了输出电压调节。如图:
1.jpg
STM32中是怎么生成PWM波的呢?时钟芯片的心脏,没有时钟,芯片就是一块“废物”,有了时钟,芯片才能有条不紊的工作,那时钟跟我们要讲的PWM有什么关系呢?请看下图,STM32内部的定时器框图,看看它是如何生成PWM的。


2.jpg
方框内部的CNT Counter计数器会根据输入的时钟沿跳变来进行递加/减,时钟的频率决定了计数器递加/减的频率,这个计数器的值同时会和Auto-reload register(控制周期)、Capture/Compare x register(控制占空比)进行比较,当与控制占空比的寄存器值发生匹配时则控制输出引脚tiMx_CHx发生电平反转,当与控制周期寄存器值发生匹配时,周期结束,引脚电平置位,再次重复如上动作,就在引脚上输出了变化不同的电平,这个就是我们需要的PWM。

这个定时器模块可以根据软件编程设置出不同的PWM模式,定时器内部CNT Counter可被编程为向上、向下、向上向下运行,我们说的边沿对齐,和中心对齐就要从这个计数方式上切入,下面我们先来看三种不同的计数方式。


1.当CNT被设置为向上计数时,计数器从0递增向上计数到自动重载值(Auto-reload register),然后计数器又回到0,重新开始。
3.jpg 微信图片_20210628091730.jpg
2.当CNT被设置向下计数时,计数器从自动重载值递减向下计数,计数到0,计数器又回到重载值,重新开始。
4.jpg 微信图片_20210628091736.jpg
3.当CNT被设置向上向下计数时,计数器从0递增向上计数到自动重载值,然后计数器从自动重载值递减向下计数,计数到0然后又开始递增向上计数。
5.png 6.png

那这三种模式和2种PWM又是什么关系呢?PWM是怎么从引脚上输出的呢?请看下图:

1.向上/下计数模式PWM生成(只展示出了向上计数,向下计数同理):
9.jpg
10.jpg
2.向上向下计数模式PWM生成:
11.jpg
12.jpg
上文中提到的向上计数/向下计数,这两种生成PWM的方式,我们通常称为边沿对齐PWM;既向上又向下这种生成PWM的方式,我们称为中心对齐PWM。当然,发生匹配的时候引脚电平如何变化,是变高还是变低,这个可以通过软件编程来设置。


通过PWM调节输出电压,比如可以控制做呼吸灯,也可以实现电机的调速,不同的调速算法,会用到不同的PWM等等。

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发文章
关闭

站长推荐 上一条 /9 下一条

快速回复 返回顶部 返回列表