孟令偉,管德永,趙 剛,盧興華,萬(wàn)永樂(lè)
(山東科技大學(xué)交通學(xué)院,山東青島 266590)
隨著制造業(yè)和電子產(chǎn)業(yè)的發(fā)展,步進(jìn)電機(jī)的應(yīng)用領(lǐng)域越來(lái)越廣泛。步進(jìn)電機(jī)驅(qū)動(dòng)器是步進(jìn)電機(jī)控制系統(tǒng)中的重要部分,傳統(tǒng)的步進(jìn)電機(jī)驅(qū)動(dòng)器多采用DSP或?qū)S貌竭M(jìn)電機(jī)驅(qū)動(dòng)器芯片作為控制芯片,成本較高,且大多只能支持脈沖輸入或CAN總線通信。
眾多學(xué)者對(duì)步進(jìn)電機(jī)驅(qū)動(dòng)展開了不同方面的研究。周永明等基于DSP對(duì)兩相步進(jìn)電機(jī)細(xì)分驅(qū)動(dòng)器進(jìn)行了設(shè)計(jì)[1];馬秀娟等提出了基于FPGA的步進(jìn)電機(jī)控流細(xì)分驅(qū)動(dòng)系統(tǒng)[2];陳祖霖等提出了結(jié)合STM32和FPGA 的步進(jìn)電機(jī)運(yùn)動(dòng)控制系統(tǒng)[3],但DSP和FPGA開發(fā)難度大,成本高;陳向奎等提出了基于CAN總線步進(jìn)電機(jī)控制系統(tǒng)[4];廖平等提出了基于STM32多步進(jìn)電機(jī)驅(qū)動(dòng)控制系統(tǒng)[5];黃英等提出了基于PWM的汽車儀表步進(jìn)電機(jī)控制算法[6],但輸入方式單一,只支持CAN或PWM等通信形式中的一種,通用性差。
為此,基于ARM設(shè)計(jì)了一種具有多種輸入模式的步進(jìn)電機(jī)驅(qū)動(dòng)器,將控制器集成于驅(qū)動(dòng)器中,可同時(shí)支持單臺(tái)控制和組網(wǎng)控制。選用STM32F103C8T6微控制器作為控制芯片,支持串口、CAN、PWM脈沖信號(hào)輸入,并設(shè)計(jì)了上位機(jī)軟件,可以通過(guò)上位機(jī)軟件控制步進(jìn)電機(jī)的轉(zhuǎn)向、轉(zhuǎn)速和細(xì)分。系統(tǒng)具有多種輸入模式,通用性強(qiáng),且成本較低,能夠適用于多種工業(yè)應(yīng)用場(chǎng)合。
多輸入步進(jìn)電機(jī)驅(qū)動(dòng)器由STM32主控電路、電源電路、脈沖輸入電路、CAN通信電路、串口通信電路、反饋電路及H橋電路組成,其方案設(shè)計(jì)框圖如圖1所示。
圖1 多輸入步進(jìn)電機(jī)驅(qū)動(dòng)器方案設(shè)計(jì)框圖
來(lái)自工控機(jī)或控制器的外部控制信息由脈沖輸入電路、CAN通信電路或串口通信電路輸入驅(qū)動(dòng)器,STM32主控解析控制信息后通過(guò)PWM控制H橋,H橋輸出兩路相位差為90°的正弦波電壓。兩相四線步進(jìn)電機(jī)的理想電流波形為相位差90°的兩相電流,通過(guò)控制正弦波電壓的頻率和相位差控制步進(jìn)電機(jī)的轉(zhuǎn)速和轉(zhuǎn)向,同時(shí)反饋電路將步進(jìn)電機(jī)的相電流反饋到主控芯片,形成電流閉環(huán)控制。步進(jìn)電機(jī)驅(qū)動(dòng)器與外部設(shè)備連接圖如圖2所示。
圖2 步進(jìn)電機(jī)驅(qū)動(dòng)器連接圖
驅(qū)動(dòng)器主控芯片采用基于Cortex-M3內(nèi)核的STM32系列處理器,它為實(shí)現(xiàn)MCU的需要提供了低成本的平臺(tái)、減少的引腳數(shù)目、降低的系統(tǒng)功耗、改善的代碼密度、豐富的開發(fā)工具和先進(jìn)的中斷系統(tǒng)響應(yīng)等。STM32處理器使用了ARM V7-M體系結(jié)構(gòu),是一個(gè)通用性極強(qiáng)、高度可配置的處理器[7]。
STM32主控電路部分主要包含芯片、晶振電路、復(fù)位電路、BOOT電路,本設(shè)計(jì)中芯片采用STM32F103C8T6,芯片四周各外設(shè)1個(gè)去耦電容,用以濾除電源干擾;晶振電路采用8M外置石英晶振,用以提供準(zhǔn)確時(shí)序;BOOT電路設(shè)置為FLASH啟動(dòng),為此,將STM32的BOOT0引腳通過(guò)0 Ω電阻接地。主控電路結(jié)構(gòu)圖如圖3所示。
圖3 主控電路結(jié)構(gòu)圖
通信電路由串口電路、CAN收發(fā)器電路和脈沖輸入電路組成,接收來(lái)自外部控制器的控制信號(hào),可以支持3種信號(hào)形式的輸入,由主控判斷決定采用的信號(hào)形式。
串口通信物理層最少只需要3根線纜,工業(yè)中常用的串口形式有TTL、RS232、RS485、RS422。為提高驅(qū)動(dòng)器的通用性,采用TTL電平標(biāo)準(zhǔn),由TTL接口直接接到主控芯片,信號(hào)形式不同時(shí)可以通過(guò)外接模塊將TTL轉(zhuǎn)換為其他信號(hào)形式。STM32F103C8T6內(nèi)置3路串口,選用UART1作為TTL接口,圖4為串口接口圖。
圖4 串口接口圖
驅(qū)動(dòng)器支持使用CAN總線進(jìn)行控制,CAN總線可以有效降低智能控制系統(tǒng)中的數(shù)據(jù)流量和線路復(fù)雜程度,有利于精簡(jiǎn)系統(tǒng)結(jié)構(gòu),降低出錯(cuò)率[8]。CAN總線,支持多對(duì)多通信,可以在一條CAN總線上掛載多個(gè)設(shè)備,由仲裁機(jī)制決定數(shù)據(jù)流向。CAN控制器和總線之間電平標(biāo)準(zhǔn)不同,故采用MCP2551收發(fā)器芯片,將CAN控制器的邏輯電平轉(zhuǎn)換為CAN總線的差分電平,最高支持1 Mb/s的運(yùn)行速率,滿足ISO11898標(biāo)準(zhǔn)物理層要求,適合12 V和24 V系統(tǒng),自動(dòng)檢測(cè)TXD輸入端的接地錯(cuò)誤,上電復(fù)位和電壓事件欠壓保護(hù),可連接節(jié)點(diǎn)高達(dá)112個(gè),采用差分總線,具有很強(qiáng)的抗噪特性,溫度范圍為-40~85 ℃。STM32F103C8T6內(nèi)部配置有一路CAN控制器,芯片引腳輸入輸出為TTL形式的CAN信號(hào)CANRX和CANTX,由CAN收發(fā)器芯片轉(zhuǎn)換為差分信號(hào)CANH、CANL,電路如圖5所示。
圖5 CAN收發(fā)器電路
脈沖輸入電路采用ADUM1201AR作為隔離芯片,隔離外部脈沖信號(hào)輸入和驅(qū)動(dòng)器控制芯片。ADUM1201AR是具有雙通道的數(shù)字隔離器,能夠在驅(qū)動(dòng)板發(fā)生故障時(shí)防止外部控制器被來(lái)自驅(qū)動(dòng)板的反向電流燒毀。外部輸入有兩路信號(hào)PWMIN和GPIOEN,經(jīng)隔離芯片隔離后PWMINF和GPIOENF接入STM32的引腳。PWMIN是矩形波信號(hào),定義電機(jī)的轉(zhuǎn)速,GPIOEN是方向信號(hào),定義電機(jī)的轉(zhuǎn)向,隔離電路如圖6所示。
圖6 隔離電路
2.3.1 H橋驅(qū)動(dòng)電路
采用H橋驅(qū)動(dòng)電路作為電機(jī)驅(qū)動(dòng)電路,單個(gè)H橋電路可以驅(qū)動(dòng)一個(gè)直流電機(jī)實(shí)現(xiàn)正反轉(zhuǎn)和調(diào)速,驅(qū)動(dòng)器采用雙路H橋,用以驅(qū)動(dòng)一個(gè)兩相四線步進(jìn)電機(jī)。采用IR7843型N溝道MOS,最大柵-源電壓VGS MAX=20 V,最大漏-源電壓VDS MAX=30 V,最大瞬時(shí)電流100 A;采用IR2184S半橋驅(qū)動(dòng)芯片,可將0~3.3 V范圍的PWM脈沖轉(zhuǎn)換為幅值為12 V的矩形波信號(hào),將其輸出端連接至IR7843的柵極,可正常開啟關(guān)閉MOS管,IR2184S控制的半橋的MOS管始終一個(gè)處于導(dǎo)通狀態(tài),另一個(gè)處于關(guān)閉狀態(tài),由此2個(gè)半橋驅(qū)動(dòng)電路組成1個(gè)H橋驅(qū)動(dòng)電路,圖7為H橋驅(qū)動(dòng)電路示意圖。
圖7 H橋驅(qū)動(dòng)電路示意圖
2.3.2 電流反饋電路
為形成步進(jìn)電機(jī)相電流的閉環(huán)控制,需要實(shí)時(shí)采集步進(jìn)電機(jī)相電流。采用0.1 Ω采樣電阻串聯(lián)采集步進(jìn)電機(jī)相電流,使用LM358集成運(yùn)放將采樣電阻兩端的電壓放大3倍后輸出到STM32的ADC引腳,由歐姆定律計(jì)算出線圈的電流大小,進(jìn)而實(shí)現(xiàn)電流閉環(huán)控制。
STM32F103C8T6作為下位機(jī)主控,接收上位機(jī)發(fā)送的控制信息和采樣電阻處的電壓信息的同時(shí),輸出PWM信號(hào)到驅(qū)動(dòng)芯片,控制H橋輸出波形的頻率和幅值。
3.1.1 通信算法設(shè)計(jì)
串口通信和CAN總線都是嵌入式系統(tǒng)中常用的通信形式,由于不同的特性應(yīng)用于不同的場(chǎng)合,串口通信有多種信號(hào)形式,如RS232、RS485等,多用于一對(duì)一通信;使用CAN總線通信時(shí),總線上添加和減少設(shè)備時(shí),軟硬件和應(yīng)用層都無(wú)需修改,多用于組網(wǎng)控制。驅(qū)動(dòng)器和外部控制設(shè)備通信時(shí)需要滿足兩設(shè)備通信設(shè)置相同,如波特率、數(shù)據(jù)寬度等,同時(shí)兩者的信息格式需滿足自定義的通信協(xié)議。
驅(qū)動(dòng)器的串口設(shè)置為:波特率115 200 bit/s,8位數(shù)據(jù)位,無(wú)校驗(yàn)位,1位停止位,外部設(shè)備接入時(shí)需按照此設(shè)置配置串口。驅(qū)動(dòng)器內(nèi)部使用中斷接收串口數(shù)據(jù),每次進(jìn)入中斷接收1個(gè)字節(jié)數(shù)據(jù),接收一次完整的串口指令需7次進(jìn)入中斷,順序接收上位機(jī)的指令并存儲(chǔ)在數(shù)組ComRxBuffer中。其中ComRxBuffer[0]和ComRxBuffer[5-6]分別作為包頭包尾,ComRxBuffer[1]存儲(chǔ)數(shù)據(jù)方向信息,ComRxBuffer[2]存儲(chǔ)轉(zhuǎn)速信息,ComRxBuffer[3]存儲(chǔ)方向信息,ComRxBuffer[4]存儲(chǔ)細(xì)分?jǐn)?shù)。
CAN總線為多主方式工作,總線上任意一點(diǎn)在任意時(shí)刻都可以主動(dòng)向網(wǎng)絡(luò)上發(fā)送廣播信息,而不分主從[9]。驅(qū)動(dòng)器CAN總線接口設(shè)置波特率115 200 bit/s,外部設(shè)備需遵從此模式設(shè)置其波特率。CAN標(biāo)準(zhǔn)數(shù)據(jù)幀長(zhǎng)度為64 bits,除在CAN標(biāo)準(zhǔn)幀的仲裁域中有身份識(shí)別信息,在數(shù)據(jù)幀中定義電機(jī)轉(zhuǎn)向、細(xì)分?jǐn)?shù)和轉(zhuǎn)速。串口模式和CAN模式的通信協(xié)議見(jiàn)表1。
表1 通信協(xié)議
脈沖輸入模式下分為2種輸入模式,即脈寬調(diào)速模式和頻率調(diào)速模式,共用圖6中的輸入接口PWMIN和GPIOEN,驅(qū)動(dòng)器在脈沖輸入模式下通過(guò)撥碼開關(guān)選擇工作模式和細(xì)分?jǐn)?shù)。兩種模式的區(qū)別為PWMIN的信號(hào)參數(shù),脈寬調(diào)速模式下PWMIN的信號(hào)頻率不變,占空比為變量,隨目標(biāo)轉(zhuǎn)速變化而變化;頻率調(diào)速模式下PWMIN的信號(hào)占空比不變,頻率為變量,隨目標(biāo)轉(zhuǎn)速變化而變化。2種模式下,GPIOEN接口電平含義相同,高電平為逆時(shí)針旋轉(zhuǎn)信號(hào),低電平為順時(shí)針旋轉(zhuǎn)信號(hào)。
設(shè)置為脈寬調(diào)速模式時(shí),PWMIN輸入的為脈寬調(diào)制信號(hào),轉(zhuǎn)速大小與脈寬大小呈線性關(guān)系,脈寬越大轉(zhuǎn)速越高,轉(zhuǎn)速與脈寬滿足式(1):
v=k1·T
(1)
式中:v為轉(zhuǎn)速,r/min;k1為脈寬轉(zhuǎn)換系數(shù);T為脈寬。
驅(qū)動(dòng)器內(nèi)部采用定時(shí)器中斷采集脈寬信息,即矩形波上升沿時(shí)獲取時(shí)間T1,下降沿時(shí)獲取時(shí)間T2,采集到的脈寬T=T2-T1。
設(shè)置為頻率調(diào)速模式時(shí),PWMIN輸入為頻率調(diào)制信號(hào),轉(zhuǎn)速大小與頻率大小呈線性關(guān)系,頻率越高轉(zhuǎn)速越大,轉(zhuǎn)速與頻率滿足式(2):
v=k2·P
(2)
式中:k2為頻率轉(zhuǎn)換系數(shù);P為脈沖頻率,Hz。
驅(qū)動(dòng)器采用外部中斷采集頻率信息,采用下降沿觸發(fā),采集1 s內(nèi)進(jìn)入中斷的次數(shù)N,P=N。
3.1.2 細(xì)分驅(qū)動(dòng)算法設(shè)計(jì)
步進(jìn)電機(jī)是低速永磁同步電機(jī),它的轉(zhuǎn)子相當(dāng)于一個(gè)永磁鐵,對(duì)步進(jìn)電機(jī)的定子各相繞組按照特定的時(shí)序通以階躍式的電流,將產(chǎn)生一個(gè)步進(jìn)式旋轉(zhuǎn)的定子磁場(chǎng),從而帶動(dòng)轉(zhuǎn)子步進(jìn)式地旋轉(zhuǎn)[10]。雖然步進(jìn)電機(jī)擁有良好的開環(huán)特性,便于控制,但也同時(shí)存在低頻共振、噪音大的缺點(diǎn),采用細(xì)分驅(qū)動(dòng)技術(shù)能夠提高步距分辨率,同時(shí)降低運(yùn)行噪聲[11]。
細(xì)分技術(shù)能有效地提高步進(jìn)電機(jī)的運(yùn)行精度,抑制低頻共振。兩相四線步進(jìn)電機(jī)理想的電流波形為2個(gè)相位差為90°的正弦波,如圖8所示。
圖8 理想電流波形
實(shí)際使用時(shí)驅(qū)動(dòng)電路很難生成理想波形,故常用多細(xì)分的階梯波來(lái)代替正弦波,如圖9所示。
圖9 實(shí)際電流波形
不使用細(xì)分算法的兩相步進(jìn)電機(jī)多采用兩相四拍運(yùn)行方式,細(xì)分實(shí)際是將四拍中的每一拍分成多步來(lái)實(shí)現(xiàn),將矩形波變?yōu)殡A梯變化的模擬正弦波,每一拍中的階梯數(shù)稱為細(xì)分?jǐn)?shù)。使用STM32進(jìn)行控制時(shí),階梯波通過(guò)PWM信號(hào)來(lái)控制實(shí)現(xiàn),通過(guò)PWM控制H橋輸出端的電壓呈階梯狀變化,進(jìn)而實(shí)現(xiàn)電流階梯狀變化。
MCU根據(jù)接收到的信息控制產(chǎn)生特定占空比和頻率的PWM信號(hào),PWM本身的信號(hào)頻率不需要變化,將其設(shè)定為10 kHz,但是需要通過(guò)調(diào)整改變占空比的頻率來(lái)實(shí)現(xiàn)調(diào)速,占空比根據(jù)式(3)和式(4)變化。
(3)
(4)
式中:PWM為最大占空比;PWMA為A相線圈的占空比;PWMB為B相線圈的占空比;i為循環(huán)變量;j為細(xì)分?jǐn)?shù)。
STM32F103C8T6內(nèi)部有時(shí)鐘TIM1~TIM4,本設(shè)計(jì)選用TIM2作為PWM輸出口。針對(duì)50齒,步距角為1.8°的步進(jìn)電機(jī),轉(zhuǎn)動(dòng)1圈的時(shí)間T計(jì)算為
T=4N·j·Tstep
(5)
式中:N為步進(jìn)電機(jī)齒數(shù);Tstep為每一細(xì)分階梯的時(shí)間。
經(jīng)過(guò)換算,在rate(r/min)轉(zhuǎn)速、j細(xì)分下,每一步的時(shí)間Tstep見(jiàn)式(6):
(6)
上位機(jī)軟件使用Python和Qt開發(fā),軟件界面由Qt designer設(shè)計(jì),內(nèi)核服務(wù)函數(shù)使用Python設(shè)計(jì),顯著縮減了代碼量。同時(shí)支持串口通信、CAN總線和脈沖輸入模式,串口通信、CAN總線模式,支持步進(jìn)電機(jī)調(diào)速、方向控制、細(xì)分控制,通過(guò)操縱界面中的按鈕等控件向下位機(jī)發(fā)出指令。上位機(jī)軟件界面如圖10所示。
圖10 上位機(jī)軟件界面
完成驅(qū)動(dòng)器下位機(jī)和上位機(jī)設(shè)計(jì)后,使用42型兩相四線步進(jìn)電機(jī)對(duì)驅(qū)動(dòng)器進(jìn)行測(cè)試,分別測(cè)試3種控制模式下步進(jìn)電機(jī)驅(qū)動(dòng)器的功能完整性。實(shí)驗(yàn)分為兩部分:第1部分采用工控機(jī)通過(guò)2種通信轉(zhuǎn)接板,即USB轉(zhuǎn)TTL和USB轉(zhuǎn)CAN,連接驅(qū)動(dòng)器進(jìn)行串口通信、CAN通信測(cè)試;第2部分采用外部控制電路板連接驅(qū)動(dòng)器,進(jìn)行脈寬調(diào)速測(cè)試和頻率調(diào)速測(cè)試。由于3種信號(hào)輸入方式對(duì)應(yīng)相同的輸出,所以轉(zhuǎn)速和細(xì)分參數(shù)相同時(shí),不同輸入方式對(duì)應(yīng)的電機(jī)輸出相同,表2為串口模式下設(shè)定轉(zhuǎn)速和細(xì)分?jǐn)?shù)下的測(cè)試數(shù)據(jù)。
表2 驅(qū)動(dòng)器測(cè)試數(shù)據(jù)
使用串口通信,設(shè)置60細(xì)分、轉(zhuǎn)速30 r/min的參數(shù)對(duì)多輸入驅(qū)動(dòng)器進(jìn)行測(cè)試,A相線圈電壓波形如圖11所示,圖12為系統(tǒng)現(xiàn)場(chǎng)測(cè)試圖,圖13為多輸入步進(jìn)電機(jī)驅(qū)動(dòng)器實(shí)物圖。
圖11 A相線圈兩端電壓波形
圖12 多輸入步進(jìn)電機(jī)驅(qū)動(dòng)器測(cè)試系統(tǒng)
圖13 多輸入步進(jìn)電機(jī)驅(qū)動(dòng)器實(shí)物圖
測(cè)試結(jié)果表明:驅(qū)動(dòng)器能夠支持各種信號(hào)輸入方式,電機(jī)轉(zhuǎn)速精準(zhǔn),共振得到了很好抑制,能夠適用于多種工業(yè)應(yīng)用場(chǎng)合。
本文選用STM32F103C8T6、IR2814S等對(duì)兩相四線步進(jìn)電機(jī)驅(qū)動(dòng)器進(jìn)行了設(shè)計(jì),同時(shí)支持多種輸入模式,將控制器與驅(qū)動(dòng)器集成于一體,可以在不添加外部控制器的情況下使用計(jì)算機(jī)直接對(duì)步進(jìn)電機(jī)進(jìn)行控制,降低了成本,提高了步進(jìn)電機(jī)驅(qū)動(dòng)器的通用性。詳細(xì)介紹了細(xì)分驅(qū)動(dòng)方案、H橋驅(qū)動(dòng)電路、電流反饋電路。最后采用42型步進(jìn)電機(jī)進(jìn)行了多種輸入模式實(shí)驗(yàn),測(cè)試過(guò)程中電機(jī)運(yùn)行平穩(wěn),不丟步,測(cè)試結(jié)果表明該步進(jìn)電機(jī)驅(qū)動(dòng)器通用性強(qiáng),可靠性高,可滿足多種工業(yè)環(huán)境的使用需求。