你的位置:首頁 > 電源管理 > 正文

有關(guān)DC電機控制的軟件設(shè)計原則

發(fā)布時間:2014-09-30 責任編輯:echolady

【導(dǎo)讀】諸如玩具、復(fù)印機、工廠自動化、機器人技術(shù)、汽車系統(tǒng)、航空航天技術(shù)等應(yīng)用多是使用300W以下的電機來控制的。其中類似步進電機、DC電機以及無刷電機等小功率電機設(shè)備是應(yīng)用最廣泛的。電機產(chǎn)量與功率大小是成反比的關(guān)系。小功率電機設(shè)備的需求量要遠遠超過大功率電機設(shè)備?;陔姍C控制的DSP設(shè)計主要應(yīng)用于大型離線式電機,離線電機運行在110-480VAC和1/4-100HP,常見的離線電機主要有AC電機和無刷電機。文中詳細介紹了使用C8051F3xx MCU控制電機的軟件設(shè)計實例,從實例中可以分析出電機控制系統(tǒng)具有更高的復(fù)雜度,并且還要求額外特性。這些軟件應(yīng)用實例恰好能夠為電機驅(qū)動系統(tǒng)的開發(fā)做好鋪墊。
 
1、帶有軟反轉(zhuǎn)能力的DC電機
 
這個用于DC電機的軟件示例基于第二個示例,提供軟反轉(zhuǎn)能力。為了安全的反轉(zhuǎn)DC電機,我們需要判斷電機是否還處于運轉(zhuǎn)中。確定電機是否仍然處于旋轉(zhuǎn)狀態(tài)的簡單而有效方法是測量跨接在電機端子上的電壓差。ADC能夠被配置去測量模擬多路選擇器中的任意兩個輸入引腳上的差分電壓??删幊痰拇翱跈z測器也可以用于判斷差分電壓是否屬于預(yù)設(shè)極限。在這個示例軟件中,如果差分電機電壓在100ms內(nèi)保持在滿量程的3%以下,那么電機開始反轉(zhuǎn)。
 
帶有電壓感應(yīng)功能的DC電機驅(qū)動的硬件實現(xiàn)類似于在電機端子上分別添加兩個電阻分壓器,如圖1所示。

有關(guān)DC電機控制的軟件設(shè)計原則
圖1:帶有電壓感應(yīng)功能的DC電機驅(qū)動

主循環(huán)已經(jīng)被改進用來檢測電機是否停止。detectStop()函數(shù)首先配置ADC去測量差分電壓。ADC和窗口檢測器都適用于查詢模式。如果ADC值在預(yù)設(shè)窗口范圍內(nèi),那么計數(shù)器增加。使用實現(xiàn)10ms延遲的定時器T0設(shè)置采樣時間。任何在窗口之外的采樣值將重置計時器。退出while循環(huán)之前,它將使用10個連續(xù)的采樣值。返回到主循環(huán)之前,detectStop()函數(shù)將重新配置ADC去測量速度電位器。

2、帶反轉(zhuǎn)能力的DC電機
 
永磁DC電動機通常被用于需要反轉(zhuǎn)電機方向的應(yīng)用中。為了反轉(zhuǎn)旋轉(zhuǎn)方向,需要反轉(zhuǎn)電機上電壓的極性。這需要使用H橋。如圖3所示,H橋有4個晶體管。當在正方向驅(qū)動電機時,Q4打開,PWM信號應(yīng)用于晶體管Q1。在反方向上驅(qū)動電機,Q3打開,PWM信號應(yīng)用于晶體管Q2。在這個示例中,下部的晶體管被用于PWM速度控制,上部的晶體管被用于轉(zhuǎn)向。使用這種拓撲結(jié)構(gòu),可以在兩個方向上提供變速控制。
 
有關(guān)DC電機控制的軟件設(shè)計原則
圖2:DC電機全橋電路
 
在圖2中,N溝道功率MOSFET被用于低壓側(cè)晶體管,P溝道功率MOSFET被用于高壓側(cè)晶體管。對于驅(qū)動20V以下的DC電機來說,利用互補功率MOSFET是非常符合成本效益的。如圖2所示,低壓側(cè)門驅(qū)動器帶有反相器,而高壓側(cè)門驅(qū)動器沒有反相器。門驅(qū)動器極性被選擇以確保當端口引腳在弱上拉使能的復(fù)位配置模式下,功率晶體管處于關(guān)閉狀態(tài)。該示例軟件構(gòu)建在基本示例代碼上。主循環(huán)現(xiàn)在包括一個if語句檢查反轉(zhuǎn)開關(guān)SW1的狀態(tài)。當反轉(zhuǎn)按鍵被按下時,PWM禁止,同時所有P0輸出禁止。當按鍵釋放后,電機將反轉(zhuǎn)方向。
 
除了增加額外的推挽式輸出引腳配置之外,示例軟件中的初始化函數(shù)類似于示例1。調(diào)用reverse()函數(shù)反轉(zhuǎn)電機方向。標志位Fwd用于保存電機狀態(tài)。Fwd位被切換用于判斷哪些輸出需要激活。

反轉(zhuǎn)電機還存在一個潛在的問題。當反轉(zhuǎn)開關(guān)SW1被按下時,電機可能由于電機慣性而繼續(xù)旋轉(zhuǎn)一些時間。當電機正在轉(zhuǎn)動時,它將產(chǎn)生與電機速度成比例關(guān)系的反向電動勢。如果電機停止旋轉(zhuǎn)之前反向按鍵被釋放,電機反向電動勢將通過上部晶體管而短路,如下所述。
 
參考圖3,假設(shè)開始時Q4處于打開狀態(tài),電機正在正方向上旋轉(zhuǎn)。假設(shè)電機正在運行,并且反向電動勢大約為6V。現(xiàn)在反轉(zhuǎn)開關(guān)被按下,所有4個晶體管被關(guān)閉。電機右側(cè)將比左側(cè)高約6V。然后開關(guān)釋放,打開Q3。電機左側(cè)被上拉到電源電壓,電機的反向電動勢通過Q4的內(nèi)部二極管而短路。最終的結(jié)果是,電機停止,在電機機械慣性中儲存的所有能量被注入Q4。反轉(zhuǎn)過程中很容易損壞上部晶體管。在一些具有較大摩擦力負載的應(yīng)用中,一個固定延遲時間可以確保電機有足夠時間停止。而在其他應(yīng)用中,電機可能需要花費幾秒鐘才完全停止。這個問題的通用解決方案,如圖3所示。
 
有關(guān)DC電機控制的軟件設(shè)計原則
圖3:DC電機反轉(zhuǎn)危害
[page]

3、DC電機控制
 
DC電機在小功率電機中是最常見和最便宜的。在本文中,術(shù)語“DC電機”特指有刷換向永磁DC電機。DC電機的特性使得它成為變速系統(tǒng)中使用的最簡單電機。DC電機的轉(zhuǎn)矩—速度特性如圖4所示。DC電機的非負載速度與電機電源電壓成線性關(guān)系。驅(qū)動穩(wěn)定扭矩負載、線性負載或指數(shù)負載的DC電機的電壓—速度特性也是連續(xù)的、正斜率的和可預(yù)測的。因此,在大多數(shù)情況下使用開環(huán)控制是可行的。
 
有關(guān)DC電機控制的軟件設(shè)計原則
圖4:DC電機特性
 
簡單地改變通過電機的電壓,任何人都能夠控制電機的速度。PWM能夠用于改變電機供電電壓。加載到電機的平均電壓與PWM占空比成正比例關(guān)系(這里忽略電機自感和不連續(xù)運行導(dǎo)致的次要影響)。使用F3xx MCU提供簡單的DC電機速度控制的一個簡單的例子。在這個示例中使用ADC讀取電位器的位置信息,并且使用PCA 8位PWM模式輸出對應(yīng)的PWM信號。硬件配置如圖5所示。
 
有關(guān)DC電機控制的軟件設(shè)計原則
圖5:DC電機驅(qū)動電路

4、無刷DC電機控制
 
無刷DC(BLDC)電機擁有一些傳統(tǒng)有刷換向DC電機所沒有的優(yōu)勢。電子和傳感器有效地替代了電刷的角色,提供更長的壽命,減少維護操作,并且沒有電刷噪聲。正確整流的BLDC電機的扭矩—速度特性完全相同于如圖1所示的DC電機。
 
因此,無刷DC電機展現(xiàn)出與DC電機相同的滿足需求的品質(zhì),非常適用于變速控制。這個示例為使用霍爾效應(yīng)傳感器控制電機換向的BLDC提供簡單的開環(huán)控制。BLDC電機的速度使用簡單的電位器控制。在這種方式下的BLDC電機控制的特點類似于經(jīng)典DC電機控制示例。
 
這個示例的硬件實現(xiàn)如圖6所示。由于BLDC電機需要額外的輸出,因此推薦C8051F330這個MCU。如果應(yīng)用需要更多的存儲資源,C8051F336也是不錯的選擇,因為它有較大的16kB代碼存儲空間,并且代碼兼容C8051F330。電機由6個功率晶體管驅(qū)動,構(gòu)成三相橋式結(jié)構(gòu)。下部的晶體管Q1-3是N溝道功率MOSFET。上部的3個晶體管是P溝道功率MOSFET。這樣就簡化了門驅(qū)動器管理。此外,互補門驅(qū)動器的使用使得在默認狀態(tài)下功率晶體管處于關(guān)閉狀態(tài)。
 
 
有關(guān)DC電機控制的軟件設(shè)計原則
圖6:無刷電機自動控制
 
霍爾效應(yīng)傳感器有開集電極輸出,需要上拉電阻。檢查電機規(guī)格確?;魻栃?yīng)傳感器是適合配置的。開集電極輸出通常是3V兼容的。然而,霍爾效應(yīng)傳感器也需要一個偏置電源,通常需要超過3V。在大多數(shù)系統(tǒng)中,霍爾效應(yīng)傳感器能夠關(guān)閉電機電源電壓或者門驅(qū)動器電源電壓。
 
使用斷點調(diào)試軟件可能會將電機和MOSFET置于不良狀態(tài)。當MCU遇到一個斷點時,引腳被及時有效地凍結(jié),而且可以留下PWM輸出處于激活狀態(tài)。這里推薦的流程是在進行單步調(diào)試或者使用斷點之前,一直斷開電機電源連接。BLDC電機在跨越繞組時將會滿電壓失速。BLDC電機失速電流僅僅與繞組的內(nèi)阻相關(guān)。這很可能損壞功率MOSFET。

5、BLOD電機的軟件設(shè)計

BLDC電機示例軟件包含許多新的元素,如下所述。
 
PORT_Init()函數(shù)對交叉開關(guān)器和輸出引腳分配進行設(shè)置。額外的控制引腳為3相控制而設(shè)置為推挽式輸出,為讀取霍爾傳感器而設(shè)置為輸入。
 
可編程計數(shù)器陣列時基采用160ns,啟動計數(shù)器。然而,模塊0模式SFR沒有初始化為8位PWM。在霍爾效應(yīng)位置被確定之前,沒有電機驅(qū)動被啟動。
 
main()函數(shù)首先初始化相關(guān)資源,設(shè)置start標志位。主循環(huán)首先使用hallPosition()函數(shù)檢測霍爾效應(yīng)傳感器的位置。如果start標志位被設(shè)置或者霍爾位置已經(jīng)改變,電機通過調(diào)用commutate()函數(shù)進行換向。接下來,速度輸入被讀取,速度設(shè)置被寫入PWM輸出。
 
hallPosition()函數(shù)在錯誤狀態(tài)時返回0。這發(fā)生在霍爾效應(yīng)輸入全為高或全為低時。如果錯誤發(fā)生了,主循環(huán)通過調(diào)用coast()函數(shù)使所有輸出無效。起始位也在錯誤條件發(fā)生時置位,從而迫使換向發(fā)生在下一個合法的霍爾位置讀數(shù)時。
 
readHalls()函數(shù)在霍爾效應(yīng)輸入端口引腳上讀取并且去除霍爾效應(yīng)編碼抖動。該函數(shù)等待三個連續(xù)的相同的讀數(shù)。當霍爾編碼正在改變時,這種方式可以降低錯誤讀數(shù)的可能性。
 
hallPosition()首先通過上面描述的readHalls()函數(shù)讀取霍爾效應(yīng)編碼?;魻柧幋a模式被儲存在常量數(shù)組hallPattern[]中。為了匹配霍爾效應(yīng)編碼,一個帶有后遞減的單行for循環(huán)被用于尋找對應(yīng)的索引。hallPosition()函數(shù)如果發(fā)現(xiàn)一個匹配的模式,則返回1-6中的一個值。如果沒有發(fā)現(xiàn)匹配,hallPosition()函數(shù)返回0值。
 
commutate()函數(shù)用來在啟動時初始化輸出,當霍爾位置改變時改變輸出狀態(tài),并且在檢測到霍爾錯誤后重新啟動電機。commutate()函數(shù)首先禁止PWM和上部的晶體管。然后,它才使用從hallPosition()函數(shù)中獲得的索引。

結(jié)語:相對來說,整流模式以及霍爾效應(yīng)模式?jīng)]有統(tǒng)一標準,用戶只需要瀏覽電機制造商提供的數(shù)據(jù)手冊就可以核查這兩種模式,同時也可以適當?shù)母淖兓魻栃?yīng)模式與整流模式的位移和通信。

相關(guān)閱讀:

無傳感器BLOD電機控制走向低成本
國內(nèi)現(xiàn)行軌道交通安全系統(tǒng)驅(qū)動電機控制方案
電機控制實時性能與效率的智能優(yōu)化方案
要采購晶體么,點這里了解一下價格!
特別推薦
技術(shù)文章更多>>
技術(shù)白皮書下載更多>>
熱門搜索
?

關(guān)閉

?

關(guān)閉