馬培松 陶華偉 李益民 付麥霞 呂宗旺
(河南工業大學,河南 鄭州 450001)
水是生命之源,人的生活離不開水。在現實生活中,飲水機成為家庭必備的飲水設施。飲水機能有效克服直接喝水或飲用桶裝飲用水所帶來的不良問題。通過飲水機內部的設備對冷水進行加熱,從而能快速地給人們供應熱水[1]。
目前,桶裝飲水機在市場中已占有一席之地。在無人監視時,部分飲水機仍會對滾水進行加熱,不但會造成資源的浪費,嚴重時甚至會危及人員的生命安全。為了解決上述問題,并引進新功能,通過引入單片機系統對飲水機進行控制,通過監測水位來避免出現空燒的情況,利用超聲波測距模塊來實現自動出水功能。
本研究設計的多功能飲水機系統(見圖1)是利用現代電子技術,通過外加單片機控制模塊來對傳統的飲水機進行改造,并保留傳統飲水機的樣式。本研究設計的飲水機利用外圍回路來實現溫控、照明控制、溫度監測和顯示、自動出水等功能。
圖1 多功能飲水機系統
硬件電路以AT89C51芯片為核心,該芯片內部有4 kB的FLASH存儲空間,芯片外部有40個引腳(見圖2),4個8位的并行口(即32個并行接口),其內部有2個16位的定時計數器(Timer0、Timer1)以及2個中斷控制器。通過AT89C51芯片自帶的I/O口來外接圖1中的各個模塊,并使用Keil軟件進行代碼的編寫,完成系統的設計需求。
圖2 AT89C51芯片引腳圖
本研究所使用的開發板最大外接的獨立鍵盤數量為4個。根據實際需求來選擇按鍵數量更多的矩陣鍵盤,矩陣鍵盤通過8個I/O口連接到單片機上。根據實際需求,設置有手動控制熱水水溫的上限按鈕、手動加熱按鈕、自動加熱水溫的下限按鈕、電源開關按鈕、手動出水按鈕等按鈕。通過手動控制加熱水溫的上限按鈕來設置加熱時候熱水的溫度,該溫度值應該大于系統自動加熱時熱水水溫的下限。當按下手動加熱按鈕后,該多功能飲水機會將水加熱到手動控制熱水水溫的上限值;通過自動加熱水溫下限按鈕可實時調整熱水的下限溫度,讓熱水溫度保持在一定的范圍內;手動出水按鈕是自動出水模塊的備用方案,當自動出水模塊出現故障時,可按動手動出水按鈕讓飲水機出水。
溫度檢測模塊使用的是DS18B20芯片,其測溫范圍為-55~125℃,其在-10~85℃內的測量誤差小于0.4℃,基本符合飲水機的水溫監測需求。同時,該芯片具有體積較小、抗干擾能力強等優點,且電路連接方式比較簡單,使用單總線通信[2]。DS18B20芯片內部含有EEPROM,通過軟件配置可對芯片的轉換精度及報警溫度進行設定,設置完成后,即使在系統因突發情況而掉電,EEPROM芯片的數據也不會丟失。DS18B20外部有三個引腳(見圖3),分別為GND、DQ、VDD,三者的功能分別是接地、單總線通信接口和接5 V電源。根據要求,該芯片通過VDD連接電源時要外接一個上拉電阻,這樣才能正常使用。將DS18B20芯片連接到主控電路時,在軟件層根據協議對其進行編碼,便可將DS18B20測出的存儲在高速緩存器內部的溫度數據反饋給單片機系統,方便后續操作。
圖3 DS18B20芯片引腳圖
該系統可在顯示模塊顯示當前水溫、手動加熱時設置的水溫、恒溫狀態下自動保持的溫度等數據。在考慮溫度顯示功能及用戶體驗、硬件成本的前提下,本研究選用LCD1602液晶顯示屏來實時顯示當前水溫及水桶內的剩余水量。該模塊外部共有16引腳(見圖4),有3個電源引腳和1個接地引腳,其余引腳均是輸入和輸出引腳。通過對該模塊進行編碼,可將DS18B20讀出的溫度在液晶顯示模塊上實時顯示出[3]。
圖4 LCD1602芯片引腳圖
超聲波測距模塊是實現系統自動出水功能的關鍵,該系統的熱水出水口處及常溫水出水口處都配有HC-SR04超聲波測距模塊,該模塊外部有四個引腳(見圖5),分別為VCC(外接5 V電源)、Trig(輸入觸發信號)、Echo(傳出超聲波信號)、Gnd(接地)。該模塊使用I/O口的Trig觸發測距功能,在給該引腳一個大于10 us的高電平,之后該模塊會發射出8個40 kHz的超聲波,并不斷檢測是否有返回的信號,可測量距離為0.02~4 m。當超聲波遇到障礙物時會返回,通過I/O口ECHO來輸出一個高電平,單片機系統通過測量超聲波往返的時間(即高電平的持續時間),并通過公式(1)來計算出距離distance,從而判斷出水杯是否放在了出水口處。
圖5 HC-SR04芯片引腳圖
式中:t為高電平的持續時間;v為聲速,空氣中的音速在1個標準大氣壓和15℃的條件下約為340 m/s。
當距離合適時,單片機會通過I/O口邏輯控制讓外接的飲水機自動出水,并通過AT89C51內部自帶的定時器來計算出出水時間,再將此時間乘以每秒鐘的出水量,便可實時檢測出當下水桶內部的剩余水量,當水位過低時便停止加熱[4]。
自動照明部分采用PCF8591芯片來實現AD轉換,該模塊具有1個模擬輸出、4個模擬輸入及供IIC使用的串行總線接口,該模塊的最大轉換速率由設定的IIC總線的最大速度來決定。該芯片的引腳圖如圖6所示。PCF8591芯片通過外接光敏電阻可測量外界的亮度變化,當入射光變強時,光敏電阻的電阻值會變小;當入射光變弱時,光敏電阻的電阻值會變大。單片機檢測到外界亮度低于一定值時,飲水機外接燈管會自動點亮。
圖6 PCF8591芯片引腳圖
系統軟件部分設計主要是使用Keil4軟件進行代碼的編寫,使用單片機I/O口來操作單片機外部外接的PCF8591 AD/DA轉換模塊、LCD1602顯示模塊、DS18B20溫度檢測模塊、HC-SR04超聲波測距模塊、矩陣鍵盤模塊,實現自動出水、水位監控、自動加熱等功能。
在給飲水機裝上一桶水,系統上電后,單片機內部燒錄的程序會控制單片機時刻檢測DS18B20探測的外部水溫,檢測熱水溫度是否達到設置的熱水水溫下限值,如果沒有達到,在主函數邏輯控制下單片機加熱系統對熱水進行加熱;當達到預設溫度時,熱水的溫度會穩定在附近。當使用水杯接水時,通過內部終端檢測HC-SR04超聲波模塊發射出的超聲波的往返時間計算出水杯到出水口的距離。當水杯距離出水口足夠近時,單片機就會控制飲水機自動出水。系統溫度檢測、自動出水功能軟件設計框圖見圖7、圖8。
圖7 系統溫度檢測軟件設計框圖
圖8 單片機自動出水功能軟件設計流程框圖
通過代碼對HC-SR04模塊Trig引腳賦值10 us以上的高電平,讓其發射出8個40 kHz的超聲波,芯片開始工作。單片機時刻檢測該芯片是否接收到超聲波的返回信號。當信號返回時,該模塊的Echo引腳會向單片機輸送一個高電平信號。通過編程可計算出上述高電平的持續時間,即超聲波往返時間長度,并通過公式(1)來計算水杯距接水口的距離。
使用IIC協議寫入控制字節,讓PCF8591處于AD轉換模式,并讓其不斷接收數據。根據IIC協議,PCF8591的工作通道可選擇光敏電阻通道,之后將該模塊讀取到的數值反饋給單片機。
基于單片機的多功能飲水機是利用當下較為前沿的電子技術對傳統飲水機進行改進,對傳統飲水機缺乏的功能進行補充,方便用戶的使用,增加用戶使用產品時的幸福感[1]。設計過程中采用的是當下較為普及、價格較低、性能好的硬件設施,從而減少成本支出。本研究設計出的飲水機具有較強的實用性與可開發性,能夠為開發者帶來良好的經濟效益。