參考方案簡介
隨著電力電子技術的發展,電力電子交直流變換裝置應用日益廣泛,移相載波技術可以有效的減小PWM調制過程中產生的諧波,被廣泛應用到多相多電平等場合。 本文描述了使用eFlexPWM實現多級串聯載波移相PWM輸出的邏輯、外設配置及實現方法。 本參考設計主要向讀者介紹了eFlexPWM強大功能,并給出了六路互補移相60°的PWM實例作為參考,可以指導客戶快速實現想要的PWM輸出模式。
eFlexPWM簡介
eFlexPWM全稱是:Enhanced Flex Pulse Width Modulator的縮寫,直譯為增強型靈活脈沖脈寬調制器。 i.MX RTxxxx系列一般具有1-4個強大的eFlexPWM(eFlexPWM1~eFlexPWM4)模塊。每個eFlexPWM有4個子模塊,可以產生四路互補PWM即產生8路PWM,也可以產生8路相互獨立的PWM波。
每個eFlexPWM模塊擁有一個向上計數的16位計數器,它僅在向上方向計數至VAL1值,然后重置為初始(INIT)值。在計數過程中,計數值與VAL2/VAL3/VAL4/VAL5寄存器中的值作比較,控制輸出電平高低翻轉。
PWM又有中心對齊、邊沿對齊、移相和雙開關模式。
每個eFlexPWM具有各自的故障檢測電路,當故障發生時根據程序鎖定PWM輸出引腳的電平狀態,這在逆變、整流及電機控制應用中能夠有效的提高設備的安全性。eFlexPWM可以產生多種多樣的開關模式,包括非常復雜的波形。它可以用來控制大部分已知的電機類型,用于控制開關電源也非常具有優勢。
eFlexPWM主要特點
eFlexPWM脈寬調制器的主要特點如下:
16位精度,支持中央對齊、邊沿對齊和非對稱PWM輸出;
可工作在互補輸出模式或獨立工作模式;
每個PWM輸出雙沿(上升沿/下降沿)可獨立控制;
可與外部硬件或其他PWM子模塊同步;
雙緩沖PWM寄存器,可設置1~16的整數周期重載或半周期重載;
支持PWM輸出的雙切換(周期和占空比);
一個PWM周期可以產生多個輸出觸發事件;
故障輸入可以指定連接控制多個PWM輸出;
獨立的可編程PWM輸出極性設置;
獨立的死區時間設置;
增強型雙沿(上升沿/下降沿)捕獲功能。
PWM子模塊功能圖
圖1 PWM子模塊功能框圖
圖中各個部分說明如下:
1是時鐘源模塊,可以選擇不同的時鐘源;
2是16位計數器;
3是同步寄存器,有四個同步信號供選擇,可以初始化計數器,可以方便的和外部同步;
4是比較器,用于產生PWM波,每個子模塊有6個比較寄存器,可以產生三路的PWM。
5和7是重裝載選擇器,可以用來選擇重裝載寄存器和N個PWM周期或者半周期重裝載。
6是輸出控制模塊,比較器產生的PWM23與PWM45經過這些控制模塊轉變成PWM_A和PWM_B。主要包含互補控制,死區補償,故障保護等功能。
多級串聯PWM的實現
每個eFlexPWM子模塊有一個外部同步信號輸入,和兩個觸發信號輸出。外部同步輸入信號允許外部的信號源來初始化PWM計數器。通過這種方式,eFlexPWM子模塊的行為可以與外部電路同步。
兩個觸發信號輸出可以去控制其他模塊的行為,例如在特定的時刻觸發ADC采樣。
本文將使用輸出觸發信號去觸發其他eFlexPWM子模塊。
兩個輸出觸發信號分別由不同的寄存器值比較產生。當PWM計數器匹配val0、val2或val4時,TRIG0被置位。當PWM計數器匹配val1、val3或val5時,TRIG1被置位。計數器發生匹配事件后延遲兩個clock的后輸出觸發信號。
圖2 PWM子模塊外部同步輸入和Trig輸出
在一些電源應用中,需要多路PWM輸出,并且需要彼此之間有固定相移,此時就能充分凸顯i.MX RT系列eFlexPWM強大的性能。
下面我們通過輸出六路互補且彼此之間相差60°相移的PWM為實例,詳述eFlexPWM使用方法和配置。
實例要求
下面以一個具體實例來介紹,方便讀者理解和運用eFlexPWM模塊。
具體的實例要求如下:
PWM頻率為10KHz
六路互補PWM輸出
兩路之間移相60°
6路PWM輸出的邏輯如下圖所示:
圖3 6路PWM相移圖
eFlexPWM子模塊組合
用6個eFlexPWM子模塊級聯,每個子模塊輸出一路互補的PWM,因為每個eFlexPWM子模塊都有一個獨立的計數器,因此實現起來比較方便。
圖4 eFlexPWM子模塊串聯
通過每個前級子模塊的TRIG0去觸發后級子模塊,我們通過設置前級子模塊Val4的值來靈活的設定觸發后級子模塊的時刻。
經過這樣的組合,可以進行0-360°任意相位的相移,讀者可以很方便的調節成自己想要的相移。不需要復雜的軟件操作,通過寄存器可以方便實現,減小了CPU的開銷。
時序邏輯
圖5給出了載波移相的邏輯,從圖中我們可以看到六路PWM載波信號依次移相60°,后級子模塊由前級子模塊在特定時刻觸發。通過載波的移動,載波和比較器比較后產生的PWM也就產生了相應的相移。 圖5 時序邏輯
從圖5中可以看出每個后級子模塊都由前級的TRIG0觸發產生的,只要設定好觸發時刻,就可以得到所預想的相移。
后級子模塊檢測到前級子模塊的TRIG0觸發信號后,會用兩個clock時鐘去同步。再加上TRIG0輸出前有兩個clock的延遲,所以總共會有4個clock的延遲,后面實驗結果可以驗證。
測試結果
考慮到前級觸發后級的延遲,本文進行了實際測量和分析,如圖6所示測量兩相之間的時間間隔。
圖6 PWM 相移間隔圖
測量三次P1-P6的相位偏移時間,結果如下:
表1 P1-P6的相位偏移時間
因為本實例中PWM頻率是10Hz,所以P1-P6的理論間隔時間是16.667us(60°)。下表給出了實測和理論值的誤差。
表2 P1-P6的相位誤差
從測試結果我們可以看出,實測結果后級子模塊比理論有了30ns的延遲。這樣從初級子模塊,到最后級子模塊,誤差不斷積累,最后會導致最后級子模塊有150ns的延遲。如果級數更多,則誤差會更大。
因此我們需要一些方法進行補償。
延遲補償方案
因為每個后級子模塊的延遲都是固定的,所以我們可以通過把觸發時刻前移固定時長的方法補償此延遲。
根據PWM clock頻率和延遲時間我們可以計算出需要補償的計數值。
本實例中PWM clock的頻率是132M,延遲是30ns,從而計算出需要補償的數值約等于4。
在程序中補償后,測量兩相波形相移如下圖所示:
圖6 補償后的PWM移相圖
從圖中可以看出兩相移相時間是16.664和理論值非常接近,考慮到測量誤差,已經基本達到設置的目標。這樣就完美的解決了延遲的問題。從而就實現了多級串聯載波移相的PWM輸出。
-
串聯
+關注
關注
6文章
424瀏覽量
37559 -
PWM
+關注
關注
114文章
5181瀏覽量
213806 -
計數器
+關注
關注
32文章
2256瀏覽量
94478 -
脈寬調制器
+關注
關注
1文章
57瀏覽量
17003 -
eflexpwm
+關注
關注
0文章
2瀏覽量
3981
原文標題:基于eFlexPWM的多級串聯載波移相脈寬調制技術實現
文章出處:【微信號:NXP_SMART_HARDWARE,微信公眾號:恩智浦MCU加油站】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論