正弦波逆变器SPWM设计参考

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

正弦波逆变器SPWM设计参考

//最近在搞SPWM逆变,贡献一个小程序,FYI

//用18F452调的,只有SPWM波形部分,反馈没加进来,如果需要改

幅度,该R_rate的值就好了,范围(1~195) //晶震10M+PLL锁到

40M,RC2输出SPWM波形,RC0为50HZ方波,作为半桥驱动时的交越信号。

void main() { asm(“NOP”); TRISC=0X00; //设置I/O口方向 TRISD=0X00; //设置I/O口方向 PORTC=0X00; PORTD=0X00;

//=============LCD init====================== // lcd_init();

//=============timer0 init=================== T0CON=0x82; //8分频

;0xCx is 8bit timer TMR0L=0x79; TMR0H=0XFE; GIE=0X1; //开放全

局中断 TMR0IE=1; //使能timer0 interrupt //==============PWM

init===================== PR2=124; //设置PWM频率20K CCPR1L=0; //设置占空比高8位,init时为0 CCP1CON=0x0F; //CCP select

PWM mode T2CON=0X05; //设置TIMER2预分频比并使能T2

//==============MAIN LOOP==================== while(1) { } } //===============中断函数============================= void

interrupt ISR(void) { if((TMR0IF)(TMR0IE)) { TMR0L=0x79; TMR0H=0XFE; TMR0IF=0;//清除中断标志 update_duty();//用3.2K的定

时频率按照正弦规律改变脉宽,改64次正好为50HZ的调制正弦波 } }

//下面这部分摘自另一个文件, unsigned char R_sin=0; //这个变量从0~31变

化。 unsigned char R_rate=190;//幅度 void update_duty(void) { unsigned int i=0; if(R_sin==0) RC0=!RC0; //创造交越信号 i=((float)

(sin_tab[R_sin]))*R_rate/100; R_sin++; if(R_sin==32) R_sin=0;

相关文档
最新文档