打印
[信息]

MCU是怎样输出PWM波形的

[复制链接]
676|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Listate|  楼主 | 2018-1-21 18:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在电力电子控制中,PWM几乎是无处不在的,不论是AC/DC,DC/AC,还是DC/DC,都涉及到PWM,PWM具体是什么可以自行百度,网上资料非常多,这里就不再赘述。在电力电子变换里面,PWM波形生成有两种方式,模拟和数字,专用的模拟IC不在此文探讨范围之内,本文主要介绍怎样用MCU来生成PWM。
   在所有的MCU里,都会有Timer定时器,PWM就是通过这个外设生成的,基本的原理可以通过下图来解释。
         

   计数器TIM_CNT对输入时钟进行计数,比如输入时钟是1MHz(50%占空比方波),对时钟的每一个上升沿(或者下降沿)从数字0开始计数,计数到TIM_ARR=999,一共计数1000个,经历的时间是1000*1/1000000= 1ms,也就是1kHz,计数到999之后计数器TIM_CNT归零,重新从0开始计数到999,往复循环,这样就形成了1kHzPWM了。                 
   那怎样做到一定的占空比呢?这很简单,设定一个值TIM_CCR,比如199,计数器TIM_CNT从0计数到199,一共200次计数,在TIM_CNT计数值在0-199,PWM输出引脚输出高电平(可以人为设定),计数器达到199,电平翻转到低电平,之后IM_CNT计数999后归零又恢复到高电平,这样也就形成了200/1000= 20%的PWM了。对这个比较值进行设置就可以形成不同占空比的PWM了,这也是最基本的PWM波形生成方法了,从上面介绍的,可以看出,TIM_ARR的值决定了PWM的频率,TIM_CCR的值决定了PWM的占空比,有了这两个值就可以很容易地生成PWM了。
沙发
Mozarts| | 2018-1-21 18:47 | 只看该作者
这个一般不是通过定时器进行设计输出实现的么?

使用特权

评论回复
板凳
_gege| | 2018-1-21 18:51 | 只看该作者
都是通过定时器实现的吧。

使用特权

评论回复
地板
Edisons| | 2018-1-21 18:52 | 只看该作者
楼主是准备使用什么mcu呢?

使用特权

评论回复
5
laozhongyi| | 2018-1-21 19:00 | 只看该作者
得根据MCU惊醒区分。

使用特权

评论回复
6
wanglaojii| | 2018-1-21 19:00 | 只看该作者

占空比都能通过TIMER实现。

使用特权

评论回复
7
bbapple| | 2018-1-21 19:06 | 只看该作者
PWM都有外设可以实现的。

使用特权

评论回复
8
handleMessage| | 2018-1-21 19:07 | 只看该作者
或者使用PWM功能实现信号输出吧。

使用特权

评论回复
9
zhouhuanの| | 2018-1-21 19:13 | 只看该作者

去ST官网找个PWM的例程。

使用特权

评论回复
10
sourceInsight| | 2018-1-21 19:14 | 只看该作者
TIM_ARR的值决定了PWM的频率,TIM_CCR的值决定了PWM的占空比,有了这两个值就可以很容易地生成PWM了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

161

主题

1233

帖子

1

粉丝