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