專門查企業(yè)信息的網(wǎng)站百度有幾種推廣方式
本篇文章介紹了使用NXP公司提供的塔式快速原型系統(tǒng)來驅(qū)動控制帶霍爾傳感器的無刷直流電機。文章涉及的塔式快速原型系統(tǒng)主要包括以下四個獨立板卡:1.塔式系統(tǒng)支撐模塊(TWR-Elevator),用以連接微控制器以及周邊模塊;2.低電壓3相電機控制模塊(TWR-MC-LV3PH);3.通信(USB、Ethernet、CAN、RS232/485)塔式系統(tǒng)模塊(TWR-SER);4.塔式系統(tǒng)K60 MCU模塊(TWR-K60N512)。
文章從基礎(chǔ)理論講起,幫助讀者梳理電機控制相關(guān)概念,了解整個電機驅(qū)動系統(tǒng)構(gòu)成,帶領(lǐng)讀者從BLDC電機控制實現(xiàn)的各個開發(fā)步驟來直觀體驗了整個實現(xiàn)過程。
目錄
BLDC電機理論
BLDC(帶霍爾傳感器)基本信息
換相
BLDC電機數(shù)字控制
速度控制
系統(tǒng)描述
性能指標(biāo)
概要說明
外設(shè)?
數(shù)據(jù)流程圖
關(guān)鍵技術(shù)詳解
速度和位置測量
PI控制器?
軟件實現(xiàn)
函數(shù)實現(xiàn)
中斷安裝?
對外接口
NXP公司把電機在汽車中的應(yīng)用主要分為三類:動力總成,安全和地盤以及車身和舒適。下圖為這三類具體包含涉及到了電機控制的汽車部分。
電機按照實現(xiàn)原理又分為直流有刷電機,直流無刷電機,步進電機,永磁同步電機。下圖為這四種電機在不同汽車部分的應(yīng)用情況。
本文主要介紹的是帶霍爾傳感器的直流無刷(BLDC)電機的控制應(yīng)用實現(xiàn)。
BLDC電機理論
BLDC(帶霍爾傳感器)基本信息
BLDC的定子(stator)是通電的線圈,而轉(zhuǎn)子(rotor)是永磁體。換句話來說,BLDC 電機的磁體保持轉(zhuǎn)動,導(dǎo)體保持靜止。
換相
利用磁鐵同性相斥,異性相吸的原理,我們在定子上的線圈接入方向適當(dāng)?shù)碾娏?#xff0c;即讓電磁鐵的磁極方向和永磁體的磁極方向正好對應(yīng),不就能排斥、或者吸引轉(zhuǎn)子做旋轉(zhuǎn)運動了。BLDC電機將那六個線圈兩兩組合,分成A,B,C三個繞組(三相),這樣就能同時控制兩個中心對稱的繞組采用相同的極性,從而提高了驅(qū)動效率,而A,B,C三個繞組又會兩兩結(jié)對,這樣又能驅(qū)動相鄰的兩個轉(zhuǎn)子提供不同的極性,那么轉(zhuǎn)子將會獲得更高的驅(qū)動力,如下面動圖所示,通過AB-AC-BC-BA-CA-CB,這六個節(jié)拍(六步),依次循環(huán)驅(qū)動定子的繞組,轉(zhuǎn)子就能一直旋轉(zhuǎn)下去。
綜上所述,換相可以產(chǎn)生旋轉(zhuǎn)場,通過六步控制,我們總共可以獲得六種可能的定子磁通向量。必須在特定的轉(zhuǎn)子位置更改定子磁通向量。轉(zhuǎn)子位置通常通過霍爾效應(yīng)傳感器檢測?;魻杺鞲衅魃扇N信號,這三種信號也包含六種狀態(tài)。每個霍爾傳感器的狀態(tài)對應(yīng)特定的定子磁通向量,如下表所示。
霍爾傳感器H1 | 霍爾傳感器H2 | 霍爾傳感器H3 | A相 | B相 | C相 |
0 | 0 | 1 | V+ | V- | NC |
0 | 1 | 1 | V+ | NC | V- |
1 | 1 | 1 | NC | V+ | V- |
1 | 0 | 0 | V- | V+ | NC |
0 | 0 | 0 | V- | NC | V+ |
0 | 0 | 1 | NC | V- | V+ |
我們現(xiàn)在先拿六個電子開關(guān)來理解六個節(jié)拍的轉(zhuǎn)化,如下圖:
BLDC電機數(shù)字控制
對于常見的三相BLDC電機,可以使用標(biāo)準(zhǔn)的H橋驅(qū)動電路,如下圖。
BLDC 電機控制應(yīng)用采用互補雙極開關(guān)PWM。利用互補雙極開關(guān),兩相由互補 PWM 信號供電 (底部 MOSFET的開關(guān)與一相之內(nèi)的頂部MOSFET的開關(guān)互補),一相的占空比大于 50%,另 一相的占空比為互補值(小于 50%),如下圖所示。
互補雙極開關(guān)PWM技術(shù)的優(yōu)點是可以在所有四個工作象限中控制電機。雙極PWM開關(guān)方案要 求頂部和底部開關(guān)PWM信號在換向事件時交換。另一個要求是在互補頂部和底部信號中插入死區(qū)。?
速度控制
換相可確保BLDC電機的轉(zhuǎn)子正確旋轉(zhuǎn),而電機轉(zhuǎn)速則僅取決于所施加電壓的振幅。可使用PWM技術(shù)調(diào)整所施加電壓的振幅。所需轉(zhuǎn)速由速度控制器控制,速度控制器由比例 - 積分 (PI) 控制器實現(xiàn)。實際轉(zhuǎn)速與所需轉(zhuǎn)速之差為PI控制器的輸入,該控制器隨后根據(jù)此差值控制 PWM 脈沖的占空比,并且此占空比與維持正確轉(zhuǎn)速所需的電壓振幅相對應(yīng)。
系統(tǒng)描述
性能指標(biāo)
該系統(tǒng)設(shè)計用于驅(qū)動三相 BLDC 電機。該應(yīng)用符合以下性能規(guī)范:
- 使用霍爾效應(yīng)傳感器對 BLDC 電機進行電壓控制。
- 帶 TWR-K60N512 板的塔式系統(tǒng)解決方案。
- 電源電壓 +24 VDC。
- 控制技術(shù)包括:
- 使用霍爾效應(yīng)傳感器信號進行位置檢測。
- 使用速度閉環(huán)進行 BLDC 電機電壓控制。
- 速度測量基于一個霍爾效應(yīng)傳感器。
- 兩個旋轉(zhuǎn)方向。
- 可從任何轉(zhuǎn)子位置啟動。
- 可在每次電機啟動之前對 MOSFET 前置驅(qū)動自舉預(yù)充電。
- 最小轉(zhuǎn)速 500 RPM (取決于所使用的電機)。
- 最大轉(zhuǎn)速 4000 RPM (取決于所使用的電機)。
- FreeMASTER接口(輸入速度、測得速度、速度誤差、斜坡參數(shù)、過流LED指示)。
- 以太網(wǎng)終端 (輸入速度、以太網(wǎng)狀態(tài))。
- 故障保護:
- 直流母線過流故障保護(硬件)。
- 電源反向極性保護電路(硬件)。
概要說明
K60N512運行主控制算法。根據(jù)用戶接口和反饋信號,它將會生成六路PWM輸出信號(FTM0)。如果所需轉(zhuǎn)速不為零,則應(yīng)用啟用霍爾傳感器中斷并強制首次調(diào)用霍爾中斷程序。每個霍爾傳感器的新邊沿自動調(diào)用中斷程序。在此霍爾中斷程序中,將會掃描來自霍爾傳感器的信號,并交換和屏蔽對應(yīng)的 PWM 通道。此過程稱為換相?;魻杺鞲衅鲯呙瑾毩⒂谒俣瓤刂?#xff08;FTM1)。速度控制循環(huán)由PIT0定時調(diào)用,此周期循環(huán)中存在速度斜坡和應(yīng)用狀態(tài)機。主程序中僅存在一個針對FreeMASTER協(xié)議處理的無限循環(huán),這樣就可以通過FreeMASTER上位機調(diào)試此應(yīng)用。
外設(shè)?
為了使此應(yīng)用正確工作,必須使用以下外設(shè)。不允許將這些外設(shè)用于其他目的。
- FTM0:用于生成PWM信號的定時器,在組合模式下運行,開關(guān)頻率為 19.2 kHz (48 MHz 的內(nèi)核時鐘),死區(qū)時間為 1 μs。
- FTM1:用于速度測量的定時器,在輸入捕捉模式下運行,預(yù)分頻為 128,模數(shù)為 0xFFFF,溢出周期為 175 ms。
- PIT0:用于定時調(diào)用速度控制循環(huán)和應(yīng)用狀態(tài)機,中斷調(diào)用周期為 10 ms (48 MHz 內(nèi)核時鐘)。
- 端口A:用于霍爾效應(yīng)傳感器中斷,如果在此端口上施加任何其他信號,則在每個信號邊沿調(diào)用此中斷,程序不會正確運行。
- 端口D:用于霍爾效應(yīng)傳感器中斷,如果在此端口上施加任何其他信號,則在每個信號邊沿調(diào)用此中斷,程序不會正確運行。
- PTE26:用于緊急停止按鈕。
- PTA27:用于讀取 MC33937 MOS-FET 前置驅(qū)動的過流引腳。
- PTA10:用于表示 MC33937 MOS-FET 前置驅(qū)動上的第一級過流。
- SPI2:用于與 MC33937 MOS-FET 前置驅(qū)動通信。
數(shù)據(jù)流程圖
電機驅(qū)動應(yīng)用要求表明軟件將提取用戶接口下發(fā)的速度等參數(shù)和傳感器采集的部分?jǐn)?shù)值進行處理,然后生成用于電機控制的三相PWM信號。閉環(huán)BLDC電機驅(qū)動的控制數(shù)據(jù)流程圖如下所示。
其中包含的關(guān)鍵流程如下:
- 速度命令:用戶通過FreeMASTER通信軟件發(fā)送的每個速度更改命令均會使speed_req變量中的值改變。
- 縮放比例和速度斜坡:提供定點32位數(shù)的比例更改和速度斜坡計算,由于整個應(yīng)用系統(tǒng)具有很大慣性,因此,應(yīng)用時必須細化速度命令,否則可能會導(dǎo)致系統(tǒng)過載。此流程會不斷更新speed_scaled的值直到與speed_req值一致。
- 速度PI控制器:它用于計算實際速度與speed_scaled之差并相應(yīng)地補償PWM 模塊的占空比。
- 換相和PWM生成:它用于根據(jù)霍爾傳感器的信號創(chuàng)建旋轉(zhuǎn)場。
- 傳感器中斷處理程序:它用于生成換相向量。
- 速度測量:實現(xiàn)測量當(dāng)前電機轉(zhuǎn)速,詳見下一小節(jié)。
關(guān)鍵技術(shù)詳解
速度和位置測量
實際電機速度基于旋轉(zhuǎn)周期 (time_measured) 計算得出,并與用戶提供的 speed_req 進行對比。隨 后,通過速度斜坡算法對速度命令進行處理。從斜坡算法輸出獲得的實際速度命令與 speed_measured進行比較,將生成一個speed_error。 旋轉(zhuǎn)周期通過霍爾傳感器 A 和 flex timer 1 掃描,可在捕捉模式下對其進行配置。
PI控制器?
速度 PI控制算法用于處理speed_req和speed_measured之間的speed_error。PI控制器輸出傳輸至 PWM發(fā)生器,以作為所施加電機電壓的新校正值。
PI控制器程序在PIT設(shè)備中斷程序PIT0_isr中計算,它每10 ms被調(diào)用一次。此中斷將在電機停止時禁用,從而使PI也禁用。PI控制器的積分部分在低速 (低于 499 RPM)時禁用,因為在此情況下,速度測量并不準(zhǔn)確且PI控制器可能不穩(wěn)定。要確定何時禁用,程序中存在兩個宏: MIN_CW_SPEED_32和MIN_CWW_SPEED_32。
PI控制器的輸入為斜坡算法speed_scaled的輸出,另一個輸入為實際speed_measured。另外兩個 輸入為PI控制器參數(shù)trMyPI結(jié)構(gòu)的指針。所有這些參數(shù)均供PI控制器函數(shù)GFLIB_ControllerPIp 使用。
此函數(shù)輸出為s32Output。它將按照PWM比例縮放為delta_duty并添加到half_duty。此處理結(jié)果為duty_cycle,這將被加載至Flex Timer寄存器中。 每當(dāng)速度比例更改或者電機改變時,必須配置 PI速度控制器參數(shù)。
軟件實現(xiàn)
函數(shù)實現(xiàn)
整個電機控制算法由中斷驅(qū)動。主函數(shù)僅用于MCU和應(yīng)用初始化;如下圖所示。初始化終止時, 程序?qū)⑦M入無限循環(huán)或其他應(yīng)用處理程序 (web 服務(wù)器、?USB、FreeMASTER協(xié)議處理等)。
為了使此電機應(yīng)用正常工作,需要使用四個中斷。 四個中斷處理程序分別提供以下服務(wù):?
- 溢出中斷處理程序:用于電機停止檢測和速度測量。溢出處理程序用于復(fù)位速度斜坡。
- 輸入捕捉中斷處理程序:用于讀取兩個霍爾傳感器邊沿之間的時間 (處理速度傳感器的基本部分)。
- 周期中斷:用于定時調(diào)用速度控制器、速度斜坡和應(yīng)用狀態(tài)機。 PIT中斷在電機停止時禁用。
- 霍爾傳感器中斷:用于掃描霍爾傳感器的狀態(tài)以及換相過程。換相過程生成適當(dāng)?shù)膿Q相模式到六個柵極信號,而 PWM發(fā)生過程則為選定柵極輸出生成相應(yīng)的PWM 信號??墒褂萌粨Q相向量 “hall_status”從換相表中選擇換相模式。換相模式隨后將載入微控制器的寄存器中。
中斷安裝?
裸機版本與MQX版本的差別僅在于中斷安裝方法。我們這里僅僅介紹裸機版本中的安裝方法。
在裸機版本中,我們可以直接安裝中斷。您可以通過在NVICISER寄存器中設(shè)置正確位來輕松實現(xiàn)中斷??梢允褂眉拇嫫鱊VIC_IP配置中斷的優(yōu)先級。為了更好地理解,請看以下示例。
中斷安裝:
NVICICPR2 = 0x4800010; // 首先清除可能的掛起中斷
NVICISER2 = 0x4800010; // 啟用中斷
NVICICPR1 |= 0x80000000; // 首先清除可能的掛起中斷
NVICISER1 |= 0x80000000; // 啟用中斷
設(shè)置中斷的優(yōu)先級:
NVIC_IP(63) = 0x40; // 針對 FTM1 設(shè)置優(yōu)先級
NVIC_IP(68) = 0x50; // 針對 PIT0 設(shè)置優(yōu)先級
NVIC_IP(87) = 0x40; // 針對霍爾傳感器設(shè)置優(yōu)先級
NVIC_IP(90) = 0x40; // 針對霍爾傳感器設(shè)置優(yōu)先級
對外接口
本軟件除了可以通過FreeMASTER調(diào)試通信軟件來控制電機速度,還可以集成到一個完整的應(yīng)用中作為電機驅(qū)動來使用。要達到此目的,我們需要封裝三個對外接口API:
/************************************************************
* 函數(shù)名稱:Set_speed
* 參數(shù): 所需速度,帶符號短整型數(shù)據(jù)格式的輸入速度。輸入值以 RPM 為單位。
* 電機序號,此例僅有一個。
* 返回:void
* 描述:用于為每個電機輸入所需速度。
***********************************************************/
void Set_speed(signed short speed_input, int motor_number)
{ speed_req = INT16TOF32((speed_input*SPEED_TO_RPM_SCALE));}/*******************************************************
* 函數(shù)名稱:Get_speed
* 參數(shù):電機序號
* 返回:測得的速度
* 描述:用于獲取每個電機的速度(帶符號短整型數(shù)據(jù)格式).此值以 RPM 為單位。
******************************************************/
signed short Get_speed(int motor_number)
{signed long speed_temp;speed_temp = (speed_measured * MAX_SCALED_SPEED);return (speed_temp >> 15);
}/***************************************************
* 函數(shù)名稱:Get_status
* 參數(shù):無
* 返回:應(yīng)用狀態(tài)
* 0 — 處于空閑狀態(tài)
* 1 — 處于停止?fàn)顟B(tài)
* 2 — 處于正在運行狀態(tài)
**************************************************/
unsigned char Get_status(void)
{ return App_state; }
?十六宿舍 原創(chuàng)作品,轉(zhuǎn)載必須標(biāo)注原文鏈接。
?2023 Yang Li. All rights reserved.
歡迎關(guān)注?『十六宿舍』,大家喜歡的話,給個👍,更多關(guān)于嵌入式相關(guān)技術(shù)的內(nèi)容持續(xù)更新中。