双极性调制SPWM,查的表采用等分法计算.
static unsigned int SineTable[1024];
double d;//调制度
int FundamentalWave;//基波 单位Hz
unsigned int CarrierWave;//载波 单位Hz
#define PI 3.1415926535897931159979634685441851615905761718750
void CreatTable()
{
int i,x,n;
d=1;
CarrierWave=25000;
FundamentalWave=50;
//计算划分个数 x=f载波/f基波
//f载波=25kHz ,f基波=50Hz时:x=500
x=CarrierWave/FundamentalWave;
//计算表格单元总数
//f载波=25kHz ,f基波=50Hz时:n=499
n=x-1;
//生成表
for(i=0;i<x/2;i++)
{
SineTable=20480*d*sin(PI*(2*i+1)/x);
}
}
PWM每个周期都会产生中断,中断里面
if(500 == i)
{
i=0;
}
if( (0<=i)&&(i<250) )
{
MDC=Sine50Hz;
}
else
{
MDC=-Sine50Hz;
}
MDC是控制占空比的
改成下面这样,波形就很畸形...
if(500 == i)
{
i=0;
}
if( (0<=i)&&(i<250) )
{
MDC=Sine50Hz;
}
else
{
MDC=20480-Sine50Hz;//20480为最大占空比对应数值
}
出来负载两端的波形只有一半的正弦波,另一半是个三角波,求解
输出经过LC滤波器后在负载两端看到的波形如下(10K负载): |