BLDC電機(jī)控制算法——FOC簡述
發(fā)布時(shí)間:2024-04-30作者:admin點(diǎn)擊:487
最近做完了一個(gè)直流無刷電機(jī)的電機(jī)調(diào)速項(xiàng)目,查閱了各種大神所寫的博客和論文,在這里我只做一下小小的總結(jié):(PS最近有遇到相關(guān)課題,發(fā)現(xiàn)以前的描述并不完整,因此又補(bǔ)充了一些。)
FOC(Filed Oriented Control)是采用數(shù)學(xué)方法實(shí)現(xiàn)三相馬達(dá)的力矩與勵(lì)磁的解耦控制。
主要是對電機(jī)的控制電流進(jìn)行矢量分解,變成勵(lì)磁電流I d IdId 和交軸電流I q IqIq ,勵(lì)磁電流主要是產(chǎn)生勵(lì)磁,控制的是磁場的強(qiáng)度,而交軸電流是用來控制力矩,所以在實(shí)際使用過程中,我們常令I(lǐng) d = 0 Id=0Id=0 。之后我將詳細(xì)介紹一下這個(gè)算法的數(shù)學(xué)原理和一些自己的理解。
#FOC矢量控制總體算法簡述
輸入:位置信息,兩相采樣電流值,(3相電流、電機(jī)位置或者電機(jī)速度)
輸出:三相PWM波
所需硬件:兩個(gè)ADC,一個(gè)光電或磁編碼器,主控,依據(jù)電壓等級的不同有mosfet或者IGBT或者SiC功率模塊組成的三個(gè)半橋
FOC算法在本質(zhì)上就是一些線性代數(shù)中的矩陣變換,我在這里講述的是有傳感器的FOC算法,轉(zhuǎn)子的位置信息是通過絕對式磁編碼器反饋的,直接是數(shù)字量。
第一步:根據(jù)AD采樣得到
兩相電流值;
通過ADC采樣得到電機(jī)的
兩項(xiàng)電流信息,由于基爾霍夫電流定律,同一個(gè)節(jié)點(diǎn)流入電流值與流出電流相等,我們可以計(jì)算出
。三個(gè)電流的相位差為120°。
第二步:通過Clark變換,將三相定子坐標(biāo)系(三個(gè)軸互為120°
)轉(zhuǎn)化為兩相的定子直角坐標(biāo)系(
)
這個(gè)過程有點(diǎn)類似于力的矢量分解,把三相映射到兩相的坐標(biāo)軸之上,如下圖所示。
第三步:通過Park變換將兩相定子坐標(biāo)系變換到兩相轉(zhuǎn)子坐標(biāo)系
因?yàn)槲覀冎饕刂频氖寝D(zhuǎn)子的旋轉(zhuǎn),所以需要通過Park變換將兩相定子坐標(biāo)系變換到兩相轉(zhuǎn)子坐標(biāo)系(
),本質(zhì)上就是矩陣的旋轉(zhuǎn)變換,在這里,我們用到的轉(zhuǎn)子的位置信息。
該位置信息便是由磁編碼器返回的絕對角度信息,(其實(shí)也可以用增量式編碼器,我感覺應(yīng)該只是在電機(jī)位置校準(zhǔn)的時(shí)候需要定義零點(diǎn),其他的應(yīng)該一樣,我暫時(shí)還沒有做過,屬于猜想的,當(dāng)然有的還可以通過無位置的控制方式,通過三相采樣電流值計(jì)算轉(zhuǎn)子位置信息,還有需要注意的是得到的是角度信息,我們需要將其轉(zhuǎn)化為電角度信息, 電 角 度 = 角 度 ? 磁 極 對 數(shù) 電角度=角度*磁極對數(shù)電角度=角度?磁極對數(shù)),其中
為勵(lì)磁電流分量
為轉(zhuǎn)矩電流分量,可以建立兩個(gè)PI調(diào)節(jié)器分別對兩個(gè)電流分量進(jìn)行調(diào)節(jié)。
當(dāng)勵(lì)磁電流分量為0時(shí),磁通完全由永磁體提供。電機(jī)所有的電流全部用來產(chǎn)生電磁轉(zhuǎn)矩,只用控制
就可以控制電機(jī)轉(zhuǎn)矩,就實(shí)現(xiàn)了電機(jī)的靜態(tài)解耦。(其實(shí)這里很好理解,根據(jù)左手定則,F(xiàn)=BIL,這個(gè)公式中L是電機(jī)的固有參數(shù),B磁通由兩部分組成,一是由永磁體提供,二是由電流變化產(chǎn)生磁場;所以如果我們要實(shí)現(xiàn)給定的力距,需要控制單一變量:電流,則需要讓B保持恒定,也就是使
)
第四步:根據(jù)PI調(diào)節(jié)器輸出電壓
這里需要注意有一個(gè)前提調(diào)節(jié),那就是你已經(jīng)基本調(diào)通了SVPWM波,電機(jī)可以正在旋轉(zhuǎn)了,F(xiàn)OC控制算法主要是電機(jī)的穩(wěn)定性控制,而不是電機(jī)本體的驅(qū)動(dòng)。
本身的參考值已定,
只是根據(jù)給定值與實(shí)際返回值得差值調(diào)節(jié)電機(jī)的穩(wěn)定性。
在調(diào)參的時(shí)候,人為給定
( 參 考 電 流 值 ) ,通過與實(shí)時(shí)采樣電流比較,調(diào)節(jié)電流環(huán)PID,調(diào)節(jié)的目標(biāo)是啟動(dòng)響應(yīng)速度足夠快,平穩(wěn)運(yùn)動(dòng)波動(dòng)足夠小,通過DAC輸出實(shí)時(shí)采樣電流來進(jìn)行調(diào)試;
第五步通過反Park變換將
(兩相轉(zhuǎn)子坐標(biāo)系)轉(zhuǎn)換為
兩相定子坐標(biāo)系
第六步:得到
之后,通過SVPWM算法計(jì)算
SVPWM是磁場定向控制中常用的PWM波調(diào)制技術(shù)。其全稱是空間矢量脈寬調(diào)制(Space Vector Pulse Width Modulation)是由三相功率逆變器的六個(gè)功率開關(guān)原件組成的特定開關(guān)模式產(chǎn)生的脈寬調(diào)制波,能夠使輸出電流波形盡可能接近于理想的正弦波。理論基礎(chǔ)是平均值等效原理,即在一個(gè)開關(guān)周期內(nèi)通過對基本電壓矢量加以組合,使其平均值與給定電壓矢量相等。
假設(shè)三相電壓分別為
,且相互之間相位差為120°,假設(shè)U m 為相電壓的有效值,f為電源頻率,則有:
則三相電壓空間矢量相加的合成空間矢量
就可以表示為:
是一個(gè)旋轉(zhuǎn)的空間矢量,幅值不變,為相電壓的峰值,且以角頻率w=2πf按逆時(shí)針方向旋轉(zhuǎn),其在三相坐標(biāo)軸上的投影就是對應(yīng)的三相正弦量。
其實(shí)SVPWM算法的原理我也搞得有點(diǎn)懵,不過應(yīng)用上倒是相對簡單,可以把SVPWM算法想象成一個(gè)字典,根據(jù)
的大小關(guān)系確定輸出值。完全當(dāng)成一個(gè)表在查就好了。
FOC算法的優(yōu)點(diǎn)有:
1、當(dāng)負(fù)載變化時(shí),速度響應(yīng)快而且精確;
2、電機(jī)的瞬時(shí)效率高;
3、能實(shí)現(xiàn)位置控制;
FOC和PID調(diào)節(jié)的方式參考了
http://bbs.elecfans.com/jishu_546001_1_1.html
主要為先調(diào)試內(nèi)環(huán)之后調(diào)試外環(huán);
1、首先應(yīng)該調(diào)試ADC和編碼器,看是否可以得到正確的采樣電流和編碼器數(shù)值;
2、調(diào)試FOC算法中的SVPWM環(huán)節(jié),認(rèn)為的給定
兩個(gè)值,看電機(jī)是否運(yùn)行,確保SVPWM沒問題
3、 人為給定
參考值,通過實(shí)時(shí)采樣電流,調(diào)節(jié)電流環(huán)的PID,調(diào)節(jié)的目標(biāo)是啟動(dòng)響應(yīng)速度足夠快,平衡運(yùn)行波動(dòng)足夠小,通過DAC輸出實(shí)時(shí)的采樣電流來進(jìn)行觀測調(diào)試(這里我直接在算法中讓
為0,所以只給定
的值)。
4、人為給定速度,調(diào)試速度環(huán)PID,輸出
,調(diào)節(jié)的目標(biāo)是根據(jù)在足夠?qū)挼乃俣确秶鷥?nèi)平穩(wěn)啟動(dòng)和運(yùn)行??梢圆捎脤<襊ID算法;
5、位置環(huán)調(diào)節(jié),輸出為速度,調(diào)節(jié)目標(biāo),從一個(gè)位置快速的到達(dá)另一個(gè)位置來回跑,停止靜差足夠小,速度增減足夠快,即瞬時(shí)速度大且需要合理的根據(jù)位置路徑的長度規(guī)劃一個(gè)速度曲線。
注意:如果要達(dá)到較高的速度精度,可能需要針對不同的速度值設(shè)置不同的速度PID參數(shù),且需要進(jìn)一步實(shí)時(shí)的調(diào)節(jié)觀測器、PLL及速度PID參數(shù)。
其他的一些知識總結(jié):
FOC與DTC控制區(qū)別(參考知乎一位大神的)來源:https://www.zhihu.com/question/265079828/answer/291686684
FOC(電機(jī)矢量控制)要求嚴(yán)格的轉(zhuǎn)子磁場定向,對于BLDC電機(jī)而言轉(zhuǎn)子磁場方向始終與轉(zhuǎn)子位置一致,因此其控制輸入需要準(zhǔn)確的轉(zhuǎn)子絕對位置信號
DTC(直接轉(zhuǎn)矩控制)實(shí)際上與基于定子磁場定向,而定子磁場則是依據(jù)電壓積分估算獲得,在這個(gè)過程中跟轉(zhuǎn)子位置沒有關(guān)系,其控制過程中用到的量也都是靜止坐標(biāo)系下的量,因此DTC控制相比于FOC控制要簡單很多,完全不需要求解三角函數(shù)、坐標(biāo)變換,如果需要用DTC進(jìn)行速度閉環(huán)則需要測量電機(jī)的速度,但是依然不需要準(zhǔn)確的絕對位置。
總結(jié)下來,從硬件的角度DTC相比于FOC可以省略一個(gè)位置傳感器!當(dāng)然,現(xiàn)在有很多改進(jìn)的DTC算法需要用到電機(jī)的絕對位置。
但是在電機(jī)控制中,無論是DTC控制還是FOC控制,最后倒要基于PID調(diào)節(jié)實(shí)現(xiàn)穩(wěn)定控制。
市場上電調(diào)分類
1、FOC電調(diào):矢量控制,效率高,轉(zhuǎn)矩脈動(dòng)小,電機(jī)噪音小,減速制動(dòng)快
2、普通電調(diào):六步換向控制,方波驅(qū)動(dòng)
STM32有BLDC開發(fā)套件
BLDC電機(jī)控制算法:
PID控制,專家PID控制,模糊PID控制,神經(jīng)PID控制,基于遺傳算法整定的PID控制,魯棒控制,滑膜控制等;
電機(jī)方面的知識:
1、根據(jù)《無刷電機(jī)控制系統(tǒng)》中所講述:目前國內(nèi)外對無刷直流電機(jī)的定義一般有兩種:一種定義認(rèn)為只有梯形波/方波無刷直流電機(jī)才可以稱為無刷直流電機(jī),而正弦波無刷電機(jī)則被稱為永磁同步電機(jī)(Permanent Magnet Synchronous Motor,PMSM);另一種定義認(rèn)為梯形波/方波無刷電機(jī)和正弦波無刷電機(jī)都是直流無刷電機(jī)。
2、直流電機(jī)的調(diào)速是用直流電壓來控制,電壓越高,轉(zhuǎn)的越快,不過單片機(jī)并不能輸出可調(diào)的直流電壓,于是只好變通采用PWM的方式來控制電機(jī)的輸入電壓。PWM占空比越高,等效電壓就越高,當(dāng)然單片機(jī)給出的PWM波形只是控制信號,而且最高電壓只有5V,其能量并不足以驅(qū)動(dòng)無刷直流電機(jī),所以必須要再接一個(gè)功率管來驅(qū)動(dòng)電機(jī),功率管可以是MOSFET(場效應(yīng)管),也可以是IGBT(絕緣柵雙極晶體管)。
3、一般而言,電機(jī)的繞組數(shù)量都和永磁極的數(shù)量是不一致的(比如用9繞組6極,而不是6繞組6極),這是為了防止定子的磁極與轉(zhuǎn)子的磁鋼相互吸引對其,產(chǎn)生類似于步進(jìn)電機(jī)的效果,此種情況下轉(zhuǎn)矩會產(chǎn)生很大的波動(dòng)。
4、外轉(zhuǎn)子無刷直流電機(jī)比內(nèi)轉(zhuǎn)子電機(jī)要慢,但是力矩更大,例如四旋翼等可以不通過減速器直接驅(qū)動(dòng)螺旋槳旋轉(zhuǎn)。
5、無刷直流電機(jī)KV值定義為:轉(zhuǎn)速/V,意思是輸入電壓每增加1V,BLDC電機(jī)空轉(zhuǎn)轉(zhuǎn)速增加的轉(zhuǎn)速值。同系列同外形尺寸的無刷電機(jī),根據(jù)繞線匝數(shù)的多少,會表現(xiàn)出不同的KV特性。繞線匝數(shù)多的,KV低,最高輸出電流小,扭力大;繞線匝數(shù)少的,KV高,最高輸出電流大,扭力小;
自己的一些經(jīng)驗(yàn):
1、計(jì)算角度信息一定要用電角度,而不能直接計(jì)算
2、電機(jī)的最高轉(zhuǎn)速與電流和編碼器采樣頻率也有一定關(guān)系;