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