艾诺智能仪器有限公司技术分析报告编制:李新年审核:批准:日期:2010-5-10日期:日期:基于微处理器的SPWM的算法分析与实现一、理论基础采样控制理论中有一个重要的结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上,其效果基本相同(冲量即指窄脉冲的面积,这里所说的效果基本相同,指环节的输出响应波形基本相同)。二、SPWM所谓的SPWM波形就是与正弦波形等效的一系列等幅不等宽的矩形脉冲波形如图1所示,等效的原则是每一区间的面积相等。如图把一个正弦波分作几等分(如图1a中,n=12)然后把每一等分的正弦曲线与横轴所包围的面积都用一个与此面积相等的矩形脉冲来代替,矩形脉冲的幅值不变,各脉冲的中点与正弦波每一等分的中点相重合(如图1b),这样由几个等幅不等宽的矩形脉冲所组成的波形就与正弦波等效,称作SPWM波形。同样,正弦波的负半周也用同样的方法与一系列负脉冲波等效。设正弦调制波Ur=asinwrt,正弦半波每个等分的宽度为Tc=2π/n,n为正弦波一个周期内的脉冲数且n较大,第i个等分正弦波的中点值或平均高为yi())12(sin(tnia),则该等分正弦波所围的面积为yi*Tc(即认为此时正弦波所围的面积为矩形面积);第i个矩形脉冲宽度为δi,矩形波的高为H,则矩形波的面积为Hδi。根据面积相等原则有yi*Tc=Hδiδi/yi=2π/n*H=const(常数)令A=2π/n*H*a,wr=(2i-1)*π/nδi=Asinwrt1)艾诺智能仪器有限公司技术分析报告编制:李新年审核:批准:日期:2010-5-10日期:日期:上式表明,等分数N较大时,SPWM将正弦波的函数值变换成了恒幅脉冲的宽度值。显然,当改变正弦函数值时,各个脉冲的宽度必然也发生相应的变换。结论1:幅值与相位不同的正弦波,产生的SPWM波也是不同的;相反,SPWM波不同,对应的正弦波也不同。三、SPWM的谐波分析PWM电路可以使输出电压、电流接近正弦波,但由于使用载波对正弦信号波调制,也产生了和载波有关的谐波分量。这些谐波分量的频率和幅值是PWM电路性能的重要指标之一。A)、SPWM波形中的基波分量设正弦调制波Ur=asin(wrt+φ)式中,0≤a≤1;设三角波载波Uc的表达式为)-或twtwUctwtwUccccc0(210(21UcUr1¦Θ1-00Udwotwct-Ud¦Θ2¦Θ1¦Θ2图2载波、调制波和PWM输出波的关系下面的方法是先以三角波载波角频率Wr为基准进行分析,然后再求出所得波形和Wr的关系。图3是载波、调制波和PWM输出波的关系图。图中取三角波两个负峰值之间为一个载波周期2π,取该周期中点,即三角波正峰值时刻为Wt轴的零点。则设在该周期内Ur和Uc的交点时刻分别为θ1和θ2,则PWM输出波可表示为Uo=Ud(Wct≤θ1或Wct≥θ2)或Uo=-Ud(θ1≤Wct≤θ2)把Uo/Ud展开为傅氏级数得:艾诺智能仪器有限公司技术分析报告编制:李新年审核:批准:日期:2010-5-10日期:日期:wctwrtannwrtaUdUncos1sin(2sin4)sin(012)式中,第一项即为PWM输出波形中基波分量,这个基波分量正是调制时所需要的正弦波。(详细计算参照《电力电子变流技术》-机械工业出版社)B)、SPWM波形中的谐波分量式2)中所包含的谐波成分是相当复杂的,谐波频率即和载波角频率Wc有关,也和调制信号角频率Wr有关。以载波周期为基础,再利用贝塞尔函数推导出PWM波的傅里叶级数表达式。尽管分析过程复杂,但结论简单而直观。用贝塞尔函数可以从式2)中求出各次谐波的频率及幅值,见图3。谐波角频率为:rckn;式中,n=1,3,5,…时,k=0,2,4,…;n=2,4,6,…时,k=1,3,5,…PWM波中不含低次谐波,只含wc及其附近的谐波以及2wc、3wc等及其附近的谐波。其中幅值最高影响也最大的是角频率为Wc的谐波的谐波分量。这种载波频率附近的高次谐波很容易滤除的,若除去谐波就可以得到PWM输出波形中的基波分量,即正弦波。图3PWM波频谱图艾诺智能仪器有限公司技术分析报告编制:李新年审核:批准:日期:2010-5-10日期:日期:结论2:载波三角波、调制正弦波,产生PWM波,滤掉PWM波的谐波,得到PWM波的基波,就是调制波-正弦波;四、算法的分析在微处理器中,占空比要求大于0%小于100%,则要求矩形脉冲宽度大于Tcδi0;而1)式中由于正弦值有正有负,因此1)式不能满足微处理器需要。规则采样法:在规则采样中,采样点与三角波的中点(负峰值点)重合,这样可用简单的比例关系计算出脉冲宽度,如图2就是这种方法的示意图。图2规则采样法原理如图所示,在三角波的负峰时刻tD时对正弦调制波采样而得到D点,过D点作一水平直线和三角波分别交与A点和B点,在A点的时刻tA和B点的时刻tB控制功率开关器件的通断。这里设三角波的幅值为1,其峰-峰值为2。从图2,根据相似三角形定理,可得如下关系式:222sin1CDrTtwa则DrCDrCCDrCtwBTtwaTTtwaTsin2sin22sin1(2)3)艾诺智能仪器有限公司技术分析报告编制:李新年审核:批准:日期:2010-5-10日期:日期:其中B=Tc*a/2;此时根据面积相等原理,此时对应的正弦波为:Ur*Tc=H*Ur=H*(1+aDrtwsin)/24)结论3:式3)可以满足的Tcδi0要求,因此只要使脉冲宽度符合式3)的要求,就可以输出式4)的正弦波。对式3)而言,有变量Tc,a,A,Drtwsin,其中Tc为载波三角波的频率,a为幅值调制比,B为a的倍数关系,wr为正弦波的角频率,tD为采样时刻,Drtwsin为第i个等分正弦波的中点值。五、SPWM的实现1、根据以上分析,要输出spwm波,需要如下步骤:①首先,确定的是载波,如15.6KHz;②其次,确定调制波,如50Hz正弦波;③计算等分正弦波的中点值,如波表,目的是计算脉冲宽度;④要输出完整的正弦波,需要按照PWM波周期输出不同的PWM脉冲宽度,如定时调用波表,目的是使脉冲宽度按照正弦规律变化;⑤调整正弦的幅度,如级数,目的改变级数大小,则改变输出正弦值的大小;2、ADUC7027芯片SPWM的实现①载波,PWM的开关周期=2×PWMDAT0×tCORE,其中PWMDAT0=0x571,tCORE=1/41.78M;因此PWM的开关周期=66.7us,在载波频率=1/66.7us=15KHz;注:9632x是15.6k,据张庆详工程师说好像是计算错误,应该是15.6k。②调制波,50Hz、60Hz、300Hz;③波表的生成,首先等分正弦波的中点值,如50Hz正弦波用15.6KHz载波切割,共分成15.6K/50=312;即相当于把一个标准50Hz正弦波2π,分成312份,求相邻切割点中间点的值;则:艾诺智能仪器有限公司技术分析报告编制:李新年审核:批准:日期:2010-5-10日期:日期:)312)12(sin(*6553][PWMTABii,注意:乘以6553是为了提高计算精度,在程序中最后需要除以6553;应该是乘以2的16次方=65536,但为了提高级数,就将波表缩小10倍。附正弦函数计算C程序#includestdio.h#includemath.hmain(){inti;intj;FILE*bb;bb=fopen(barm50.asm,wt);for(i=0;i312;i++){j=sin((i*2.+1)*M_PI/312.)*32768;if(j=0)fprintf(bb,.word0%xH\n,j);elsefprintf(bb,.word0%xH\n,j);}fclose(bb);}④定时输出PWM波,要求定时周期等于PWM周期(64us),因此定时器周期=TxLD×预分频数/源时钟频率=0xA71×1/41.78M=64us;这样就输出不同的PWM占空比,使之按照正弦波变化。⑤级数的意义对于ARM芯片而言,我们可以调节占空比寄存器(PWMCH0)。因此根据公式3),改变PWMCH0,使输出的PWM宽度等于δ。为了简化,死区时间先不考虑:PWM宽度=PWMDAT0*tCORE+2×PWMCH0*tCORE=Tc/2+Tc*PWMCH0/PWMDAT05)艾诺智能仪器有限公司技术分析报告编制:李新年审核:批准:日期:2010-5-10日期:日期:式子5)要和3)相同,则TCPWMCH0/PWMDAT0=Tc/2*asinwrtDPWMCH0=a/2*PWMDAT0*sinwrtD=CsinwrtD因此,只需要按时把CsinwrtD值送入PWMCH0,就可以使输出的PWM宽度等于δ。C值就是我们常说的级数。另外:从3)式可以得出,PWMCH0/PWMDAT01/2;否则,如大于的话,占空比大于100%。即PWMCH01/2*PWMDAT0=696即CsinwrtD696,其中0sinwrtD1,则C696,即级数小于696;若这时把sinwrtD缩小10倍,而C值就可以放大10倍,级数就会扩大10倍。⑥实例分析:选择一台AN9632X仪表,验证实际级数与理论级数是否一致?实测:AN9632X,设置2500V空载输出,升压器的初级输入是62V,PWM显示级数2025,功放电压为308V。SPWM波:DrCtwBTsin2A)对应的正弦波:Ur*Tc=H*Ur=H*(1+aDrtwsin)/2B)根据试验实际的升压器输入为Ui=62×1.414Drtwsin=87.7Drtwsin对于B)式而言,硬件滤波电路滤掉直流分量,则87.7Drtwsin=H/2*aDrtwsin,由于功放电压为308V,此时H=308×2=616V,即功率板理论最大可以输出308V;则:a=0.2844,因为:PWMCH0=a/2*PWMDAT0*sinwrtD=CsinwrtD(详见⑤级数的意义),C值就是我们常说的级数,则C=0.2844/2*1339=199,由于级数此时放大10倍,即理论计算级数为1990,接近于PWM级数2025。关于死区的说明:个人认为,死区是个固定值,应该是个直流分量,最后会被硬件电路滤掉,因此在级数计算中不应该存在加或减死区的问题。艾诺智能仪器有限公司技术分析报告编制:李新年审核:批准:日期:2010-5-10日期:日期:3、TMS320F2812芯片SPWM的实现A)、PWM设置相关在9651TH中,TICON设置为0x0842H,根据定义可知计数器工作在“连续增/减计数模式”,这样根据T1PR的设定值,DSP输出对称的PWM波。T1PR的设定值与下列参数有关;根据对称波形产生机理可知,DSP递增至T1PR后开始递减至0,至此完成一个三角波(载波)的输出,因此T1PR为载波周期的1/2;由于载波为15kHz,转化为系统时钟为10000个时钟周期,因此T1PR的设定值为5000(#1388H).B)、PWM输出程序在定时中断中完成。定时器为CPU定时器2,TIMER2PRD=0x30D4H,由于系统时钟频率为150MHz,则一个定时中断的时间为12500/(150*1000000)=83.3us,每个中断输出一个波表数据,因此定时频率为1000000/83.3=12kHz。对于50Hz的正弦波,波表包含有12k/50=240个点,即载波比为240。这里要注意此时PWM周期与定时周期并不一致,是因为定时周期按照15k算的话,时间太短,中断处理不过来,因此张工把定时周期改长,同时,我认为按12k采样、12k送数,PWM波与12k载波周期及15k周期相比有一定线性关系,因此可以输出正常正弦波,但是由于15k开关频率比12k快,相当于每一个等分的正弦面积小了一点,这样就有可能出现较多的高频杂波。C)、对于DSP芯片而言,我们可以调节占空比寄存器就是COMPR1,PWM脉宽