SPWM波的定义和生成方法在这里就不多说了,本文主要说SPWM波在单片机上的实现,以及如何调节滤出后的正弦波的频率及幅度。
先弄清楚SPWM在单片机上如何产生,比如你要输出100HZ的SPWM正弦波,每个周期100个点,则定时器B的中断频率为100*100=10K,用于载波(定时器A)的PWM频率应>=10K(这里我建议载波为1M,因为定时器的配合问题会有+-1的误差,所以载波尽量的大则滤出的正弦波的波形越好)。
通过软件,你先得到100个点的正弦波采样值,你可以用定时器A来产生1MHZ的PWM,然后用定时器B,做定时器中断,10KHZ的频率,每次中断,就把一个采样值赋值给定时器A的输出通道:CCRx。然后不停的循环,每中断一百次,就输出1个波。不停的循环就不停的输出,那么PWM输出端,经过滤波后(外部滤波电路要找相关电路去设计),就是100HZ的正弦波了。
调节频率要通过定时器B,公式:正弦波频率*每个周期的点数=定时器B中断频率
调节幅度要依据载波中最大与最小占空比之差也即是调制深度,这个没有公式……..
剩下的就要参考我给出的程序作出自己的理解吧,靠你们了,骚年们!
单片机源程序如下:
所有资料51hei提供下载:
SPWM_01.zip
(65.89 KB, 下载次数: 105)
|