PWM算法

    PWM用于直流斩波,可以用于直流电升压或降压,常见的PWM用于降压。PWM利用占空比来调节单位时间内能量输出的密度,在宏观上体现为输出电压与输入电压不同。

    狭义上的PWM只有一种算法,通过线性函数与常量的比较来判定这个位是输出高电平还是低电平。输出的比特流类似于“1110000000”这是一个占空比为3/10的PWM比特流,它以10个位为一个PWM周期,其中高电平占3个位,所以占空比为 3/10。这种算法的特点是简单直观,所有的1都集中在一起,所有的0也集中在一起,不仅可以使用单片机实现,还可以使用数字电路和模拟电路实现。它的缺点是具有固定的基波频率,有时会引起共振。

    广义上的PWM可以将一个PWM周期的1和0打乱。只要一个PWM周期内的1和0数量正确,输出电压和狭义的算法是一样的。

    广义PWM算法有周期算法和非周期算法。

    非周期算法较为简单,使用随机数发生器和比较器生成无序但同样具有占空比的脉冲。它的特点是没有基波频率,不会引起系统共振,但是需要随机数发生器,在单片机上不容易实现。可以使用硬件随机数发生器,或者使用高性能CPU来编制PWM比特流。在单片机上建议使用伪随机数表。

    周期算法我推荐使用龟兔赛跑算法,本文重点介绍此算法。比如需要输出3/7的占空比,那么乌龟的速度为3,兔子的速度为7。开始比赛,第一回合乌龟跑到3,兔子休息,此回合的比特为0;第二回合乌龟跑到6,兔子还是休息,此回合比特为0;第三回合,乌龟跑到9,兔子感到压力,跑到7,此回合的比特为1,重新以兔子为起点,兔子的位置变成0,乌龟的位置变成2;……。 用程序来表达,就变成:一个计数器每次循环加上乌龟的速度,若乌龟的位置大于兔子的速度,则乌龟位置减兔子的速度作为新 位置,返回1,如果乌龟的位置没有大于兔子的速度,则返回0。按照这样的方法,将得到这个比特流:“0010101”。如果是7/16的占空比,将得到:“0010101001010101”。它的好处是基波频率比扫描频率更高,更高的基波频率将带来更稳定的电压;对于互质的占空比系数,每个扫描周期都会发生若干次移相,不断地移相能够有效抑制共振。这个算法可以很容易由单片机和数字电路实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值