直流无刷电机FOC控制算法 理论到实践 —— 理论(二)
直流無刷電機(jī)FOC控制算法 理論到實(shí)踐 —— 理論(二)
上一章節(jié):FOC直流無刷電機(jī)控制算法 理論到實(shí)踐 —— 理論(一)
下一章節(jié):直流無刷電機(jī)FOC控制算法 理論到實(shí)踐 —— 實(shí)踐
說明:部分圖片素材來源于網(wǎng)絡(luò)
文章目錄
- 直流無刷電機(jī)FOC控制算法 理論到實(shí)踐 —— 理論(二)
- 1. 概述
- 2. Clark變化運(yùn)算
- 3. Park變化運(yùn)算
- 4. PID運(yùn)算
- 5. 反Park變化運(yùn)算
- 6. SVPWM運(yùn)算
- 6.1 SVPWM 原理
- 6.2 扇區(qū)判斷
- 6.3 計(jì)算矢量作用時間
- 參考
1. 概述
續(xù)上一章: FOC直流無刷電機(jī)控制算法 理論到實(shí)踐 —— 理論(一)(點(diǎn)擊跳轉(zhuǎn))
下一章: 直流無刷電機(jī)FOC控制算法 理論到實(shí)踐 —— 實(shí)踐
在上一章節(jié),我們對于FOC大體有了一個介紹,本博文將詳細(xì)描述有關(guān)Clark變化、Park變化、反Park變化以及SVPWM的理論實(shí)現(xiàn)原理,也即相關(guān)數(shù)學(xué)運(yùn)算實(shí)現(xiàn)。
2. Clark變化運(yùn)算
在①處進(jìn)行Clark運(yùn)算,將靜止的a_b_c坐標(biāo)系轉(zhuǎn)換為α_β坐標(biāo)系
通過計(jì)算得到:
- Iα = Ia
- Iβ = (Ia + 2Ib) / sqrt(3)
3. Park變化運(yùn)算
在②處進(jìn)行Park變化,將靜止的α_β坐標(biāo)系轉(zhuǎn)化為旋轉(zhuǎn)的d_q坐標(biāo)系,同時通過Park變化,正弦運(yùn)算轉(zhuǎn)化為常數(shù)運(yùn)算
- Id = Iα · cosθ + Iβ · sinθ
- Iq = Iα · sinθ + Iβ · cosθ
- 注意此處的 θ 為電機(jī)此時的電角度
4. PID運(yùn)算
通過clark變化和park變化,原本呈正弦變化的電流已經(jīng)轉(zhuǎn)變?yōu)槌?shù)了,此時便方便我們進(jìn)行其他計(jì)算了,因此在③處進(jìn)行電流環(huán)PID運(yùn)算;
PID輸入為 Iq_ref,Id_ref, Iq, Id,PID輸出為Uq,Ud
- Iq_ref:Q軸目標(biāo)電流
- Id_ref:D軸目標(biāo)電流
- Iq:Q軸反饋電流
- Id:D軸反饋電流
- Uq:Q軸目標(biāo)電壓
- Ud:D軸目標(biāo)電壓
根據(jù)我們在上一章節(jié) FOC直流無刷電機(jī)控制算法 理論到實(shí)踐 —— 理論(一) 的分析可知,只有Q軸分量才是真正用來驅(qū)動電機(jī)的,D軸分量主要用于電機(jī)發(fā)熱,因此 Id_ref 應(yīng)為0,甚至可以D軸直接不進(jìn)行PID運(yùn)算,直接將 Ud 設(shè)置為 0。
- 此處的PID模塊亦是一個隔離轉(zhuǎn)換模塊,輸入為電流量,輸出為電壓量
- 而在實(shí)際的FOC實(shí)現(xiàn)中,我們是通過程序控制實(shí)現(xiàn)的,在程序里最終控制的到電機(jī)的是定時器
- 因此此輸出量最終應(yīng)該和定時器的參數(shù)(CCR)相互關(guān)聯(lián),這也是PID的第二大妙處了
5. 反Park變化運(yùn)算
通過①和②將原來的 a_b_c軸 轉(zhuǎn)化到了 d_q軸 進(jìn)行運(yùn)算完成之后,接下來需要做的便是將坐標(biāo)系再變回去對電機(jī)進(jìn)行控制了,首先進(jìn)行④ 反Park變換,將 d_q軸 轉(zhuǎn)化為 α_β坐標(biāo)系
- Uα = Ud · cosθ - Uq · sinθ
- Uβ = Ud · sinθ + Uq · cosθ
6. SVPWM運(yùn)算
經(jīng)過④反Park變換之后,坐標(biāo)軸到了 α_β坐標(biāo)系 ,首先大家想到的肯定是接下來是不是需要進(jìn)行反Clark變換了,然而并不是,畢竟采用MCU程序?qū)崿F(xiàn),反Clark變化之后,并不方便實(shí)現(xiàn)對電機(jī)的控制,因此引入了SVPWM運(yùn)算
6.1 SVPWM 原理
首先SVPWM是什么呢?
SVPWM,即Space Vector Pulse Width Modulation空間矢量脈寬調(diào)制的簡稱,其原理類似于力的合成
通過控制三相半橋的導(dǎo)通方式不同,我們可以生成6個不同方向的力矩,這也就是六步換相的原理,以三相半橋?yàn)槔?#xff1a;
- 將三個半橋分別命名為 A B C
- 假定上半橋?qū)ā⑾掳霕蜿P(guān)閉為 1
- 假定上半橋關(guān)閉、下半橋?qū)?0
我們一共能出現(xiàn)8中組合方式,如下表所示: - 其中第1種和第8種組合為特殊組合
- 第1種組合上管全部關(guān)閉,下管全部打開
- 第8種模式,上管全部打開,下管全部關(guān)閉
- 此兩種模式均無力矩輸出
| 1 (V0) | 0 | 0 | 0 |
| 2 (V1) | 0 | 0 | 1 |
| 3 (V2) | 0 | 1 | 0 |
| 4 (V3) | 0 | 1 | 1 |
| 5 (V4) | 1 | 0 | 0 |
| 6 (V5) | 1 | 0 | 1 |
| 7 (V6) | 1 | 1 | 0 |
| 8 (V7) | 1 | 1 | 1 |
我們將以上幾種組合所產(chǎn)生的力矩方向在下圖中繪出,如下圖:
現(xiàn)在我們將電機(jī)的轉(zhuǎn)子簡化,看成是一對磁極(紅色:電機(jī)N機(jī) 藍(lán)色:電機(jī)S極),由于 磁場同性相斥,異性相吸 的原理,為了實(shí)現(xiàn)驅(qū)動效率最大化,也即力做功最大化,我們期望產(chǎn)生的合成力矩與轉(zhuǎn)子磁場成90°相切,即圖中的綠色箭頭所指方向,但是根據(jù)我們上面的分析可知,通過控制三相半橋的導(dǎo)通,僅僅只能實(shí)現(xiàn)在 V1 - V6 六個固定方向的力,那有如何產(chǎn)生圖中綠色箭頭所指的方向的力呢?
這個時候就需要使用到我們高中所學(xué)的力的合成了,根據(jù)力的合成:
- 在一個作用周期 Ts內(nèi),產(chǎn)生Tx時間的V4方向的力F4,產(chǎn)生Ty時間的V6方向的力F6
- 在周期T內(nèi),將一部分作用時間 Tz分配給 V0 和 V7 ,通過這種方式控制合成力F的幅值大小
- 同時滿足 Ts = Tx + Ty +Tz
通過合理的控制 Tx 、 Ty 和 Tz 在一個周期內(nèi)所占用的時間,根據(jù)伏秒平衡等效原理了。亦可看成產(chǎn)生了一個周期為 Ts 的合成力F
這里我們?yōu)榱苏{(diào)節(jié)合成磁力F的幅值,引入了兩個零矢量 V0 和 V7,為什么需要引入兩個0矢量呢?引入一個是否也可以呢?這里便涉及到FOC理論如何轉(zhuǎn)化到實(shí)際控制的問題,也就是大家常說的七段式SVPWM 和 五段式SVPWM
首先講下為什么引入零矢量呢?引入零矢量有兩個目的:
- 通過零矢量調(diào)節(jié)合成矢量的幅值
- 通過插入零矢量,使得七段式/五段式SVPWM在每一段切換時,只需要動作一路開關(guān),同時得到的是成中央堆成的PWM,大大減少諧波分量
七段式SVPWM控制如下圖所示:
五段式SVPWM控制如下圖所示:
七段式和五段式的區(qū)別是:七段式諧波分量更小,但是每個周期會有六次開關(guān)切換,開關(guān)損耗比較大;五段式每個周期只需要四次開關(guān)切換,開關(guān)損耗相對較小,但是諧波分量更大
綜上,以 V0 ~ V7 為基礎(chǔ)力矩,通過這六個方向的基礎(chǔ)力矩便可合成任意方向的大小幅值可調(diào)的合成磁力F,從而實(shí)現(xiàn)以最大效率驅(qū)動電機(jī)運(yùn)轉(zhuǎn),這便是SVPWM,空間矢量脈寬調(diào)制的原理了
需要注意的是,合成力矩的調(diào)節(jié)范圍為六邊形的內(nèi),在實(shí)際控制過程中,為了獲得良好的控制效果,我們期望給到電機(jī)的力是均勻的,因此在實(shí)際控制中,我們會將力矩控制在六邊形的內(nèi)切圓內(nèi),如下圖所示:
以下是在網(wǎng)上找的一張動圖輔助大家理解力矩的合成
α_β坐標(biāo)系內(nèi)的Uα和Uβ,通過SVPWM模塊,可以輸出三相相位相差120°的馬鞍波,任意兩相馬鞍波相減,即可得到正弦波,這便是采用SVPWM實(shí)現(xiàn)直流無刷電機(jī)控制的原理。
SVPWM運(yùn)算具體實(shí)現(xiàn)大概可以分為兩個步驟,接下來將逐步講解SVPWM的實(shí)現(xiàn)。
6.2 扇區(qū)判斷
根據(jù)上述分析,通過控制三個半橋的導(dǎo)通,我們可以獲得 V0 ~ V7 八個方向的基礎(chǔ)矢量力矩,我們根據(jù)這 V1 ~ V6 將360°拆分為六個扇區(qū),扇區(qū)Ⅰ到扇區(qū)Ⅵ,同時根據(jù) V1~V6 建立六邊形坐標(biāo)系
接下來我們先整理下我們的目標(biāo)和工具:
- V0 - V7是我們通過控制三個半橋可以得到的矢量,這是我們的工具
- 經(jīng)過Park變化后的 Uα 和 Uβ 是我們需要去實(shí)現(xiàn)的目標(biāo)
那么接下來我們只需要思考如何采用我們已擁有的工具去實(shí)現(xiàn)我們需要實(shí)現(xiàn)的目標(biāo)即可。
此外在目標(biāo)與工具之間還存在著一個橋梁,將兩者相互連接起來,那便是 Vref ,亦可這么理解:其實(shí)只是實(shí)現(xiàn) Vref 在α_β坐標(biāo)系和V1~V6六邊形坐標(biāo)系之間的相互轉(zhuǎn)化
在六邊形坐標(biāo)系中,Vref的合成是需要區(qū)分其在哪一個扇區(qū),需要采用哪兩個基礎(chǔ)矢量實(shí)現(xiàn)合成,因此首先需要做的便是判斷扇區(qū),而根據(jù)Uα和Uβ,我們可以知道 Vref 所在哪一個扇區(qū)
由于markdown不方便編輯復(fù)雜公式,因此采用word編輯之后截圖貼圖說明
同理其他情況亦可按此方法進(jìn)行推導(dǎo)分析,最終得到下表:
| 扇區(qū) | 無 | 4 | 6 | 5 | 2 | 3 | 1 | 無 |
| N = 4C + 2B +1A | 0 | 4 | 2 | 6 | 1 | 5 | 3 | 7 |
| N = 4A + 2B + 1C | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
在實(shí)際計(jì)算中,我們通過Park變化后的 Uα 和 Uβ 計(jì)算 U1 U2 U3的正負(fù),可以得到N,N的計(jì)算方式可以選擇 N = 4C + 2B +1A 或 N = 4A + 2B + 1C 任意一種,之后通過查表的方式,得到實(shí)際的扇區(qū)
此外,在上述扇區(qū)計(jì)算中,還有一點(diǎn)需要特別注意,那便是(A,B,C) 為(0,0,0) 或(1,1,1) 的時候,對應(yīng)的扇區(qū)為無,這個的原因是:
- 當(dāng)(A,B,C) 為(0,0,0) 的時候,得到U1 = 0, U2 = 0, U3 = 0, Uα 和 Uβ均為0,不在扇區(qū)內(nèi);
- 當(dāng)(A,B,C) 為(1,1,1) 的時候,得到U1 = 1, U2 = 1, U3 = 1,不存在 Uα 和 Uβ 滿足條件。
6.3 計(jì)算矢量作用時間
通過扇區(qū)判斷,我們可以知道目標(biāo)矢量 Vref 在哪一個扇區(qū)內(nèi),而 Vref 則可由其相鄰的兩個 V1 - V6 基本矢量合成,那么此兩個相鄰矢量以及為了調(diào)節(jié) Vref 的幅度,在周期T內(nèi)引入V0或者V7這個兩個0矢量,這幾個部分在一個周期內(nèi)各自分配多長時間呢?
我們以 Vref 在第Ⅰ扇區(qū)舉例,那么 Vref 則由V4、V6、V0和V7合成,首先假定:
- Vref 的作用時間為 Ts
- V0 ~ V7 的作用時間分別為T0 ~ T7
同樣還是和力的分解一樣,我們以扇區(qū)Ⅰ舉例,假定此時我們需要得到的 Vref 在扇區(qū)Ⅰ內(nèi),則
- 在α軸上有:Vref * cosθ * Ts = V4 * T4 + V6 * cos60° * T6
- 在β軸上有:Vref * sinθ * Ts = V6 * cos30° * T6
和力的分解與合成一樣,我們可以將 Vref 以及 V4 V6分別分解到 α_β 坐標(biāo)軸上
同理,其他扇區(qū)亦可按照此方法計(jì)算,得到下表:
參考
下一章節(jié):直流無刷電機(jī)FOC控制算法 理論到實(shí)踐 —— 實(shí)踐
總結(jié)
以上是生活随笔為你收集整理的直流无刷电机FOC控制算法 理论到实践 —— 理论(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 语法体系:揭秘同位语从句day9
- 下一篇: SOTA到底是什么算法