前面一段的結尾引用部分我解釋的第一個問題中就提到了一種神奇的演算法,這種神奇的演算法就是這段要叫的SVPWM演算法啦,這個演算法要說明白可真不容易,不然為啥叫神奇的演算法呢! SVPWM和我們在大學階段接觸到的PWM和SPWM功能上是一樣的,目的就是把控制量轉換一種形式加到馬達的三個端子上,這個動作電控領域的大佬們給取了個名字叫做調製,英文叫做Modulation。
無刷馬達的驅動電路一般是三相逆變電路,由三個半橋組成的,就長這樣:
圖6 三相逆變電路
上圖是三相無刷直流馬達的驅動原理圖,馬達內部的勵磁繞組是星型(記作Y型)連接,驅動由6個MOS管組成三相逆變電路。 MOS管低電壓端由MCU控制,上面三個MOS管S1、S3、S5構成逆變電路的上橋臂,下方三個MOS管S2、S4、S6稱為下橋臂。同一相上下橋臂不能同時導通,同時導通同一相上下橋臂會造成電源短路。因此實際上控制端只需要三根控制線即可,MOS管依序用S1,S2,S3,S4,S5,S6來表示,如圖所示,上橋臂MOS管導通為1,關斷為0 ,共有八種組合方式,分別是000,100,010,001,110,101,011,111。
無刷直流馬達的驅動方式由最開始的六步方波逐步改進為六步正弦波,再到後來的FOC以及直接轉矩控制。六步方波是上面提到的八步去除了000和111的狀態,剩下的六步根據轉子位置依次施加到逆變電路上的狀態。六步驟正弦波是在六部方波的基礎上所做的改進,這兩種演算法曾經使用是非常廣泛的,由於本文的篇幅限制,這裡不與討論。本文採用的是FOC演算法,因此對FOC做詳細描述。透過逆變電路將電流輸入到馬達的三個引線端子上。無刷直流馬達內部的勵磁繞組一般依照星形接法,在三相無刷直流馬達控制過程中,電流是從其中兩相輸入,另外一相作為輸出,這裡涉及電壓空間向量的概念,和電流空間向量類似。透過控制其中兩相電壓的大小,來控制電壓空間向量的大小和方向,圖中Vs就是電壓空間向量,是由三相中的兩相電壓合成的。每一相電壓的大小並不能控制,而是透過控制每一相導通的時間,計算單位時間內各相的平均電壓作為這一相的電壓值,所以可以說SVPWM的理論基礎是平均值等效原理。於是為了方便分析,電控領域的天才大佬們想出一種圖來描述這個過程,如下圖:
圖7 空間電壓向量圖
依照逆變電路中的導通情況分了八種狀態,將這八種狀態與電壓空間對應起來則可以得到空間向量圖,總共劃分了六個扇區,分別用Ⅰ、Ⅱ、Ⅲ、Ⅳ、 Ⅴ、Ⅵ表示,每個扇區為60°。
這張圖很重要,弄清楚這張圖,就弄清楚了SVPWM。這是不是跟前面一樣,可以感受到身為工程師,他們都很喜歡這樣的圖的。圖裡面的Vs就是目標向量,我們要透過圖中的把八個向量合成這個Vs(V7和V8是零向量,就是大小為零,方向隨意),要怎麼合成呢?很簡單啊,舉個例子,如果你這個目標向量想要在第一象限,我導通V4和V6不就行了,嗯!思路是對的,那麼下面問題就來了,我想控制合向量在第Ⅰ象限一個具體的位置。問題是(1)你怎麼告訴我,我怎麼知道你是要在第一象限,我們回過頭來看看前面那個結構框圖,SVPWM的輸入是什麼?是不是Vα和Vβ啊,就是說對於SVPWM而言,它只知道Vα和Vβ ,其他的它不知道,它要做的工作之一就是透過這個Vα和Vβ 得到控制器想要控制空間向量的目標象限。 (2)如果解決了第一個問題,那麼SVPWM就知道了目標了空間向量了,那自然就知道導通哪兩個狀態,現在是怎麼控制這兩個狀態的向量大小?大小是透過控制導通的時間來控制的,這個時間怎麼算,這是SVPWM要解決的第二個問題。
具體過程這裡不介紹了,直接給結論:
圖8 SVPWM扇區判斷表一
其實有表一已經足夠工程師們快速判斷目標空間電壓向量所在的磁區,但是在單晶片中設計程式實現磁區判斷的時候,希望能夠有更簡單的演算法。進一步研究發現,目標空間電壓向量由下式決定:
圖9 空間電壓向量計算簡化公式
設三個變數A,B,C,當U1>0時,A=1,否則A=0;當U2>0時,B=1,否則B=0;當U3>0時,C=1,否則C=0。令X=A+2B+4C,透過X的值可以快速判斷目標電壓空間向量Uref所在磁區,把這個對應關係列表如下所示:
圖10 空間電壓向量導通時間計算表二
具體過程就不細說了哈,有興趣的可以找一些資料看。這連個問題一解決,SVPWM的主要工作就結束了哈,這樣調製到馬達三相上的電壓就是正弦量了,很神奇吧!這兩個表是在後面驅動程式設計會用到,非常重要。下面看一個動態圖,完全概括了這個過程,非常形象化。
圖11 BLDC控制動態圖
讀到這裡,我們才初步感受到TI工程師為啥說為了讓這個馬達一圈一圈轉起來還真費老鼻子勁了。