1. 程式人生 > >BLDC電機控制演算法——FOC簡述

BLDC電機控制演算法——FOC簡述

最近做完了一個直流無刷電機的電機調速專案,查閱了各種大神所寫的部落格和論文,在這裡我只做一下小小的總結; FOC(Filed Oriented Control)是採用數學方法實現三相馬達的力矩與勵磁的解耦控制。 主要是對電機的控制電流進行向量分解,變成勵磁電流Id 和交軸電流Iq ,勵磁電流主要是產生勵磁,控制的是磁場的強度,而交軸電流是用來控制力矩,所以在實際使用過程中,我們常令Id=0 。之後我將詳細介紹一下這個演算法的數學原理和一些自己的理解。

FOC向量控制總體演算法簡述

輸入:位置資訊,兩相取樣電流值,(3相電流、電機位置或者電機速度) 輸出:三相PWM波 所需硬體

:兩個ADC,一個光電或磁編碼器,主控,依據電壓等級的不同有mosfet或者IGBT或者SiC功率模組組成的三個半橋 FOC演算法在本質上就是一些線性代數中的矩陣變換,我在這裡講述的是有感測器的FOC演算法,轉子的位置資訊是通過絕對式磁編碼器反饋的,直接是數字量。 首先是通過ADC取樣得到電機的ia,ib 兩項電流資訊,由於基爾霍夫電流定律,同一個節點流入電流值與流出電流相等,我們可以計算出ic,之後通過Clark變換,可以將三相定子座標系(三個軸互為120°,ia,ib,ic)轉化為兩相的定子直角座標系(iα,iβ),因為我們主要控制的是轉子的旋轉,所以需要通過Park變換將兩相定子座標系變換到兩相轉子座標系(
iq,id
),本質上就是矩陣的旋轉變換,在這裡,我們用到的轉子的位置資訊。該位置資訊便是由磁編碼器返回的絕對角度資訊,(其實也可以用增量式編碼器,我感覺應該只是在電機位置校準的時候需要定義零點,其他的應該一樣,我暫時還沒有做過,屬於猜想的,當然有的還可以通過無位置的控制方式,通過三相取樣電流值計算轉子位置資訊,還有需要注意的是得到的是角度資訊,我們需要將其轉化為電角度資訊,=),其中id 為勵磁電流分量,iq為轉矩電流分量,可以建立兩個PI調節器分別對兩個電流分量進行調節。通常情況下,勵磁電流分析應該為0,而轉矩電流分量為給定值或者是經過速度環輸出值。速度環可以根據速度反饋來控制該電流的大小,之後轉矩電流的PI調節器輸出
Vq
,勵磁電流的PI調節器輸出Vd。之後通過反Park變換再將其轉化為兩相定子座標系(Vα,Vβ),Vα,Vβ 通過Clark逆變換得到需要施加在三相定子上的電壓值(Va,Vb,Vc )然後通過SVPWM模組,輸出到逆變器。 SVPWM是磁場定向控制中常用的PWM波調製技術。其全稱是空間向量脈寬調製(Space Vector Pulse Width Modulation)是由三相功率逆變器的六個功率開關原件組成的特定開關模式產生的脈寬調製波,能夠使輸出電流波形儘可能接近於理想的正弦波。理論基礎是平均值等效原理,即在一個開關週期內通過對基本電壓向量加以組合,使其平均值與給定電壓向量相等。 假設三相電壓分別為UA,UB,UC ,且相互之間相位差為120°,假設Um為相電壓的有效值,f為電源頻率,則有:

{UA(t)=2Umcos(2πft)UB(t)=2Umcos(2πft2π3)UC(t)=2Umcos(2πft+2π3) 則三相電壓空間向量相加的合成空間向量U(t) 就可以表示為: