李 娟 馬利祥
(安徽信息工程學(xué)院 電氣與電子工程學(xué)院,安徽 蕪湖241199)
步進(jìn)電機(jī)是一種能夠把數(shù)字信號轉(zhuǎn)變成執(zhí)行機(jī)構(gòu)、線位移或者角位移的電機(jī),屬于數(shù)控電機(jī)中的一種[1-2],不僅結(jié)構(gòu)上比其他電機(jī)簡單、功能也比較穩(wěn)定、應(yīng)用非常廣泛[3],尤其在醫(yī)療衛(wèi)生行業(yè)、數(shù)控機(jī)床及很多工業(yè)領(lǐng)域中應(yīng)用更多。文中步進(jìn)電機(jī)的驅(qū)動(dòng)通過采用驅(qū)動(dòng)芯片來驅(qū)動(dòng)步進(jìn)電機(jī),可大大降低驅(qū)動(dòng)部分體積,從而使整個(gè)系統(tǒng)的性能顯著提高。從步進(jìn)電機(jī)控制精度、系統(tǒng)簡單、價(jià)格便宜、性能穩(wěn)定、可控性強(qiáng)等多方面考慮,設(shè)計(jì)了一種基于單片機(jī)控制、專用驅(qū)動(dòng)芯片驅(qū)動(dòng)步進(jìn)電機(jī)、液晶屏顯示的步進(jìn)電機(jī)控制系統(tǒng)參數(shù)的系統(tǒng)。
本文所設(shè)計(jì)的步進(jìn)電機(jī)控制系統(tǒng)設(shè)計(jì)如圖1 所示,由單片機(jī)最小系統(tǒng)模塊、鍵盤控制模塊、步進(jìn)電機(jī)驅(qū)動(dòng)模塊、LCD1602 液晶屏顯示模塊組成。
圖1 系統(tǒng)總體設(shè)計(jì)圖
在該控制系統(tǒng)中采用51 單片機(jī)為主控制單元,含有4 個(gè)獨(dú)立按鍵分別為功能鍵、累加鍵、遞減鍵和運(yùn)行鍵,采用ULN2003 專用驅(qū)動(dòng)芯片來驅(qū)動(dòng)步進(jìn)電機(jī),并通過LCD1602 液晶屏顯示模塊來顯示步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)角度和轉(zhuǎn)動(dòng)方向等信息,以下對各功能模塊進(jìn)行說明。
圖2 單片機(jī)最小系統(tǒng)
1.1 單片機(jī)最小系統(tǒng)??刂颇K如圖2 所示,最小系統(tǒng)由單片機(jī)本身加上復(fù)位電路和晶振電路組成,復(fù)位電路包含上電復(fù)位和手動(dòng)復(fù)位,系統(tǒng)剛上電時(shí),C2 電容沒電,VCC通過R3 給電容C1 充電,且充電時(shí)間大于兩個(gè)機(jī)器周期使得單片機(jī)復(fù)位,手動(dòng)復(fù)位是按下K2 鍵復(fù)位,當(dāng)K2 鍵按下后,單片機(jī)的復(fù)位引腳直接接高電平使得單片機(jī)復(fù)位;晶振電路中Y1 是晶振,給單片機(jī)提供頻率,這里采用12M的晶振接到單片機(jī)的18 和19 引腳,再外接兩個(gè)30pF 的電容到地用來穩(wěn)定晶振的正常工作。
按鍵控制模塊如圖3 所示,四個(gè)按鍵一端接地,另一端接單片機(jī)的IO 口,當(dāng)按鍵按下以后,對應(yīng)的IO 口會接收到一個(gè)低電平,單片機(jī)通過是否檢測到低電平來判斷對應(yīng)的按鍵是否按下,接著執(zhí)行相應(yīng)的程序,其中K1 是設(shè)置按鍵,按一下可以切換一位參數(shù)設(shè)置、K2 按鍵是數(shù)據(jù)加、K3 按鍵是數(shù)據(jù)減、K4 按鍵是確定按鍵把設(shè)置的數(shù)據(jù)確定有效。
圖3 按鍵控制模塊
1.2 步進(jìn)電機(jī)驅(qū)動(dòng)模塊。如圖4 采用ULN2003 驅(qū)動(dòng)芯片來驅(qū)動(dòng)步進(jìn)電機(jī),啟動(dòng)模式時(shí),進(jìn)入電機(jī)驅(qū)動(dòng)程序,P1 口的低4 位對應(yīng)步進(jìn)電機(jī)的4 相的線,每輸出1 個(gè)脈沖中間間隔1 個(gè)延時(shí),等待第2 個(gè)脈沖輸出,每個(gè)脈沖代表一個(gè)步距角,電機(jī)運(yùn)行的時(shí)候,累計(jì)計(jì)算輸出脈沖個(gè)數(shù),就可以計(jì)算出當(dāng)前轉(zhuǎn)動(dòng)的角度,并實(shí)時(shí)顯示在液晶上。
圖4 步進(jìn)電機(jī)驅(qū)動(dòng)模塊
1.3 LCD1602 液晶顯示模塊。顯示模塊共16 個(gè)引腳如圖5 所示,是為了單片機(jī)和液晶進(jìn)行通訊,其含兩組VCC和GND,第3 引腳是調(diào)節(jié)顯示對比度的,接3K電阻。
1.4 電源電路。圖6 是電源供電部分,J1 用來連接外部電源,SWI 是電源總開關(guān),按下SW1 自鎖開關(guān),開始對整個(gè)電路供電,同
圖5 液晶顯示模塊
圖6 系統(tǒng)供電模塊
時(shí)加了電容C1 穩(wěn)定電源。
圖7 是程序的整體流程圖,步進(jìn)電機(jī)控制系統(tǒng)的軟件通過中斷技術(shù)來實(shí)現(xiàn)完成讀取鍵盤、處理鍵盤、控制步進(jìn)電機(jī)轉(zhuǎn)動(dòng)、控制數(shù)碼管動(dòng)態(tài)顯示等任務(wù),主程序用查詢方式掃描鍵盤端口,即檢測按鍵動(dòng)作是否發(fā)生,若掃描過程中檢測到按鍵動(dòng)作則處理按鍵操作,根據(jù)按下的值修改相應(yīng)的參數(shù)值,從而實(shí)現(xiàn)鍵盤的實(shí)時(shí)處理功能,定時(shí)器0 中斷服務(wù)程序用來控制步進(jìn)電機(jī)的轉(zhuǎn)動(dòng):根據(jù)當(dāng)前步進(jìn)電機(jī)的轉(zhuǎn)速進(jìn)行計(jì)算并查表得到定時(shí)器T0 定時(shí)的時(shí)間常數(shù)從而去設(shè)置TH0 和TL0 的值以達(dá)到對電機(jī)轉(zhuǎn)速精確控制的目的;根據(jù)步進(jìn)電機(jī)轉(zhuǎn)動(dòng)方向控制位的值來控制脈沖信號循環(huán)移動(dòng)的方向從而達(dá)到對轉(zhuǎn)動(dòng)方向控制的目的。
圖7 軟件整體流程圖
步進(jìn)電機(jī)控制系統(tǒng)的主程序在對整個(gè)系統(tǒng)初始化后主要完成讀鍵盤和處理鍵盤的功能,在系統(tǒng)上電復(fù)位后先調(diào)用初始化子程序,對步進(jìn)電機(jī)的各端口的相關(guān)參數(shù)先進(jìn)行初始化、設(shè)置T0 工作方式控制字和時(shí)間常數(shù)。初始化完成后,步進(jìn)電機(jī)會處于停止?fàn)顟B(tài),T0 定時(shí)器處于關(guān)閉狀態(tài)。然后循環(huán)調(diào)用讀鍵盤子程序和鍵盤處理子程序,等待中斷,以便實(shí)現(xiàn)步進(jìn)電機(jī)轉(zhuǎn)動(dòng)速度和角度的控制。
按鍵一共用了SW1、SW2、SW3、SW4 四個(gè),首先按下SW1 進(jìn)入設(shè)置界面,進(jìn)入設(shè)置按鍵之后SW1 的作用就是切換選中的數(shù)據(jù),然后由SW2 和SW3 對選中項(xiàng)的數(shù)據(jù)分別進(jìn)行加、減操作,最后由SW4 進(jìn)行確定輸入數(shù)據(jù)的有效,使得單片機(jī)根據(jù)這個(gè)數(shù)據(jù)控制步進(jìn)電機(jī)轉(zhuǎn)到相應(yīng)的角度。
當(dāng)需要處理液晶屏顯示和電機(jī)驅(qū)動(dòng)等一系列任務(wù)時(shí),單片機(jī)及時(shí)處理的反應(yīng)時(shí)間就會減緩,但又要實(shí)時(shí)顯示當(dāng)前的運(yùn)行狀態(tài),就用到定時(shí)器0 來不斷的實(shí)時(shí)更新。
仿真結(jié)果如圖8 所示,共有4 個(gè)按鍵,SW1 設(shè)置按鍵,對應(yīng)圖3中的K1 為仿真圖中的功能鍵;SW2 是數(shù)據(jù)加按鍵,對應(yīng)圖3 中的K2 為仿真圖中的增加鍵,SW3 是數(shù)據(jù)減按鍵,對應(yīng)圖3 中的K3 為仿真圖中的減小鍵,以及SW4 確定按鍵對應(yīng)圖3 中的K4 為仿真圖中的工作鍵;首先按下SW1 進(jìn)入設(shè)置界面,進(jìn)入設(shè)置按鍵(功能鍵)的作用是切換選中的數(shù)據(jù),也就是圖中set 后的幾位進(jìn)行旋轉(zhuǎn),然后由增加鍵和減小鍵對選中項(xiàng)的數(shù)據(jù)進(jìn)行加減操作,最后通過工作鍵來確定輸入的數(shù)據(jù)有效,使單片機(jī)根據(jù)這個(gè)設(shè)置的參數(shù)來控制步進(jìn)電機(jī)轉(zhuǎn)到相應(yīng)的角度。通過仿真,驗(yàn)證了程序的正確性和電路的基本功能。
圖8 仿真電路
圖9 為實(shí)驗(yàn)板,連接好硬件電路,上電復(fù)位,程序開始運(yùn)行。此時(shí)步進(jìn)電機(jī)不轉(zhuǎn)動(dòng),LED數(shù)碼管的參數(shù)值為0,如圖9(a)所示;按下K1 功能鍵,選擇位進(jìn)行參數(shù)設(shè)置,圖9(b)中設(shè)置轉(zhuǎn)動(dòng)角度為312,旋轉(zhuǎn)方向向左,圖9(c)中設(shè)置轉(zhuǎn)動(dòng)角度為218,旋轉(zhuǎn)方向向右,圖9(b)中的068 和圖9(c)中的118 是指電機(jī)當(dāng)前已朝設(shè)定的方向轉(zhuǎn)了的角度,當(dāng)轉(zhuǎn)到set 中設(shè)置的角度時(shí)步進(jìn)電機(jī)停止旋轉(zhuǎn),如圖9(d)所示,液晶顯示器將顯示設(shè)置的角度的轉(zhuǎn)完的角度。若再次按下工作鍵K4,則步進(jìn)電機(jī)會按照先前設(shè)置的角度和方向轉(zhuǎn)動(dòng),液晶顯示屏也將重新顯示。運(yùn)行結(jié)果正常,符合設(shè)計(jì)要求。
圖9 實(shí)驗(yàn)結(jié)果
本文設(shè)計(jì)的一種基于51 單片機(jī)的液晶步進(jìn)電機(jī)控制系統(tǒng)可以使步進(jìn)電機(jī)旋轉(zhuǎn)角度精確可控,方便設(shè)置步進(jìn)電機(jī)轉(zhuǎn)動(dòng)的角度和方向,并且通過改變程序就可以實(shí)現(xiàn)更大的轉(zhuǎn)動(dòng)角度,通過Proteus 仿真以及實(shí)驗(yàn)證實(shí)了本設(shè)計(jì)的正確性和可行性。