以文本方式查看主题

-  曙海教育集团论坛  (http://sun4.cn/bbs/index.asp)
--  单片机初中级  (http://sun4.cn/bbs/list.asp?boardid=55)
----  讨论单片机实现SPWM的算法及实现过程  (http://sun4.cn/bbs/dispbbs.asp?boardid=55&id=2224)

--  作者:wangxinxin
--  发布时间:2010-12-7 15:05:29
--  讨论单片机实现SPWM的算法及实现过程
在论坛上看到越来越多的地方在讨论用单片机直接输出SPWM波形的话题,但大多数都是在争论单片机能否实现的问题,就我最近在网上查找的一些单片机的资料,有一些增强型的单片机应该是可以的,如:
   菲利浦的p89lpc938,输出PWM最高32M,晶振最高18M,指令执行时间2至4个时钟周期。我目前所用
   c80051F系列,单周期指令执行,最高可达100MIPS(据宣传)。输出I/O可编程。功能强大。

   还有在论坛上常看见的Si8250好像也不错。
   虽然在这里列出了几款单片机,我希望在下面的帖子就不要再讨论有关单片机硬件的问题。
   希望大家多多讨论SPWM的算法,以及用单片机实现的控制过程

 

我现在仅对规则采样法了解一点,公式如下:
    脉宽=aTcsin(wTd) Tc为载波频率,a为调制度,w为正弦波角频率,  Td为脉冲所在的时间。这个公式算出的结果用两个IO输出,当一个IO输出一个半波的PWM时,此时另一个输出为无效电平。
我用单片机实现这个公式的想法:
    用查表的方法。把0.5Tcsin(wTd)算出做一个表格,用一个八位的A/D来采样输出电压的变化,计算后得到a值,再根据下面的式子算出实际的脉宽:0.5aTcsin(wTd)/128,这仅是我一点单纯的思路,希望大家积极发表意见,特别是如果我的想法有不对的地方,