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