• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

简易ATmega8输出SPWM波形

使用片内8M振荡器,输出精度为8位,所以输出频率为:8000/256=31.25KHz
要输出50Hz正弦波这个数组需占用(1/50Hz)*31.25K=625
那么可以获得SPWM每个递增占空比为sin(0:2*pi/625:2*pi)*127+128



程序示例:
#include
#include

unsigned char SPWM_D[625];
unsigned int k;

interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
OCR1A=SPWM_D[k];
if(k<624)k++;
else k=0;

}
上面程指SPWM数组及在中断控制SPWM输出

SPWM数组计算:
unsigned int i;
  float j;
for(i=0;i<625;i++)
     {
       j=i*2*PI/625;
       SPWM_D[i]=sin(j)*127+128;
    
     };

输出波形:

500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/59/2045691194495961.jpg?x-oss-process=image/watermark,g_center,image_YXJ0aWNsZS9wdWJsaWMvd2F0ZXJtYXJrLnBuZz94LW9zcy1wcm9jZXNzPWltYWdlL3Jlc2l6ZSxQXzQwCg,t_20');}" onmousewheel="return imgzoom(this);">
500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/59/2045691194496242.jpg?x-oss-process=image/watermark,g_center,image_YXJ0aWNsZS9wdWJsaWMvd2F0ZXJtYXJrLnBuZz94LW9zcy1wcm9jZXNzPWltYWdlL3Jlc2l6ZSxQXzQwCg,t_20');}" onmousewheel="return imgzoom(this);">
500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/59/2045691194496251.jpg?x-oss-process=image/watermark,g_center,image_YXJ0aWNsZS9wdWJsaWMvd2F0ZXJtYXJrLnBuZz94LW9zcy1wcm9jZXNzPWltYWdlL3Jlc2l6ZSxQXzQwCg,t_20');}" onmousewheel="return imgzoom(this);">

在上图中你看到很漂亮的正弦波形了吗?
全部回复(15)
正序查看
倒序查看
madboy21
LV.8
2
2007-11-08 12:34
可以在TINY13/25中使用这个程序,可用于制作正弦波逆变器及UPS.
0
回复
madboy21
LV.8
3
2007-11-13 11:57
@madboy21
可以在TINY13/25中使用这个程序,可用于制作正弦波逆变器及UPS.
没人顶一下
我想用单片机做SPWM价格应比专用SPWM成本要低,且控制很灵活
0
回复
zongshun
LV.1
4
2007-11-13 22:36
我用128个点也做出着个比较好的SIN波,但我想请教下,在不变输出SIN波表格下,如何调幅?
0
回复
madboy21
LV.8
5
2007-11-13 23:04
@zongshun
我用128个点也做出着个比较好的SIN波,但我想请教下,在不变输出SIN波表格下,如何调幅?
你这点数那么少,是整个周期还是1/4周期?
其实调幅很简单啊,比如说要输出220VAC
如果按上面的输出波开,当总线电压在312VDC时输出正好在220VAC.
问题是总线电压可能是在320V-400VDC这个范围,如还按以上的波形,输出电压就会偏高了.这时需要降低输出电压并稳定在220VAC.
具体方法:SPWM=SPWM_D[X]*312/VBUS
VBUS是320-400V的总线电压
0
回复
madboy21
LV.8
6
2007-11-28 12:38
如有需要原程序代码的朋友可以和我联系,我也可以为你提供整个UPS或逆变器设计方案.
0
回复
wzy2006bj
LV.2
7
2007-12-01 10:37
@madboy21
如有需要原程序代码的朋友可以和我联系,我也可以为你提供整个UPS或逆变器设计方案.
打你电话没人接,请联系我:13718785715,应该有机会合作.
0
回复
chord_amp
LV.1
8
2007-12-02 13:52
@madboy21
如有需要原程序代码的朋友可以和我联系,我也可以为你提供整个UPS或逆变器设计方案.
你好, 我对你的单片机逆变器很感兴趣,请问有成品试过吗?成本
大约多少?
0
回复
madboy21
LV.8
9
2008-04-05 11:31
@chord_amp
你好,我对你的单片机逆变器很感兴趣,请问有成品试过吗?成本大约多少?
tiny13
mega48
mega8
tiny25
0
回复
yuyuxin20
LV.2
10
2008-04-29 10:56
@madboy21
tiny13mega48mega8tiny25
有三相逆变器吗
0
回复
sarpin
LV.2
11
2009-08-29 09:33
@madboy21
如有需要原程序代码的朋友可以和我联系,我也可以为你提供整个UPS或逆变器设计方案.
我想要整个逆变器的设计方案,DC12V逆变AC220V的,可以么
0
回复
madboy21
LV.8
12
2009-08-29 22:53
@sarpin
我想要整个逆变器的设计方案,DC12V逆变AC220V的,可以么
原来我发的贴在这~~.我都说了有程序,可那些家伙说没找到,狂晕!!!
0
回复
hk007
LV.3
13
2009-08-30 08:32
@madboy21
原来我发的贴在这~~.我都说了有程序,可那些家伙说没找到,狂晕!!!
请教如何控制死区?M8如果用快速PWM模式的话,在计数到达0xff时PWM1和PWM2会同时改变(一个开通另一个关断),那么死区如何用软件控制?
0
回复
YEYOU1984
LV.1
14
2011-06-08 16:15
@madboy21
如有需要原程序代码的朋友可以和我联系,我也可以为你提供整个UPS或逆变器设计方案.

你好。。能把SPWM的源代码给我吗。。我是初学者,还有很多不明白的地方,希望和借鉴一下你的思路

0
回复
liyonghe
LV.7
15
2011-09-18 22:38
@YEYOU1984
你好。。能把SPWM的源代码给我吗。。我是初学者,还有很多不明白的地方,希望和借鉴一下你的思路
mark
0
回复
dahaiinv
LV.4
16
2011-09-18 23:37
@liyonghe
mark

 

0
回复