東北石油大學(xué)電子科學(xué)學(xué)院 羅浩文 劉 鑫 張 欣 邢志方 韓 建
近年來,無刷直流電機(jī)在機(jī)械控制、自動(dòng)化、汽車以及航空航天等領(lǐng)域的應(yīng)用十分廣泛。無刷直流電機(jī)不僅具有傳統(tǒng)直流電機(jī)的優(yōu)點(diǎn),還可以低速大功率運(yùn)行。無論是驅(qū)動(dòng)航模高速螺旋槳還是機(jī)械的精確定位,其都可以通過SVPWM算法得到優(yōu)良的控制效果。
SVPWM的控制效果不僅與軟件相關(guān),硬件的設(shè)計(jì)更是影響控制效果的一大重要因素。硬件電路由單片機(jī)及外圍電路、電機(jī)驅(qū)動(dòng)電路、電流檢測電路、反電動(dòng)勢過零電路四部分構(gòu)成,軟件部分是通過STM32F103C8T6對(duì)電流、反電動(dòng)勢的參數(shù)進(jìn)行采集并完成SVPWM計(jì)算與輸出,最終實(shí)現(xiàn)無刷直流電機(jī)控制。
整個(gè)裝置由單片機(jī)及外圍電路、電機(jī)驅(qū)動(dòng)電路、電流檢測電路、反電動(dòng)勢檢測電路四部分構(gòu)成,單片機(jī)利用電流檢測電路、反電動(dòng)勢檢測電路確定電機(jī)當(dāng)前相位并輸出相應(yīng)相位PWM波形,電機(jī)驅(qū)動(dòng)電路用于對(duì)電機(jī)不同相位進(jìn)行電壓切換,其整體框圖如圖1所示。
圖1 電路設(shè)計(jì)總體框圖
為了簡化電路結(jié)構(gòu)和降低成本,在不增加傳感器的情況下,本電路利用無刷直流電機(jī)未供電相線的反電動(dòng)勢對(duì)轉(zhuǎn)子所處相位進(jìn)行位置檢測[1]。選擇STM32F103C8T6單片機(jī)為電路的核心控制器,其內(nèi)部集成了該電路控制所需的ADC模數(shù)轉(zhuǎn)換模塊、DMA直接數(shù)據(jù)存取模塊、TIM定時(shí)器模塊、PWM脈寬調(diào)制模塊,在提升控制性能的同時(shí)極大的簡化了電路結(jié)構(gòu)。
硬件電路由單片機(jī)及外圍電路、電機(jī)驅(qū)動(dòng)電路、電流檢測電路、反電動(dòng)勢檢測電路四部分構(gòu)成。單片機(jī)及外圍電路完成整個(gè)電路的控制,電機(jī)驅(qū)動(dòng)電路輸出三相電流對(duì)無刷直流電機(jī)驅(qū)動(dòng),電流檢測、反電動(dòng)勢檢測完成電機(jī)電流及相位的檢測。
控制電路采用ST公司的32位微處理器STM32F103C8T6為核心控制芯片,其內(nèi)核為ARM Cortex-M3系列。該系列的單片機(jī)低工作電壓,時(shí)鐘主頻高高達(dá)72MHz以及內(nèi)置硬件12位精度ADC、PWM等電路。該電路為單片機(jī)工作的基礎(chǔ)電路。單片機(jī)由3.3V電源供電,復(fù)位電路采用RC充放電電路,采用8MHz的無源晶振作為時(shí)鐘輸入。采用第10~14腳作為ADC0~ADC4輸入,第16~18腳作為3路PWM輸出,第19~21作為驅(qū)動(dòng)電路的輸出使能控制IO口。
無刷直流電機(jī)驅(qū)動(dòng)電路采用了德州儀器的DVR8313集成驅(qū)動(dòng)電路,該電路集成了無刷直流電機(jī)驅(qū)動(dòng)所需的3個(gè)半橋驅(qū)動(dòng)電路。它主要用于驅(qū)動(dòng)一個(gè)三相無刷直流電機(jī)。每個(gè)輸出驅(qū)動(dòng)器通道包含采用半H橋配置的N通道MOSFET,在半H橋的每個(gè)通道上提供高達(dá)2.5A峰值電流或者1.75A均方根輸出電流,供電電壓范圍為8V至60V。除此之外,該集成驅(qū)動(dòng)電路還實(shí)現(xiàn)了短路保護(hù)、欠壓閉鎖、過流保護(hù)和過溫保護(hù)。因此,驅(qū)動(dòng)電路可以適用于大多數(shù)無刷直流電機(jī)驅(qū)動(dòng)情況。該驅(qū)動(dòng)電路只需要幾個(gè)外圍元件即可工作,驅(qū)動(dòng)電路如圖2所示。軟件控制也十分簡單通過3個(gè)IO口控制輸出使能,在利用3路PWM控制各相輸出。
圖2 電機(jī)驅(qū)動(dòng)電路
電流檢測電路采用大功率的高精密采樣電阻,電阻值為1歐,采樣電路如圖3所示[4]。當(dāng)電機(jī)轉(zhuǎn)動(dòng)時(shí),流過電機(jī)的電流會(huì)經(jīng)由R2到GND,此時(shí)會(huì)在R2上產(chǎn)生一個(gè)分壓。利用STM32內(nèi)部ADC通過電阻R1與電容C5構(gòu)成一個(gè)一階低通濾波器對(duì)電壓采集,程序中通過換算得到電流值。將電路的CURRENT連接與驅(qū)動(dòng)電路的下半橋即驅(qū)動(dòng)電路的PGND,將ADC_IN連接于STM32單片機(jī)的模數(shù)轉(zhuǎn)換通道ADC0。
圖3 電流檢測電路
反電動(dòng)勢檢測,需要不停比較中點(diǎn)電壓和A相、B相、C相三個(gè)端點(diǎn)的電壓,以截獲每相感生電動(dòng)勢的過零事件。由于這三個(gè)過零事件產(chǎn)生的時(shí)間不同,如果能在比較器的輸入端不斷地切換這三個(gè)端點(diǎn)電壓,那其實(shí)只要復(fù)用一個(gè)比較器就可以了[3]。STM32單片機(jī)具備多個(gè)模擬量輸入通道,并且具備掃描模式,可以自動(dòng)連續(xù)掃描采集各通道的電壓值。
反電動(dòng)勢檢測電路如圖4所示[4],將OUTA、OUTB、OUTC連接與驅(qū)動(dòng)電路與電機(jī)三相線的結(jié)點(diǎn)處,BEF_A、BEF_B、BEF_C、NEUTRAL分別與STM32單片機(jī)的模數(shù)轉(zhuǎn)換通道ADC1~ADC4。當(dāng)電機(jī)轉(zhuǎn)動(dòng)時(shí),未通電的相線的反電動(dòng)勢會(huì)在通過該電路的作用產(chǎn)生模擬的電壓過零跳變,通過該過零跳變確定當(dāng)前電機(jī)轉(zhuǎn)子位置,并以此為依據(jù)計(jì)算合理的電機(jī)換相時(shí)間。
圖4 反電動(dòng)勢過零檢測電路
軟件利用MDK-RAM軟件編寫,利用STM32內(nèi)部ADC實(shí)現(xiàn)電流檢測和反電動(dòng)勢過零檢測,最終達(dá)到電機(jī)轉(zhuǎn)子位置檢測。利用TIM觸發(fā)ADC定時(shí)采樣和PWM的時(shí)鐘頻率。通過配置PWM完成3路PWM輸出。DMA則用于ADC采樣數(shù)據(jù)的直接數(shù)據(jù)存取。
SVPWM是一種新型控制方法,利用驅(qū)動(dòng)電路的功率元件實(shí)現(xiàn)三相脈寬調(diào)制波驅(qū)動(dòng)無刷直流電機(jī)。其原理是利用兩個(gè)非零電壓矢量和一個(gè)零電壓矢量在時(shí)間上的組合來得到空間中的合成電壓矢量,使電壓矢量在空間中接近圓形旋轉(zhuǎn)。
設(shè)相電壓有效值為U為相電壓的有效值,則:
其中,,則三相電壓空間矢量相加合成空間矢量U(t)就可表示為:
空間電壓矢量由兩個(gè)相鄰的非零電壓矢量Ux、Uy和零電壓矢量U0來進(jìn)行合成,設(shè)Tx、Ty、T0為個(gè)電壓矢量作用時(shí)間,則其合成可等效為:
設(shè)三相電壓合成的旋轉(zhuǎn)電壓矢量旋轉(zhuǎn)角速度為,則電壓矢量旋轉(zhuǎn)一周的時(shí)間:
若PWM頻率為fs,則PWM和電壓旋轉(zhuǎn)矢量的頻率比為:
R表示將電壓旋轉(zhuǎn)矢量切割成R個(gè)小分量,因此每一個(gè)小分量的角度:
以此便可求出每個(gè)分電壓矢量的作用時(shí)間??臻g中電壓矢量與開關(guān)狀態(tài)對(duì)應(yīng)關(guān)系如表1所示[3]:
表1 電壓矢量與開關(guān)狀態(tài)對(duì)應(yīng)關(guān)系
本驅(qū)動(dòng)電路利用了STM32單片機(jī)內(nèi)部的ADC、DMA、TIM、PWM模塊,因此上電后需對(duì)這些模塊進(jìn)行配置。ADC模塊配置成獨(dú)立模式、使能掃描通道、數(shù)據(jù)右對(duì)齊、TIM1觸發(fā)。將DMA模塊通道1使能,外設(shè)基地址為ADC基地址,內(nèi)存地址為ADC數(shù)據(jù)數(shù)組的首地址,開啟循環(huán)模式,接收一次數(shù)據(jù)目標(biāo)地址自動(dòng)加1。TIM則配置成需要的電機(jī)驅(qū)動(dòng)頻率,此處為16KHz。PWM配置成模式2,使能輸出、重裝,輸出極性設(shè)置為低電平。用到的使能I/O口配置成推挽模式50MHz輸出,其他復(fù)用IO口根據(jù)模塊需要配置成手冊(cè)要求的模式[4,5]。
將各個(gè)功能模塊配置完成后,在主程序中完成初始化并檢測,檢測成功后再向下執(zhí)行。剛開始時(shí),需軟件確定轉(zhuǎn)位置。其方法為先讓AB相線通電足夠長的時(shí)間,使轉(zhuǎn)子在AB位置定下來,并以此位置為其實(shí)位置進(jìn)行依次換相,每次換向時(shí)間縮短,直到反電動(dòng)勢穩(wěn)定。其換向時(shí)間可寫成Tn=An-1T1其中
電機(jī)啟動(dòng)完成后,反電動(dòng)勢趨于穩(wěn)定,此后利用反電動(dòng)勢過零信號(hào)完成電機(jī)的換向。每次檢測到了相線的反電動(dòng)勢過零事件,則重新計(jì)算SVPWM,配置PWM輸出寄存器完成PWM輸出更新。通過過流檢測檢測電機(jī)工作狀態(tài),防止電流過大或者短路。
本文采用STM32F103C8T6單片機(jī)作為主控芯片和DVR8313集成半橋驅(qū)動(dòng)芯片設(shè)計(jì)了一個(gè)無刷直流電機(jī)SVPWM驅(qū)動(dòng)電路,詳細(xì)的分析了電路的構(gòu)成和軟件的設(shè)計(jì)流程。測試結(jié)果表明,該電路驅(qū)動(dòng)電壓可達(dá)75V驅(qū)動(dòng)電流可達(dá)1.70A。在無傳感器反饋的情況下,可以非常精確的控制無刷電機(jī)位置,能夠滿足大多數(shù)無刷直流電機(jī)使用環(huán)境。
[1]郭浪千.無位置傳感器無刷直流電機(jī)SVPWM的研究與設(shè)計(jì)[D].中南林業(yè)科技大學(xué),2017.
[2]趙白鴿.基于線反電勢估算的無刷直流電機(jī)無傳感器控制方法研究[D].哈爾濱工業(yè)大學(xué),2017.
[3]黨璇.基于STM32的無刷直流電機(jī)控制系統(tǒng)研究[D].安徽工業(yè)大學(xué),2017.
[4]宋宏帥,王佐勛.基于SVPWM的永磁同步電機(jī)調(diào)速系統(tǒng)設(shè)計(jì)[J].齊魯工業(yè)大學(xué)學(xué)報(bào),2018,32(02):27-32.
[5]戚偉.基于ATmega8的無刷直流電機(jī)電調(diào)的設(shè)計(jì)[J].電子技術(shù)與軟件工程,2016(20):11-13.