陳國偉,丁學(xué)明
(上海理工大學(xué) 光電信息與計算機(jī)工程學(xué)院,上海 200093)
基于CAN總線的無刷直流電機(jī)控制系統(tǒng)設(shè)計
陳國偉,丁學(xué)明
(上海理工大學(xué) 光電信息與計算機(jī)工程學(xué)院,上海 200093)
傳統(tǒng)的無刷直流電機(jī)控制系統(tǒng)均是對單一的電機(jī)進(jìn)行控制,然而控制單一的電機(jī)工作效率低,無法滿足現(xiàn)代工業(yè)發(fā)展的需求。針對某些領(lǐng)域需要采用多電機(jī)進(jìn)行控制的情況,文中采用STM32與ISO 1050構(gòu)建多臺無刷直流電機(jī)CAN總線網(wǎng)絡(luò)方案。該方案通過采用方波控制無刷直流電機(jī),以及PI算法進(jìn)行限流從而實現(xiàn)系統(tǒng)穩(wěn)定工作。實驗結(jié)果表明,該控制系統(tǒng)能使多臺無刷直流電機(jī)工作在設(shè)定的轉(zhuǎn)速,控制誤差在5 r·min-1以內(nèi)。
CAN總線;無刷直流電機(jī);PI
無刷直流電機(jī)具有結(jié)構(gòu)簡單、調(diào)速性能好、功率密度大等特點,在工業(yè)、航空航天等領(lǐng)域得到了日益廣泛的應(yīng)用[1]。隨著現(xiàn)代工業(yè)的快速發(fā)展,單一的電機(jī)已經(jīng)無法滿足生產(chǎn)的需求,而需要多臺電機(jī)進(jìn)行配合。目前,多電機(jī)控制系統(tǒng)大多數(shù)采用傳統(tǒng)的集散式控制系統(tǒng)(Distributed Control System,DCS)結(jié)構(gòu)。此類系統(tǒng)具有管理與控制分離的核心思想,但是其開放性低,信號傳輸方式非數(shù)字式,控制功能分散程度不夠?,F(xiàn)場總線控制系統(tǒng)(Fieldbus Control System,F(xiàn)CS)與傳統(tǒng)的集散式控制系統(tǒng)相比具有信號傳輸數(shù)據(jù)化,系統(tǒng)結(jié)構(gòu)徹底分散化,通信協(xié)議開放化等優(yōu)點。CAN(Control Area Network)即控制器局域網(wǎng)絡(luò),是一種高性能,高可靠性,易開發(fā)和低成本的現(xiàn)場總線,能有效支持分布控制及實時控制,并采用了帶優(yōu)先級的CSMA/CD協(xié)議對總線進(jìn)行仲裁[2]。文中提出一種基于CAN總線的無刷直流電機(jī)控制方案,采用隔離式CAN收發(fā)器和STM32構(gòu)建下位機(jī)CAN總線收發(fā)電路,上位機(jī)通過USB-CAN轉(zhuǎn)換器與下位機(jī)進(jìn)行通訊。利用STM32輸出PWM驅(qū)動三相全橋式驅(qū)動電路對無刷直流電機(jī)進(jìn)行控制,同時利用PI算法對系統(tǒng)電流進(jìn)行限制。通過這種方式可以實現(xiàn)對多臺無刷直流電機(jī)穩(wěn)定運轉(zhuǎn)和實時控制。
基于CAN總線的多電機(jī)控制系統(tǒng)由上位機(jī)監(jiān)控計算機(jī)、USB- CAN轉(zhuǎn)換器、CAN總線收發(fā)器、電機(jī)驅(qū)動器和無刷直流電機(jī)組成。上位機(jī)的USB接口與USB-CAN轉(zhuǎn)換器連接,電機(jī)控制器通過CAN總線收發(fā)器與USB-CAN轉(zhuǎn)換器構(gòu)成總線各節(jié)點,通過雙絞線組成總線型拓?fù)渚W(wǎng)絡(luò),如圖1所示。
通過設(shè)置電機(jī)控制器中帶CAN控制器的STM32,使電機(jī)控制器可通過CAN總線收發(fā)器實現(xiàn)對CAN總線通信信號的接收和發(fā)送。USB-CAN轉(zhuǎn)換器將上位機(jī)輸出的USB信號轉(zhuǎn)換為CAN總線通信信號,信號通過CAN總線傳輸,以實現(xiàn)上位機(jī)與各個基于CAN總線的電機(jī)控制器之間進(jìn)行通信。
圖1 系統(tǒng)整體設(shè)計結(jié)構(gòu)
2.1 CAN總線接口電路
STM32自帶的是bxCAN,即基本擴(kuò)展CAN(Basic Extended CAN),其支持CAN協(xié)議2.0A和2.0B[3-4]。因此可利用CAN總線收發(fā)芯片ISO1050設(shè)計STM32的CAN總線接口。將STM32 CAN_RX引腳和CAN_TX引腳與ISO1050的RXD引腳和TXD引腳相連。為了實現(xiàn)真正意義上完全的電氣隔離,ISO 1050的Vcc1和Vcc2必須通過DC-DC模塊或是帶有多個隔離輸出的開關(guān)電源模塊進(jìn)行隔離。為防止過流沖擊,ISO 1050的CANH和CANL引腳上各連接一個5.1 Ω的電阻連接到總線上。并在CANH引腳和CANL引腳與地之間并聯(lián)2個瞬態(tài)電壓抑制二極管,可起到發(fā)生瞬變干擾時的保護(hù)作用[5]。另外在CANH和CANL端有一個120 Ω的終端電阻,來做阻抗匹配,以減少回波反射[6]。通過CANH和CANL同外部的CAN總線連接,具體接口電路如圖2所示。
圖2 ISO1050接口電路
2.2 無刷直流電機(jī)驅(qū)動電路
為了使無刷直流電機(jī)轉(zhuǎn)子旋轉(zhuǎn)起來,必須使定子電樞各相繞組不斷的依次換相通電。系統(tǒng)中采用的無刷直流電機(jī),其霍爾式位置傳感器的安裝位置間隔120°。BLDC換相電路中開關(guān)管采用兩兩導(dǎo)通的方式,每次使不同橋臂的上下開關(guān)器件同時導(dǎo)通[7]。共有6種狀態(tài),每隔60°改變一次導(dǎo)通狀態(tài),每次改變僅切換一個開關(guān)管,每個開關(guān)管連續(xù)導(dǎo)通120°。
無刷直流電機(jī)A相驅(qū)動電路如圖3所示,采用美國IR公司推出的IR2110高壓浮動驅(qū)動集成模塊,用于驅(qū)動大功率MOSFET和IGBT。由于IR2110允許驅(qū)動信號的電壓上升率達(dá)±500 V/μs,大幅減少了功率開關(guān)器件的損耗。此外IR2110采用自舉法實現(xiàn)高壓浮動?xùn)艠O雙通道驅(qū)動,當(dāng)Q4導(dǎo)通期間將VS的電位拉低到地,VCC通過自舉二極管D3給自舉電容C14充電,通過電容C14在VB和VS之間形成一個懸浮電源給上橋臂開關(guān)器件Q3供電[8]。因此可驅(qū)動500 V以內(nèi)的同一橋臂的上下兩個開關(guān)管。
IR2110的HIN和LIN為BLDC換相電路中同一橋臂上下兩個功率MOSFET的驅(qū)動脈沖信號輸入端,分別引腳接STM32的PA8和PB13。SD引腳為保護(hù)信號輸入端,當(dāng)此引腳接地時,IR2110的輸出引腳HO和HL信號跟隨HIN和LIN而變化。
圖3 無刷直流電機(jī)A相驅(qū)動電路
2.3 電機(jī)過流保護(hù)電路
無刷直流電機(jī)在帶負(fù)載運轉(zhuǎn)時,電機(jī)電樞中的電流會隨著負(fù)載的增大而增大。若電機(jī)控制器中沒有電流進(jìn)行限流處理,當(dāng)負(fù)載增加到一定程度,母線中電流值就會超過控制器的耐流值,從而燒毀控制器。因此電機(jī)控制器中需要加入過流保護(hù)電路,如圖4所示。
圖4 電機(jī)過流保護(hù)電路
過流保護(hù)電路中采用LM358雙運算放大器,電流流過兩個并聯(lián)的0.025 采樣電阻,在兩個并聯(lián)電阻上產(chǎn)生電壓差[9]。此電壓經(jīng)過運算發(fā)大電路后送入PA2引腳,經(jīng)過ADC轉(zhuǎn)換成數(shù)字信號。通過判斷輸入數(shù)字信號的大小可判斷出電流是否過流,若電流過流,通過微處理器STM32中的限流算法程序?qū)δ妇€電流進(jìn)行限制,在無刷直流電機(jī)帶負(fù)載運轉(zhuǎn)中,有效保護(hù)了電機(jī)和電機(jī)控制器。
3.1 CAN總線應(yīng)用層協(xié)議
在本系統(tǒng)中CAN總線采用的是自定義的應(yīng)用層協(xié)議,依據(jù)CAN協(xié)議2.0A作為協(xié)議的設(shè)計標(biāo)準(zhǔn)。報文的優(yōu)先級結(jié)合在11位標(biāo)識符中,具有最低二進(jìn)制的標(biāo)識符有最高的優(yōu)先級[10-11]。由于上位機(jī)可接收所有的信息,因此規(guī)定上位機(jī)主節(jié)點的標(biāo)識符為0。節(jié)點ID分配分配如表1所示。
表1 CAN節(jié)點ID分配表
通訊協(xié)議采用帶有數(shù)據(jù)的標(biāo)準(zhǔn)幀,上位機(jī)發(fā)送的控制命令幀使用數(shù)字域的4 Byte,下位機(jī)發(fā)送的電機(jī)狀態(tài)幀則用5 Byte。系統(tǒng)通訊的報文幀格式如表2和表3所示。
表2 上位機(jī)發(fā)送的控制命令格式
表3 下位機(jī)發(fā)送的電機(jī)狀態(tài)格式
3.2 脈寬調(diào)制技術(shù)調(diào)壓
無刷電機(jī)的電動勢平衡方程為
U=E+Iacpracp+ΔU
(1)
式中,U為電源電壓(V);E電樞反電動勢(V);Iacp為平均電流(A);racp為電樞繞組平均電阻(Ω);ΔU是功率管的飽和壓降(V)。
電樞的反電動勢可表示為
E=Ken
(2)
式中,n為電機(jī)轉(zhuǎn)速(r/min);Ke為反電動勢常數(shù)。
由式(1)和式(2)可得
可見,在忽略電樞電阻和開關(guān)管的壓降下,無刷電機(jī)的轉(zhuǎn)速僅與電樞電壓及磁場強(qiáng)度有關(guān)。
常用的調(diào)壓調(diào)速方法是脈寬調(diào)制技術(shù),換相電路一方面收到霍爾位置傳感器的控制,另一方面功率器件的導(dǎo)通時間受到占空比的影響,從而實現(xiàn)輸出電壓的改變[12]。
下位機(jī)通過程序設(shè)計,使上橋臂的3個開關(guān)管對應(yīng)的STM32輸出引腳輸出PWM,另一個配對的開關(guān)管所對應(yīng)的引腳輸出高電平。通過調(diào)節(jié)上橋臂PWM占空比相當(dāng)于改變施加電壓來控制電機(jī)轉(zhuǎn)速[13]。
3.3 PI限流算法
過流保護(hù)電路中采樣的電流,要經(jīng)過PI計算,對系統(tǒng)電流進(jìn)行限制,才能對電機(jī)和控制器起到過流保護(hù)的作用。
離散的PI表達(dá)式為[14]
式中,u(k)為第k個時刻的控制輸出;e(k)為第k個時刻的偏差;KP為比例增益;KI為積分增益。
偏差值等于設(shè)置的限流值減去采樣的電流值,當(dāng)偏差值>0,此時無需進(jìn)行限流,快速消除積分作用。只有當(dāng)偏差值<0時,積分才起作用,將電流迅速降低到限制電流以下。
3.4 系統(tǒng)工作流程
系統(tǒng)開啟后,對各個模塊進(jìn)行初始化,包括設(shè)置250 的CAN總線波特率,工作模式采用普通模式。初始化電機(jī)控制器的各個輸入輸出口,以及配置ADC對電流進(jìn)行采樣。如圖5(a)所示,系統(tǒng)初始化完成后定時通過CAN總線發(fā)送電機(jī)狀態(tài)給上位機(jī),進(jìn)入中斷等待。
圖5 系統(tǒng)程序流程圖
控制器采用CAN總線中斷服務(wù)函數(shù)來處理CAN節(jié)點接收到的信息,流程如圖5(b)所示。當(dāng)接收到上位機(jī)通過CAN總線發(fā)送的控制命令后,根據(jù)控制命令格式,提取解析命令數(shù)據(jù)并存放在變量中。
在定時中段中,對電流進(jìn)行采樣,通過PI算法進(jìn)行限流,然后調(diào)用PWM換相調(diào)壓子程序輸出電壓量驅(qū)動無刷直流電機(jī)。定時中斷流程如圖5(c)所示。
實驗主要對系統(tǒng)的工作狀況進(jìn)行測試。主要測試系統(tǒng)CAN總線通信的可靠性和穩(wěn)定性,即通過CAN總線能夠快速給多臺電機(jī)設(shè)定轉(zhuǎn)速,并與實際轉(zhuǎn)速的誤差較小。
測試方法:系統(tǒng)通過CAN總線通信對3臺無刷直流電機(jī)進(jìn)行監(jiān)控。首先選擇1號電機(jī)進(jìn)行單電機(jī)控制,通過CAN總線給1號無刷直流電機(jī)設(shè)定轉(zhuǎn)速為690 r/min和正轉(zhuǎn)方向,電機(jī)轉(zhuǎn)速變化曲線如圖6所示。
圖6 單電機(jī)轉(zhuǎn)速變化曲線
然后選擇1、2、3號電機(jī)進(jìn)行多電機(jī)控制,通過CAN總線分別對3臺無刷直流電機(jī)進(jìn)行轉(zhuǎn)速和方向進(jìn)行設(shè)定。1號電機(jī)轉(zhuǎn)速1 480 r·min-1、2號電機(jī)2 140 r·min-1、3號電機(jī)960 r·min-1。電機(jī)轉(zhuǎn)速變化曲線如圖7所示。1號電機(jī)轉(zhuǎn)速數(shù)據(jù)點標(biāo)記為三角形,2號電機(jī)轉(zhuǎn)速數(shù)據(jù)點標(biāo)記為圓形,3號電機(jī)轉(zhuǎn)速數(shù)據(jù)點標(biāo)記為正方形。
圖7 多電機(jī)轉(zhuǎn)速變化曲線
對實驗進(jìn)行分析,通過CAN總線無論是對單電機(jī)控制,還是對多電機(jī)控制,都能快速的對其轉(zhuǎn)速和轉(zhuǎn)向進(jìn)行設(shè)置,并可達(dá)到設(shè)定轉(zhuǎn)速的要求,誤差范圍在5 r/min,在合理范圍之內(nèi)。系統(tǒng)運行時的電流也滿足預(yù)期要求。
本文從硬件結(jié)構(gòu)和軟件電機(jī)算法控制上介紹了一種基于CAN總線的無刷直流電機(jī)控制系統(tǒng)。系統(tǒng)可同時快速的控制多臺無刷直流電機(jī)進(jìn)行穩(wěn)定可靠運轉(zhuǎn),經(jīng)測試轉(zhuǎn)速誤差在5 r·min-1。在實際應(yīng)用中,對
系統(tǒng)電流進(jìn)行限流處理,保證無刷直流電機(jī)在帶負(fù)載運行時,系統(tǒng)各個模塊能夠穩(wěn)定的工作。因此該系統(tǒng)可應(yīng)用于需要多電機(jī)控制的領(lǐng)域。
[1] 安群濤,孫立志,劉超,等.無刷直流電機(jī)的磁鏈自控直接轉(zhuǎn)矩控制[J].中國電機(jī)工程學(xué)報,2010,30(12):86-92.
[2] 王平,江華麗,何花.基于單片機(jī)的CAN總線通訊應(yīng)用設(shè)計[J].電子測量技術(shù),2009,32(9):131-135.
[3] 張河新,王曉輝,黃曉東.基于STM32和CAN總線的智能數(shù)據(jù)采集節(jié)點設(shè)計[J].化工自動化及儀表,2012,39(1):78-80.
[4] 金兆楠.基于STM32F107微處理器的CAN總線的智能節(jié)點的設(shè)計[J].可編程控制器與工廠自動化,2015(1):72-74.
[5] 王英志,楊佳,韓太林.基于STM32的RS232-CAN通信協(xié)議轉(zhuǎn)換器設(shè)計[J].制造業(yè)自動化,2013(14):141-143.
[6] 牟笑明,宋茂忠.MCP2515在ATmega16單片機(jī)CAN總線擴(kuò)展中的應(yīng)用[J].電子技術(shù)與軟件工程,2014(14):268-271.
[7] 夏長亮,方紅偉.永磁無刷直流電機(jī)及其控制[J].電工技術(shù)學(xué)報,2012,27(3):25-34.
[8] 張小鳴,盧方民.基于IR2110的H橋可逆PWM驅(qū)動電路應(yīng)用[J].常州大學(xué)學(xué)報:自然科學(xué)版,2012,24(4):68-72.
[9] 袁題訓(xùn),董升亮,耿丙群,等.無刷直流電機(jī)的保護(hù)電路[J].現(xiàn)代電子技術(shù),2011,34(24):41-44.
[10] 王邦繼,劉慶想,李相強(qiáng),等.CAN總線應(yīng)用層協(xié)議的研究與實現(xiàn)[J].計算機(jī)工程與應(yīng)用,2011,47(20):14-16.
[11] 張宏偉,王樹新,楊曉華,等.基于CAN總線的自治水下機(jī)器人控制系統(tǒng)[J].機(jī)器人,2006,28(4):448-452.
[12] 江皓,杜鵬英,任國海.模塊化的無刷直流電機(jī)PWM調(diào)速實驗系統(tǒng)[J].實驗技術(shù)與管理,2007,24(9):53-56.
[13] 李家慶,李芳,葉文.無刷直流電機(jī)控制應(yīng)用-基于STM8S系列單片機(jī)[M].北京:北京航空航天大學(xué)出版社,2014.
[14] 張紅濤,閆林,徐曉輝,等.基于單片機(jī)PID算法的無刷直流電機(jī)控制系統(tǒng)的研究[J].現(xiàn)代電子技術(shù),2007,30(10):52-54.
Design of BLDCMotor Control System Based on CAN Bus
CHEN Guowei,DING Xueming
(School of Optical-Electrical and Computer Engineering, University of Shanghai for Science and Technology, Shanghai 200093, China)
Traditionalbrushless dc motor control system is to control a single motor, its low working efficiency, however,cannot meet the needs of modern industrial development.Aiming at some fields which need to control multiple motors,a kind ofmany sets of brushless dc motorCAN bus networkbases on STM32 and ISO1050 was designed.We take advantage of square-wave to control the brushless dc motor and use PI algorithm to limit the current so as to realize system stable work. The experimental results show that the speed of many sets of brushless dc motor can be kept at the set speed in the system with a control precision of within 5 r·min-1.
CAN bus; BLDC; PI
2016- 04- 23
陳國偉(1990-),男,碩士研究生。研究方向:無刷直流電機(jī)控制。
10.16180/j.cnki.issn1007-7820.2017.03.042
TP368.1
A
1007-7820(2017)03-153-04