Motor control

Motor control on STM32

MCSDK Json File Description

前言 MCSDK目前在6.3.0版本後面新增開發版自訂圖形化模式,相對便利,但在6.2.X版本中都是要去自訂修改Json才可以把自訂功能加上去相對來說是相對麻煩的,而且需要先去對MCU pin腳是否有吻合功能需求。這邊就教學2個版本在自訂開發版上要如何修改 MCSDK6.3.0 Board Define 在最新的6.3.0以上版本目前已知bug是加上FreeRtos會導致UART無法正常連線,如果自己搬移修改會導致MCU進入HardFault,但在自訂板子上多了圖形化介面很方便自己去修改 這邊操作就比較簡單大概就是選取MCU或Power版或整合在一起的板子,比照認知選取即可 MCSDK6.2.X Json File 低於6.3.0版本就比較麻煩會需要到以下路經的資料夾中複製出來檔案直接做文字修改 這邊可以先複製一快開發版JSON到桌面開啟後可以看到,在MCU板那塊選擇目前有支援的即可在把對應的pin填上但其實更快的是直接使用inverter去改寫會快很多 在inverter上就比較顯而易見針對各種回售補對應參數就快速很果,並且在ST官網上也有描述 小Note,在Power 板上面的描述針對Shunt電阻數值這塊可以使用舊版MCSDK5.4.8 針對Shunt阻值的修改如圖最後就可以使用計算器完成數值 參考

MCSDK Json File Description Read More »

State observer sensorless algorithm

前言 State observer sensorless algorithm是ST的SDK所使用的方式,這邊會來深入解說observer+PLL算法以對應ST MCSDK所要調整參數,讓在調整參數上更為快速能準確完成任務目標,所參考資料為ST MCSDK 6.3.0版本以下是眾多sensorless馬達控制這次僅針對State observer 永磁同步馬達的數學模型 永磁同步電機,在α-β軸系下的電壓方程的一般表達形式 對龍伯格觀測器進行離散化,設採樣時間為T,則離散化後的觀測器為右圖 鎖相環(Phase-Locked Loop) 上面已經算出了反電勢的估計值,直接透過反正切函數就可以分別計算出位置和速度了,如下: Sensorless tuning STO & PLL page 針對ST參數有一個對照表如下 參考

State observer sensorless algorithm Read More »

Single-shunt VS Three-shunt

前言 這邊因設計參考需要,深入研究 single-shunt and three-shunt ,此篇文章會深入探討這2者差異與新舊版MCSDK的差異,另外深入介紹這2者Sensing的流程與差異 Shunt電阻設計 前一篇有提到不同Shunt電阻設計,這邊簡單針對系統回顧 基本上會分成3個部分Filter/offset/OPA,其中Filter是不一定會加上的部份,因為加上RC Filter會讓響應速度變慢,這邊會在一些速度控制上來說不一定是好的,但加入RC Filter可以提高在快速降速上避免OverShut的過大導致偵測錯誤Offset部分基本上一定要加因為ADC是無法收到負值,最後OPA部分就是看需求條配Gain值大小 3 shunt 介紹 3 shunt 電流偵測偵測的彈性度會比較高因公式𝐼𝑎 + 𝐼𝑏 + 𝐼𝑐 = 0 這邊3 shunt各取2項就可以推算出全部因此,相對1 shunt偵測不會有複雜的演算法和偵測死區,但成本上3 Shunt會比 1 Shunt設計來的高 The threeshunt technique can bounce sampling between current signals, selecting two out of three phases eachperiod, which allows long time periods for the current signals to

Single-shunt VS Three-shunt Read More »

Adding ADC channels and PINs in MCSDK 5.X

前言 馬達控制使用MCSDK時候因為ADC已被使用來採樣Shunt電流,這邊在現有的ADC上要再增加通道會需要考慮到取樣率等問題,如果直接用STM32CubeMX加ADC通道沒有做成是排成修改,會讓系統排成Fail,這邊主要是提供資訊如何在馬達專案上增加通道用在飛Shunt電阻採樣 實際操作 關鍵步驟 把標頭檔文件加入宣告,另外需要加入引用 新增 ADC 連接埠配置初始化程序以及控制引腳電平 最後使用內建函數配合排成 ADC channels注意事項 這邊如果依照原先增加方式通道是只有2可存放單純改通道數目會出現Hard Fault 仔細研究後會發現除了改以上通道外標頭檔的宣告文件RCM_MAX_CONV內也需要跟著修改 參考

Adding ADC channels and PINs in MCSDK 5.X Read More »

ST Motor Control Use Case and Debug

前言 客戶使用MCSDK5.4.8生成Hall sensor的code,但在馬達有負載起轉時候會出現馬達激磁聲音,但code部分並未新增甚麼東西,僅讓馬達停止後再起轉,這邊使用DAC接口方便Debug,最終找到演算法與部分需要改動與硬體需要調整部分解決了此問題 問題 這邊在起步出現激磁聲音,先確定相電流出現異常波形長如何,又因此Case是使用Hall sensor去做回授非sensorless,這邊去量測Hall訊號組合出下圖,看的出來再Hall訊號出現快速上下震盪,有些像HFI,但在MCSDK5.4.8這塊是被拔除的。 Debug過程 第一步:因不確定是不是在不對狀態下切換導致,因此先抓取Motor控制狀態,確保到idel狀態在進入馬達起轉或停止 第二步:結果做完第一步後也還是存在問題,接下來就一步一步查詢訊號異常部分來源是在哪邊但可以看到下圖異常部分Id是正常的,沒有注入雜訊,又發現Iq是有實際指令讓馬達去達到目標 第三步:確認是軟體部分後就去切開是回授端出問題還是順向端出問題,使用senorless run後並無發生起步問題,問題縮窄至Hall 回授先做一些調整,查看公版與打版差異,使用Hall回授公版會出現錯誤無法起轉,因此這邊提高Hall的濾雜訊電容,再把其提高,發生頻率有在減小 軟體解決方案 這邊確認後MCSDK5.4.8在起轉時並不是使用六部方波起轉完後再切換至FOC,因此會有空白區域預猜現象,只要有雜訊出現就會使其猜不准出現震盪 因此這邊會從HALL_CalcElAngle in hall_speed_pos_fdbk.c下手詢問原廠後再6.1.2有針對這部分做修正,因此把修正部分加入 參考

ST Motor Control Use Case and Debug Read More »

ST Motor Control Adjust Method-2

前言 此章節會針對MCSDK 常遇到問題去做講解與調整介紹,相關資料位置也會整理出來方便大家在馬達控制上更加快速上手 MCSDK程式主結構 在使用MCSDK Gen code出來,主程式段落與數學對照式如下圖 ST這邊提供3種方案去補強需求下面會介紹這3種方案MTPA/Feed Forward/Flux weakening,這3種方案都可以直接在MCSDK上勾選開啟 MTPA(Maximum Torque Per Ampere) MTPA控制方式與id=0控制方式的區別 這個從轉矩方程最容易看出來,轉矩分為永磁轉矩Tr和磁阻轉矩Tm,而id=0只剩下Tr。這會導致電流的利用率不高,系統的效率降低。所以id=0的控制比較適用於隱極式電機(Ld=Lq),而對於凸極式電機並不最優,所以需要重新考慮控制策略。 Flux Weakening 弱磁即減弱磁通,該方法以降低轉矩為代價,使電機轉速超過其額定轉速。 弱磁控制減弱了永磁體產生的氣隙磁鏈 λpm的影響,從而降低了得到的 d 軸磁通 λd。如圖 Feed Forward 僅具有前饋行為的控制系統對其控制信號以預先定義的方式作出響應,不會對負載作出響應;它與同樣具有反饋的系統形成對比,反饋系統根據輸出如何影響負載,以及負載可能會如何變化來調整輸出;負載變化視為系統的外部環境。 常見問題 Problem: ‘SW error’ fault message appears and the motor do not even try to start Source: the FOC execution rate is too high and computation can not

ST Motor Control Adjust Method-2 Read More »

Shunt resistor based current sensing design

前言 電流感測電阻(shunt resistor)通常被放在三個相位之一的線路上。這個電壓降落可以通過一個運算放大器(op-amp)放大,然後被傳感器接收並轉換成數字信號。藉此方式,我們可以在驅動器中檢測電機的電流,並在必要時停止或調整電機的運行,從而保護驅動器和電機,延長其壽命。 主軸電路 可以看下圖主要分成3個部分 電阻值越大,給定的電壓降越高當前,因此可用的有用信號。 另一方面,功耗分流電阻隨著電阻值的增加而增加,因此電阻值主要取決於可接受的最大功耗 (PMAX) 是多少成分。 Shunt電阻配置可以參考下圖 儘管可以通過最小化走線的寄生電感來減少振盪(與它們的長度成正比,與它們的寬度成反比),一些過濾是始終需要清理反饋信號並可能使其進入穩態更快,以這種方式擴大電流反饋信號可能的時間範圍由下游微控制器單元讀取。另一方面,過濾不能太強,因為如前所述,電流僅在低側開關導通期間流過分流電阻。 Layout 建議 電流偵測位置有以下4種 Low-side global current sensing Low-side current sensing in each leg of the current driver Inline phase current High-side current sensing 參考

Shunt resistor based current sensing design Read More »

ST Motor Control Adjust Method-1

前言 在使用ST FOC電機庫時,當使用Hall信號作為位置信號時,需要輸入同步電角度數據,這個數據根據當前使用電機的特性進行輸入,會在每次Hall信號變化時同步電角度,如果角度偏差較大時會影響控制效果,可能帶來效率或者電機的震盪,初始測試還是有必要的,本文詳細說明測試注意事項以及測試方法。 測試準備 如果電機沒有虛擬中點接出,需要連接三個相同阻值電阻到電機的三相接線上,電阻另外一端連接到一起作為虛擬中點; 將Hall信號接入5V電,並且在H1上接入上拉電阻;接入示波器,轉動電機,測試反向電動勢信號以及Hall信號; 波形測試及計算結果 測試一個電週期的時間,這個週期對應360度; 測試電機A相反向電動勢最高點到H1的時間,圖中粉色為電機A相反向電動勢,紅色數字端口D0為H1信號; 該電機同步電角度: 同步角度添加到代碼 如果使用Workbench的話,添加到電機參數中,如圖: 如果直接寫入程序中,則將數據寫入PMSM motor parameters.h文件參數中 參考

ST Motor Control Adjust Method-1 Read More »

Add Position Controll on MC SDK 5.x

前言 在 MC SDK 5.x 中有兩個環路控制,分别是电流環和速度環(力矩環),有些應用需要使用到位置環,比如無人機的雲平台馬達控制,地鐵閘門等等應用,本文將闡述如何在現有 ST 馬達涵式庫基础上增加簡易的位置環,使其能夠擁有3環控制方式使其更加穩定 理論基礎 如果在有減速齒輪馬達上,需要加入速度環以更快速的到達到給定位置,也就是三環控制:位置環+速度還+電流環,框架同如下: 實作步驟 在MCSDK上增加DAC模塊。如果MCU上没有DAC模塊,可以使用TIMER+RC濾波電路模擬輸出DAC;下圖為使用DAC配置,需要配置Userdefined DAC1/2。 增加以下變量或函數用於位置環控制 位置環 PID 結構體 PID_Handle_t PIDAngleHandle_M1 位置控制的結構體 Position_Handle_t 位置角度誤差 Position_GetErrorAngle 位置環速度参考輸出計算 Position_CalcSpeedReferrence 位置環力矩参考輸出计算 Position_CalcTorqueReferrence 参考 mc_position.h 以及 mc_position.c mc_task.c 文件修改 增加 DAC 輸出程序 增加位置控制程序 在 mc_task.c 的中頻任务函数 TSK_MediumFrequencyTaskM1 中增加位置環差值數據計算,根據差值計算,當差值在閥值之上的話進行速度控制,否則進行力矩控制 修改参考電流計算 馬達累積圈數計算 測試 參考 【ST 实战经验】MC SDK 5.x 中增加位置环 MC SDK 5.x 介绍

Add Position Controll on MC SDK 5.x Read More »

Motor Control Workbench 程式架構-2

前言 上篇描述了STM32 Motor Control Workbench所生成的主程式架構,這邊會接續說明3個依附在主架構下的核心任務流程與架構,主要分成3個部分安全任務、中頻任務、高頻任務。其中安全任務主要是針對溫度、電壓、電流去做保護,中頻任務是在執行速度環與狀態執行,最後高頻任務是在FOC演算法執行 安全任務 中頻任務 高頻任務 API使用 介紹完主要程式流程後接下來是去使用上層API使馬達轉動下表示已建立好API 主要是在程式When回圈內去設定以下2個涵式馬達就可以運轉起來 範例參考 需要實現以下速度控制代碼參考如下 參考 STM32電機控制–API函式應用 ST SDK5.0電機正反轉及轉速控制 【基于NUCLEO-F746ZG电机开发应用】8.程序框架-三大核心任务简介

Motor Control Workbench 程式架構-2 Read More »

Shopping Cart