楊 琳李 媛雷 炬林 娜喬成芳陳 俊
(1.商洛學(xué)院電子信息與電氣工程學(xué)院 商洛 726000)(2.北京北信源軟件股份有限公司西安分公司 西安 710000)(3.商洛學(xué)院化學(xué)工程與現(xiàn)代材料學(xué)院 商洛 726000)(4.山陽中學(xué) 山陽 726400)
近幾年來,寵物行業(yè)在國(guó)內(nèi)迅速發(fā)展,越來越多的人飼養(yǎng)寵物,但是,由于繁忙的工作、學(xué)習(xí),飼養(yǎng)者可能沒有足夠的精力與時(shí)間隨時(shí)照看寵物,尤其是出差或外出旅游期間,需要寵物獨(dú)處的時(shí)間更長(zhǎng),而這段時(shí)間寵物的喂養(yǎng)成為飼養(yǎng)者的一大難題[1~2]。對(duì)寵物的自動(dòng)喂養(yǎng)成為一個(gè)熱點(diǎn)研究,這個(gè)問題在國(guó)內(nèi)外早有研究,國(guó)外的研究在智能化和自動(dòng)化方面已經(jīng)取得了很大的進(jìn)展[3],但是存在設(shè)備體積大、結(jié)構(gòu)復(fù)雜、價(jià)格昂貴,普通的寵物飼養(yǎng)者無法承擔(dān)等問題[4~5]。而在國(guó)內(nèi)也有很多研究人員在該方向展開深入的研究,早期趙飛達(dá)、商蓮輝研究了寵物自動(dòng)喂食器[6~7],近些年,杜雨函、蒲小年等人在產(chǎn)品的智能化方面做了相關(guān)的研究[8~11]。然而,大多數(shù)寵物喂食器都比較簡(jiǎn)單,結(jié)構(gòu)單一,難以滿足寵物主人對(duì)寵物身體健康、精神健康等方面的需求。單片機(jī)具有體積小、速度快、抗干擾能力強(qiáng),環(huán)境要求不高,性能可靠和價(jià)格低廉等優(yōu)點(diǎn),通常在其外部配置外圍電路就可構(gòu)成一完整的控制系統(tǒng),得了廣泛應(yīng)用[12~15]。本文結(jié)合國(guó)內(nèi)外的現(xiàn)狀,提出基于單片機(jī)的智能控制開發(fā)一款智能寵物自動(dòng)定時(shí)喂食系統(tǒng),在減小體積、降低成本的同時(shí),提高其智能程度。一方面,定時(shí)定量的設(shè)計(jì)能夠輔助寵物養(yǎng)成定時(shí)定量進(jìn)食的習(xí)慣,另一方面,為需要外出的寵物飼養(yǎng)者解決了后顧之憂。
系統(tǒng)實(shí)現(xiàn)寵物自動(dòng)定時(shí)喂食功能,主要分為主控模塊、驅(qū)動(dòng)模塊、按鍵模塊、顯示模塊、電源模塊五大部分。主控模塊是以單片機(jī)STC89C52作為主控芯片,通過搭建其最小系統(tǒng),實(shí)現(xiàn)對(duì)外圍其他設(shè)備的控制功能;驅(qū)動(dòng)模塊采用的是利用繼電器對(duì)步進(jìn)電機(jī)進(jìn)行控制的功能;顯示模塊主要采用的是LCD1602顯示屏,對(duì)定時(shí)時(shí)間和模式選擇進(jìn)行實(shí)時(shí)顯示的功能;電源模塊主要采用的是USB的供電方式;按鍵模塊是利用9位獨(dú)立按鍵對(duì)寵物定時(shí)時(shí)間和模式選擇進(jìn)行設(shè)定,以及對(duì)喂食時(shí)間進(jìn)行復(fù)位。
本設(shè)計(jì)主要由STC89C52主控模塊、供電模塊、液晶顯示模塊、獨(dú)立按鍵模塊、蜂鳴器報(bào)警模塊和繼電器驅(qū)動(dòng)模塊組成。其系統(tǒng)框圖如圖1所示。
圖1 寵物定時(shí)喂食器系統(tǒng)框圖
1)STC89C52單片機(jī):主要是作為主控芯片,用來對(duì)用按鍵輸入進(jìn)來的數(shù)據(jù)進(jìn)行處理,并且通過其IO口對(duì)其他幾個(gè)部分進(jìn)行控制的。
2)電源:該設(shè)計(jì)采用USB供電的方式,對(duì)單片機(jī)和整個(gè)系統(tǒng)進(jìn)行供電。
3)LCD1602:對(duì)按鍵設(shè)定的定時(shí)時(shí)間和模式進(jìn)行顯示。
4)蜂鳴器:當(dāng)定時(shí)時(shí)間到來的時(shí)候進(jìn)行報(bào)警。
5)繼電器模塊:主要用來對(duì)步進(jìn)電機(jī)進(jìn)行驅(qū)動(dòng)。
6)步進(jìn)電機(jī):模擬寵物喂食的過程。
該系統(tǒng)從硬件的總體設(shè)計(jì)來說,主要由單片機(jī)主控模塊、繼電器驅(qū)動(dòng)模塊、LCD1602顯示模塊、按鍵模塊、USB供電模塊和蜂鳴器報(bào)警模塊??傮w電路包括復(fù)位電路、晶振電路、驅(qū)動(dòng)電路、顯示電路、報(bào)警電路、按鍵電路、電源電路。
復(fù)位電路起的作用是當(dāng)對(duì)單片機(jī)系統(tǒng)進(jìn)行初始化或者程序跑飛的時(shí)候,通過一定的方式讓單片機(jī)進(jìn)行復(fù)位,恢復(fù)到初始狀態(tài)。STC89C52單片機(jī)主要有兩種復(fù)位方式,一種是通過上電進(jìn)行復(fù)位,另外一種是通過按鍵進(jìn)行復(fù)位,而本系統(tǒng)所采用的是按鍵復(fù)位。STC89C52單片機(jī)的復(fù)位電路如圖2所示。
圖2 復(fù)位電路
晶振電路主要是用來給單片機(jī)提供時(shí)鐘信號(hào)的,以保證同步方式的實(shí)現(xiàn)。本系統(tǒng)中所使用的是11.0592MHz的晶振,STC89C52單片機(jī)的時(shí)鐘引腳主要是XTAL1和XTAL2。本系統(tǒng)中設(shè)計(jì)了μs級(jí)和ms級(jí)兩個(gè)函數(shù)來實(shí)現(xiàn)對(duì)定時(shí)時(shí)間和喂食時(shí)間的設(shè)定。其中三個(gè)定時(shí)時(shí)間是將初值先設(shè)置0,然后通過循環(huán)實(shí)現(xiàn)定時(shí)的功能;喂食時(shí)間是先將初值設(shè)置為20,然后等到定時(shí)時(shí)間到達(dá)后,喂食時(shí)間開始遞減,實(shí)現(xiàn)喂食的倒計(jì)時(shí)。晶振電路如圖3所示。
圖3 晶振電路
本系統(tǒng)所采用的驅(qū)動(dòng)電路是繼電器驅(qū)動(dòng),使用的控制芯片是集成芯片ULN2003,驅(qū)動(dòng)的主要元器件是四相五線型的步進(jìn)電機(jī)。按照一定的時(shí)序?qū)ζ渫?,它就?huì)按照其時(shí)序進(jìn)行轉(zhuǎn)動(dòng)。脈沖信號(hào)到來,步進(jìn)電機(jī)開始角位移,進(jìn)而帶動(dòng)寵物食物流出。通過控制脈沖個(gè)數(shù)來控制角位移量,從而達(dá)到寵物食物的準(zhǔn)確定位和控制補(bǔ)給量的目的,驅(qū)動(dòng)電路如圖4所示。
圖4 電機(jī)驅(qū)動(dòng)模塊
本系統(tǒng)采用LCD1602作為顯示設(shè)備,LCD1602的數(shù)據(jù)傳輸部分主要是由單片機(jī)P0口來控制,命令選擇端、數(shù)據(jù)選擇端和使能端是由單片機(jī)的P1.3-P1.5控制,LCD1602的顯示電路如圖5所示。
圖5 顯示電路
蜂鳴器是作為當(dāng)設(shè)定的時(shí)間以及喂食時(shí)間到達(dá)后進(jìn)行實(shí)時(shí)報(bào)警的功能,本系統(tǒng)中使用STC89C52單片機(jī)的P1.7口來控制蜂鳴器,蜂鳴器報(bào)警電路如圖6所示。
圖6 蜂鳴器報(bào)警電路
系統(tǒng)的設(shè)計(jì)采用的是9位獨(dú)立按鍵,分別用來對(duì)定時(shí)時(shí)間和喂食時(shí)間進(jìn)行設(shè)定以及開始計(jì)時(shí)。其中前3組按鍵用來對(duì)喂食前的時(shí)間進(jìn)行設(shè)定,第4組是對(duì)喂食過程中的時(shí)間進(jìn)行設(shè)定,而第9個(gè)則是開始計(jì)時(shí)的按鍵,并且當(dāng)按下對(duì)應(yīng)的按鍵后,可以能夠通過LCD1602顯示器實(shí)時(shí)的顯示出來。按鍵電路如圖7所示。
圖7 按鍵電路
本系統(tǒng)中采用的是USB電源供電的方式,分別對(duì)單片機(jī)、驅(qū)動(dòng)電路、LCD1602液晶顯示模塊進(jìn)行供電。USB電源電路如圖8所示。
圖8 USB電源電路
主程序在設(shè)計(jì)過程中相對(duì)簡(jiǎn)單,它主要完成的任務(wù)是對(duì)各個(gè)模塊的初始化,以及對(duì)于一些寄存器的配置工作。其程序流程圖如圖9所示。
圖9 主程序流程圖
1)對(duì)LCD1602進(jìn)行初始化和清屏操作,然后向LCD1602中寫入字符或者字符串?dāng)?shù)據(jù);
2)開始對(duì)定時(shí)器/計(jì)數(shù)器0進(jìn)行初始化操作,設(shè)置為16位的定時(shí)器/計(jì)數(shù)器模式,并向計(jì)數(shù)器中裝入高八位和低八位初值;
3)對(duì)按鍵進(jìn)行初始化操作,相應(yīng)的為設(shè)置為高電平;
4)關(guān)閉定時(shí)器/計(jì)數(shù)器中斷和總中斷;
5)使用按鍵開始設(shè)置定時(shí)時(shí)間和喂食時(shí)間,并且觀察LCD1602上顯示的時(shí)間是否和設(shè)置的時(shí)間一致;
6)打開啟動(dòng)按鍵,開始計(jì)時(shí),等到定時(shí)時(shí)間到達(dá)后,觀察電機(jī)和液晶的顯示。
LCD1602作為此次系統(tǒng)的顯示模塊,對(duì)其軟件的設(shè)計(jì)主要涉及到初始化、數(shù)據(jù)及命令的寫和讀操作、以及清屏和對(duì)比度的調(diào)整等。LCD1602軟件設(shè)計(jì)流程圖如圖10所示。
圖10 LCD1602程序圖
本系統(tǒng)中,使用的繼電器驅(qū)動(dòng)的執(zhí)行元件是反應(yīng)式四相五線步進(jìn)電機(jī),其中自然就涉及到了步進(jìn)電機(jī)的轉(zhuǎn)速、轉(zhuǎn)向的問題。其中步進(jìn)電機(jī)的轉(zhuǎn)向和轉(zhuǎn)速主要是通過P2.0-P2.3口控制的,由于四相步進(jìn)電機(jī)采用八拍通電方式,則當(dāng)電機(jī)正轉(zhuǎn)時(shí),電機(jī)繞組按A—AB—B—BC—C—CD—D—DA—A順序通電,反轉(zhuǎn)時(shí),繞組通電順序與正轉(zhuǎn)時(shí)相反,步進(jìn)電機(jī)通電換相的控制采用延時(shí)的方法,當(dāng)某相通電或某兩相通電時(shí),其余相繞組需斷電。在控制電機(jī)的過程中,其控制轉(zhuǎn)向和轉(zhuǎn)速的流程圖分別如圖11和圖12所示。
圖11 步進(jìn)電機(jī)控制轉(zhuǎn)向流程圖
圖12 步進(jìn)電機(jī)控制轉(zhuǎn)速流程圖
本文設(shè)計(jì)了基于單片機(jī)的寵物定時(shí)喂食器,該系統(tǒng)主要由STC89C52單片機(jī)、USB電源電路、蜂鳴器電路、按鍵電路、繼電器驅(qū)動(dòng)模塊以及LCD1602顯示模塊組成。
1)本系統(tǒng)以STC89C52單片機(jī)及其最小系統(tǒng)作為主控模塊,來控制整個(gè)系統(tǒng)。USB電源電路用來給整個(gè)系統(tǒng)提供外部電源,保證整個(gè)系統(tǒng)的正常工作;蜂鳴器電路主要是當(dāng)?shù)竭_(dá)設(shè)定的定時(shí)時(shí)間后,進(jìn)行報(bào)警的作用;9位獨(dú)立按鍵電路主要是用來設(shè)定定時(shí)時(shí)間、喂食量、喂食時(shí)間以及開始計(jì)時(shí)的作用。繼電器驅(qū)動(dòng)模塊主要是用來驅(qū)動(dòng)步進(jìn)電機(jī)的,以確保能夠給步進(jìn)電機(jī)較大的電路,保證其能夠正常工作;最后LCD1602顯示模塊是用來實(shí)時(shí)顯示定時(shí)和喂食時(shí)間的是喂食量。
2)經(jīng)測(cè)試,該系統(tǒng)軟硬件運(yùn)行正常,能滿足寵物自動(dòng)定時(shí)喂食的實(shí)際需求,減小設(shè)備體積的同時(shí),提高其智能程度,拉近了人們和寵物之間關(guān)系,將會(huì)帶來一定的市場(chǎng)價(jià)值和經(jīng)濟(jì)效益。