莊煥偉,戚宇恒
(廣東技術(shù)師范學(xué)院工業(yè)中心,廣州 510665)
步進(jìn)電機(jī)具有控制簡(jiǎn)單、無累積誤差等優(yōu)點(diǎn),廣泛應(yīng)用于數(shù)控機(jī)床、機(jī)器人、自動(dòng)化儀表等領(lǐng)域。對(duì)步進(jìn)電機(jī)控制系統(tǒng)的研究開發(fā)也取得了大量成果,主要有基于微控制器,如單片機(jī)[1]、DSP[2]、ARM[3]、CPLD[4]以及基于PLC[5-7]的兩大類步進(jìn)電機(jī)控制系統(tǒng)。這些控制系統(tǒng),一個(gè)明顯的特點(diǎn)就是對(duì)電機(jī)轉(zhuǎn)速或?qū)﹄姍C(jī)轉(zhuǎn)動(dòng)量的單一控制。在實(shí)際應(yīng)用中,往往希望步進(jìn)電機(jī)控制系統(tǒng),能像伺服驅(qū)動(dòng)器一樣,有多種控制模式,能對(duì)步進(jìn)電機(jī)進(jìn)行不同模式控制?;诤?jiǎn)單、價(jià)廉、通用性考慮,設(shè)計(jì)開發(fā)了一種基于AT89C51 單片機(jī)的步進(jìn)電機(jī)控制系統(tǒng),該系統(tǒng)具有速度和位置兩種控制模式,可自由切換,實(shí)現(xiàn)一個(gè)控制系統(tǒng),滿足對(duì)步進(jìn)電機(jī)轉(zhuǎn)速或轉(zhuǎn)動(dòng)量的控制。
本控制系統(tǒng)以兩相步進(jìn)電機(jī)為控制對(duì)象,以單片機(jī)為控制核心。系統(tǒng)工作時(shí),AT89C51 單片機(jī)實(shí)時(shí)檢測(cè)外圍按鍵狀態(tài),當(dāng)系統(tǒng)設(shè)定為速度控制模式時(shí),可通過按鍵選定不同的段速和方向,按下啟動(dòng)按鍵,步進(jìn)電機(jī)以選擇的速度和方向運(yùn)轉(zhuǎn)直至松開啟動(dòng)按鍵。當(dāng)系統(tǒng)設(shè)定為位置控制模式時(shí),可通過按鍵指定電機(jī)的運(yùn)轉(zhuǎn)量和方向,按下啟動(dòng)按鍵時(shí),步進(jìn)電機(jī)朝指定的方向以特定的轉(zhuǎn)速運(yùn)轉(zhuǎn),當(dāng)運(yùn)轉(zhuǎn)量到達(dá)時(shí),電機(jī)停止。為簡(jiǎn)化系統(tǒng),步進(jìn)電機(jī)的驅(qū)動(dòng)脈沖由AT89C51 單片機(jī)產(chǎn)生,此外,加入液晶顯示屏,實(shí)時(shí)顯示當(dāng)前的控制模式和電機(jī)運(yùn)行狀態(tài),使系統(tǒng)有友好的人機(jī)界面。
系統(tǒng)主要由四大模塊組成:控制模塊、按鍵輸入模塊、液晶顯示模塊和電機(jī)驅(qū)動(dòng)模塊,其結(jié)構(gòu)原理圖如圖1 所示
圖1 結(jié)構(gòu)原理圖
依該系統(tǒng)的功能要求和下階段仿真需要,使用Proteus 軟件進(jìn)行系統(tǒng)電路設(shè)計(jì),設(shè)計(jì)的電路原理圖如圖2 所示。因系統(tǒng)按鍵不多,按鍵輸入模塊采用獨(dú)立鍵盤形式,液晶顯示模塊選用1602 液晶,電機(jī)驅(qū)動(dòng)模塊選用專門的電機(jī)驅(qū)動(dòng)芯片L298N。
輸入模塊由五個(gè)獨(dú)立按鍵組成,命名為UP、DOWN、MODE、DIR 和START,分別代表參數(shù)增、參數(shù)減、模式選擇、方向選擇和啟動(dòng)信號(hào)。因模式和方向都只有兩種狀態(tài),且考慮到人們的實(shí)際操作習(xí)慣,采用開關(guān)按鍵。
系統(tǒng)采用的電機(jī)驅(qū)動(dòng)芯片L298N是高電壓、大電流雙全橋驅(qū)動(dòng)芯片,它主要把從單片機(jī)發(fā)出的驅(qū)動(dòng)脈沖進(jìn)行電流放大,然后驅(qū)動(dòng)步進(jìn)電機(jī)。電路連接上,把它的ENA、ENB 引腳連接電源正端,使步進(jìn)電機(jī)的運(yùn)行方向僅取決于單片機(jī)輸出驅(qū)動(dòng)脈沖的順序。
圖2 系統(tǒng)的電路原理圖
系統(tǒng)軟件程序主要完成按鍵檢測(cè)、液晶顯示、驅(qū)動(dòng)脈沖輸出。為節(jié)省單片機(jī)CPU 資源,保證系統(tǒng)的實(shí)時(shí)性,軟件程序包括主程序和中斷程序。主程序主要完成系統(tǒng)初始化、按鍵檢測(cè)、位置模式的驅(qū)動(dòng)脈沖輸出等功能,而中斷程序主要完成液晶顯示及速度模式的驅(qū)動(dòng)脈沖輸出。主程序和中斷程序流程圖如圖3 和圖4 所示。
系統(tǒng)有兩種模式狀態(tài)、兩個(gè)運(yùn)動(dòng)方向,有四種組合情況。在程序設(shè)計(jì)上,可設(shè)定一個(gè)參數(shù),不同組合情況,賦予參數(shù)不同的數(shù)值,下一步的程序處理,依獲得的參數(shù)數(shù)值決定。模式方向檢測(cè)函數(shù)具體程序如下:
圖3 主程序流程圖
圖4 定時(shí)器中斷程序流程圖
改變步進(jìn)電機(jī)的速度,只需改變控制它的驅(qū)動(dòng)脈沖頻率,而改變頻率,即改變相應(yīng)驅(qū)動(dòng)數(shù)組的調(diào)用時(shí)間。系統(tǒng)采用單片機(jī)定時(shí)器中斷來實(shí)現(xiàn)不同的調(diào)用時(shí)間。單片機(jī)定時(shí)器0 作一個(gè)固定時(shí)間的定時(shí)中斷,每次定時(shí)中斷,參數(shù)i 加1,當(dāng)參數(shù)值等于電機(jī)指定速度對(duì)應(yīng)頻率參數(shù)值時(shí),輸出驅(qū)動(dòng)編碼。
如定時(shí)器0 中斷時(shí)間為0.5ms,步進(jìn)電機(jī)步距角為1.8°,為使電機(jī)轉(zhuǎn)速為120r/min;則由120r/min 得到電機(jī)每轉(zhuǎn)的時(shí)間為0.5s,于是電機(jī)每步周期為0.5s/(360°/1.8°)=2.5ms,故頻率參數(shù)值為2.5ms/0.5ms=5;定時(shí)器0 中斷實(shí)現(xiàn)電機(jī)的不同段速程序如下:
在完成系統(tǒng)的硬件設(shè)計(jì)和軟件設(shè)計(jì)的基礎(chǔ)上,利用Proteus 軟件的仿真功能,對(duì)系統(tǒng)進(jìn)行仿真測(cè)驗(yàn)和調(diào)試。具體的仿真過程是:在Proteus 中,雙擊單片機(jī)AT89C51,打開其屬性編輯框,在“Program File”欄中選擇在Keil 軟件中調(diào)試編譯成功所生成的目標(biāo)代碼hex 文件,并將單片機(jī)時(shí)鐘頻率改為12MHz,再在Proteus 中點(diǎn)擊開始仿真按鈕,啟動(dòng)仿真。仿真過程中,用鼠標(biāo)單擊電路圖中的按鍵,電機(jī)依程序運(yùn)轉(zhuǎn)起來,液晶屏實(shí)時(shí)顯示當(dāng)前電機(jī)運(yùn)行模式及運(yùn)行情況。系統(tǒng)處于速度模式和位置模式時(shí)液晶屏顯示情況分別如圖5 和圖6 所示,速度模式顯示的數(shù)值表示當(dāng)前電機(jī)轉(zhuǎn)速,位置模式顯示的第一個(gè)數(shù)值表示指定電機(jī)的運(yùn)轉(zhuǎn)量,第二個(gè)數(shù)值表示電機(jī)已經(jīng)運(yùn)轉(zhuǎn)的圈數(shù),“+”“-”符號(hào)表示電機(jī)運(yùn)轉(zhuǎn)方向正轉(zhuǎn)或反轉(zhuǎn)。
圖5 速度模式液晶顯示界面
圖6 位置模式液晶顯示界面
設(shè)計(jì)開發(fā)的步進(jìn)電機(jī)控制系統(tǒng),可實(shí)現(xiàn)對(duì)步進(jìn)電機(jī)不同模式的控制。利用Proteus 軟件對(duì)系統(tǒng)進(jìn)行了仿真,并取得仿真實(shí)驗(yàn)成功。該系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,操作方便,成本低,且系統(tǒng)的按鍵輸入模塊可用傳感器等檢測(cè)輸入模塊代替,可擴(kuò)展性強(qiáng),有很大的實(shí)際應(yīng)用價(jià)值
[1]高琴,劉淑聰,彭宏偉.步進(jìn)電機(jī)控制系統(tǒng)的設(shè)計(jì)及應(yīng)用[J].制造業(yè)自動(dòng)化,2012,34(1):150-152.
[2]孫德,樂貴高,高繼良.基于DSP的步進(jìn)電機(jī)閉環(huán)控制系統(tǒng)設(shè)計(jì)[J].機(jī)床與液壓.2012,40(10):118-121.
[3]周峰,李智華,顧全.基于PSoC3的步進(jìn)電機(jī)控制[J].電機(jī)與控制應(yīng)用,2012,39(4):28-31.
[4]董亮輝,劉景林,李昱.步進(jìn)電機(jī)寬調(diào)速多細(xì)分控制系統(tǒng)研究[J].測(cè)控技術(shù),2012,31(1):66-69.
[5]王彥軍,李增生.基于PLC的步進(jìn)電機(jī)控制[J].科學(xué)技術(shù)與工程,2011,11(5):1076-1079.
[6]王紅梅,方貴盛.基于PLC 與步進(jìn)電機(jī)的氣動(dòng)搬運(yùn)機(jī)械手控制[J].液壓與氣動(dòng),2009,(11):25-27.
[7]沈宏,張偉,安艷濤.基于S7-200PLC的調(diào)速器步進(jìn)電機(jī)驅(qū)動(dòng)方法[J].制造業(yè)自動(dòng)化,2010,32(7):169-172.