熊 慧,李玉錕,尤一鳴
(天津工業(yè)大學(xué) 電氣工程與自動(dòng)化學(xué)院,天津 300160)
直流無刷電機(jī)中采用各種形式的位置傳感器,根據(jù)位置傳感器的信號控制直流無刷電機(jī)換相。但位置傳感器的存在限制了直流無刷電機(jī)在某些特定場合中的應(yīng)用,這主要體現(xiàn)在[1]:
(1)位置傳感器可能使電機(jī)系統(tǒng)的體積增大;
(2)位置傳感器使電機(jī)與控制系統(tǒng)之間導(dǎo)線增多,使系統(tǒng)容易受到外界干擾影響;
(3)位置傳感器在高溫、高壓和濕度較大等惡劣工況下運(yùn)行時(shí)靈敏度變差,系統(tǒng)運(yùn)行可靠性降低;
(4)位置傳感器對安裝精度要求較高,機(jī)械安裝偏差引起的換相不準(zhǔn)確直接影響電機(jī)的運(yùn)行性能。
因此無傳感器控制技術(shù)逐漸成為直流無刷電機(jī)的研究熱點(diǎn)之一,國內(nèi)外眾多學(xué)者對此已經(jīng)取得許多成果。此種方式省去了直流無刷電機(jī)的位置傳感器,通過檢測電機(jī)相關(guān)參數(shù)并經(jīng)過計(jì)算從而控制電機(jī)換相。無傳感器控制技術(shù)可以提高直流無刷電機(jī)運(yùn)行的可靠性,并減小電機(jī)的體積。依據(jù)檢測原理的不同,無傳感器控制技術(shù)包括反電勢法、磁鏈法、電感法等。本文采用的是利用A/D直接檢測的反電勢法。本文應(yīng)用的電機(jī)是三相橋式Y(jié)型接法的直流無刷電機(jī),換相方式為120°電角度兩兩導(dǎo)通換相。本文采用飛思卡爾公司生產(chǎn)的雙核單片機(jī)MC9S12XDG128作為微控制器。除主CPU外它還具備一個(gè)協(xié)處理XGATE,主要用來處理中斷,減輕了中斷對主CPU的占用,提升了系統(tǒng)的性能。
直流無刷反電勢控制是無傳感器控制中相對成熟的一種。這種方法需要測量直流無刷電機(jī)三相的反電勢,找到反電勢的過零點(diǎn),再延時(shí) 30°電角度換相,進(jìn)而控制電機(jī)正確換相。反電勢法包括多種檢測反電勢過零點(diǎn)的方法:端電壓檢測法、反電勢積分法、反電勢三次諧波法、續(xù)流二極管法和線反電勢法等。鑒于端電壓檢測法檢測方式簡單、控制方便等優(yōu)點(diǎn),本文采用此種方法。
直流無刷電機(jī)反電勢的過零點(diǎn)與換相時(shí)刻的關(guān)系如圖1所示。圖中eA、eB、eC為互差 120°電角度的三相梯形波反電勢,Q1~Q6為一個(gè)周期中的6個(gè)換相點(diǎn),分別滯后相應(yīng)反電勢過零點(diǎn)30°電角度。圖中陰影部分為電流導(dǎo)通區(qū),直線部分為反電勢。
直流無刷電機(jī)的數(shù)學(xué)模型為[1]:
式中:UAG、UBG、UCG為直流無刷電機(jī)三相的端電壓;UN為中性點(diǎn)電壓;L,M為繞組等效自感和互感;
圖1 反電勢的過零點(diǎn)與換相時(shí)刻的關(guān)系圖
當(dāng)AB兩相導(dǎo)通C相懸空時(shí),即A相上橋臂導(dǎo)通,B相下橋臂導(dǎo)通。由圖2可知此時(shí)電流由A相流入B相流出,C相不導(dǎo)通。此時(shí) iA=-iB=I,iC=0。設(shè)電源電壓為U,由于此刻A相上橋?qū)?,B相下橋?qū)?,則UAG=U,UBG=0。 將(1)式的 UAG、UBG相加,得 U=eA+eB+2UN,而 U=2UN。由上述推導(dǎo)可得A相和B相反電勢和電流的關(guān)系為:
圖2 直流無刷電機(jī)電流流向示意圖
將式(1)的 UAG、UBG相加,再將(2)式代入,得:
即中性點(diǎn)電壓為導(dǎo)通兩相端電壓和的一半。
由(4)式可知當(dāng)C相懸空時(shí)確定C相反電勢過零點(diǎn)的方法為:由單片機(jī)檢測A、B、C三相的端電壓,計(jì)算UCG和的值并進(jìn)行比較,當(dāng)兩者之差的絕對值小于事先設(shè)定的某一閾值時(shí),將此時(shí)刻作為C相反電勢的過零點(diǎn)。
同理,AC相導(dǎo)通、B相懸空時(shí),有
BC相導(dǎo)通、A相懸空時(shí),有
利用(4)、(5)和(6)三式可作為判斷 A、B、C 三相反電勢過零點(diǎn)的依據(jù)。
直流無刷電機(jī)的反電勢控制需要不停地檢測電機(jī)三相的端電壓,通過計(jì)算找到某一相過零點(diǎn)的時(shí)刻,所以要用到單片機(jī)上的三路A/D。另外,當(dāng)某一相的反電勢達(dá)到過零點(diǎn)時(shí)還需要延時(shí)30°電角度才能作為這一相的換相時(shí)刻,所以需要用到單片機(jī)上的定時(shí)器模塊。另外,為了能夠?qū)崿F(xiàn)對電機(jī)的調(diào)速,還要用到單片機(jī)上的PWM模塊。
為了保證直流無刷電機(jī)能正常運(yùn)行,電機(jī)上的三相電源要按一定順序切換。本文中用到的電機(jī)在正常情況下?lián)Q相順序?yàn)椋篈B-CB-CA-BA-BC-AC-AB。為了能夠更好地說明換相方法,下面舉一個(gè)例子,說明電機(jī)如何由CB通電狀態(tài)轉(zhuǎn)換到CA通電狀態(tài)。比如電機(jī)此刻已經(jīng)順利啟動(dòng),正常運(yùn)行,并且是AB兩相導(dǎo)通,當(dāng)程序檢測到需要切換到CB狀態(tài)后馬上改變相應(yīng)設(shè)置,轉(zhuǎn)換到CB狀態(tài),同時(shí)開始計(jì)時(shí),測量由狀態(tài)切換(AB-CB)時(shí)刻到A相端電壓到達(dá)中性點(diǎn)時(shí)刻的時(shí)間間隔。此時(shí)CB通電,A相懸空。程序不停地比較A相端電壓和(UC+UB)/2差值的絕對值是否小于事先設(shè)定好的閾值,小于閾值即A相反電勢過零。此時(shí)單片機(jī)讀取定時(shí)器的值,此值即為30°電角度的時(shí)間長度。再用定時(shí)器延時(shí)相等的時(shí)間,然后進(jìn)行換相,轉(zhuǎn)換到CA狀態(tài)。在程序中為每一個(gè)狀態(tài)都編寫了一段程序,各段程序均包括上述的比較懸空相和中性點(diǎn) UN的電壓、延時(shí) 30°電角度、狀態(tài)切換等內(nèi)容。狀態(tài)切換是按順序進(jìn)行的,保證換相正確。比如AB段程序完成后只能跳轉(zhuǎn)到CB段程序執(zhí)行。
直流無刷電機(jī)的反電勢控制的驅(qū)動(dòng)電路由IR2132和6個(gè)MOS管組成。IR2132S芯片是一種高電壓、高速度的功率MOSFET和IGBT驅(qū)動(dòng)集成IC,工作電壓為600 V,分別有3個(gè)獨(dú)立的高端和低端輸出通道。邏輯輸入與CMOS或TTL輸出兼容,最小可以達(dá)到2.5 V邏輯電壓。芯片的內(nèi)部設(shè)計(jì)有過流、欠電壓及邏輯錯(cuò)誤保護(hù)裝置,用戶可以方便地用來保護(hù)被驅(qū)動(dòng)的功率管。驅(qū)動(dòng)電路示意圖如圖3所示。雙核單片機(jī)的3路PWM通道接IR2132的 3路高輸入,3路 T口接 IR2132的 3路低輸入。IR2132的 6路輸出接 6個(gè) MOS管。Q4、Q6、Q2下端3個(gè)MOS管的S極與地之間接了一根康銅絲??点~絲上的電壓即為此刻流過MOS管的電流和康銅絲電阻的乘積,即UP。在驅(qū)動(dòng)板上將 UP接到IR2132的 ITRIP引腳上。如果驅(qū)動(dòng)電路出現(xiàn)了過流情況,那么UP(ITRIP輸入)會(huì)增大,一但超過0.5 V,IR2132芯片內(nèi)部的電流比較器就會(huì)產(chǎn)生信號,使 IR2132的6路輸出截止,使6個(gè) MOS管進(jìn)入關(guān)閉狀態(tài),實(shí)現(xiàn)對驅(qū)動(dòng)電路的保護(hù)。同時(shí)FAULT輸出一個(gè)低電平信號,利用此信號,單片機(jī)可以知道驅(qū)動(dòng)電路出現(xiàn)過流,從而將輸出信號關(guān)斷。
由于給直流無刷電機(jī)供電的電源電壓在12 V,所以電機(jī)的端電壓可能達(dá)到12 V左右。若通過單片機(jī)進(jìn)行端電壓的檢測還需要將端電壓進(jìn)行分壓。如圖4所示為直流無刷電機(jī)某一相端電壓檢測分壓電阻。通過分壓電阻后,向單片機(jī)AD通道輸入的信號可以控制在5 V之內(nèi)。
在使用雙核單片機(jī)之前需要對其進(jìn)行設(shè)置,除必要的初始化之外,還需將即將要用到的中斷交給協(xié)處理器XGATE處理。此設(shè)置包括兩部分,一是在主CPU中的設(shè)置,二是在協(xié)處理器中的設(shè)置。下面通過例子來說明。例如本文要用到定時(shí)器中斷。首先在程序起始位置聲明定時(shí)器中斷 #define mccnt_VEC 0xCA。0xCA是MCCNT中斷的向量地址。mccnt_VEC是主CPU響應(yīng)來自XGATE的中斷的中斷名。mccnt_VEC中斷程序位于主CPU程序段內(nèi)。在SetupXGATE函數(shù)里設(shè)定ROUTE_INTERRUPT(mccnt_VEC,0x81),用來寫中斷請求配置地址寄存器和中斷請求配置數(shù)據(jù)寄存器。再向協(xié)處理器的控制寄存器寫入0xFBc1來允許XGATE工作,允許其處理中斷。至此 SetupXGATE函數(shù)設(shè)定好了,只要在“main”函數(shù)里調(diào)用就可以了。在“main.c”文件的最后寫上主CPU響應(yīng)來自XGATE的中斷mccnt_VEC。在此中斷里不需要做任務(wù)事情,只要將由XGATAE置位的中斷標(biāo)志寄存器清零即可。
interrupt void mccnt_interrupt(void){XGIF1=0x0020; //中斷標(biāo)志寄存器清零}
當(dāng)然,在 “.prm”文件中還需要設(shè)定一下中斷向量VECTOR ADDRESS 0xFFCA mccnt_interrupt。至此主 CPU的設(shè)置工作完成。
在“xgate.cxgate”文件里首先要編寫定時(shí)器中斷程序interrupt void mccnt_Thread(){},mccnt_Thread 是 中 斷 名 。在XGATE_VectorTable的設(shè)定為{(XGATE_Function)mccnt_Thread,0x65}。至此主CPU和XGATE的設(shè)置全部完成,協(xié)處理器可以處理定時(shí)器中斷了。
直流無刷電機(jī)在靜止和低速的情況下反電勢難以檢測,此時(shí)利用反電勢確定轉(zhuǎn)子位置的方法失效。所以在起動(dòng)階段要用特殊的方法先使電機(jī)運(yùn)轉(zhuǎn)起來,待其到達(dá)到一定速度時(shí)再切換到反電勢檢測狀態(tài)。目前起動(dòng)方案主要有三段式起動(dòng)法、預(yù)定位起動(dòng)法、升頻升壓同步起動(dòng)法和短時(shí)檢測脈沖轉(zhuǎn)子定位起動(dòng)法[3]。本文采用的起動(dòng)方法為三段式起動(dòng)法。首先讓直流無刷電機(jī)的某兩相導(dǎo)通,使電機(jī)轉(zhuǎn)子轉(zhuǎn)到一個(gè)預(yù)定的位置,然后按照正確的順序換相,并控制換相時(shí)間,使電機(jī)轉(zhuǎn)速逐漸上升。當(dāng)電機(jī)速度達(dá)到一定程度后就可以切換到反電勢檢測階段,利用檢測到的反電勢控制電機(jī)正確換相。
本文應(yīng)用飛思卡爾公司生產(chǎn)的雙核單片機(jī)MC9S12XDG128,在直流無刷電機(jī)反電勢理論基礎(chǔ)上,實(shí)現(xiàn)了對一個(gè)直流無刷電機(jī)運(yùn)行控制。利用單片機(jī)三路AD通道和定時(shí)器模塊進(jìn)行反電勢的檢測,利用PWM模塊對電機(jī)進(jìn)行調(diào)速。三路AD通道和定時(shí)器模塊產(chǎn)生的中斷由協(xié)處理器XGATE處理,減輕了主CPU的負(fù)擔(dān),使其能更好地處理主函數(shù)的程序。用雙核單片機(jī)作為直流無刷電機(jī)的控制器,能夠更加準(zhǔn)確地找到反電勢的過零點(diǎn),更加準(zhǔn)確地進(jìn)行 30°電角度的延時(shí),從而達(dá)到更加理想的控制效果。經(jīng)實(shí)驗(yàn)證明,直流無刷電機(jī)能夠順利起動(dòng),并能連續(xù)平穩(wěn)運(yùn)行。
[1]夏長亮.無刷直流電機(jī)控制系統(tǒng)[M].北京:科學(xué)出版社,2009.
[2]邵貝貝,宮輝.嵌入式系統(tǒng)中的雙核技術(shù)[M].北京:北京航空航天大學(xué)出版社,2008.
[3]張玉峰.基于DSC的BLDCM無位置傳感器位置檢測方案研究[D].西安:西安科技大學(xué),2007.
[4]Freescale.9S12XDP512DGV2 Data Sheet.Rev.11.18.2004.
[5]Freescale.S12XGATEV2 Data Sheet.Rev.11.16.2004.