Motor control

Motor control on STM32

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 »

Motor Control Workbench 程式架構

前言 這邊網路資源也算蠻多的一些相關知識可以參考FOC控制原理與电机应用开发实战指南-基于STM32中的影片知識,這邊會探討在ST的Workbench 在設定完成後所生成的code,主要在程式架構與重要程式碼說明,在了解架構後,就能夠自己加入所需要應用調整,後續會逐步介紹API應用與不同控制的改動 程式架構 下圖可以看到主要的整個程式運轉主架構,其中有2個中斷(Systick中斷與ADC中斷)可以由圖看出是程式的主核心,Systick中斷執行安全任務與中頻任務(速度環),而ADC中斷則執行高頻任務 Systick中斷 系统定时器是一个24bit的向下遞減的計數器,計數器每計數一次的時間為1/SYSCLK。當中內存數值寄存器的數值遞減到0的時候,系统定時器就產生一次中斷。這邊參考已默認1ms的定時中斷為範例來看參考代碼 中斷函數 MC_RunMotorControlTasks函數內容 ADC中斷 ADC中斷主要在Timer觸發後執行FOC座標轉變、SVPWM執行、電壓電流溫度採樣與PWM調整占比輸出(可以參考下圖)ADC初始化部分可以參考文件【基于NUCLEO-F746ZG电机开发应用】7.程序框架-两个重要中断,與一般初始化大致相同就不贅述只有在中斷部分有加入函示庫 ADC中斷 參考 【基于NUCLEO-F746ZG电机开发应用】7.程序框架-两个重要中断 【基于NUCLEO-F746ZG电机开发应用】6.程序框架 STM32 电机教程 18 – MC Workbench生成工程代码的电机调试

Motor Control Workbench 程式架構 Read More »

Motor Profiler and MotorControl Workbench

前言 ST這邊推出Motor Profiler 與 MotorControl Workbench方便可以把底層程式給建構完全,以及基本的API提供應用,在使用上與入門算蠻便捷容易上手的,且相對優點式的code是全面開放可以看到每個API的撰寫方式,此章節會著重在Motor Profiler and Workbench的操作使用上 The ST Motor Profiler software tool provides the following features: A PC software application to auto-measure electromechanical parameters of PMSM motors ; Embedded One Touch Tuning algorithm: a new algorithm that uses a single parameter to set up the speed controller according to the type of

Motor Profiler and MotorControl Workbench Read More »

FOC控制原理(Theory For FOC Control)之4

前言 前面講述完全部數學轉換後來到最後一步FOC的控制流程,首先我們來看到下圖Three Phase Inverter一般包含在motor driver,而綠框一般為MCU控制計算 最终的完整FOC算法 在前面章節提到的Id和Iq分別的物理意義為,將轉子磁鏈進行解偶,分解成轉子旋轉的切線方向與徑向兩個變量 其中Iq是我們所需要的代表期望力矩輸出 而Id為我們不需要我們盡可能使其為0 接下來我們再將控制環分成3個階段(電流環、速度環、位置環)並加上PI回授補償就可以獲得下圖 PS:在速度環中轉速並不是瞬時的速率,而是測了一段時間取平均值的速率,因此若是在低速的情况下,速率環就不那適用了,因為平均測速法會存在非常大的誤差(轉子不動或者動地很慢,编碼器就没有输出或者只输出1、2个脈衝) 參考 FOC项目知识点总结五 | FOC流程总述 FOC控制原理

FOC控制原理(Theory For FOC Control)之4 Read More »

FOC控制原理(Theory For FOC Control)之3

前言 上篇針對回授接收到訊號做分解後,這邊要進入輸入訊號的介紹 PWM到SPWM 因我們所要驅動的是三相逆便電路,如果單單開關會得到類似6步方波的控制不夠平滑,這邊我們想要使其平滑就要引入2個概念 PWM 面積等效定理 PWM相信有在控制馬達的都不陌生,基本上如下圖去控制操作電壓的佔比頻率,來達到等效電壓的效果 由上我們在進階一點把弦波全部等效成方波如下圖 這邊就延伸出2種控制波形 到目前為止我們就了解到單一相正弦波控制輸入PWM,下一步我們要延伸成3相來達成控制BLDC 三相電壓控制 由右圖我們可以列出上圖方程式,然後再由3組橋臂我們可以得到8種組合 這邊我們舉其中一個狀態為例如下圖,並由左至右逐步簡化最後得到最右邊的簡化圖 由上圖我們可以獲得以下方程式 由上面其中一種狀態推演,我們可以獲得下列全部狀態表格,然後在近一步圖形化成最右邊圖 但這邊得到的圖與網路給的標準圖方向不同,這邊就是重點所在abc 座標軸代表的是空間向量的方向,稱之為三相静止座標系,而不是馬達的等效模型,馬達模型上的向量轉換到三相静止座標軸上的向量需要做一个簡單的變換——負變正,正變負,做鏡向翻轉後就跟網路相同如下 有了向量組合,與PWM概念後接下來就是把其結合成SVPWM(Space vector PWM),下面3個為主要要點 輸出電壓由重復地開關兩個相鄰的有效向量與零向量 的動作產生 輸出電壓的 θ  角取決於兩個相鄰有效向量的相對開關時間 輸出電壓的幅值取決於兩個相鄰的有效向量與零向量的相對開關時間 由上面演算我們可以推得每個開關所需要經歷時間,就可以得到SPWM控制了這邊詳細的請參考SVPWM分析、各个扇区详细计算以及Matlab仿真,這篇真的很詳細 參考資訊 SVPWM分析、各个扇区详细计算以及Matlab仿真 FOC项目知识点总结四 | 从 PWM 到 SVPWM

FOC控制原理(Theory For FOC Control)之3 Read More »

FOC控制原理(Theory For FOC Control)之2

前言 在上章節介紹完馬達種類與簡單描述控制方法,這章節會進入數學模型與FOC控制方法深入介紹 控制狀態 這邊可以參考左圖轉動動態圖,可以看到不同的電流方向通過 讓定子產生磁場方向,轉子因異極相斥進而產生旋轉。 而這種旋轉狀態可以再細分為6種狀態,下面分別對各種狀態探討 上圖六種不同的電流方向把其表格化就可以獲的下圖,其中六個步驟正處於哪一步驟就取決於轉子位置,轉子位置通常可由Sensor感知或由無通電那一極感知返電動式去推算現在轉子位置 再由上圖把其電流圖表化就可以獲得下圖,而怎實現下圖就出現三相逆變電路(這邊就會對應BLDC的motor driver) PS:這邊注意上圖看起來很像六步方波驅動BLDC但細看會發現這邊是電流六步方波是電壓 三相逆變電路 上面電路的 VT 是指 IGBT 模塊,而在小功率驅動中一般使用 MOSFET 来當做開關,兩者皆為全控器件,用途可以等同MOS管,可以看作電壓控制的高速電子開關,在MOS管的極閘(上图中的High Drive和Low Drive)施加高電頻或者低電頻,就可以控制MOS原極和漏極的導通或者關閉。 在下圖中,我們打打第一组半橋的上橋臂、第二组和第三组半橋的下橋臂(其餘的關閉),即打開 V T 1 , V T 2 , V T 6 VT1,VT2,VT6VT1,VT2,VT6 ,那麼就可以讓電流從電源正極流過馬達的a相,流經b、c相,然後回到電源負極: 下圖為上面兩臂,下面一臂的情况: 通過控制三个半橋的不同開關狀態,我們可以控制電流在馬達中的不同流向了。 這樣,在任一瞬間,將有三个橋臂同時導通。可能是上面一個臂下面兩個臂,也有可能是上面兩個臂下面一個臂。因为每次換向都是在同一相上下兩個橋臂之間進行,因此也被稱為縱向換流。 Clarke’s Transformation與 Park’s Transformation 這邊先有一個概念,電流輸出要直接控制成弦波,對於元件要求與控制手段都是非常嚴苛的,因此有沒有甚麼方式可以把弦波轉呈線性呢?所以就演變出 Clarke與 Park 轉換,給各位看2張圖就會比較明這2個轉換是在幹嘛了˙ Clarke’s Transformation 其中Clarke’s Transformation是先把3個弦波簡化成2個旋波(這邊簡化方法簡單說是座標轉換) Park’s Transformation Park’s Transformation再來把2個弦波轉變成2線性直線 數學公式 首先我們看馬達在轉動時後的慣性坐標系

FOC控制原理(Theory For FOC Control)之2 Read More »

Shopping Cart