陳炳超,莊泉潔,劉洪英,房 娟
(1.上海市華東師范大學(xué)多維度信息處理重點(diǎn)實(shí)驗(yàn)室,上海 200241;2.捷普科技(上海)有限公司 上海 200241)
在現(xiàn)代工業(yè)控制中步進(jìn)電機(jī)的控制是滑臺(tái)控制的執(zhí)行機(jī)構(gòu)。區(qū)別于其他控制電機(jī)的最大特點(diǎn)是,它是通過(guò)輸入脈沖信號(hào)來(lái)進(jìn)行控制的,即電機(jī)的總轉(zhuǎn)動(dòng)角度由輸入脈沖數(shù)決定,而電機(jī)轉(zhuǎn)速由脈沖信號(hào)的頻率決定[1-3]。
在很多情況下需要讓步進(jìn)電機(jī)控制滑臺(tái)運(yùn)動(dòng)非常精確的距離,且運(yùn)行軌跡是不規(guī)則的,運(yùn)行時(shí)速度需可調(diào)。本文首先介紹系統(tǒng)的硬件電路原理;分析了控制滑臺(tái)運(yùn)行不規(guī)則軌跡的計(jì)算方法;在此基礎(chǔ)上提出了用定時(shí)器中斷的方法精確控制PWM數(shù)量;介紹了具體的軟件實(shí)現(xiàn)方法并分析了系統(tǒng)測(cè)試結(jié)果。
本論文基于機(jī)車牽引梁數(shù)控磨削設(shè)備的電控設(shè)計(jì),此設(shè)備用來(lái)磨削一個(gè)帶弧線的六邊形物體,因此要求設(shè)計(jì)兩維滑臺(tái)的電控部分,以精密控制磨削頭的運(yùn)行軌跡,經(jīng)分析此軌跡呈不規(guī)則路線。系統(tǒng)硬件框圖如圖1所示,本系統(tǒng)的主控芯片是STM32F407,該芯片主頻高達(dá)168 MHz,PWM定時(shí)器的頻率同樣可以達(dá)到168 MHz,在頻率要求較高的設(shè)計(jì)中有較顯著的優(yōu)勢(shì)。同時(shí)對(duì)于定時(shí)器中斷控制PWM數(shù)量可以防止中斷嵌套,且可以顯著減少中斷現(xiàn)場(chǎng)保護(hù)的開銷,且該芯片支持SPI、CAN、I2C 等多種協(xié)議。
主機(jī)和從機(jī)分別用兩臺(tái)兩相步進(jìn)電機(jī)來(lái)帶動(dòng)X軸和Y軸滑臺(tái),步進(jìn)電機(jī)用M860驅(qū)動(dòng)器來(lái)驅(qū)動(dòng)。STM32主控板給驅(qū)動(dòng)器發(fā)送PWM信號(hào)、方向和使能信號(hào),驅(qū)動(dòng)器經(jīng)過(guò)光耦隔離并細(xì)分后來(lái)驅(qū)動(dòng)步進(jìn)電機(jī)。本系統(tǒng)主機(jī)和從機(jī)之間用CAN總線來(lái)進(jìn)行通信,CAN總線具有實(shí)時(shí)性強(qiáng)、傳輸距離較遠(yuǎn)、抗電磁干擾能力強(qiáng)、成本低等優(yōu)點(diǎn)[4]。主機(jī)和從機(jī)可以單獨(dú)運(yùn)行,只有當(dāng)需要的時(shí)候采用CAN總線來(lái)進(jìn)行同步。主機(jī)設(shè)置PWM的頻率、滑臺(tái)位置等數(shù)據(jù)以及發(fā)送開始運(yùn)行、停止運(yùn)行等信號(hào),從機(jī)通過(guò)CAN總線接收相關(guān)數(shù)據(jù)和指令。當(dāng)從機(jī)結(jié)束運(yùn)行就會(huì)發(fā)送結(jié)束信號(hào)給主機(jī)。主機(jī)和從機(jī)之間通過(guò)CAN總線進(jìn)行同步。
圖1 系統(tǒng)硬件框圖Fig.1 The system hardware block diagram
以二維滑臺(tái)為研究對(duì)象,滑臺(tái)由步進(jìn)電機(jī)帶動(dòng),滑臺(tái)的運(yùn)行模式中包含了二維滑臺(tái)的單獨(dú)運(yùn)行和同時(shí)運(yùn)行,假設(shè)滑臺(tái)的齒距為10 mm(步進(jìn)電機(jī)轉(zhuǎn)動(dòng)一圈,滑臺(tái)前進(jìn)10 mm)。假設(shè)目標(biāo)滑臺(tái)前進(jìn)距離為L(zhǎng)。驅(qū)動(dòng)器細(xì)分倍數(shù)為、步進(jìn)電機(jī)總步數(shù)、PWM脈沖總個(gè)數(shù)為別為n、N、P[5]。 則
為了便于計(jì)算,此次設(shè)計(jì)將驅(qū)動(dòng)器細(xì)分倍數(shù)設(shè)為5,則
即當(dāng)滑臺(tái)需要前進(jìn)距離為L(zhǎng) mm時(shí),則步進(jìn)電機(jī)總步數(shù)以及PWM脈沖總個(gè)數(shù)也應(yīng)該為100 L。
圖2 二維滑臺(tái)不規(guī)則運(yùn)動(dòng)軌跡Fig.2 Irregular track of the two-dimensional ramp
如圖2所示是二維滑臺(tái)的不規(guī)則運(yùn)動(dòng)軌跡,軌跡由直線、斜線、圓弧組成。各種軌跡實(shí)現(xiàn)方法如下:
1)斜線軌跡
由圖2可知,二維滑臺(tái)有同時(shí)運(yùn)動(dòng)和結(jié)束的過(guò)程,對(duì)于斜線部分X軸滑臺(tái)運(yùn)距離為n1的過(guò)程中Y軸滑臺(tái)同時(shí)運(yùn)行距離為n2。有公式2可知X軸滑臺(tái)和Y軸滑臺(tái)運(yùn)行n1和n2的距離所需要的PWM的脈沖個(gè)數(shù)分別為P1、P2則有 P1=100n1,P2=100n2,以 X 軸為基準(zhǔn),則
STM32定時(shí)器產(chǎn)生的PWM頻率由系統(tǒng)時(shí)鐘f、預(yù)分頻值M、計(jì)數(shù)周期T決定[3],系統(tǒng)時(shí)鐘f和和預(yù)分頻值M不變,以改變計(jì)數(shù)周期T來(lái)改變PWM的頻率。
以X軸滑臺(tái)為基準(zhǔn),Tx、Ty分別為X和Y軸定時(shí)器計(jì)數(shù)周期,Vx、Vy分別為X軸和Y軸定時(shí)器頻率,則有
因X軸和Y軸同時(shí)運(yùn)行相同的時(shí)間,則有
由公式(4)~(7)可得,Y軸定時(shí)器的計(jì)數(shù)周期Ty為
2)單滑臺(tái)運(yùn)動(dòng)軌跡
如圖2所示,對(duì)于距離為n3的部分,由于只需要在X軸方向上運(yùn)動(dòng),由公式2可知需要的PWM數(shù)量為100n3,因此只需要設(shè)置X軸定時(shí)器的PWM頻率為固定值。并且計(jì)數(shù)100n3個(gè)PWM數(shù)量然后停止,軌跡在X軸方向上運(yùn)動(dòng)的距離就為n3。
而對(duì)于距離為n4的部分,和n3部分唯一不同的地方就是此時(shí)只需在Y軸方向運(yùn)動(dòng)。因此只需要設(shè)置Y軸定時(shí)器的PWM頻率為固定值,并且計(jì)數(shù)100n4個(gè)PWM然后停止。
3)圓弧軌跡
而圓弧部分是以直線切割的方式實(shí)現(xiàn)的,圓弧角度為90度,D點(diǎn)是圓弧的中心點(diǎn),圓弧半徑為55 mm。
D點(diǎn)以上以X軸為基準(zhǔn),假設(shè)X軸定時(shí)器產(chǎn)生的PWM頻率為,每輸出100個(gè)PWM時(shí)Y軸定時(shí)器頻率變換一次。假設(shè)A點(diǎn)變換了n-1次PWM,而B點(diǎn)變換了n次PWM,則A點(diǎn)坐標(biāo)為(100(n-1),Ya),B點(diǎn)坐標(biāo)為(100n,Yb),圓弧半徑為R,則有
由公式(9)和(10)可得,A點(diǎn)和B點(diǎn)在Y軸上的變化值為△y
由公式(5)~(11)可得Y軸定時(shí)器的計(jì)數(shù)周期Ty為
但是由于圓弧中點(diǎn)對(duì)應(yīng)的X軸的PWM數(shù)量往往不是100的倍數(shù),所以假設(shè)C點(diǎn)是離中點(diǎn)D最近的點(diǎn),C點(diǎn)變換了m次PWM,則C點(diǎn)X軸坐標(biāo)為100m,D點(diǎn)X和Y軸的坐標(biāo)R都為,則有
以X為基準(zhǔn)時(shí)最后變換的一步計(jì)數(shù)周期T為
在D點(diǎn)以下以Y軸為基準(zhǔn),假設(shè)Y軸定時(shí)器產(chǎn)生的PWM頻率為Vy固定不變,每輸出100個(gè)PWM時(shí)X軸定時(shí)器頻率變換一次。假設(shè)E點(diǎn)變換了i-1次PWM,而F點(diǎn)變換了i次PWM,則E點(diǎn)坐標(biāo)為(X e,Y d-100(i-1)),F點(diǎn)坐標(biāo)為(X f,Y d-100i),圓弧半徑為 R,則有
由式(16)和(17)可得,E點(diǎn)和F點(diǎn)在X軸上的變化值為
由式(5)、(6)、(7)、(18)可得 X 軸定時(shí)器的計(jì)數(shù)周期 Tx 為
通過(guò)式(8)、(1)1、(19),在程序的每一步中設(shè)置 Tx、Ty 的值來(lái)實(shí)現(xiàn)X、Y軸滑臺(tái)以所要求的軌跡運(yùn)動(dòng)。
如圖3所示是系統(tǒng)軟件的流程圖,系統(tǒng)在初始化時(shí)為了防止意外的碰撞,需要尋找零點(diǎn),尋找零點(diǎn)結(jié)束后進(jìn)行滑臺(tái)轉(zhuǎn)速、軌跡中每一步PWM數(shù)量的設(shè)置,并通過(guò)CAN總線將設(shè)置的數(shù)據(jù)發(fā)送給從機(jī)。設(shè)置完成后,當(dāng)主機(jī)檢測(cè)到物件過(guò)來(lái)的信號(hào)后,將開始運(yùn)行的信號(hào)通過(guò)CAN總線發(fā)送給從機(jī),使主機(jī)與從機(jī)同時(shí)開始運(yùn)行,當(dāng)從機(jī)運(yùn)行完成后發(fā)送反饋信號(hào)給從機(jī),主從機(jī)同時(shí)停止運(yùn)行。當(dāng)一次運(yùn)行完成以后看情況確定是否需要重新設(shè)置參數(shù),如果需要重新設(shè)置則進(jìn)入滑臺(tái)運(yùn)行軌跡參數(shù)設(shè)置狂態(tài),否則進(jìn)入等待運(yùn)行狀態(tài)。
圖3 系統(tǒng)軟件的流程圖Fig.3 Flow chart of system software
在主從機(jī)運(yùn)行過(guò)程中,由滑臺(tái)運(yùn)行模式可知,滑臺(tái)是以不規(guī)則的軌跡運(yùn)行的。因此根據(jù)滑臺(tái)的運(yùn)行模式,在每一步運(yùn)行之前需要計(jì)算滑臺(tái)運(yùn)行的距離及兩個(gè)滑臺(tái)的PWM頻率。
將該系統(tǒng)運(yùn)用到實(shí)際的環(huán)境中,以垂直于地面放置的二維滑臺(tái)為研究對(duì)象,使滑臺(tái)以圖2中的軌跡運(yùn)行。在設(shè)備運(yùn)行的起始點(diǎn)做標(biāo)記,設(shè)置滑臺(tái)運(yùn)行在90秒/圈,45秒/圈,30秒/圈三種速度下,并且分別運(yùn)行10圈,15圈,20圈,25圈得到運(yùn)行結(jié)束時(shí)與起始點(diǎn)的距離,如表1所示,同樣轉(zhuǎn)速時(shí)轉(zhuǎn)動(dòng)圈數(shù)越多誤差越大;轉(zhuǎn)動(dòng)相同圈數(shù)的情況下,滑臺(tái)轉(zhuǎn)速越高誤差也是越大。
表1 系統(tǒng)誤差Tab.1 System error
經(jīng)過(guò)實(shí)際分析得出,這些誤差是由兩方面造成的。一方面,由于滑臺(tái)是垂直于地面放置,滑臺(tái)在下降過(guò)程中難免會(huì)因?yàn)橹亓Φ淖饔枚陆?。另一方面,在定時(shí)器輸出PWM數(shù)量固定的情況下,由于在系統(tǒng)運(yùn)動(dòng)過(guò)程中需要改變經(jīng)常需要改變PWM的頻率,而改變一次PWM的頻率會(huì)有1個(gè)CLOCK的延遲。
本文介紹了用STM32控制滑臺(tái)運(yùn)行不規(guī)則軌跡的計(jì)算方法,在此基礎(chǔ)上提出了用定時(shí)器中斷的方法精確控制PWM數(shù)量。通過(guò)精密控制X軸和Y軸的滑臺(tái),使磨削頭能以直線、斜線和弧線的軌跡精確運(yùn)動(dòng),達(dá)到成功磨削工件的目的。經(jīng)過(guò)實(shí)際的測(cè)試表明該系統(tǒng)工作穩(wěn)定,精確度較高。
本次設(shè)計(jì)是二維的滑臺(tái),但設(shè)計(jì)的思想和方法也可推廣到三維滑臺(tái)的控制設(shè)計(jì)。要想獲得更精確的步進(jìn)電機(jī)控制,可考慮使用DSP作為主控芯片,從而可以有更高的運(yùn)算速度和控制精度[8-9]。本論文精確控制兩維滑臺(tái)運(yùn)行軌跡的方法可推廣應(yīng)用到許多步進(jìn)電機(jī)控制的項(xiàng)目中,比如本實(shí)驗(yàn)室另一個(gè)項(xiàng)目---顯微鏡電動(dòng)載物臺(tái)的精密控制。
[1]梁軍龍.基于STM32F407的永磁同步電機(jī)伺服控制器設(shè)計(jì)[J].山西電子技術(shù),2014(1):28-30.LIANG Jun-long.The Design on Servo Controller of Permanent Magnet Synchronous Motor Based on STM32F407[J].Shanxi Electronic Technology,2014(1):28-30.
[2]劉慧英,范寶山.基于STM32的多步進(jìn)電機(jī)控制系統(tǒng)研究[J].測(cè)控技術(shù),2010,29(6):54-57.LIU Hui-ying,FAN Bao-shan.Study of Control System of Multiple Step Motors Based on STM32 [J].Measurement&Control Technology,2010,29(6):54-57.
[3]李寧.基于MDK的STM32處理器開發(fā)應(yīng)用[M].北京:北京航空航天出版社,2008.
[4]王永虹,徐煒,郝立平.STM32系列ARM Cortex_M3微控制器原理與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2008.
[5]章歡.基于CAN總線的火災(zāi)報(bào)警系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) [D].武漢:武漢理工大學(xué)信息工程學(xué)院,2008.
[6]宋錦.步進(jìn)電機(jī)的單片機(jī)控制方法[J].武漢工程職業(yè)技術(shù)學(xué)院學(xué)報(bào),2006,18(3):59-63.SONG Jin.Discussion on control of the step by step motor through single chip computer[J].Journal of University for Staff and Workers of Wuhan Iron and Steel(Group)Corporation,2006,18(3):59-63.
[7]金元郁,李勇,李園園.基于FPGA的步進(jìn)電機(jī)控制器設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2007(3):70-71.JIN Yuan-yu,LI Yong,LI Yuan-yuan.Design of step motor controller based on FPGA[J].Microcontrollers&Embedded Systems,2007(3):70-71.
[8]任明巖,孫金英.基于PIC16C621A和A3955的步進(jìn)電機(jī)驅(qū)動(dòng)器設(shè)計(jì)[J].電子產(chǎn)品世界,2007,3(22):98-101.REN Ming-yan,SUN Jin-ying.Design of stepper motor driver based on PIC16C621A and A3955 [J]. Electronic Engineering&Product World,2007,3(22):98-101.
[9]高琴,劉淑聰,彭宏偉.步進(jìn)電機(jī)控制系統(tǒng)的設(shè)計(jì)及應(yīng)用[J].制造業(yè)自動(dòng)化,2012,34(1):150-152.GAO Qin,LIU Shu-cong,PENG Hong-wei.Design and application of control system of stepper motor[J].Manufacturing Automation,2012,34(1):150-152.