FOC电机ST系列处理器使用的基础知识
ST公司開源了STM32相關的FOC控制代碼,通過其MotoControl Workbench 選擇對應的開發板和電機板可以快速的生成FOC控制代碼。
英飛凌的方案
STM系列新品試用FOC的資源消耗
分解STM工作原理一定要看的文檔:
《STM32 電機控制 SDK》 透徹的分析了STM32代碼相關的基本原理,認真看了該文檔能更好的理解相關程序。
更詳細的英文文檔介紹《STM32 電機控制 SDK》
 建議看英文的比較好。
電機參數識別:
電機的基本知識
 如2216、2814等,這個數字,前兩位是定子外徑(mm)、后兩位的是定子高度(mm)。
注意這個:該值為對數,在很多電機上可以看到磁鐵個數。該值為磁鐵個數/2,因為是對數關系。圖中的電機就是磁體數比線圈數多,一般線圈數是3的倍數。
 
 官方說明測試的方式是,給電機任意兩根線通上電。電流和電壓不能太大容易燒毀電機而且電流大電機不容易用手進行轉動,電流太小也不行電流小了不容易感覺到相位。需要能感覺到加電后手轉動有明顯的能有個個的相位。給上電后標記電機的一個指向點,手動轉動電機感覺經過幾個相位就能回到原來的相位就是多少極對數。其實極對數不影響運行,只是極對數不對計算圈速的時候對應不上,其實就是類似步進電機的幾步對應一圈的概念。
 
NP 數量:
 1)槽數(N):定子鐵芯的槽數量。無刷電機是三相電機,所以槽數是3的倍數。
 2)極數(P):定子上磁鋼的數量,磁鐵必定是南北極成對使用,極數必然是偶數。
 電機槽數和極數有些電機型號直接寫為槽數N極數P,如12P14N,是12槽14極的意思。
KV值理解
 無刷電機KV值定義為轉速/V,意思為輸入電壓增加1伏特(V),無刷電機空轉轉速(轉/分鐘)增加的轉速值。從這個定義來看,電壓與電機空轉轉速是遵循嚴格的線性比例關系的,并且是常量,無論電機在那個工作電壓,電壓和轉速的關系都遵從值。
1)外轉子:定子在里面,轉子在外面叫外轉子。
2)內轉子:跟外轉子相反,內轉子是定子包著轉子,轉動的時候,只是轉子轉動(外殼不轉)。內轉子扭矩比較小,KV值高。
kRPM :
 每分鐘轉速 kRPM = (V - RmI) x kv / 1000
RPM = 每分鐘轉速、V = 電壓、Rm = 馬達內阻 、I = 消耗電流值 、kv = 電壓常數 (RPM / V)
我使用BULL RUN 電機12V 下測試出的效果,通過這個軟件檢測電機的參數。
 電機鏈接方式如下:
 排線是邏輯分析儀器連接的PWM波形測試管腳。三項電機的3根線的順序,如果沒有方向要求的話可以隨便連接。
 
無感電機位置檢測
有感無感多種方式處理,使用的方式比較多
別家的例子
開發板的使用
教學視頻
ST電機IHM002套件實操
電機有感無感模式
無感模式
無感工作模式,指的是沒有霍爾傳感器,通過檢測未加電的繞組(如第一個周期時,AC通電,B繞組未加電)上產生的反向電動勢,來獲取換向時機的。此時就有一個問題,電機靜止時,是沒有反向電動勢的,就需要先啟動,等電機運轉起來,再檢測其反向電動勢。
有感模式
有感工作模式,指的是有Hall霍爾傳感器或者Quadrature Encoder正交編碼器,這是安裝在電機內部的傳感器。通過霍爾傳感器獲得電機位置,來判斷換向的時機。
一般有的說法是用霍爾做換向,用編碼器做位置判斷。
霍爾:
 霍爾傳感器:1.速度環控制反饋 2發揮電機啟動力矩,頻繁正反轉,啟動力矩大都需要加霍爾。(線性霍爾還可以做一圈內的角度控制)
霍爾傳感器分為線型霍爾傳感器和開關型霍爾傳感器兩種。   
 (一)開關型霍爾傳感器由穩壓器、霍爾元件、差分放大器,斯密特觸發器和輸出級組成,它輸出數字量。開關型霍爾傳感器還有一種特殊的形式,稱為鎖鍵型霍爾傳感器。   
 (二)線性型霍爾傳感器由霍爾元件、線性放大器和射極跟隨器組成,它輸出模擬量。   
 線性霍爾傳感器又可分為開環式和閉環式。閉環式霍爾傳感器又稱零磁通霍爾傳感器,線性霍爾傳感器主要用于交直流電流和電壓測量。
霍爾有2種方式選擇不同方式的輸出波形有區別:
 Sensors displacement:
 
 Placement electrical angle:
 見文檔章節 8.3.2 Electrical angle extrapolation implementation
 
我認為是要說明轉子的角度和霍爾傳感器的關系。
 翻譯:
 比如上圖信號的從高到低或從低到高的轉換也提供了同步的可能性包含當前電角度的軟件變量。執行同步以避免測量電的突然變化角度。 為了做到這一點,預期電角度之間的差異,計算來自最后的速度測量,以及來自霍爾的真實電角度傳感器信號(見)被計算。 新的速度測量值由此調整信息以彌補差異。從上圖看出:“霍爾傳感器輸出轉換”中可以看出,任何霍爾傳感器轉換提供有關轉子位置的非常精確的信息。(理解霍爾傳感器能測量速度,也可以通過霍爾傳感器的原理(霍爾和永磁體固定的角度關系)和定時器的電流測量計算位置一起來計算電角度的值)
原文如下:
 
編碼器:
編碼器介紹
1精確位置環控制反饋,位數(也可以講線數)越高精度越高。
定時器控制PWM輸出
關于IHM07(死區控制通是依靠驅動器自身的能力完成的)
1.控制的EN1-3一直保持為高。
 2.只有IN 1-3 是在變化
通過PWM管腳直接驅動IGBT或MOS 晶體管(需要小心處理死區控制等方面的問題)
這類型通常是一個PIN通過IGBTMOS 驅動模塊直接驅動1個晶體管,所以上下橋臂的死區需要通過PWM設置來保證。該種模式對設計要求會高不少,需要非常小心處理上下半橋短路和死區控制。
關于電機類型
PMSM 分類
Surface-Mounted PMSM ,表貼式永磁同步電機,磁鐵在最外層,磁鐵在線圈的外側,電機的外殼旋轉,其直,交電感差異很小,小于10%
Internal PMSM,內置式永磁同步電機,磁鐵在線圈的內部,內部旋轉,交,直電感之比高達2-2.5
1.表貼式(隱極式)電機(SPMSM)
 Lq=Ld
 表貼式轉子結構
 永磁磁極易于實現最優設計,能使電機的氣 隙磁密波形趨于正弦波分布,進而提高電機的運行性能。
 表貼式轉子在恒功率運行范圍不寬的三相PMSM廣泛使用。
2.內置式(凸極式)電機 (IPMSM)
 Lq>Ld
 可以充分利用轉子磁路不對稱所產生的磁阻轉矩,提高電機的功率密度,使得電機的動態性能較表貼式轉子結構有所改善,制造工藝也較簡單,但漏磁系數和制造成本都較表貼式轉子結構大 。
對于STM32使用來說主要是影響Lq和Ld的關系,導致差異的原因可以認為因為磁鐵在內部可能導致對磁極的對稱性有影響(不清楚是否是正確答案,先這么理解)
 注意:MTPA功能需要在IPMSM使用。
STM32 IHM07使用錯誤異常經驗
一個自制板的使用經驗
 如果啟動后立即出現硬件過流保護,可能由以下原因導致:
 首先,需要再次確認ST MC Workbench中所有設置的參數是否和實際的硬件
 參數一致:如電機的相關參數,驅動部分的參數,單片機IO設置等。
 ? 如果有其中任意一個參數設置錯誤,可能導致電機永遠也無法正確啟動。
 ? 如果有需要,可以讓電機運行在開環模式,來測量Tnoise和Trise相關參數。
 如果啟動后立即出現硬件過流保護,可能由以下原因導致:
 ? 選擇了錯誤的電流采樣方式
 ? 選擇了錯誤的電流采樣參數:如取樣電阻值,放大倍數, ICS增益, Tnoise, Trise等.
 ? 電流環的調節帶寬過高:3電阻采樣建議為2000rad/s, 單電阻采樣建議為1000rad/s
 ? 由于布線受到干擾而導致誤觸發硬件過流保護,需要檢查硬件設計。
 如果出現電機只動一下,但是沒有加速動作:
 ? 這種問題一般是因為開環電流不夠大導致無法拖起轉子加速,有時出現開環啟動完成,
 但報啟動失敗故障,這時:
 ? 需要減低加速率,或提高開環啟動電流
 如果以上方法可以解決,但是不能保證100%有效,請嘗試增加定位功能。
如果轉子可以轉動并且有加速動作,但是還是會停止并且報“速度反饋失敗”錯誤,可能由以下原因導致:
 ? 啟動成功的限制條件過于寬松導致過早切入閉環。
 ? 如下的方法可以解決這樣的問題:
 ? 提高“連續成功啟動輸出測試”值,正常情況下請不要大于5。
 ? 提高最小啟動輸出速度。
 如果采用 以上方法導致開環的最終速度過高,或沒有解決問題,可以嘗試以下方法:
 ? 減少觀測器的增益G2,它可以降低擾動對速度反饋的影響。
 ? 通常G2應該按照/2,/4,/6,/8方式來減少。
 ? 放寬觀測器的收斂條件,這樣使觀測器更容易收斂:
 ? 使用新的電機庫,可以設置速度變化波動為80%(PLL) ,或400%(Cordic)。
 ? 這種情況下需要增加反向電動勢幅度與估算速度一致性的檢查。
 ? 更改速度/扭矩的爬升率:根據實際負載和轉子的慣性等情況,讓加速度更加柔和,防止突然加速導致對反向電動勢估算的擾動。
 相關電機的使用說明
STM32d的速度位置檢測
STM32 電機控制固件提供了四種速度和位置反饋功能實現。其中兩個實現使用了嵌入在某些電機中的傳感器,如霍爾傳感器或正交編碼器。另外兩個實現根據 Luenberger 觀測器的電機反電動勢估計結果來估計轉子的速度和位置。該觀測器通過與一個鎖相環(PLL)耦合來推算出速度和角度,另一個則是通過與坐標旋轉數字計算機(CORDIC)耦合來重建轉子的角度和速度
反電動勢過零檢測
 反電動勢過零檢測
元件 說明
 編碼器速度和位置反饋 :該元件使用正交編碼器的輸出來測量電機轉子的速度和位置。
 霍爾速度和位置反饋: 該元件使用兩個霍爾效應傳感器的輸出來測量電機轉子的速度和位置。
 狀態觀測器 + PLL 速度和位置反饋: 該元件使用狀態觀測器以及軟件 PLL 來估計電機轉子的速度和位置。
 狀態觀測器 + CORDIC 速度和位置反饋 :該元件使用狀態觀測器以及 CORDIC(坐標旋轉數字計算),STM32G 系列或者高等級的有相關硬件加速可以使用這種方式,來估計電機轉子的速度和位置。
BR2804 1700kv 2300kv rc brushless motors
 Model KV(rpm/v) Volate (v) MotorWeight (g)AppROX NoLoadCurrent (A) No Load Speed (rpm) Load Current(A) Load Speed(rpm) Prop Pull(g) G/A
 BR2804-2300 2300 11.1 20 0.8 24830 10.8 14970 7035 380 35
 BR2804-1700 1700 11.1 23 0.6 18000 5.6 12540 7035 257 46
總體描述
生成的代碼主要有下面結果部分:
 1.Application/MDK-ARM 是ARM的啟動代碼。
 2.Application/User主要是用戶代碼。
 3.Drivers/STM32G*** 是驅動部分代碼。
 4.Drivers/CMSIS應該是ARMCortex-M系列IP的硬件抽象標準,Common Microcontroller Software Interface Standard (CMSIS),CMSIS enables consistent device support and simple software interfaces to the processor and its peripherals, simplifying software reuse, reducing the learning curve for microcontroller developers, and reducing the time to market for new devices. (就理解一個抽象層,方便換芯片后快速使用不用改軟件)。
 5.Middlewares/MotorControl 該部分認為是電機控制的中間層,主要電機相關底層控制都在這個部分。
基本配置分析
使用2S 模式的芯片管腳定義如下:
 
ADC 配置分析
程序使用了2個ADC,但是在測試發現電流檢測使用上兩個ADC都被使用,其中通道V在兩個ADC都有進行采集,電流采集和產生PWM波形的定時器是同步的,確保能在精確的時間點采集到電流。 相關介紹可見《STM32 電機控制 SDK》文檔 章節 “3.3.1 電流檢測和 PWM 生成組件 ”介紹。
ADC1 開啟了兩個通道電流采集,使用定時器觸發模式來觸發2個RANK 通道的采集,分別如下。
 
ADC2對溫度和總線電壓進行了采集。ADC2 開啟了兩個通道電流采集,使用定時器觸發模式來觸發2個RANK 通道的采集,分別如下。
 
 
對于電流的采集是要求比較高的部分,采用的定時器觸發模式進行AD采集(需要在代碼中確認一下,對于觸發是哪兩路需要確認一下)。
使用到的單位分析
在STM32程序中大量使用16位和32位的整形表示數據,比如角度、電流、電壓因為使用整形計算比較適合單片機。不過使用整數表示相關數據實際上都是進行了比例縮放或者可以稱為單位轉變。
角度單位
轉子角度單位
 MC API 中使用的轉子角度測量單位被稱為 s16degree,其定義如下:
 1s16degree = 2?
 65536rad (17)
速度單位
電流單位
電壓單位
電機控制 API 使用的外加相電壓單位被稱為 s16V,其定義如下:
 1s16V = VMAX/32768
VMAX也可以用類似的方式 獲得,在設置時電壓采樣有設置值有個比例關系。
 不過找到程序中是相電壓:
/max phase voltage, 0-peak Volts/
 #define MAX_VOLTAGE (int16_t)((ADC_REFERENCE_VOLTAGE/SQRT_3)/VBUS_PARTITIONING_FACTOR)
和一個BEMF反電動勢電壓,不過反電動勢電壓計算,其中1.2(我認為是一個范圍值,故意為1.2倍·暫時想不到是什么原理在其他版本中沒有看到1.2個個倍數)
 #define MAX_BEMF_VOLTAGE (uint16_t)((MAX_APPLICATION_SPEED_RPM * 1.2 
 MOTOR_VOLTAGE_CONSTANTSQRT_2)/(1000u*SQRT_3))
反向電動勢原理
方向電動勢仿真
中斷分析
中斷開啟了ADC1-2 ,定時器BRK_TIM15,TIM16 UP 中斷,串口2中斷 外部15-10中斷(具體GPIO?中斷),DMA1中斷,DAM2中斷。
 PC13為開始停止按鍵
調用關系分析
在main 函數中調用電機初始化,本程序主函數循環為空理解為說有的程序都運行在中斷中:
__weak void MX_MotorControl_Init(void) {/* Reconfigure the SysTick interrupt to fire every 500 us. */HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/SYS_TICK_FREQUENCY);/* Initialize the Motor Control Subsystem */MCboot(pMCI);mc_lock_pins();//對PIN 的初始}總結
以上是生活随笔為你收集整理的FOC电机ST系列处理器使用的基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: [Unity]寻路导航
 - 下一篇: Java shiro权限管理框架视频教程