大家好,我是程序小羊。
不知道大家在學(xué)習(xí)有感FOC時(shí),有沒有產(chǎn)生過這樣一個(gè)疑問,磁編安裝好后,怎么確定零點(diǎn)位置。首先我們定義電機(jī)轉(zhuǎn)一圈值為0~65536。比如:一個(gè)三對(duì)極的電機(jī),磁編讀出來的值范圍是0~4096。那么我們將其值擴(kuò)大到65536。我們知道電角度=機(jī)械角度*極對(duì)數(shù)。則三對(duì)極電機(jī)轉(zhuǎn)一圈,電角度經(jīng)過三次65536(如圖1),我們可以根據(jù)這個(gè)電角度的值有沒有到達(dá)65536附近,以此來確定定子與轉(zhuǎn)子有沒有對(duì)齊。然后我們給Id軸一個(gè)定值,角度自加,電機(jī)就可以轉(zhuǎn)動(dòng)。當(dāng)?shù)竭_(dá)電角度在65536附近停一下,以此來通過磁編讀取機(jī)械角度,我們將每一個(gè)轉(zhuǎn)子與定子對(duì)齊時(shí)的角度讀取出來與理論角度((65536/3)=21845*(目前處于哪對(duì)極))進(jìn)行差值運(yùn)算。算出差值的平均值再轉(zhuǎn)化為電角度到代碼中參與運(yùn)算。具體實(shí)現(xiàn)過程如下。
圖1:
圖2:
圖3:考慮到剛上電時(shí),定子與轉(zhuǎn)子可能并沒用對(duì)齊,而是有一個(gè)角度偏差θ。怎么辦呢,所以第一步,我們需要先定位。強(qiáng)行給Id讓其拖到與定子對(duì)齊的位置。代碼實(shí)現(xiàn)如下
圖4:給完Id之后,轉(zhuǎn)子會(huì)轉(zhuǎn)動(dòng)到與其最近的一個(gè)定子對(duì)齊,如下圖:
圖5:第一步定位完成之后,現(xiàn)在開始轉(zhuǎn)動(dòng)轉(zhuǎn)子與下一個(gè)定子對(duì)齊。轉(zhuǎn)一圈如同6所示。通過磁編讀取角度
圖6:每轉(zhuǎn)動(dòng)到與定子對(duì)齊時(shí),停一下以此來讀取角度,計(jì)算角度偏差
最后將偏差角度進(jìn)行平均值運(yùn)算,換算為電角度參與后面運(yùn)算。