手寫STM32 FOC記錄----- 速度環(huán) + 位置環(huán)
????????速度閉環(huán)控制框圖如下,其實就是根據(jù)采集到的電機實時速度,和設定的速度進行PID調(diào)節(jié),從而控制電機轉(zhuǎn)動。

1、速度環(huán)控制
????????在速度環(huán)控制之前,需要對電機進行爬坡操作,避免電機急停和急啟,造成大電流產(chǎn)生并燒毀相關元器件,所以先實現(xiàn)一個電機爬坡函數(shù):

????????速度采集,首先是計算速度,根據(jù)單位時間內(nèi)的角度變化量計算出電機速度

????????然后給uq一個電壓,讓電機轉(zhuǎn)動,此時使用vofa+輸出電機速度波形

????????可以看到,此速度數(shù)據(jù)沒辦法直接使用,需要做濾波處理,編寫濾波器窗口函數(shù)window_filter,濾波窗口數(shù)據(jù)寬度選擇50,求一個速度平均值。

????????紅色線為速度原始數(shù)據(jù),綠色線為濾波之后的效果,可以看到,濾波效果非常明顯

????????速度閉環(huán) PID 控制,就是用速度測量值與目標值進行作差,得到控制偏差,然后通過對偏差的 PID 控制,使偏差趨向于零。速度環(huán)只采用PI控制,框圖如下

????用代碼實現(xiàn)以上框圖,根據(jù)實際才回來的速度情況,調(diào)一下速度閉環(huán)控制的PID參數(shù),


????????最終得到的電機閉環(huán)控制函數(shù)為:
? ??

????????運行起來之后,調(diào)用速度閉環(huán)控制函數(shù),進入debug模式,給定一個電機轉(zhuǎn)速,電機會一直以該轉(zhuǎn)速轉(zhuǎn)動。使用可以使用轉(zhuǎn)速表測試一下實際轉(zhuǎn)速,因為電機在組裝的時候結(jié)構(gòu)上必然會存在誤差,所以電機的轉(zhuǎn)速會存在的誤差,即使使用濾波算法使波形平穩(wěn),但是速度依然與實際轉(zhuǎn)速存在差別,此時就需要在閉環(huán)控制時,根據(jù)給定轉(zhuǎn)速與實際轉(zhuǎn)速的差距,乘上一個補償系數(shù)。
2、位置環(huán)
????????位置閉環(huán)控制框圖如下,與速度閉環(huán)同理,其實就是根據(jù)采集到的電機實時位置,和設定的位置進行PID調(diào)節(jié),從而控制電機轉(zhuǎn)動到指定位置。
?

????????不同的使,位置閉環(huán)PID控制是P,I,D三者之和調(diào)節(jié)出來的效果,如下框圖:
? ?

??
????????相應的PID代碼控制和相關參數(shù)也有所不同,

?

????????最終,位置環(huán)控制函數(shù):

?