電機控制在監(jiān)控器材、醫(yī)療器械,、電動閥門、電動窗簾、家用電器,、旋轉(zhuǎn)燈具等方面有著廣泛的應用,因此設(shè)計一款可控性好,、精度高的電機控制系統(tǒng)是一件非常有意義的事,。本文介紹的基于AT89S52單片機的電機控制系統(tǒng)的軟硬件設(shè)計,在按鍵的操作下對時間進行設(shè)定,,控制電機的轉(zhuǎn)動,,對工作狀態(tài)及時間進行顯示。
1 設(shè)計方案說明
該系統(tǒng)先通過按鍵對電機的正,、反向(即順時針,、逆時針)轉(zhuǎn)動時間分別設(shè)置,時間顯示在LCD上,,格式為時:分:秒(通過改變程序可以選擇不同的格式),。采用倒計時方式,,正向時間完畢,立刻開始反向轉(zhuǎn)動時間計時,,反向時間結(jié)束,,自動恢復到初始設(shè)定的時間。
時間設(shè)定完成后,,按下開始鍵,,正向轉(zhuǎn)動時間開始計時,電機工作指示燈閃爍,,正向轉(zhuǎn)動指示燈亮,,同時電機正向轉(zhuǎn)動;正向時間完畢,,反向時間開始計時,,正向轉(zhuǎn)動指示燈熄滅,反向轉(zhuǎn)動指示燈亮,,同時電機反向轉(zhuǎn)動,。
按下停止鍵,時間停止計時,,電機停止工作,,工作指示燈熄滅。
系統(tǒng)采用的電機為60TDY-11可逆永磁電機,,其內(nèi)部采用兩組繞組,,用電容實現(xiàn)定向旋轉(zhuǎn),通過改變電容和電機輸出引線的接法,,能夠可靠地實現(xiàn)電機定向旋轉(zhuǎn)并控制旋轉(zhuǎn)方向,。
2 硬件電路設(shè)計
整個系統(tǒng)硬件結(jié)構(gòu)如圖1所示。
2.1 按鍵輸入和控制電路設(shè)計
按鍵輸入電路采用6個按鍵分別連接到單片機的P2.0~P2.5口,,作為控制信號的輸入,。按下K0鍵,系統(tǒng)進入時間設(shè)定模式,,連續(xù)按下K0鍵可以選擇對不同的時間單位進行設(shè)置,,通過K1,K2鍵對時間進行加1或減1,。按下K3鍵退出時間設(shè)定模式,,K4,,K5鍵分別為啟動和停止鍵,。
電機控制電路的控制芯片采用ATMEL公司的AT89S52,它有8 KB FLASH,,256 B RAM,,32位I/O口線,,看門狗定時器,兩個數(shù)據(jù)指針,,三個16位定時器/計數(shù)器,,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,,片內(nèi)晶振及時鐘電路,。其內(nèi)部資源豐富、性價比高,,能夠滿足設(shè)計要求,。
PO.O~P0.2作為三個工作指示燈的控制信號輸出,需要外接上拉電阻,;P1.0~P1.2為液晶顯示器的控制信號輸出,;P3.0~P3.1分別是控制電機正反向轉(zhuǎn)動的控制信號輸出。
2.2 LCD顯示電路設(shè)計
顯示部分采用的是12864液晶,,控制器是ST7920,,這種控制器帶中文字庫,去除了編制字庫的麻煩,,該控制器的液晶還支持畫圖方式,。該類液晶支持68時序8位和4位并口以及串口。ST7920的時鐘SCLK有獨立的操作時序,,當多個連續(xù)的指令需要被送入時,,需要考慮指令執(zhí)行時間。
一個完整的串行傳輸周期由以下部分組成:首先送入啟動字節(jié),,送入五個連續(xù)的“1”用來啟動一個周期,,此時傳輸計數(shù)被重置,并且串行傳輸被同步,。緊接的兩個為制定傳輸方向(RW,,確定讀還是寫)和傳輸性質(zhì)(RS,確定是命令寄存器還是數(shù)據(jù)寄存器),,最后的第八位是一個“O”,。
本設(shè)計中PSB引腳接地,選擇串口工作模式,,CS高電平有效,,只用兩根線SID和SCLK即可完成數(shù)據(jù)傳輸。
2.3 電機及驅(qū)動電路設(shè)計
60TDY-11電機工作電壓為220 V交流電,,而單片機的輸出高電平為5 V,,因此電機需要一個驅(qū)動電路,采用繼電器來作為較小的電流去控制較大電流的一種“自動開關(guān)”,。
本次設(shè)計中繼電器采用的是HUIGANG HRS2H-S-DC-12V型,,SN74LS07N作為繼電器的驅(qū)動電路,,低電平輸入有效,繼電器還需要并聯(lián)二極管電路,,主要是為了保護SN74LS07N,。當流經(jīng)繼電器線圈的電流迅速減小時,線圈會產(chǎn)生很高的自感電動勢使晶體管被擊穿,,并聯(lián)上二極管后,,即可將線圈的自感電動勢鉗位于二極管的正向?qū)妷骸3.0低電平時,,繼電器1常閉觸點斷開,,常開觸點閉合,電機正向電路導通,,開始正向轉(zhuǎn)動,。P3.1同理,P3.0和P3.1不可同時為低電平,。
3 軟件設(shè)計
3.1 程序說明
在KeilμVision 3 IDE中進行程序的設(shè)計開發(fā),,用C語言編寫。KeilμVision 3集成開發(fā)環(huán)境是Keil Soltware開發(fā)的基于80C51內(nèi)核的微處理器軟件開發(fā)平臺,,可以完成從工程建立到管理,、編譯、鏈接,、目標代碼的生成,、軟件仿真、硬件仿真等完整的開發(fā)流程,,尤其是C編譯工具在產(chǎn)生代碼的準確性和效率方面達到了較高的水平,。它支持所有的Keil 80C51的工具軟件,包括C51編譯器,、宏匯編器,、鏈接器器/定位器和目標文件至Hex格式轉(zhuǎn)換器。鑒于此,,選擇其為程序開發(fā)環(huán)境,。
系統(tǒng)程序由主程序、中斷處理子程序,、按鍵處理程序以及顯示子程序等組成,。對時間計時采用定時器定時中斷產(chǎn)生,沒有選擇用軟件延時的方式,,這樣不占用CPU的時間,。定時器T0產(chǎn)生50 ms定時中斷,在中斷服務(wù)程序中有一個計數(shù)器,每產(chǎn)生20次中斷,,有一個1秒計數(shù)。按鍵掃描采用單個按鍵的掃描,,有相應的按鍵處理子程序,,程序中包括按鍵去抖動,按鍵的鍵后處理,,去抖動采用延時去抖法,。顯示子程序在主程序中被調(diào)用對時間進行實時顯示。
3.2 主程序流程圖
主程序流程圖如圖2所示,,主要完成系統(tǒng)的初始化,、按鍵掃描、顯示程序及其他子程序調(diào)用等功能,。
初始化時關(guān)閉定時中斷,,P0.O~P0.2口輸出高電平,狀態(tài)指示燈熄滅,,P3.0~P3.1口輸出高電平電機停止轉(zhuǎn)動,,對LCD初始化顯示,顯示4行信息,,2行顯示時間,,格式為時:分:秒,另外2行為時間的說明文字,。將所有的初始化功能寫成一個子程序,,主程序只需調(diào)用它即可完成系統(tǒng)初始化。初始化完成之后,,掃描按鍵,,如有按鍵按下,調(diào)用相應的處理程序,。時間設(shè)定鍵按下時,,被選中的時間單位將會不斷的閃爍,區(qū)別于其他沒有被設(shè)置的時間單位,,通過K1,,K2鍵對時間進行改動,按下K3鍵退出時間設(shè)定,。開始鍵被按下時,,開啟定時中斷,LCD顯示時間開始倒計時,,PO.1口輸出低電平,,正向轉(zhuǎn)動指示燈亮,P3.0輸出低電平,,電機開始正向轉(zhuǎn)動,,在中斷服務(wù)程序中控制PO.0口輸出電平,,使正常工作指示燈1 s閃爍一次。停止鍵被按下時,,P3.O~P3.1輸出高電平,,電機停止轉(zhuǎn)動,P0.0~P0.2輸出高電平,,狀態(tài)指示燈熄滅,,關(guān)閉定時中斷,停止計數(shù),。正向轉(zhuǎn)動時間結(jié)束時,,反向轉(zhuǎn)動開始倒計時,P3.O輸出高電平,,P3.1輸出低電平,,電機反向轉(zhuǎn)動,P0.1輸出高電平,,PO.2輸出低電平,,正向轉(zhuǎn)動指示燈熄滅,反向轉(zhuǎn)動指示燈亮,。顯示程序?qū)崟r將時間的變化在LCD上顯示,。
4 結(jié)語
該系統(tǒng)經(jīng)實際運行,可以滿足在功能鍵的操作下對時間進行設(shè)定,,控制電機的啟動,、正反向轉(zhuǎn)動、停止,,狀態(tài)指示燈正確顯示工作狀態(tài),,LCD正常的顯示了時間。
本系統(tǒng)將應用于一個閥門的自動打開閉合裝置,,正向轉(zhuǎn)動時閥門打開,,反向轉(zhuǎn)動時,閥門關(guān)閉,,實現(xiàn)對液體流量的控制,,具體應用時還需要對閥門打開閉合的狀態(tài)進行檢測。