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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于PSoC4的空間矢量脈寬調(diào)制方案

          基于PSoC4的空間矢量脈寬調(diào)制方案

          作者: 時間:2016-12-19 來源:網(wǎng)絡(luò) 收藏


          基于PSoC4的設(shè)計實例

          我們使用TCPWM模塊來實現(xiàn)SVPWM。TCPWM模塊提供了電機(jī)控制常用的中央對齊、邊沿對齊PWM,并可實現(xiàn)嚴(yán)格的同步功能。支持靈活的死區(qū)控制,并可與ADC同步。TCPWM包括四個16位的周期長度用戶可編程的計數(shù)器,這些計數(shù)器之間可以進(jìn)行功能同步。每個模塊包含一個捕獲寄存器、一個周期寄存器以及一些比較寄存器。每個模塊都支持互補(bǔ)的可編程的死區(qū),還支持一個關(guān)斷輸入信號來強(qiáng)迫輸出信號進(jìn)入預(yù)先設(shè)定的狀態(tài)。

          如圖5所示,從PSoC Creator中拖放三個TCPWM模塊,配置TCPWM的工作模式為中央對齊,帶死區(qū)的雙路互補(bǔ)輸出模式。三對PWM輸出可分別作為U、V和W相橋臂驅(qū)動信號(如PWM_U_Upper, PWM_U_Lower)。同時在任一TCPWM模塊的UN事件輸出(下溢信號,用來指示計數(shù)器向下計數(shù)達(dá)到“0”)觸發(fā)PWM中斷(PWM_MainLoop_ISR),用于進(jìn)行FOC計算并更新占空比。


          圖5:三相PWM原理圖。

          “PWM_UPDATE”信號可在UN事件時觸發(fā)TCPWM的Switch事件,周期和比較寄存器上的值會自動與緩存周期和比較器寄存器的值更換。利用此特性,我們可以在TC事件之前更新緩存寄存器,然后用同一信號觸發(fā)不同PWM的Switch事件,由此保證各路PWM更新的嚴(yán)格實時同步。

          圖中的控制寄存器(PWM_Ctrl_Reg)還可以同時使能或禁止六路PWM輸出。PSoC靈活的可編程特性可輕松實現(xiàn)了三對嚴(yán)格同步的互補(bǔ)對稱PWM及其更新邏輯,這樣可以使工程師將更多的時間專注于算法層面,提供產(chǎn)品的競爭力。

          主控程序首先會初始化和配置PSoC4的內(nèi)部資源,然后進(jìn)入主循環(huán)。主循環(huán)主要檢測用戶的起停命令,決定電機(jī)的運(yùn)動狀態(tài);并完成一定的調(diào)試輸出功能。FOC主算法全部在PWM中斷中完成,主要完成坐標(biāo)變換,SVPWM輸出及更新占空比等操作。中斷程序會人工生成一個周期性變化的角度,用于電機(jī)開環(huán)運(yùn)行。圖6顯示了主控程序流程圖。


          圖6:程序流程圖。

          實驗結(jié)果

          在PSoC Creator環(huán)境下編譯工程,并連接PSoC4開發(fā)板,三相全橋驅(qū)動板與PMSM電機(jī),通電后電機(jī)可正常運(yùn)行,圖7電機(jī)相電流波形。從測試結(jié)果可以看出,電流波形平滑,正弦度很好。


          圖7相電流波形圖。

          小結(jié)

          上述實例介紹了如何在PSoC4 平臺上實現(xiàn)空間矢量脈寬調(diào)制。PSoC4針對電機(jī)控制做出了富有特色的優(yōu)化。憑借片內(nèi)豐富的資源及高度的靈活性,用戶可以輕松設(shè)計出高度集成化、低成本、性能優(yōu)越的PMSM矢量控制系統(tǒng),提高產(chǎn)品的核心競爭力。

          上一頁 1 2 3 下一頁

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();