楊 琳李 媛雷 炬林 娜喬成芳陳 俊
(1.商洛學院電子信息與電氣工程學院 商洛 726000)(2.北京北信源軟件股份有限公司西安分公司 西安 710000)(3.商洛學院化學工程與現代材料學院 商洛 726000)(4.山陽中學 山陽 726400)
近幾年來,寵物行業在國內迅速發展,越來越多的人飼養寵物,但是,由于繁忙的工作、學習,飼養者可能沒有足夠的精力與時間隨時照看寵物,尤其是出差或外出旅游期間,需要寵物獨處的時間更長,而這段時間寵物的喂養成為飼養者的一大難題[1~2]。對寵物的自動喂養成為一個熱點研究,這個問題在國內外早有研究,國外的研究在智能化和自動化方面已經取得了很大的進展[3],但是存在設備體積大、結構復雜、價格昂貴,普通的寵物飼養者無法承擔等問題[4~5]。而在國內也有很多研究人員在該方向展開深入的研究,早期趙飛達、商蓮輝研究了寵物自動喂食器[6~7],近些年,杜雨函、蒲小年等人在產品的智能化方面做了相關的研究[8~11]。然而,大多數寵物喂食器都比較簡單,結構單一,難以滿足寵物主人對寵物身體健康、精神健康等方面的需求。單片機具有體積小、速度快、抗干擾能力強,環境要求不高,性能可靠和價格低廉等優點,通常在其外部配置外圍電路就可構成一完整的控制系統,得了廣泛應用[12~15]。本文結合國內外的現狀,提出基于單片機的智能控制開發一款智能寵物自動定時喂食系統,在減小體積、降低成本的同時,提高其智能程度。一方面,定時定量的設計能夠輔助寵物養成定時定量進食的習慣,另一方面,為需要外出的寵物飼養者解決了后顧之憂。
系統實現寵物自動定時喂食功能,主要分為主控模塊、驅動模塊、按鍵模塊、顯示模塊、電源模塊五大部分。主控模塊是以單片機STC89C52作為主控芯片,通過搭建其最小系統,實現對外圍其他設備的控制功能;驅動模塊采用的是利用繼電器對步進電機進行控制的功能;顯示模塊主要采用的是LCD1602顯示屏,對定時時間和模式選擇進行實時顯示的功能;電源模塊主要采用的是USB的供電方式;按鍵模塊是利用9位獨立按鍵對寵物定時時間和模式選擇進行設定,以及對喂食時間進行復位。
本設計主要由STC89C52主控模塊、供電模塊、液晶顯示模塊、獨立按鍵模塊、蜂鳴器報警模塊和繼電器驅動模塊組成。其系統框圖如圖1所示。

圖1 寵物定時喂食器系統框圖
1)STC89C52單片機:主要是作為主控芯片,用來對用按鍵輸入進來的數據進行處理,并且通過其IO口對其他幾個部分進行控制的。
2)電源:該設計采用USB供電的方式,對單片機和整個系統進行供電。
3)LCD1602:對按鍵設定的定時時間和模式進行顯示。
4)蜂鳴器:當定時時間到來的時候進行報警。
5)繼電器模塊:主要用來對步進電機進行驅動。
6)步進電機:模擬寵物喂食的過程。
該系統從硬件的總體設計來說,主要由單片機主控模塊、繼電器驅動模塊、LCD1602顯示模塊、按鍵模塊、USB供電模塊和蜂鳴器報警模塊。總體電路包括復位電路、晶振電路、驅動電路、顯示電路、報警電路、按鍵電路、電源電路。
復位電路起的作用是當對單片機系統進行初始化或者程序跑飛的時候,通過一定的方式讓單片機進行復位,恢復到初始狀態。STC89C52單片機主要有兩種復位方式,一種是通過上電進行復位,另外一種是通過按鍵進行復位,而本系統所采用的是按鍵復位。STC89C52單片機的復位電路如圖2所示。

圖2 復位電路
晶振電路主要是用來給單片機提供時鐘信號的,以保證同步方式的實現。本系統中所使用的是11.0592MHz的晶振,STC89C52單片機的時鐘引腳主要是XTAL1和XTAL2。本系統中設計了μs級和ms級兩個函數來實現對定時時間和喂食時間的設定。其中三個定時時間是將初值先設置0,然后通過循環實現定時的功能;喂食時間是先將初值設置為20,然后等到定時時間到達后,喂食時間開始遞減,實現喂食的倒計時。晶振電路如圖3所示。

圖3 晶振電路
本系統所采用的驅動電路是繼電器驅動,使用的控制芯片是集成芯片ULN2003,驅動的主要元器件是四相五線型的步進電機。按照一定的時序對其通電,它就會按照其時序進行轉動。脈沖信號到來,步進電機開始角位移,進而帶動寵物食物流出。通過控制脈沖個數來控制角位移量,從而達到寵物食物的準確定位和控制補給量的目的,驅動電路如圖4所示。

圖4 電機驅動模塊
本系統采用LCD1602作為顯示設備,LCD1602的數據傳輸部分主要是由單片機P0口來控制,命令選擇端、數據選擇端和使能端是由單片機的P1.3-P1.5控制,LCD1602的顯示電路如圖5所示。

圖5 顯示電路
蜂鳴器是作為當設定的時間以及喂食時間到達后進行實時報警的功能,本系統中使用STC89C52單片機的P1.7口來控制蜂鳴器,蜂鳴器報警電路如圖6所示。

圖6 蜂鳴器報警電路
系統的設計采用的是9位獨立按鍵,分別用來對定時時間和喂食時間進行設定以及開始計時。其中前3組按鍵用來對喂食前的時間進行設定,第4組是對喂食過程中的時間進行設定,而第9個則是開始計時的按鍵,并且當按下對應的按鍵后,可以能夠通過LCD1602顯示器實時的顯示出來。按鍵電路如圖7所示。

圖7 按鍵電路
本系統中采用的是USB電源供電的方式,分別對單片機、驅動電路、LCD1602液晶顯示模塊進行供電。USB電源電路如圖8所示。

圖8 USB電源電路
主程序在設計過程中相對簡單,它主要完成的任務是對各個模塊的初始化,以及對于一些寄存器的配置工作。其程序流程圖如圖9所示。

圖9 主程序流程圖
1)對LCD1602進行初始化和清屏操作,然后向LCD1602中寫入字符或者字符串數據;
2)開始對定時器/計數器0進行初始化操作,設置為16位的定時器/計數器模式,并向計數器中裝入高八位和低八位初值;
3)對按鍵進行初始化操作,相應的為設置為高電平;
4)關閉定時器/計數器中斷和總中斷;
5)使用按鍵開始設置定時時間和喂食時間,并且觀察LCD1602上顯示的時間是否和設置的時間一致;
6)打開啟動按鍵,開始計時,等到定時時間到達后,觀察電機和液晶的顯示。
LCD1602作為此次系統的顯示模塊,對其軟件的設計主要涉及到初始化、數據及命令的寫和讀操作、以及清屏和對比度的調整等。LCD1602軟件設計流程圖如圖10所示。

圖10 LCD1602程序圖
本系統中,使用的繼電器驅動的執行元件是反應式四相五線步進電機,其中自然就涉及到了步進電機的轉速、轉向的問題。其中步進電機的轉向和轉速主要是通過P2.0-P2.3口控制的,由于四相步進電機采用八拍通電方式,則當電機正轉時,電機繞組按A—AB—B—BC—C—CD—D—DA—A順序通電,反轉時,繞組通電順序與正轉時相反,步進電機通電換相的控制采用延時的方法,當某相通電或某兩相通電時,其余相繞組需斷電。在控制電機的過程中,其控制轉向和轉速的流程圖分別如圖11和圖12所示。

圖11 步進電機控制轉向流程圖

圖12 步進電機控制轉速流程圖
本文設計了基于單片機的寵物定時喂食器,該系統主要由STC89C52單片機、USB電源電路、蜂鳴器電路、按鍵電路、繼電器驅動模塊以及LCD1602顯示模塊組成。
1)本系統以STC89C52單片機及其最小系統作為主控模塊,來控制整個系統。USB電源電路用來給整個系統提供外部電源,保證整個系統的正常工作;蜂鳴器電路主要是當到達設定的定時時間后,進行報警的作用;9位獨立按鍵電路主要是用來設定定時時間、喂食量、喂食時間以及開始計時的作用。繼電器驅動模塊主要是用來驅動步進電機的,以確保能夠給步進電機較大的電路,保證其能夠正常工作;最后LCD1602顯示模塊是用來實時顯示定時和喂食時間的是喂食量。
2)經測試,該系統軟硬件運行正常,能滿足寵物自動定時喂食的實際需求,減小設備體積的同時,提高其智能程度,拉近了人們和寵物之間關系,將會帶來一定的市場價值和經濟效益。