何穎, 林智慧, 張星陽
(1.西安思源學(xué)院 電子信息工程學(xué)院,西安 710038; 2.陜西高速交通工貿(mào)有限公司,西安 710003)
隨著科學(xué)技術(shù)的發(fā)展,人們在滿足基本生活的同時,在生活質(zhì)量家用電器上越來越有更高的目標(biāo)要求。單片機具有結(jié)構(gòu)簡單,功能強大,并且簡單、易用,利用單片機來做控制單元可以大幅度提高各模塊的協(xié)調(diào)性,進而提高系統(tǒng)的資源利用性,降低資源浪費,節(jié)約成本[1,2]。設(shè)計一種基于AT89C51單片機的智能遙控窗簾系統(tǒng),利用單片機AT89C51的各項功能,不僅簡單、方便,還成功地完成了人們所需的眾多功能。
系統(tǒng)設(shè)計主要運用電動機通過不同方向的電流時會實現(xiàn)不同的轉(zhuǎn)向,從而實現(xiàn)窗簾的開與關(guān),該遙控窗簾系統(tǒng)可以實現(xiàn)對窗簾進行有效的升降,以及加減速升降,而且具備停止功能。窗簾的加減速升降和停止功能需要動力進行控制,采用步進電機提供動力,通過單片機產(chǎn)生的不同頻率脈沖對步進電機進行控制,從而對窗簾進行有效的控制。該設(shè)計有一個總開關(guān),主要用來防止因為誤碰而引起的不必要麻煩,按下電源按鈕按,可實現(xiàn)相應(yīng)的轉(zhuǎn)向。 智能遙控窗簾的總體結(jié)構(gòu)框圖,如圖1所示。
圖1 智能遙控窗簾的總體結(jié)構(gòu)框圖
整個電路主要包含了電源電路、晶振電路、升降可變速電路、開關(guān)觸發(fā)電路以及步進電機電路等電路組成。電源電路為整個電路提供能源,保證電路可以運行;晶振電路主要提供所需的震蕩頻率;變速電路主要控制步進電機的轉(zhuǎn)速;開關(guān)觸發(fā)電路主要控制步進電機的轉(zhuǎn)與停;步進電機的轉(zhuǎn)動來帶動窗簾的升降。
AT89C51是一款低電壓,高性能CMOS 8位微處理器,具有4K字節(jié)閃爍可編程只讀存儲器(FPEROM-Falsh可編程和可擦除只讀存儲器),通常稱為微控制器[3]。
電源采用直流5V電池供電,通過USB轉(zhuǎn)接口進行供電,充電寶也可為其供電,目的是為了防止斷電時無法升降。
晶振電路主要使用石英晶體振蕩器,石英晶體振蕩器擁有很好的頻率穩(wěn)定性,石英晶體振蕩器的外部干擾被用于產(chǎn)生參考頻率[4],在電路中的頻率的精度由參考頻率來控制,與此同時它還可以發(fā)出震蕩電流,由時鐘信號傳到微控制器[5]。
復(fù)位電路。初始化功能,89C51的RST引腳(復(fù)位引腳)提供超過24個時鐘震蕩周期的高電平就可令其復(fù)位。復(fù)位程序執(zhí)行完以后其初始化地址變?yōu)?000H,就從0000H這個地址開始運行[6,7]。
升降可變速電路。設(shè)計的變速劃分為6個等級,單位步時間設(shè)置為25 ms,其中有0.25轉(zhuǎn)每秒、0.5轉(zhuǎn)每秒、1轉(zhuǎn)每秒、1.25轉(zhuǎn)每秒、2.5轉(zhuǎn)每秒、5轉(zhuǎn)每秒這6個速度等級,可根據(jù)自己的需求選擇相應(yīng)的升降速度;控制升降是通過改變電平的高低來控制的,低電平是正向轉(zhuǎn),高電平是反向轉(zhuǎn)。
開關(guān)觸發(fā)電路。當(dāng)選擇好升降和速度后,就可以通過這個開關(guān)來觸發(fā)升降的進行,先把需要調(diào)節(jié)的方式選擇好,然后再通電去執(zhí)行相應(yīng)的操作,可以有效的避免因一直通電而突然改變方向或者速度而影響電路的穩(wěn)定性,同時也可以避免因為接觸不良而造成的電路損傷[8]。
通過步進電機的轉(zhuǎn)動來帶動窗簾的升降,實現(xiàn)智能化的家居,使用 ULN2003步進電機每次步進的角度為1.2°,遙控窗簾升降所需的距離通過角速度轉(zhuǎn)動精度為1.2度,通過單片機輸出不同頻率,不同數(shù)量的脈沖來控制步進電機的速度和轉(zhuǎn)動圈數(shù),從而得到升降窗簾的效果。當(dāng)系統(tǒng)上電以后首先開始復(fù)位,通過左邊的按鈕設(shè)置來對步進電機進行調(diào)節(jié),正轉(zhuǎn)與反轉(zhuǎn),同時對應(yīng)10個不同的速度等級,由數(shù)碼管將其顯示出來。系統(tǒng)總體電路圖,如圖2所示。
圖2 系統(tǒng)總體電路圖
主程序首先通過“while(1) { }”語句來構(gòu)成無限循環(huán),主要完成單片機初始化,關(guān)中斷,相應(yīng)接口置高或者低電平,進入循環(huán)以后進行調(diào)速,正反轉(zhuǎn)等程序的運行,讓電機按照所需要的要求運行。主程序的流程圖,如圖3所示。
通過對用戶所需要的轉(zhuǎn)向進行判斷,即對窗簾的升降進行判斷,按照所需要的功能傳送相對應(yīng)的脈沖到控制器,來控制電機的運轉(zhuǎn),當(dāng)所需要的功能指令傳送完畢以后,結(jié)束本周期運行指令,復(fù)位等待下一次指令。步進電機的運轉(zhuǎn)流程圖,如圖4所示。
當(dāng)顯示子程序開始執(zhí)行以后,初始地址60H被發(fā)送到 R0,作為顯示代碼的01H則被發(fā)送到R2,然后將位代碼發(fā)送給處理器的A口。單片機獲取到顯示數(shù)據(jù)以后根據(jù)查表轉(zhuǎn)換成顯示代碼以后再發(fā)送給處理器的B口,同時往后推遲2 ms,指針R0加1,用來確認(rèn)在屏顯上是否成功顯示了6。如果這些指令都成功的操作完了那就執(zhí)行返回操作,反之則將位代碼R2往左移動一個位,直到6位顯示通過完成再返回。顯示子程序流程圖,如圖5所示。
圖3 主程序流程圖
圖4 步進電機工作流程
圖5 顯示子程序流程圖
開關(guān)按壓下去的過程會產(chǎn)生相應(yīng)的抖動,這個過程一般持續(xù)時間為5-10 ms,抖動的過程中會有一個穩(wěn)定的閉合狀態(tài),過程結(jié)束后會恢復(fù)到斷開狀態(tài),從而達到控制電路的開與斷。軟件消除抖動是采用了延時程序來解決的,當(dāng)?shù)谝淮螜z測到開關(guān)閉合后,立刻執(zhí)行延時程序,通過延時10 ms判斷該按鍵是否仍然閉合,如果檢測到閉合,則確定這次為真正的閉合,對電路會產(chǎn)生影響,這樣,就解決了因為按鍵抖動對電路造成的影響。
當(dāng)系統(tǒng)的軟件和硬件設(shè)計完成后,將設(shè)計好的軟件刻錄進單片機中,檢測軟硬件是否兼容,是否能夠按照預(yù)期的目的進行運行,檢測系統(tǒng)的穩(wěn)定性和效率。通過改善程序的結(jié)構(gòu)以及排查相應(yīng)的bug就可以測試運行了,可以成功的實現(xiàn)電機的加減速、停止等功能,從而可以對窗簾進行有效地升降控制。實物效果圖,如圖6所示。
系統(tǒng)基于AT89C51單片機作為基本的控制單元,利用I/O口的特殊性質(zhì),采用時序方波經(jīng)過ULN2003來驅(qū)動步進電機,從而智能的控制窗簾的升降。硬件設(shè)計主要包括單片機最小系統(tǒng)、鍵盤控制模塊、步進電機驅(qū)動模塊、數(shù)碼顯示模塊等,軟件設(shè)計主要通過編寫程序代碼,實現(xiàn)對整個系統(tǒng)的控制。在系統(tǒng)上電復(fù)位后程序自動運行,通過接受外部的鍵盤操作修改系統(tǒng)參數(shù)值,控制步進電機的啟停,以及轉(zhuǎn)速的增減和轉(zhuǎn)動方向的改變,定時器根據(jù)系統(tǒng)參數(shù)控制步進電機的轉(zhuǎn)動,實現(xiàn)步進電機轉(zhuǎn)動速度的動態(tài)顯示。通過對步進電機的控制來實現(xiàn)窗簾的升降,通過實驗驗證,該系統(tǒng)穩(wěn)定性高,操作簡單,方便實用。
圖6 實物效果圖