曙海教育集团论坛单片机专区单片机初中级 → 回复帖子

  回复帖子
用户名:   *您没有注册?
密码:   *忘记论坛密码?    标题采用“回复:XXX....”
主题标题:  *不得超过 200 个汉字
当前心情
上一页 发帖表情 下一页
内容
高级设置: 签名: 回帖通知:
 

主题新回顾(发布时间:2010-12-7 15:05:29)
--  作者:wangxinxin
--  讨论单片机实现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,这仅是我一点单纯的思路,希望大家积极发表意见,特别是如果我的想法有不对的地方,