前言:
為什么要學(xué)習(xí)FOC?
1.電機控制是自動化控制領(lǐng)域重要一環(huán)。
2.目前直流無刷電機應(yīng)用越來越廣泛,如無人機、機械臂、云臺、仿生機器人等等。
需要什么基礎(chǔ)?
1.C語言,指針,結(jié)構(gòu)體,編程規(guī)范。
2.STM32外設(shè)使用。
3.原理圖閱讀。
4.芯片手冊閱讀。
5.數(shù)序坐標系知識
為什么要出本教程?
1.直流無刷電機應(yīng)用越來越廣泛,網(wǎng)上資料比較散落,因此想要出一篇系統(tǒng)性的教程,從頭到尾,深入淺出,幫助初學(xué)者快速入門直流無刷電機控制。
第一章 直流無刷電機簡介
基本物理知識準備
左手定則
百度百科
已知電流方向和磁感線方向,判斷通電導(dǎo)體在磁場中受力方向,如電動機。伸開左手,讓磁感線穿入手心(手心對準N極,手背對準S極), 四指指向電流方向 ,那么大拇指的方向就是導(dǎo)體受力方向。
右手螺旋定則
百度百科
用右手握住通電螺線管,讓四指指向電流的方向,那么大拇指所指的那一端是通電螺線管的N極
直流有刷電機簡介
直流有刷電機通過換向器來改變電流方向,進而改變繞組的受力方向。由于其是機械換向,因此就帶來一系列缺點,例如摩擦大,發(fā)熱大,效率低等缺點
直流無刷電機簡介

直流無刷電機通過使用電子器件代替機械換向,解決了直流有刷電機的缺點。為了便于分析我們將直流無刷電機抽象出上圖模式,定子由三個線圈組成,轉(zhuǎn)子由一對磁極組成。通過改變ABC三者電流方向來改變定子產(chǎn)生的磁場方向,從而使磁鐵轉(zhuǎn)動起來。
第二章 六步換向控制方式
直流無刷電機六步換向

如上圖所示,通過控制ABC三相電流方向我們可以控制直流無刷電機旋轉(zhuǎn),具體步驟如下:
可以看出,我們只需要像步進電機那樣不斷的重復(fù)這六部換向就可以讓BLDC轉(zhuǎn)動起來,甚至?xí)a(chǎn)生一種錯覺,是不是我們換向越快電機轉(zhuǎn)的越快呢?答案是:否,這里我們一定要認識到,是當轉(zhuǎn)子處于特定位置時才去觸發(fā)換向操作,換向是被動換向,想要提高轉(zhuǎn)速一定是要提高電流,讓定子產(chǎn)生的磁場更強,讓轉(zhuǎn)子更快的達到目標點然后觸發(fā)換向,具體如下表所示。
正轉(zhuǎn):
反轉(zhuǎn)
如何獲得轉(zhuǎn)子角度?
我們已經(jīng)知道了要先檢測角度再去換向,那么如何檢測當前角度呢?,有以下三種方式。
1.通過安裝編碼器來計算出當前角度。
2.通過安裝霍爾元件計算當前角度。
3.通過檢測電流來計算當前角度
編碼器方式獲取電機當前角度
編碼器方式分為兩種,增量式編碼器和絕對式編碼器。
增量式編碼器:
每次啟動之氣都需要做一次校準,而且為了防止單片機性能問題導(dǎo)致脈沖丟失,還需要對編碼器每圈校準一次。因此經(jīng)常使用ABZ三軸編碼器,AB輸出正交信號,Z軸輸出中斷。
絕對式編碼器:
只需要在出廠之前做一次校準,之后如果沒有拆機便不需要校準,通訊方式一般是SPI和IIC,需要考慮通訊時間對系統(tǒng)的影響。
為什么要對編碼器進行校準?
因為我們無法保證在安裝的時候讓編碼器的0°(機械角度)剛好對應(yīng)電機繞組的0°(電氣角度)
霍爾元件獲取電機當前角度
霍爾元件介紹
百度百科
霍爾元件有兩種安裝方式,互差120°和互差60°兩種方式,因此在使用之前要判斷電機是那種安裝方式。
假設(shè)當有N級指向霍爾元件時霍爾元件輸出電平1
霍爾電平和轉(zhuǎn)子角度之間的對應(yīng)關(guān)系如下表所示



霍爾電平和轉(zhuǎn)子角度之間的對應(yīng)關(guān)系如下表所示
檢測電流獲取電機當前角度
由于電機旋轉(zhuǎn)過程中產(chǎn)生的電流理想波形如下圖
我們便可以根據(jù)采集到的電流就判斷出電機當前的角度在哪個范圍。
具體分析在FOC控制方法中講解。
程序編寫
引出問題
相信看到這里大家都有一些疑問,就是六步換向的方式只能控制電機正反轉(zhuǎn),然后通過控制相電壓調(diào)節(jié)轉(zhuǎn)速,那么如何控制電機位置呢,而且這種方式有一部分電流是讓電機旋轉(zhuǎn),有一部分是讓電機發(fā)熱,那么如何做到效率最高呢。通過觀察電流發(fā)現(xiàn),電機三相電流并不是正弦波,為了解決以上問題便出現(xiàn)了FOC矢量控制。
第三章 FOC矢量控制
FOC控制框架圖
相信很多人在網(wǎng)上都看到過這個控制框圖,咋一看還挺復(fù)雜,充斥著各種變換和檢測,很多資料直接對著這個框圖進行講解,而本教程到這里只是讓大家對這個框圖有基本印象,接下來我們逐步分析各個模塊來源,讓大家都能自己畫出來這個控制框圖。
第四章 FOC開環(huán)控制
控制框圖簡化
看著FOC詳細控制框圖我們發(fā)現(xiàn)無從下手,不知道從哪坐起,我們回想一下直流有刷電機的學(xué)習(xí)過程,首先是讓電機轉(zhuǎn)起來,然后進行速度控制,再進一步進行位置控制,同樣我們在FOC學(xué)習(xí)過程中依然可以這樣做,我們首先將位置環(huán)和速度環(huán)去掉,然后就剩下SVPWM,和電流檢測部分,既然只是讓電機轉(zhuǎn)起來那么電流檢測也不需要了,我們就直接給一個目標速度,開環(huán)運行,這時候控制框架就能簡化成下圖所示。
備注:(這時候可能會有人有疑問,我們不是用六步換向的方式已經(jīng)讓電機轉(zhuǎn)動起來了嗎,為什么這里又要學(xué)習(xí)如何讓電機轉(zhuǎn)動?是因為六步換向方式存在一些缺點,而這里使用另一種控制方式(FOC)讓電機轉(zhuǎn)動更加平滑,效率更高。)
接下來我們對這部分做詳細講解
IQ與ID介紹
仔細觀察我們可以發(fā)現(xiàn),當三相繞組產(chǎn)生的磁場方向始終與轉(zhuǎn)子磁鐵相切的時候最為理想,這樣相同電流下產(chǎn)生的旋轉(zhuǎn)力量最大(圖中IQ),當我們?nèi)嗬@組產(chǎn)生的磁場方向與轉(zhuǎn)子磁場方向反向平行時,這時候電機會被吸在原地不動(圖中ID),電流都用來產(chǎn)生熱量。因此我們以轉(zhuǎn)子磁鐵為參考,建立DQ坐標系,DQ坐標系隨轉(zhuǎn)子轉(zhuǎn)動。(備注:為了便于理解我對磁鐵進行了放大)
如圖當我們讓ID為0, IQ為1則轉(zhuǎn)子就會逆時針旋轉(zhuǎn),且轉(zhuǎn)速隨著IQ的變大而變大。
如圖當我們讓ID為1, IQ為0則轉(zhuǎn)子就會定在原地,且發(fā)熱量隨著ID的變大而變大。
因此可以總結(jié)一下,要想讓轉(zhuǎn)子平穩(wěn)的轉(zhuǎn)動下去就需要讓三相繞組產(chǎn)生的磁場方向一直和轉(zhuǎn)子磁鐵的磁場方向垂直,即圖中的IQ, 同時使ID盡可能為0以減小發(fā)熱。那么怎么讓繞組產(chǎn)生的磁場方向等效為IQ ID呢由此變引入Park反變換和Clark反變換。
Park反變換
我們知道DQ坐標系是旋轉(zhuǎn)坐標系,但我們的三相繞組是靜止的,因此首要任務(wù)是將旋轉(zhuǎn)坐標系變換為靜止坐標系,即找到一個靜止坐標系使其產(chǎn)生的磁場等同于DQ坐標其,我們將這個坐標系命名為αβ坐標系,其中由DQ坐標系向αβ坐標系這一變換過程稱為反Park變換。
其中阿爾法軸與a相繞組對齊。
Uα = Udcosθ - Uqsinθ
Uβ = Uqcosθ + Udsinθ
經(jīng)過Park反變換我們將旋轉(zhuǎn)坐標系變成了靜止坐標系,接下來便是讓靜止的兩相坐標系向3相繞組坐標系進行變換。
Clark反變換
Clark反變換的目的是把兩個垂直的坐標系轉(zhuǎn)變?yōu)槿嗬@組坐標系。經(jīng)過Clark反變換后就可以通過三相繞組去產(chǎn)生ID和IQ了。(備注FOC控制框圖中沒有Clark變換的原因是通過后邊公式的化簡發(fā)現(xiàn)只需要Iα和Iβ即可)
但是我們最終能控制到的硬件是三相全橋即六個MOS管的導(dǎo)通,因此我們最終要的是MOS管的導(dǎo)通時間,即定時器輸出的高電平時間,即PWM的占空比,因此我們接下來要通過Ua Ub Uc求出Mos導(dǎo)通時間。
8個矢量介紹
我們已知我們的輸入是控制Ua Ub Uc導(dǎo)通狀態(tài)導(dǎo)通時間和轉(zhuǎn)子角度,我們的目標(輸出)是ID IQ,我們要解決的問題是如何通過輸入產(chǎn)生輸出,在解決問題之前我們要先看一看我們的輸入是什么,有什么物理含義。
由于同一橋臂上下兩個MOS不能同時導(dǎo)通(短路),因此6個MOS總共由8種狀態(tài),由于每種狀態(tài)都會產(chǎn)生一個固定方向的磁場,我們將8種狀態(tài)稱為8種矢量。
假設(shè)我們的電機處于0°位置,那么要想讓電機轉(zhuǎn)動起來我們只需要產(chǎn)生一個90°的矢量,那么只需要在一個周期內(nèi)矢量2和矢量6作用的時間各占一半即可產(chǎn)生一個90°的矢量,總結(jié)來說就是我們通過控制相鄰矢量導(dǎo)通時間比例可以控制矢量的方向,通過插入0矢量可以改變矢量的大小,因此我們在一個控制周期內(nèi)通過8個矢量的配比來產(chǎn)生任意方向和任意大小的矢量。(只要我們能夠產(chǎn)生任意方向的矢量我們就可以先讀取當前轉(zhuǎn)子角度,然后產(chǎn)生一個超前90度的矢量,這個矢量即是IQ)。
我們知道矢量方向的范圍是0-360度那么矢量的大小是什么呢?由于三相繞組阻值基本一樣,因此每個矢量的最大值為Udc2/3,其中Udc為母線電壓(電源電壓),但我們發(fā)現(xiàn)各個方向上矢量最大值并不一樣,為了讓電機平滑轉(zhuǎn)動,我們的目標矢量的最大值應(yīng)為上圖中六邊形的內(nèi)切圓的半徑,即Udc2/3*sqrt(3)/2 = Udc/sqrt(3).具體參考下圖。
SVPWM生成
接下來先看一個例子,例如我們想要產(chǎn)生0-60°的任意一個方向的矢量。
通過計算我們可以得出其他幾個扇區(qū)的矢量作用時長
由于所有結(jié)果格式基本相同因此我們假設(shè):
K = sqrt(3) * Ts / Udc
U1 = Uβ
U2 = -sqrt(3) / 2 * Uα - Uβ/2
U3 = sqrt(3) / 2 * Uα - Uβ/2
則可以總結(jié)出下表:
得出上表之后我們就可以通過8個矢量來產(chǎn)生任意大小和任意方向的矢量了。通過表格發(fā)現(xiàn)不同扇區(qū)用到的矢量不一樣,因此我們需要做一下扇區(qū)判斷,之前講過扇區(qū)判斷有3種方式,其中電流檢測在這里講解。
利用電流做扇區(qū)判斷
觀察反Clark變換公式和我們之前U1,U2,U3可以發(fā)現(xiàn),這兩個公式極其相像。
由圖可以看出我們能夠使用U1 U2 U3的正負來判斷當前所處扇區(qū)
設(shè) U1>0 時 A=1, 否則 A=0;
設(shè) U2>0 時 B=1, 否則 B=0;
設(shè) U3>0 時 C=1, 否則 C=0;
設(shè) N=4C+2B+A。
既然我們已經(jīng)拿到了每個矢量的作用時長,我們便可以求出每個Mos的導(dǎo)通時間,接下來便是把這些導(dǎo)通時間兌換成PWM形式。
七段式SVPWM
我們已知任意一個方向和大小的矢量需要的8個矢量的作用市場,那么如何控制硬件電路實現(xiàn)呢,我們熟悉的硬件電路控制是PWM模式,那么有辦法把矢量作用時長換成Mos的導(dǎo)通時間嗎,當然可以,首先我們看一下每個矢量對應(yīng)的MOS導(dǎo)通時間,然后通過組合把這些時間組成PWM模式。
接下來我們要做的是把這些矢量信號排列組合成PWM信號例如在第一個扇區(qū)我們用到了矢量T0 T4 T6 T7
按照同樣方法便可分析出所有扇區(qū)對應(yīng)的PWM信號
這樣的波形不就是我們熟悉的中央對其方式的PWM波嗎。到此我們已經(jīng)完成了FOC開環(huán)運行。
程序編寫
第五章 FOC電流閉環(huán)
其實到這里我想大家應(yīng)該已經(jīng)明白Clark變換和Park變換的作用了,我們拉開視角再看我們剛剛開環(huán)做了什么。
1.給出目標電流
2.通過定時器控制三相全橋電路輸出這個目標電流。
(不用糾結(jié)電壓電流,因為它們之間只是個系數(shù)問題)
那么我們要閉環(huán)豈不是只需要檢測出實際電流然后做個PID閉環(huán)即可。那么為什么要用到Clark變換和Park變換呢,因為我們?nèi)绻挥眠@些變換那么我們的目標電流和實際電流都是正弦波,這對我們PID控制很不利,因為我們熟悉的PID是目標值不變,讓實際值去跟隨目標值。而且我們拿到的三相電流Ia Ib Ic不直觀,Iα和Iβ也不直觀,而Iq和Id就直觀的多,Id用于發(fā)熱,Iq用于旋轉(zhuǎn)。對Iq和Id進行閉環(huán)控制通俗易懂還能配合速度環(huán),因為想要轉(zhuǎn)的快就增加Iq唄。
Clark變換
Clark變換的目的在于三相變兩相。
Park變換
Park變換的目的在于靜止變旋轉(zhuǎn)。
經(jīng)過變換之后我們就要面臨電流采樣問題了。通過上一章對7段式SVPWM的分析我們發(fā)現(xiàn)在一個周期內(nèi),不同時刻Mos的導(dǎo)通是不一樣的,一般采樣電阻都是接在下橋臂,因此只能在相關(guān)橋壁的下MOS管打開時刻進行該相的電流采樣。
由電路圖可知
1.必須在三相全橋的下橋臂打開的時候才能進行該相電流采樣。
2.Mos的開關(guān)瞬間會對相電流產(chǎn)生干擾,因此采樣時間避開Mos導(dǎo)通狀態(tài)切換的時刻。
3.3電阻可以在任意時刻進行電流采樣
4.根據(jù)SVPWM波形發(fā)現(xiàn)每個扇區(qū)都有兩相電流變化較小,一相電流變化較大,因此三電阻采樣時要采集電流變化較小的兩相。
5.由于當目標電流較大時,可能會存在一相的占空比接近100%,則導(dǎo)致該相電流無法采樣,因此雙電阻采樣要對最大輸出電流做限制,流出電流采樣時間。
6.單電阻要在一個周期內(nèi)采樣兩次電流。
我們可以在t5和t6時刻采樣到-ic和ia電流完成電流采樣
程序編寫
第六章 速度閉環(huán)
相信大家到這里已經(jīng)較為清楚了,速度環(huán),目標是給定速度,反饋是實際速度,輸出是Id Iq,其中Id為0,Iq越大轉(zhuǎn)的越快。
程序編寫
第七章 位置閉環(huán)
位置環(huán)同理,目標是給定位置,反饋是實際位置,輸出是目標速度。
程序編寫
程序編寫
第六章 速度閉環(huán)
相信大家到這里已經(jīng)較為清楚了,速度環(huán),目標是給定速度,反饋是實際速度,輸出是Id Iq,其中Id為0,Iq越大轉(zhuǎn)的越快。
程序編寫
第七章 位置閉環(huán)
位置環(huán)同理,目標是給定位置,反饋是實際位置,輸出是目標速度。
原文鏈接:
https://blog.csdn.net/qq_35947329/article/details/115483413
-- END --
免責(zé)聲明:本文轉(zhuǎn)自網(wǎng)絡(luò),版權(quán)歸原作者所有,如涉及作品版權(quán)問題,請及時與我們聯(lián)系,謝謝!
-
電機控制
+關(guān)注
關(guān)注
3562文章
1939瀏覽量
270812 -
無刷電機
+關(guān)注
關(guān)注
60文章
866瀏覽量
46905 -
FOC
+關(guān)注
關(guān)注
21文章
336瀏覽量
43738
發(fā)布評論請先 登錄
評論