返回部落格

讓 ESP32-S3 程式帶動一台虛擬電機

ESP32-S3 單電機範例已經能在電腦上讀取回饋、調整輸出,也能暫停和單步查看。記錄目前能做什麼,以及接下來還要補上什麼。

開發電機控制時,有些問題光看程式碼不容易發現。回饋方向有沒有接反?輸出是不是一直維持在上限?往往要接上開發板和電機,才能看出實際情況。我們正在開發 ESP32-S3 模擬能力,希望先在電腦上檢查其中一部分問題。

最近,我們在 Botdraft 裡跑通了一個單電機範例。為 ESP32-S3 編譯的控制程式,已經能從專案介面執行:程式輸出交給電機模型,模型的運動透過模擬編碼器傳回程式,再由程式決定下一步如何控制。Botdraft 仍是暫定名稱。

ESP32-S3 控制程式、電機模型與模擬編碼器連接成回饋迴路的示意圖。

目前跑通的是這個單電機範例。圖為示意,不是產品截圖。

現在可以怎麼用

這個範例已經可以開始、暫停、單步和繼續執行。暫停後,模型也停在同一個模擬時間點;往前走一步,程式就會讀取回饋、調整輸出,畫面中的電機姿態也跟著計算結果更新。這樣就能停下來查看某一步發生了什麼,再繼續往下執行。

我們想先用它協助控制程式除錯:輸出送出後,模型有沒有如預期變化?程式讀到回饋後,又做了什麼?這些是在接上硬體之前,我們希望開發者能先檢查清楚的問題。

程式輸出進入電機模型,模型位置透過模擬編碼器成為輸入,再傳回控制程式。

程式讀到的回饋來自模型計算。

接下來還要補上什麼

目前只跑通了這個單電機範例,還不能任意拿一個 ESP32-S3 韌體映像檔放進來執行。晶片內建周邊仍要繼續補上,也尚未完整模擬整塊開發板的電路。

電機模型目前使用的仍是測試參數,還沒有與實體硬體對照過,不能據此判斷某款真實電機的表現。模擬時間與電腦實際花費的執行時間也不同,執行速度仍需繼續最佳化。

接下來,我們會繼續透過這個專案介面處理負載變化和回饋中斷的情境:加上負載後,程式如何回應?編碼器不再更新時,程式會如何處理?這些情境在目前的介面中尚未完成。我們也會繼續加入周邊模型和電機參數,並根據能找到的廠商公開資料核對參數。

專案的整體方向放在專案介紹,先前的軟體和匯出進展則寫在研發範圍說明(英文)中。