首先我們驅動的是云臺電機:

云臺電機的主要好處是在低速和高扭矩運行時非常平穩。它們可以高質量的代替你的步進電機或者直流伺服電機來為你的機器人或者無刷電機應用實現實現更好的運動性能。

GM6020

大疆也是內置的FOC算法驅動

上面為了實現真正的的FOC驅動,使用了兩個INA240的電流功放

板子的后面是觸點開閉的設計

單板輸出的信號引腳和驅動引腳

在程序里面的這個地方實現,這個是表層的封裝

具體參數的意思

CPP中是實現,后面是電流環的默認設置(我是不是說錯了?),電壓的最大值,電壓的限制,PWM頻率

具體里面的變量其實還是在h中被定義,至于這個使能,其實是芯片的鍋

這個是定義好的一些默認宏

上面的圖,define是3PWM的控制方式,事實上PWM才是他們的root,是我這里呈現的

源碼中的這個地方,代碼的組織方式就說明了這點
BLDC,電流感應,FOC驅動,傳感器和步進電機的原生接口將在這里被實現。

我們先拿一個BLDC看看,一開始是六步PWM的狀態

看到沒有,這個地方是虛函數

而這個就是后面具體控制方式里面的派生

3PWM,6PWM,步進
BLDCDriver3PWM driver = BLDCDriver3PWM(PB6, PB7, PB8, PB5);

最后一個是電壓的ADC采集范圍
‘這個是連接電機的位置

接在ST芯片的位置

電源到12-24V
接編碼器,我找不到映射了

最簡單的編碼器就是這樣設置的


對引腳的起始驅動

其實對與電機來說有很多的驅動參數,但是最重要的就是極對數了


對于編碼器來說

兩個引腳和脈沖圈數

motor.loopFOC()motor.move(target)// 實例化電機// 實例化驅動器// 實例化傳感器//?實例化電流檢測void?setup()?{??// 初始化傳感器??//?連接電機和傳感器// 初始化驅動器??//?連接電機和驅動器// 初始化電流檢測??//?連接電機和電流檢測// 配置電機??//?初始化電機// 校準編碼器,啟用FOCmotor.initFOC();}void loop() {// FOC算法函數??motor.loopFOC();// 速度控制環函數// 設置目標速度或2rad/smotor.move(2);}
Trapesoidal 120Trapesoidal 150

https://zhuanlan.zhihu.com/p/32834817https://github.com/simplefoc/Arduino-SimpleFOCShield/releases原文鏈接:https://blog.csdn.net/qq_42542471/article/details/124659190https://www.robomaster.com/zh-CN/products/components/general/gm6020#specs