SPWM的基本原理是在进行脉宽调制时,使脉冲系列的占空比按正弦规律来安排。当正弦值为最大值时,脉冲的宽度也最大,而脉冲间的间隔则最小,反之,当正弦值较小时,脉冲的宽度也小,而脉冲间的间隔则较大,这样的电压脉冲系列可以使负载电流中的高次谐波成分大为减小,称为正弦波脉宽调制。
硬件SPWM的方法就是将频率固定好,频率固定就意味着X轴的时间T也就固定下来,Y轴是振幅。有了这个参数后把正弘波分为360份,每度1份,先计算上面图的面积,得出后匹配脉冲面积。最后计算出每个脉冲的时间和占空比时间,以次作为单片机的定时器溢出时间。
此方法虽然较为复杂,但却行之有效。单片机基本上不点用资源,定时器中断,付下次溢出的初始值,输出SPWM,再等下次中断,不需要复杂计算公式写进MCU中,还要开几个定时器和ADC。
软件实现方法
定义一个时间数组time[359]={0,1,2......}//里面是通过计算得到的脉冲宽度时间和占空比时间。作用:作为定时器溢出值。
定义一个Count//溢出次数,溢出360次为一个半周。bitPF//定义正负半标记bit=0上半周,bit=1下半周,初始化TH0和TL0数值任意定。
定时器中断
THTL=time[Count]//设定下次的溢出时间。
Count++
if(Count==360){bit!=bit,Count=0,THTL=time[0]}//上下半周设定。
if(bit==0){PORT!=PORT}//送出SPWM信号,上半周,要几路送几路。
else{PORT!=PORT}//下半周,送出SPWM信号,要几路送几路。三相上添加延时处理。
在设置完毕后就可以对溢出时间进行计算了。这种方式虽然有些繁琐,但得出的结果却非常准确。尤其是在大多数MCU开发者不愿进行开源的情况下更是非常有用。本文从硬件和软件方面,给出了利用SPWM来进行单片机MCU溢出时间计算方式,正遇到此类问题的朋友不妨按照文中的方法试一试。
声明:本内容为作者独立观点,不代表电源网。本网站原创内容,如需转载,请注明出处;本网站转载的内容(文章、图片、视频)等资料版权归原作者所有。如我们采用了您不宜公开的文章或图片,未能及时和您确认,避免给双方造成不必要的经济损失,请电邮联系我们,以便迅速采取适当处理措施;欢迎投稿,邮箱∶editor@netbroad.com。
微信关注 | ||
技术专题 | 更多>> | |
2024慕尼黑上海电子展精彩回顾 |
2024.06技术专题 |