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