旋轉(zhuǎn)電壓矢量:Clarke/Park變換與SVPWM仿真實(shí)踐)
1. 從一個反直覺的現(xiàn)象說起為什么電機(jī)里需要一個“會轉(zhuǎn)”的電壓很多人第一次接觸電機(jī)控制或者電力電子實(shí)驗(yàn)時都會有一個疑問我們明明給電機(jī)通的是直流電或者固定頻率的交流電為什么電機(jī)能平穩(wěn)地轉(zhuǎn)起來更奇怪的是在一些高性能控制場景里工程師們會刻意去“制造”一個旋轉(zhuǎn)的電壓矢量而不是簡單地給三相繞組分別通正弦波。這背后的邏輯其實(shí)和“推秋千”是一個道理。你推秋千的時候不會在秋千往回擺的時候還使勁往前推而是順著它的節(jié)奏在合適的時機(jī)給一個合適的力。電機(jī)里的旋轉(zhuǎn)電壓矢量本質(zhì)上就是這樣一個“順著轉(zhuǎn)子節(jié)奏走”的推力。它把三相電壓在空間上的分布合成一個幅值恒定、角度隨時間勻速旋轉(zhuǎn)的矢量。這個矢量與轉(zhuǎn)子磁場保持相對靜止或者以特定滑差旋轉(zhuǎn)從而產(chǎn)生穩(wěn)定的電磁轉(zhuǎn)矩。這個實(shí)驗(yàn)的核心價值在于它是理解磁場定向控制FOC、空間矢量脈寬調(diào)制SVPWM、交流電機(jī)變頻調(diào)速等一系列高級控制技術(shù)的基石。如果你只是會用現(xiàn)成的驅(qū)動器可能永遠(yuǎn)不需要自己產(chǎn)生旋轉(zhuǎn)矢量但如果你想真正搞懂電機(jī)為什么能“聽話”地轉(zhuǎn)或者想自己寫一套控制算法那么這個實(shí)驗(yàn)就是繞不過去的第一道坎。適合閱讀這篇內(nèi)容的人包括電氣工程、自動化、機(jī)電一體化方向的學(xué)生剛進(jìn)入電機(jī)控制行業(yè)的初級工程師以及那些玩機(jī)器人、無人機(jī)、數(shù)控設(shè)備想自己寫底層驅(qū)動但被“矢量控制”四個字嚇退的愛好者。我會從最樸素的數(shù)學(xué)原理講起然后給出可以直接在仿真環(huán)境或者低成本硬件上復(fù)現(xiàn)的步驟最后分享幾個我在實(shí)際調(diào)試中踩過的坑。2. 旋轉(zhuǎn)電壓矢量的數(shù)學(xué)本質(zhì)從三相到兩相再到旋轉(zhuǎn)2.1 三相電壓的空間分布與合成規(guī)則先拋開復(fù)雜的坐標(biāo)變換我們回到最基本的三相繞組結(jié)構(gòu)。在一個典型的永磁同步電機(jī)或者異步電機(jī)中三相繞組在空間上互差120度電角度。假設(shè)A相繞組軸線在0度方向B相在120度方向C相在240度方向。每一相繞組通電后都會在氣隙中產(chǎn)生一個脈振磁場方向沿著該相繞組的軸線。如果給三相分別通入幅值相等、相位互差120度的正弦電壓那么每一相產(chǎn)生的脈振磁場在時間上也是正弦變化的。三個脈振磁場在空間上疊加結(jié)果就是一個幅值恒定、以電源角頻率旋轉(zhuǎn)的合成磁場。這個結(jié)論在電機(jī)學(xué)教材里通常用“旋轉(zhuǎn)磁動勢”來表述但很多人學(xué)的時候只是記住了公式?jīng)]有真正理解“為什么三個脈振能合成一個旋轉(zhuǎn)”。我用一個更直觀的類比來解釋想象三個人站在一個圓盤周圍分別站在0度、120度、240度的位置。他們按照正弦規(guī)律輪流推圓盤每個人推的力度隨時間變化但三個人配合起來圓盤就會勻速轉(zhuǎn)動。任何一瞬間圓盤受到的合力方向都是沿著某個角度而這個角度隨時間勻速變化。這就是旋轉(zhuǎn)矢量的物理來源。在數(shù)學(xué)上我們通常用Clarke變換把三相電壓從ABC坐標(biāo)系映射到靜止的α-β兩相正交坐標(biāo)系。變換公式如下# Clarke變換等幅值形式 # 輸入ua, ub, uc 為三相電壓瞬時值 # 輸出ualpha, ubeta 為兩相靜止坐標(biāo)系下的分量 ualpha ua ubeta (ua 2 * ub) / np.sqrt(3) # 另一種常見形式 # 更通用的等幅值Clarke變換矩陣形式 # ualpha (2/3) * (ua - 0.5*ub - 0.5*uc) # ubeta (2/3) * (np.sqrt(3)/2*ub - np.sqrt(3)/2*uc)這里要注意Clarke變換有不同的系數(shù)約定。等幅值變換和等功率變換的系數(shù)不同前者保持電壓矢量幅值與相電壓幅值一致后者保持功率不變。在實(shí)際寫代碼時如果你發(fā)現(xiàn)計算出來的矢量幅值比預(yù)期大了或者小了八成是系數(shù)用混了。我建議在實(shí)驗(yàn)階段統(tǒng)一使用等幅值形式因?yàn)槭静ㄆ魃峡吹降南嚯妷悍悼梢灾苯雍褪噶糠祵?yīng)調(diào)試起來更直觀。2.2 Park變換把旋轉(zhuǎn)的矢量“按?!痹谘矍敖?jīng)過Clarke變換后我們得到了一個在α-β平面上旋轉(zhuǎn)的電壓矢量。這個矢量的長度代表電壓幅值角度代表當(dāng)前電壓的空間相位。如果電源頻率恒定這個矢量就以角速度ω勻速旋轉(zhuǎn)。但問題來了旋轉(zhuǎn)的東西不好控制我們更習(xí)慣控制靜止的量。于是就有了Park變換。Park變換的核心思想是建立一個隨矢量一起旋轉(zhuǎn)的d-q坐標(biāo)系其中d軸直軸對準(zhǔn)轉(zhuǎn)子磁場方向q軸交軸超前d軸90度。在這個旋轉(zhuǎn)坐標(biāo)系下原本旋轉(zhuǎn)的電壓矢量就變成了兩個直流量d軸分量和q軸分量。控制這兩個直流量就等價于控制原來旋轉(zhuǎn)矢量的幅值和相對于轉(zhuǎn)子的相位。這個變換的物理意義非常漂亮它把“交流控制問題”轉(zhuǎn)化成了“直流控制問題”。在d-q坐標(biāo)系下我們可以像控制直流電機(jī)一樣分別控制勵磁分量和轉(zhuǎn)矩分量。對于表貼式永磁同步電機(jī)通常令d軸電流為0只控制q軸電流來產(chǎn)生轉(zhuǎn)矩這就是最簡單的id0控制策略。Park變換的公式如下# Park變換 # 輸入ualpha, ubeta, theta轉(zhuǎn)子電角度 # 輸出ud, uq ud ualpha * np.cos(theta) ubeta * np.sin(theta) uq -ualpha * np.sin(theta) ubeta * np.cos(theta)反Park變換則用于把控制量從d-q坐標(biāo)系變回α-β坐標(biāo)系進(jìn)而生成PWM信號# 反Park變換 ualpha ud * np.cos(theta) - uq * np.sin(theta) ubeta ud * np.sin(theta) uq * np.cos(theta)這里有一個非常關(guān)鍵的細(xì)節(jié)theta的準(zhǔn)確性直接決定了矢量控制的效果。如果轉(zhuǎn)子角度估計有偏差那么d軸和q軸就不能準(zhǔn)確對準(zhǔn)會導(dǎo)致轉(zhuǎn)矩脈動、效率下降嚴(yán)重時甚至無法啟動。我在早期做實(shí)驗(yàn)時曾經(jīng)因?yàn)榫幋a器零位沒有校準(zhǔn)導(dǎo)致電機(jī)雖然能轉(zhuǎn)但電流大得離譜發(fā)熱嚴(yán)重。后來用示波器觀察q軸電流波形發(fā)現(xiàn)它一直在振蕩才意識到是角度問題。2.3 從矢量到PWMSVPWM如何把連續(xù)矢量變成開關(guān)信號有了旋轉(zhuǎn)電壓矢量下一步就是把它變成逆變器能執(zhí)行的開關(guān)信號。這里最常用的技術(shù)就是空間矢量脈寬調(diào)制SVPWM。SVPWM的基本思想是在一個PWM周期內(nèi)用相鄰的兩個基本電壓矢量和零矢量來合成目標(biāo)矢量通過調(diào)節(jié)它們的作用時間使得平均效果等于目標(biāo)矢量。三相逆變器有6個開關(guān)管共有8種開關(guān)狀態(tài)對應(yīng)8個基本電壓矢量6個非零矢量幅值為2/3*Udc和2個零矢量。這6個非零矢量在空間上互差60度把整個平面分成6個扇區(qū)。對于任意一個目標(biāo)矢量先判斷它落在哪個扇區(qū)然后用該扇區(qū)的兩個邊界矢量和零矢量來合成。SVPWM相比正弦PWMSPWM有幾個明顯優(yōu)勢直流母線電壓利用率提高了約15%諧波含量更低而且更適合數(shù)字化實(shí)現(xiàn)。但它的計算量也更大需要判斷扇區(qū)、計算作用時間、分配開關(guān)順序。我在實(shí)際寫代碼時通常會先把扇區(qū)判斷和作用時間計算寫成獨(dú)立的函數(shù)方便單獨(dú)測試。一個簡化的SVPWM作用時間計算邏輯如下# 假設(shè)目標(biāo)矢量在扇區(qū)I邊界矢量為V1和V2 # T1為V1作用時間T2為V2作用時間T0為零矢量作用時間 # Ts為PWM周期 # Udc為直流母線電壓 # 目標(biāo)矢量幅值為Um角度為theta T1 Ts * np.sqrt(3) * Um / Udc * np.sin(np.pi/3 - theta) T2 Ts * np.sqrt(3) * Um / Udc * np.sin(theta) T0 Ts - T1 - T2如果T1T2大于Ts說明目標(biāo)矢量超出了逆變器能輸出的最大幅值需要進(jìn)行過調(diào)制處理。過調(diào)制處理不當(dāng)會導(dǎo)致波形畸變我在實(shí)驗(yàn)中遇到過因?yàn)檫^調(diào)制導(dǎo)致電流波形出現(xiàn)尖峰的情況后來通過限制目標(biāo)矢量幅值解決了。3. 動手實(shí)驗(yàn)用Python仿真一個旋轉(zhuǎn)電壓矢量3.1 仿真環(huán)境搭建與參數(shù)選擇在真正接硬件之前我強(qiáng)烈建議先在仿真環(huán)境里把整個流程跑一遍。這樣你可以直觀地看到矢量是怎么轉(zhuǎn)起來的也可以隨意調(diào)整參數(shù)觀察效果不用擔(dān)心燒管子。我常用的工具是Python加上NumPy和Matplotlib輕量、免費(fèi)、靈活。首先確定幾個關(guān)鍵參數(shù)電源頻率f設(shè)為50Hz對應(yīng)角速度ω2πf≈314.16 rad/sPWM周期Ts設(shè)為100微秒對應(yīng)開關(guān)頻率10kHz直流母線電壓Udc設(shè)為300V目標(biāo)電壓矢量幅值Um設(shè)為150V約為Udc的一半留出余量。仿真總時長設(shè)為0.1秒也就是5個電源周期足夠觀察旋轉(zhuǎn)過程。import numpy as np import matplotlib.pyplot as plt # 參數(shù)設(shè)置 f 50.0 # 電源頻率 Hz omega 2 * np.pi * f # 角速度 rad/s Ts 1e-4 # PWM周期 s Udc 300.0 # 直流母線電壓 V Um 150.0 # 目標(biāo)矢量幅值 V T_total 0.1 # 仿真總時長 s t np.arange(0, T_total, Ts)這里有一個容易忽略的點(diǎn)仿真步長和PWM周期的關(guān)系。如果你用固定的仿真步長而步長又大于PWM周期那么你就無法準(zhǔn)確模擬每個PWM周期內(nèi)的開關(guān)行為。我通常讓仿真步長等于PWM周期或者更小。如果步長太大SVPWM的作用時間計算會失真觀察到的波形也會不對。3.2 生成旋轉(zhuǎn)矢量并觀察軌跡接下來生成旋轉(zhuǎn)電壓矢量。在α-β平面上目標(biāo)矢量的α分量和β分量可以表示為# 生成旋轉(zhuǎn)電壓矢量 theta omega * t ualpha_ref Um * np.cos(theta) ubeta_ref Um * np.sin(theta)把這兩個分量畫在α-β平面上應(yīng)該看到一個半徑為Um的圓。如果畫出來不是圓而是橢圓或者別的形狀那就要檢查你的角度計算或者幅值設(shè)置是不是有問題。plt.figure(figsize(6,6)) plt.plot(ualpha_ref, ubeta_ref) plt.axis(equal) plt.xlabel(ualpha (V)) plt.ylabel(ubeta (V)) plt.title(旋轉(zhuǎn)電壓矢量軌跡) plt.grid(True) plt.show()這個圓就是旋轉(zhuǎn)電壓矢量在靜止坐標(biāo)系下的軌跡。你可以清楚地看到矢量以角速度ω勻速旋轉(zhuǎn)幅值恒定。如果把這個矢量投影到三相軸上就得到了三相正弦電壓。你可以用反Clarke變換驗(yàn)證一下# 反Clarke變換從alpha-beta回到abc ua ualpha_ref ub -0.5 * ualpha_ref np.sqrt(3)/2 * ubeta_ref uc -0.5 * ualpha_ref - np.sqrt(3)/2 * ubeta_ref畫出來的三相電壓應(yīng)該是互差120度的正弦波。這一步驗(yàn)證了從三相到兩相再到三相的變換是自洽的。3.3 加入SVPWM調(diào)制并觀察開關(guān)波形有了目標(biāo)矢量下一步就是實(shí)現(xiàn)SVPWM。我寫了一個簡化版的SVPWM函數(shù)輸入目標(biāo)矢量的α-β分量和直流母線電壓輸出三相占空比。核心步驟包括扇區(qū)判斷、作用時間計算、過調(diào)制處理、占空比分配。def svpwm(ualpha, ubeta, Udc, Ts): # 扇區(qū)判斷 # 利用三個參考量U1ubeta, U2(sqrt(3)*ualpha - ubeta)/2, U3(-sqrt(3)*ualpha - ubeta)/2 U1 ubeta U2 (np.sqrt(3) * ualpha - ubeta) / 2 U3 (-np.sqrt(3) * ualpha - ubeta) / 2 # 根據(jù)U1,U2,U3的符號確定扇區(qū) # 這里省略具體判斷邏輯實(shí)際代碼中需要完整實(shí)現(xiàn) # ... # 計算作用時間 # 以扇區(qū)I為例 # T1 Ts * (np.sqrt(3) * ualpha - ubeta) / Udc # T2 Ts * ubeta / Udc # 過調(diào)制處理 # if T1 T2 Ts: # T1 T1 * Ts / (T1 T2) # T2 T2 * Ts / (T1 T2) # 計算三相占空比 # ... return da, db, dc實(shí)際寫的時候扇區(qū)判斷可以用一個簡單的查表法也可以直接用條件判斷。我傾向于用條件判斷因?yàn)檫壿嬊逦{(diào)試方便。過調(diào)制處理是必須的否則當(dāng)目標(biāo)矢量幅值超過線性調(diào)制區(qū)時計算出的作用時間會超過PWM周期導(dǎo)致占空比異常。把SVPWM輸出的占空比轉(zhuǎn)換成開關(guān)信號再畫出來你就能看到典型的PWM波形。如果用一個低通濾波器濾掉高頻分量應(yīng)該能恢復(fù)出三相正弦波。這一步是驗(yàn)證SVPWM是否正確的最直接方法。4. 從仿真到硬件在低成本平臺上復(fù)現(xiàn)旋轉(zhuǎn)矢量4.1 硬件選型與最小系統(tǒng)搭建仿真跑通之后下一步就是上硬件。對于這個實(shí)驗(yàn)?zāi)悴恍枰嘿F的電機(jī)驅(qū)動器一個簡單的三相逆變橋加上一個微控制器就夠了。我推薦使用常見的MOSFET搭建三相橋配合柵極驅(qū)動芯片微控制器可以用任意一款帶高級定時器的型號比如常見的STM32系列或者國產(chǎn)的GD32系列。直流母線電壓建議從24V開始不要一上來就上300V。低電壓下即使接錯線損壞也有限。功率管選擇耐壓60V以上、電流10A以上的N溝道MOSFET即可。柵極驅(qū)動芯片選擇帶死區(qū)控制功能的半橋驅(qū)動死區(qū)時間設(shè)置在1微秒左右。死區(qū)時間太短會導(dǎo)致上下管直通燒管子太長會導(dǎo)致輸出波形畸變電流諧波增大。我在第一次搭這個電路時犯了一個低級錯誤忘記在柵極驅(qū)動芯片的電源端加去耦電容。結(jié)果一上電開關(guān)波形振蕩得厲害MOSFET發(fā)熱嚴(yán)重。后來在每個驅(qū)動芯片的電源引腳旁邊并了一個100nF的陶瓷電容和一個10uF的電解電容問題就解決了。這個經(jīng)驗(yàn)告訴我電力電子實(shí)驗(yàn)里電源去耦怎么強(qiáng)調(diào)都不過分。4.2 代碼移植與實(shí)時性保障把仿真代碼移植到微控制器上最大的挑戰(zhàn)是實(shí)時性。仿真里你可以慢慢算但在硬件上PWM周期是100微秒意味著你必須在100微秒內(nèi)完成所有計算并更新占空比寄存器。如果計算超時PWM輸出就會異常。我的做法是把整個控制循環(huán)放在定時器中斷里中斷頻率等于PWM頻率。中斷服務(wù)程序里只做最必要的計算讀取角度、計算目標(biāo)矢量、執(zhí)行SVPWM、更新比較寄存器。所有浮點(diǎn)運(yùn)算盡量用定點(diǎn)數(shù)替代或者使用微控制器自帶的硬件浮點(diǎn)單元。如果微控制器沒有FPU那么三角函數(shù)查表法會比實(shí)時計算快得多。// 中斷服務(wù)程序偽代碼 void PWM_ISR(void) { // 1. 讀取當(dāng)前角度來自編碼器或開環(huán)累加 theta omega * Ts; if (theta 2*PI) theta - 2*PI; // 2. 計算目標(biāo)矢量 ualpha Um * cos_table[(int)(theta * TABLE_SIZE / (2*PI))]; ubeta Um * sin_table[(int)(theta * TABLE_SIZE / (2*PI))]; // 3. SVPWM計算 svpwm_calc(ualpha, ubeta, Udc, da, db, dc); // 4. 更新比較寄存器 TIM1-CCR1 (uint16_t)(da * PWM_PERIOD); TIM1-CCR2 (uint16_t)(db * PWM_PERIOD); TIM1-CCR3 (uint16_t)(dc * PWM_PERIOD); // 5. 清除中斷標(biāo)志 TIM1-SR ~TIM_SR_UIF; }這里有一個關(guān)鍵點(diǎn)角度累加的精度。如果theta用浮點(diǎn)數(shù)累加時間長了會有累積誤差。我通常用整數(shù)累加比如把2π映射到0到65535的整數(shù)范圍每次累加一個固定的增量。這樣既避免了浮點(diǎn)誤差又提高了計算速度。4.3 用示波器驗(yàn)證旋轉(zhuǎn)矢量硬件跑起來之后怎么驗(yàn)證旋轉(zhuǎn)矢量是否正確最直接的方法是用示波器觀察三相輸出。如果你用的是帶數(shù)學(xué)運(yùn)算功能的示波器可以直接對三相電壓做Clarke變換然后看α-β軌跡是不是一個圓。如果沒有這個功能也可以觀察三相電壓的相位關(guān)系它們應(yīng)該是互差120度的正弦波幅值相等頻率與設(shè)定值一致。另一個驗(yàn)證方法是觀察電流波形。如果接的是感性負(fù)載比如電機(jī)或者電感電流應(yīng)該也是正弦波且相位滯后于電壓。如果電流波形出現(xiàn)明顯的畸變或者尖峰可能是死區(qū)時間設(shè)置不當(dāng)或者SVPWM的過調(diào)制處理有問題。我在調(diào)試時遇到過一個奇怪的現(xiàn)象電機(jī)能轉(zhuǎn)但噪音很大電流波形上有周期性的毛刺。用示波器抓了很久最后發(fā)現(xiàn)是角度更新和PWM更新不同步導(dǎo)致的。具體來說我在主循環(huán)里更新角度在中斷里更新PWM兩者之間存在競爭。后來把角度更新也放到中斷里問題就消失了。這個坑讓我明白在實(shí)時控制系統(tǒng)中所有與時間相關(guān)的變量都應(yīng)該在同一個時間基準(zhǔn)下更新。5. 調(diào)試中容易踩的五個坑與排查思路5.1 矢量幅值不對先查Clarke變換系數(shù)如果你發(fā)現(xiàn)生成的旋轉(zhuǎn)矢量幅值比預(yù)期大了一倍或者小了一半第一個要檢查的就是Clarke變換的系數(shù)。等幅值變換和等功率變換的系數(shù)不同前者系數(shù)是2/3后者是sqrt(2/3)。很多教材和代碼示例混用這兩種形式導(dǎo)致初學(xué)者一頭霧水。我的建議是在實(shí)驗(yàn)階段統(tǒng)一使用等幅值形式因?yàn)檫@樣α-β平面上的矢量幅值就等于相電壓幅值物理意義明確。如果你用的是等功率形式那么矢量幅值會比相電壓幅值大sqrt(3/2)倍需要心里有數(shù)。5.2 矢量不轉(zhuǎn)或者轉(zhuǎn)得不對檢查角度來源旋轉(zhuǎn)矢量的角度來源通常有三種開環(huán)累加、編碼器反饋、無傳感器估計。開環(huán)累加最簡單但頻率精度取決于晶振精度長時間運(yùn)行會有累積誤差。編碼器反饋?zhàn)顪?zhǔn)確但需要正確校準(zhǔn)零位。無傳感器估計最復(fù)雜低速時容易失步。如果你發(fā)現(xiàn)矢量不轉(zhuǎn)先檢查角度是否在更新。如果角度在更新但矢量轉(zhuǎn)得忽快忽慢檢查角度增量是否恒定。如果矢量轉(zhuǎn)的方向反了把角度增量的符號取反即可。這些看似簡單的問題在實(shí)際調(diào)試中經(jīng)常因?yàn)榇中亩速M(fèi)大量時間。5.3 電流波形畸變死區(qū)與過調(diào)制的雙重影響電流波形畸變是硬件實(shí)驗(yàn)中最常見的問題。原因通常有兩個死區(qū)時間設(shè)置不當(dāng)或者SVPWM過調(diào)制。死區(qū)時間是為了防止上下管直通而必須設(shè)置的但它會導(dǎo)致輸出電壓偏離理想值特別是在電流過零附近畸變最明顯。補(bǔ)償死區(qū)的方法有很多最簡單的是根據(jù)電流方向?qū)φ伎毡冗M(jìn)行修正。如果電流為正上管實(shí)際導(dǎo)通時間比設(shè)定值短需要補(bǔ)償如果電流為負(fù)則相反。補(bǔ)償量等于死區(qū)時間除以PWM周期。我在實(shí)際項(xiàng)目中通常先不補(bǔ)償觀察畸變程度如果畸變在可接受范圍內(nèi)就不補(bǔ)償以簡化代碼。如果畸變嚴(yán)重再考慮加入補(bǔ)償邏輯。5.4 電機(jī)發(fā)熱嚴(yán)重查q軸電流是否振蕩電機(jī)發(fā)熱嚴(yán)重但能轉(zhuǎn)通常意味著電流中存在大量諧波或者振蕩分量。用示波器觀察q軸電流需要先做Park變換如果q軸電流一直在振蕩說明角度估計不準(zhǔn)或者電流環(huán)參數(shù)不合適。角度不準(zhǔn)會導(dǎo)致d軸和q軸解耦不徹底q軸電流中會混入d軸分量產(chǎn)生無效的勵磁電流導(dǎo)致發(fā)熱。電流環(huán)參數(shù)不合適會導(dǎo)致系統(tǒng)振蕩同樣會增加損耗。我的經(jīng)驗(yàn)是先確保角度準(zhǔn)確再調(diào)電流環(huán)。角度不準(zhǔn)的情況下調(diào)電流環(huán)就像在流沙上蓋房子怎么調(diào)都不對。5.5 上電就燒管子檢查死區(qū)和直通這是最嚴(yán)重的問題通常發(fā)生在第一次上電時。原因幾乎總是上下管直通。檢查步驟先用萬用表測量上下管的柵極驅(qū)動信號確保它們不會同時為高電平。然后用示波器觀察死區(qū)時間確保死區(qū)時間足夠長。最后檢查柵極驅(qū)動芯片的使能邏輯確保上電時所有管子都處于關(guān)斷狀態(tài)。我在早期實(shí)驗(yàn)中曾經(jīng)因?yàn)闁艠O驅(qū)動芯片的輸入懸空導(dǎo)致上電瞬間上下管同時導(dǎo)通炸了一對管子。后來養(yǎng)成了一個習(xí)慣所有柵極驅(qū)動芯片的輸入端都加上下拉電阻確保在微控制器未初始化時管子處于關(guān)斷狀態(tài)。這個習(xí)慣讓我后來再也沒有因?yàn)樯想娭蓖ǘ鵁^管子。6. 這個實(shí)驗(yàn)還能怎么玩從旋轉(zhuǎn)矢量到閉環(huán)控制旋轉(zhuǎn)電壓矢量實(shí)驗(yàn)本身是開環(huán)的但它打開了一扇門。一旦你能穩(wěn)定地產(chǎn)生一個旋轉(zhuǎn)矢量就可以在此基礎(chǔ)上加入電流環(huán)、速度環(huán)、位置環(huán)逐步構(gòu)建完整的矢量控制系統(tǒng)。電流環(huán)的輸入是d軸和q軸電流指令輸出是d軸和q軸電壓指令經(jīng)過反Park變換和SVPWM后作用于電機(jī)。速度環(huán)的輸入是速度指令輸出是q軸電流指令。位置環(huán)的輸入是位置指令輸出是速度指令。如果你對無傳感器控制感興趣還可以嘗試用反電動勢觀測器或者滑模觀測器來估計轉(zhuǎn)子角度替代編碼器。這會讓整個系統(tǒng)更緊湊、成本更低但算法復(fù)雜度也更高。我建議先把有傳感器方案調(diào)穩(wěn)再嘗試無傳感器方案否則兩個問題混在一起很難定位。另外這個實(shí)驗(yàn)也可以擴(kuò)展到多相電機(jī)或者開繞組電機(jī)。多相電機(jī)的旋轉(zhuǎn)矢量維度更高但基本思想是一樣的把多個脈振合成一個旋轉(zhuǎn)。開繞組電機(jī)則可以使用雙逆變器供電電壓矢量更多控制自由度更大。這些擴(kuò)展方向在電動汽車和工業(yè)驅(qū)動中都有實(shí)際應(yīng)用。最后分享一個我在教學(xué)時常用的技巧讓學(xué)生先用LED燈代替電機(jī)觀察三相輸出的亮度變化。如果三個LED的亮度按照正弦規(guī)律輪流變化且整體看起來像在旋轉(zhuǎn)說明旋轉(zhuǎn)矢量已經(jīng)正確產(chǎn)生了。這個方法非常直觀不需要示波器也不需要電機(jī)幾塊錢的LED就能驗(yàn)證核心邏輯。等LED驗(yàn)證通過了再接電機(jī)成功率會高很多。