• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 電源與新能源 > 設計應用 > 正弦波逆變器SPWM設計參考

    正弦波逆變器SPWM設計參考

    作者: 時間:2013-12-14 來源:網絡 收藏

    //最近在搞SPWM逆變,貢獻一個小程序,FYI

    本文引用地址:http://www.czjhyjcfj.com/article/227526.htm
      //用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;

      CCPR1L=i/4; //設置占空比高8位,init時為0

      CCP1CON=0x0F+(i3)*16;

      }

      const unsigned char sin_tab[32]={

      0,25,50,74,98,120,142,162,180,

      197,212,225,235,244,250,254,

      255,254,250,244,235,225,212,

      197,180,162,142,120,98,74,50,25};


    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 宜兴市| 镇平县| 清涧县| SHOW| 贵阳市| 虹口区| 大新县| 包头市| 滦平县| 麟游县| 呈贡县| 苍南县| 临沂市| 遂昌县| 徐州市| 高要市| 兴城市| 东明县| 保靖县| 维西| 金华市| 宜良县| 洛宁县| 东阳市| 监利县| 克拉玛依市| 蕲春县| 郁南县| 东莞市| 荣成市| 余庆县| 万州区| 鄂温| 义马市| 高阳县| 望城县| 西安市| 农安县| 中牟县| 桓台县| 海门市|