陳慧琴(東南大學成賢學院電子工程系,南京 210088)
基于STC89C51單片機步進電機控制系統的設計
陳慧琴
(東南大學成賢學院電子工程系,南京 210088)
本文基于STC89C51單片機,設計了步進電機控制系統,系統分為STC89C51單片機最小系統、按鍵模塊、顯示模塊、電機驅動模塊以及步進電機等幾個部分,通過編程實現了步進電機的正反轉,加減速,啟停控制以及運行狀態LED狀態顯示功能。實驗結果表明,系統性能優于傳統的步進電機控制器。
STC89C51單片機;步進電機;控制系統;設計
步進電機是機電設備中最廣泛使用的一種電機,又被稱為脈沖電動機或者階躍電動機,其工作原理是將電脈沖信號轉變為角位移或線位移。每輸入一個電脈沖,電機轉動一個角度前進一步,其輸出的角位移與輸入的脈沖數成正比、轉速與脈沖頻率成正比。在控制中,可以利用輸入電脈沖的頻率、數量和各相繞組的通電順序來精確控制電機的啟停、轉速、轉向和定位,幾乎不受電壓和環境溫度等影響,誤差小。隨著單片機嵌入式系統的發展應用,基于單片機的步進電機控制系統在各個領域得到了廣泛應用,比如線切割的工作臺運動、ATM機、刻字機、工業控制系統等等,并且特別適合要求性能穩定、誤差率低、響應迅速、運行時產生噪音小、具有較長的使用壽命以及能輸出較大扭矩的應用場合。本文設計了基于STC89C51單片機的步進電機控制系統,具備價格低廉、結構簡單、移植性好等特點,具有廣泛的應用前景。
本系統主要由STC89C51單片機最小系統、驅動電路模塊、按鍵電路模塊、數碼管顯示電路模塊和步進電機等幾個模塊組成。本設計中步進電機功率和額定電流都較小,從經濟性方面考慮,驅動芯片選用 ULN2003芯片,ULN2003芯片是一種高耐壓、大電流、內部包含七個硅PNP達林頓管的驅動芯片。
步進電機的控制主要通過按鍵來實現,分別負責控制加減速、換向、轉速。 STC89C51單片機向ULN2003輸出脈沖信號,驅動芯片將脈沖信號進行電壓和電流放大,驅動步進電機的各相繞組,使步進電機隨著不同的脈沖信號分別作相應的動作。系統結構如圖1所示。

圖1
以STC89C51單片機為核心處理器及主控制器,由28BYJ-48步進電機與ULN2003組成電機與驅動模塊,矩陣鍵盤模塊分別控制步進電機的啟停、正反轉、加速、減速,顯示模塊驅動數碼管顯示步進電機當前的轉速與轉動方向。
3.1步進電機選擇與設計
本設計采用28BYJ-48步進電機,內部結構如圖2所示,內部接線如圖3所示。
28BYJ-48步進電機一共有四組線圈,每對繞組有一個共同端點,將兩個公共端點連在一起引出,這樣一共得到5根引出線。給各引出端通電,就能使步進電機轉動。步進電機的轉動方向由給定工作方式的換相通電順序決定。正轉的循環通電順序是A-AB-B-BC-C-CD-D-DA,反轉的循環通電順序是D-DC-C-CB-B-BA-A-AD,通過調整步進電機的四個繞組的通電順序,來控制其轉動方向,通過調整發射脈沖信號的頻率來控制其轉速,頻率越高,速度越快。

圖2

圖3
3.2單片機系統
本設計采用STC89C5l單片機作為核心,如圖4所示,該單片機結構簡單,價格低廉,使用方便,能夠反復寫入或擦除程序達幾萬次以上。除此之外,STC89C51還支持MCS51系列單片機的所有功能。單片機最小系統主要由復位電路和振蕩電路組成。最小系統如圖5所示。

圖4

圖5
3.3按鍵控制電路
開關斷開時,輸出電壓為低電平,開關閉合時,輸出電壓為高電平。通過按鍵掃描程序掃描按鍵輸出的是否為高電平就可以判斷按鍵是否閉合。設計四個發光二極管用于顯示當前脈沖信號的發射狀態,如果按鍵按下,則發光二極管的發光狀態會發生改變。控制按鍵電路如圖6所示。

圖6
3.4數碼管顯示電路
選用共陽極數碼管來顯示步進電機當前實時轉動速度和方向。數碼管顯示電路圖如圖7所示。

圖7
3.5步進電機驅動電路
ULN2003通過1號到4號接口依次與單片機的28號到25號接口相連,STC89C51通過這四個引腳向ULN2003輸入信號,同時ULN2003的16號到13號接口與步進電機相連用于驅動步進電機轉動。本設計采用單拍方式對步進電機進行控制,1號到4號接口在同一時刻只有一個連通,其余的3個接口斷開。步進電機每個時刻只有一個引出端與ULN2003相連。驅動電路如圖8所示。

圖8
4.1軟件設計思路
軟件系統采用MCS-51 單片機匯編語言編寫,系統由初始化模塊、按鍵模塊、顯示模塊、步進電機控制模塊等幾個部分組成,通過按鍵模塊控制步進電機的啟停,調整轉速、轉向。轉速和轉向通過LED數碼管實時顯示。程序流程圖如圖9所示。

圖9
4.2按鍵掃描模塊
按鍵掃描子程序的運行流程是首先啟動按鍵掃描子程序,然后掃描按鍵輸出端,檢測是否有按鍵動作發生,如果沒有按鍵動作發生,就回到程序的開始,即繼續掃描按鍵輸出端以檢測是否發生按鍵動作,直到檢測到有按鍵動作發生時運行按鍵處理子程序,而后回到程序的初始,繼續掃描按鍵輸出端。在本子程序中,還需要加入一個消抖子程序,當檢測到輸入時,運行一個延時程序,延時時間為十毫秒,接著再次對按鍵輸端進行掃描,如果仍能檢測到輸入,則說明真的有按鍵動作發生,否則按鍵輸出是由抖動產生,最后將所確認的按鍵輸出值反饋給按鍵掃描子程序以準備運行按鍵處理子程序。
4.3按鍵處理模塊
按鍵處理子程序的目的是改變定時器T0的運行狀態,因為定時器T0控制著脈沖信號的輸出。按鍵處理子程序的運行流程是:首先開始運行按鍵處理子程序,將各變量初始化,接著依次檢測四個按鍵是否有按鍵動作發生,如果有按鍵動作發生,就對相應的值做修改,然后退出該程序。需要注意的是,每運行一次程序只對一個按鍵做出反應,即檢測到一個按鍵有輸入并處理完之后就退出該程序而非把所有按鍵都檢測一遍之后再退出。
4.4步進電機控制模塊
在設計中,將換向子程序放在定時中斷服務程序中,運行時,通過判斷換向按鍵是否按下,來決定是否執行換向子程序,以達到對轉向的控制。首先運行步進電機控制中斷子程序,設置T0時間參數,接著根據按鍵處理子程序運行的結果判斷是否需要改變轉動方向控制位的值,如果需要則改變方向控制位的變量值,然后退出程序,如果不需要則再根據按鍵輸出子程序的運行結果來查詢輸出脈沖為多少,最后退出程序。需注意的是,如果按鍵處理子程序沒有檢測到加速、減速按鈕的按鍵動作,則根據步進電機當前的轉動速度來決定脈沖信號的輸出頻率。
本文基于STC89C 51單片機、ULN2003驅動芯片和28BYJ-48步進電機設計了步進電機控制硬件電路,軟件編程實現了實時精確控制步進電機轉速、轉向和停轉,該系統結構簡單、性能穩定、精確度高、通用性強、成本低廉。經仿真測試,該步進電機控制系統各項指標達到了良好效果,實現了預期目標,可廣泛應用于數控機床、軋鋼機、機器人以及自動化儀表等多個方面。具有較高的實用價值和經濟效益。
[1]王宗培.步進電動機及其控制系統[M].哈爾濱:哈爾濱工業大學出版社,2009.
[2]李強.基于單片機的步進電機控制系統設計與實現.儀器儀表用戶.2008(04):44-46.
[3]陳理壁.步進電機及其應用[M].上海:上海科學技術出版社,2009.
[4]洪新華,陳建鋒,霍鵬飛.基于單片機的步進電機控制系統的設計.湛江師范學院學報,2010(06):84-8.
[5]劉帥,祖靜,張紅艷.基于單片機的步進電機控制系統設計.電子設計工程,2010(04):38-40.
10.16640/j.cnki.37-1222/t.2016.18.165