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