摘 要:介紹一種以AT89S52單片機為控制核心的電機控制系統。用AT89S52單片機、液晶顯示器、可逆永磁電機、繼電器、LED、按鍵等完成系統的硬件設計;以Keil μVision 3為軟件開發環境完成系統的程序設計。經實際運行,該系統實現了在按鍵的操作下對時間進行設定,控制電機的啟動、正反向轉動、停止,狀態指示燈正確顯示工作狀態,LCD顯示時間。
關鍵詞:單片機; 電機; 液晶顯示器; 繼電器; 程序設計
中圖分類號:TP368.1 文獻標識碼:A
文章編號:1004-373X(2010)07-0138-03
Design of Electric Motor Control System Based on AT89S52 Single Chip Computer
JIANG Shu-zheng1, WANG Gui-hai2
(1.Graduation College, Shandong University of Science and Technology, Qingdao 266510, China;
2.College of Information Science and Engineering, Shandong University of Science and Technology, Qingdao 266510, China)
Abstract:An electric motor control system which uses AT89S52 single chip computer as its core controller is introduced. The hardware design is composed of AT89S52 single chip computer, LCD, reversible SR-PM, electric relay, LED, key-press etc; the program design of the system was developed by taking Keil μVision3 IDE as the software development environment(SDE). The system can set time with a key, control the start, forward and reverse rotation and stop of an electric motors, indicate the current state of the electric motor with LED, and display time on LCD.
Keywords:single chip computer; motor; LCD; electric relay; program design
0 引 言
電機控制[1]在監控器材、醫療器械、電動閥門、電動窗簾、家用電器、旋轉燈具等方面有著廣泛的應用,因此設計一款可控性好、精度高的電機控制系統是一件非常有意義的事。本文介紹的基于AT89S52單片機的電機控制系統的軟硬件設計,在按鍵的操作下對時間進行設定,控制電機的轉動,對工作狀態及時間進行顯示。
1 設計方案說明
該系統先通過按鍵對電機的正、反向(即順時針、逆時針)轉動時間分別設置,時間顯示在LCD上,格式為時:分:秒(通過改變程序可以選擇不同的格式)。采用倒計時方式,正向時間完畢,立刻開始反向轉動時間計時,反向時間結束,自動恢復到初始設定的時間。
時間設定完成后,按下開始鍵,正向轉動時間開始計時,電機工作指示燈閃爍,正向轉動指示燈亮,同時電機正向轉動;正向時間完畢,反向時間開始計時,正向轉動指示燈熄滅,反向轉動指示燈亮,同時電機反向轉動。
按下停止鍵,時間停止計時,電機停止工作,工作指示燈熄滅。
系統采用的電機為60TDY-11可逆永磁電機,其內部采用兩組繞組,用電容實現定向旋轉,通過改變電容和電機輸出引線的接法,能夠可靠地實現電機定向旋轉并控制旋轉方向。
2 硬件電路設計
整個系統硬件結構如圖1所示。
圖1 系統硬件結構圖
2.1 按鍵輸入和控制電路設計
按鍵輸入電路采用6個按鍵分別連接到單片機的P2.0~P2.5口,作為控制信號的輸入。按下K0鍵,系統進入時間設定模式,連續按下K0鍵可以選擇對不同的時間單位進行設置,通過K1,K2鍵對時間進行加1或減1。按下K3鍵退出時間設定模式,K4,K5鍵分別為啟動和停止鍵。
電機控制電路[2]的控制芯片采用ATMEL公司的AT89S52,它有8 KB FLASH,256 B RAM,32 位I/O口線,看門狗定時器,兩個數據指針,三個16位定時器/計數器,一個6向量2級中斷結構,全雙工串行口,片內晶振及時鐘電路。其內部資源豐富、性價比高,能夠滿足設計要求。
P0.0~P0.2作為三個工作指示燈的控制信號輸出,需要外接上拉電阻[3];P1.0~P1.2為液晶顯示器的控制信號輸出;P3.0~P3.1分別是控制電機正反向轉動的控制信號輸出。
2.2 LCD顯示電路設計
顯示部分采用的是12864液晶,控制器是ST7920,這種控制器帶中文字庫,去除了編制字庫的麻煩,該控制器的液晶還支持畫圖方式。該類液晶支持68時序8位和4位并口以及串口。ST7920的時鐘SCLK有獨立的操作時序,當多個連續的指令需要被送入時,需要考慮指令執行時間。
一個完整的串行傳輸周期由以下部分組成:首先送入啟動字節,送入五個連續的“1”用來啟動一個周期,此時傳輸計數被重置,并且串行傳輸被同步。緊接的兩個為制定傳輸方向(RW,確定讀還是寫)和傳輸性質(RS,確定是命令寄存器還是數據寄存器),最后的第八位是一個“0”。
本設計中PSB引腳接地,選擇串口工作模式,CS高電平有效,只用兩根線SID和SCLK即可完成數據傳輸。
2.3 電機及驅動電路設計
60TDY-11電機工作電壓為220 V交流電,而單片機的輸出高電平為5 V,因此電機需要一個驅動電路[4],采用繼電器來作為較小的電流去控制較大電流的一種“自動開關”。
本次設計中繼電器采用的是HUIGANG HRS2H-S-DC-12V型,SN74LS07N作為繼電器的驅動電路,低電平輸入有效,繼電器還需要并聯二極管電路[5],主要是為了保護SN74LS07N。當流經繼電器線圈的電流迅速減小時,線圈會產生很高的自感電動勢使晶體管被擊穿,并聯上二極管后,即可將線圈的自感電動勢鉗位于二極管的正向導通電壓。P3.0低電平時,繼電器1常閉觸點斷開,常開觸點閉合,電機正向電路導通,開始正向轉動。P3.1同理,P3.0和P3.1不可同時為低電平。
3 軟件設計
3.1 程序說明
在Keil μVision 3 IDE[6]中進行程序的設計開發,用C語言[7,8]編寫。Keil μVision 3集成開發環境是Keil Software開發的基于80C51內核的微處理器軟件開發平臺,可以完成從工程建立到管理、編譯、鏈接、目標代碼的生成、軟件仿真、硬件仿真等完整的開發流程,尤其是C編譯工具在產生代碼的準確性和效率方面達到了較高的水平。它支持所有的Keil 80C51的工具軟件,包括C51編譯器、宏匯編器、鏈接器器/定位器和目標文件至Hex格式轉換器。鑒于此,選擇其為程序開發環境。
系統程序由主程序、中斷處理子程序、按鍵處理程序以及顯示子程序等組成。對時間計時采用定時器定時中斷產生,沒有選擇用軟件延時的方式,這樣不占用CPU的時間[9]。定時器T0產生50 ms定時中斷,在中斷服務程序中有一個計數器,每產生20次中斷,有一個1秒計數。按鍵掃描采用單個按鍵的掃描,有相應的按鍵處理子程序,程序中包括按鍵去抖動,按鍵的鍵后處理,去抖動采用延時去抖法。顯示子程序在主程序中被調用對時間進行實時顯示。
3.2 主程序流程圖
主程序流程圖如圖2所示,主要完成系統的初始化、按鍵掃描、顯示程序及其他子程序調用等功能。
圖2 主程序流程圖
初始化時關閉定時中斷,P0.0~P0.2口輸出高電平,狀態指示燈熄滅,P3.0~P3.1口輸出高電平電機停止轉動,對LCD初始化顯示,顯示4行信息,2行顯示時間,格式為時:分:秒,另外2行為時間的說明文字。將所有的初始化功能寫成一個子程序,主程序只需調用它即可完成系統初始化。初始化完成之后,掃描按鍵,如有按鍵按下,調用相應的處理程序。時間設定鍵按下時,被選中的時間單位將會不斷的閃爍,區別于其他沒有被設置的時間單位,通過K1,K2鍵對時間進行改動,按下K3鍵退出時間設定。開始鍵被按下時,開啟定時中斷,LCD顯示時間開始倒計時,P0.1口輸出低電平,正向轉動指示燈亮,P3.0輸出低電平,電機開始正向轉動,在中斷服務程序中控制P0.0口輸出電平,使正常工作指示燈1 s閃爍一次。停止鍵被按下時,P3.0~P3.1輸出高電平,電機停止轉動,P0.0~P0.2輸出高電平,狀態指示燈熄滅,關閉定時中斷,停止計數。正向轉動時間結束時,反向轉動開始倒計時,P3.0輸出高電平,P3.1輸出低電平,電機反向轉動,P0.1輸出高電平,P0.2輸出低電平,正向轉動指示燈熄滅,反向轉動指示燈亮。顯示程序實時將時間的變化在LCD上顯示。
4 結 語
該系統經實際運行,可以滿足在功能鍵的操作下對時間進行設定,控制電機的啟動、正反向轉動、停止,狀態指示燈正確顯示工作狀態,LCD正常的顯示了時間。本系統將應用于一個閥門的自動打開閉合裝置,正向轉動時閥門打開,反向轉動時,閥門關閉,實現對液體流量的控制,具體應用時還需要對閥門打開閉合的狀態進行檢測。
參考文獻
[1]李鐵才,杜坤梅.電機控制技術[M].哈爾濱:哈爾濱工業大學出版社,2000.
[2]譚建成.新編電機控制專用集成電路與應用[M].北京:機械工業出版社,2006.
[3]胡輝.單片機原理及應用設計[M].北京:中國水利水電出版社,2005.
[4]張琦,靳孝峰,宋樹民.電機控制系統的設計與實現[J].機械與電子,2009(3):34-36.
[5]童詩白,華成英.模擬電子技術基礎[M].北京:高等教育出版社,2001.
[6]王為青,程國鋼.單片機Keil Cx51應用開發技術[M].北京:人民郵電出版社,2007.
[7]譚浩強.C程序設計[M].2版.北京:清華大學出版社,1999.
[8]胡偉,季曉衡.單片機C程序及應用實例[M].北京:人民郵電出版社,2003.
[9]徐進強.基于STC單片機的經濟型步進電機控制系統[J].現代電子技術,2009,32(14):197-199.
[10]陳京培,徐永梅.基于AT89S52單片機的液晶顯示控制電路設計[J].現代電子技術,2008,31(22):22-25.
[11]張建化,陳躍,熊永超.基于AT89S52單片機的電動車蹺蹺板系統設計[J].現代電子技術,2008,31(24):163-165.