<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于68HC908MR16單片機的光伏正弦波逆變電源

          基于68HC908MR16單片機的光伏正弦波逆變電源

          作者: 時間:2011-03-17 來源:網絡 收藏

          本文引用地址:http://www.ex-cimer.com/article/172936.htm

          3 串行通信

          為了增強系統(tǒng)適應不同環(huán)境的能力,有必要對系統(tǒng)進行監(jiān)控監(jiān)測及對參數進行修改調節(jié),本系統(tǒng)采用串行通信技術同外界鍵盤監(jiān)控系統(tǒng)進行通信。程序上采用查詢方式,周期性地向外界發(fā)送檢測的數據,檢測的數據包括太陽電池電壓、充電電流、蓄電池電壓、直流側電流、輸出電壓、輸出電流、散熱器溫度等,當發(fā)生故障時優(yōu)先發(fā)送故障信號,當需要修改參數時就接收數據并修改相應參數,并使用校驗和校驗的方法檢驗數據通信的準確性。硬件采用MAXIM公司的MAX485作為接口芯片使其工作于半雙工模式,同時本系統(tǒng)采用光耦隔離的辦法以增強系統(tǒng)抗干擾能力,提高可靠性。

          4 系統(tǒng)的軟件設計

          本系統(tǒng)軟件采用模塊化設計,包括初始化模塊、保護模塊、調節(jié)器模塊、通信模塊、中斷程序模塊等,除中斷模塊外其余模塊都放在主程序中進行,主程序框圖見圖4。

          圖4 主程序流程圖

          初始化模塊主要完成系統(tǒng)的初始化、各變量單元、各寄存器單元賦初值。

          保護模塊根據電壓電流采樣值進行故障判斷,并在故障發(fā)生時封鎖PWM的輸出。保護包括蓄電池欠壓、蓄電池過壓、系統(tǒng)過載、過熱保護等,其中蓄電池欠壓、過壓保護能夠實現自恢復,即在檢測到蓄電池電壓又恢復正常時,系統(tǒng)重新軟啟動并恢復正常工作。過流保護由于需要快速反應故采用硬件保護,當過流發(fā)生時就立即封鎖全部PWM輸出,也立即封鎖全部驅動電路,只有重新復位時才能恢復工作,軟件可判斷出是否發(fā)生過流保護。

          調節(jié)器模塊完成對系統(tǒng)輸出電壓穩(wěn)壓的PI調節(jié),使輸出電壓穩(wěn)定在220V,同時軟啟動也放在其中。其入口參數為軟啟動輸出,出口參數M送到中斷模塊中參與PWM脈寬的計算。通過實時調節(jié)該參數的值就能改變脈寬值從而使輸出跟隨給定。

          中斷程序模塊完成SPWM波形的發(fā)出、交流電壓、交流電流參數的采樣。中斷的入口參數為PI調節(jié)器的輸出參數M,該參數參與脈寬的計算即PVALX(H:L)值的計算,從而改變了占空比也即調節(jié)了輸出電壓。按照SPWM的規(guī)則2采樣的方法,結合初始化中對PWMMC的設定得脈寬的實時計算公式為

          正半周期:

          PVALX(H:L)=PMOD(H:L)/2+M×SIN(PTR)

          負半周期:

          PVALX(H:L)=PMOD(H:L)/2-M×SIN(PTR)

          其中PTR為正弦表指針,SIN(PTR)為對應PTR指針的正弦值。



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();