


摘 要:隨著經濟的快速發展,人們忙于工作和學習而經常忘記喝水或喝不到溫度適宜的水,文章設計的智能杯墊將解決這一問題,本設計采用Atmega328作為核心控制芯片,通過陶瓷加熱片對杯底進行加熱,通過LM35溫度傳感器采集水杯溫度,內置重量采集模塊,通過一塊彩屏顯示時間、溫度和飲水量,還能通過PID算法進行智能控溫。目前在市場上杯墊并沒有出現加熱和水量測量相結合的智能杯墊。
關鍵詞:Atmega328;杯墊;PID
引言
水是生命必須的元素之一,人體每天需要補充2升左右的水,每天補充足夠的水分是維持生命體新陳代謝的重要一環。喝水的溫度也直接影響了胃腸的健康,晨起喝水,水溫與室溫相同對腸胃最佳,天冷時喝溫開水,可以減少對胃腸的刺激。但是目前很多上班族或白領,每天的飲水量不足,喝水時的水溫也不適宜腸胃,長此以往,對身體健康影響很大,造成一些身體疾病。
在目前市場上,普遍的智能杯墊監控飲水量的功能,只能監測用戶的飲水量,但無法保證飲水時的水溫。本設計在智能杯墊的基礎上增加了加熱功能,很好地解決了飲水時水溫不適宜的問題,同時也讓用戶養成將水杯放回杯墊的習慣,以監測用戶飲水量。
1 硬件電路設計
1.1 系統硬件總體結構
本設計的硬件部分按功能可以分為單片機主控模塊、按鍵輸入、時鐘模塊、顯示模塊、報警模塊、溫度采集、溫度控制、稱重模塊等幾個部分。硬件總體結構框圖如圖1所示,智能杯墊以單片機為控制核心,并輔助以各種功能模塊,其中,溫度由LM35溫度傳感器采集,采集到的溫度會通過液晶屏顯示出來。用戶飲水量監測由兩個全橋稱重傳感器進行檢測,該傳感器將重量信號轉成微弱的電壓信號,再通過24位的A/D轉換器HX711轉換成數字信號,控制器會對該數字信號進行濾波,并計算出水的體積,最終將飲水量情況通過控制面板上的液晶顯示器顯示出來。整個系統還包括DS3231時鐘芯片、按鍵和報警電路,用于監控每段時間的飲水量情況進而提醒用戶。
1.2 溫度傳感器
溫度傳感器的種類比較繁雜,目前,常見高精度溫度傳感器有LM35和DS18B20。LM35系列是精密集成電路溫度傳感器,其輸出的電壓線性地與攝氏溫度成正比。靈敏度為10.0mV/℃,精度在0.4℃至0.8℃(-55℃至+150℃溫度范圍內),重復性好,低輸出阻抗,線性輸出和內部精密校準使其與讀出或控制電路接口簡單和方便,可單電源和正負電源工作。而DS18B20具有微型化,低功耗,高性能,抗干擾能力強,易配微處理器等優點,可直接將溫度轉化成數字信號處理器處理。測量的溫度范圍是-55~125℃,測溫誤差0.5℃。考慮到DS18B20溫度轉換時間過長,影響對陶瓷加熱片升溫調整,最終我們采用LM35作為溫度傳感器。
1.3 稱重模塊
本設計考慮到稱重的精確度,采用了HX711數模轉換芯片,這是一款專為高精度24位A/D轉換器芯片,與同類型其它芯片相比,該芯片集成了包括穩壓電源、片內時鐘振蕩器等其它同類型芯片所需要的外圍電路,具有集成度高、響應速度快、抗干擾性強等優點。HX711配合壓電片和形變傳感器實現了水杯重量的采集。硬件電路連接如圖2所示。
1.4 時鐘模塊
本設計采用了DS3231作為時鐘芯片,DS3231是低成本、高精度I2C實時時鐘(RTC)。該器件連接了一顆紐扣電池,即使杯墊斷開主電源,仍可保持長時間的精確計時。DS3231中集成的晶振能提供高精度的脈沖,保障時間的精確性。
時鐘芯片能保存秒、分、時、星期、日期、月和年信息。少于31天的月份,將自動調整月末的日期,包括了對閏年的修正。時鐘的工作格式可以由用戶選擇24小時或帶AM/PM指示的12小時格式,芯片通過I2C與單片機通信。
2 軟件功能設計
2.1 主程序模塊
杯墊上電后首先會對系統進行初始化,然后循環運行彩屏顯示、按鍵掃描、時鐘讀取、重量采集、計算用戶飲水量、飲水提醒和重置看門狗定時器等功能。本系統擁有一個簡單的用戶界面,便于用戶對產品進行操作。該界面功能包括時鐘顯示、菜單選擇和操作、加熱溫度設置、飲水情況查看、設置提醒等等。
2.2 PID溫度控制
由于陶瓷加熱的穩定性較差,溫度曲線不夠平滑,在整個加熱過程中,受到外界各種不確定干擾的因素較多,因此必須對水溫的變化趨勢作出預測,并且根據需要及時反方向抑制,以防止出現較大的超調量的波動。
在PID控制中,積分環節(I)具有很強的滯后效應,而微分環節(D)具有預見性,所以該方案最終采用PD算法,能夠很好的控制超調,并且穩態誤差也很小。本套系統將LM35溫度傳感器采集鋁板的溫度作為當前輸入,與設定值比較進而得到偏差值,然后運用PID運算公式編寫出軟件算法后,得到fout的值決定是否加熱,加熱時間是多少,進而控制陶瓷加熱片。
2.3 數字濾波
在單片機進行數據采集時,會遇到數據的隨機誤差,隨機誤差是由隨機干擾引起的,其特點是,在相同條件下測量同一量時,其大小和符號會現無規則的變化而無法預測,但多次測量的結果符合統計規律。為克服隨機干擾引起的誤差,需要進行濾波。本系統主要存在誤差在按鍵和AD采集方面。
為了解決按鍵方面的機械誤差,我們使用定時器中斷多次掃描判斷按鍵狀態,進而確定按鍵是否按下,以防止按鍵誤按。在AD采集方面,我們采用算術平均濾波算法來去除隨機誤差,該算法對信號進行N次采集后,算出N次采集的總和,并減去N次采集中最大值和最小值,最后求出平均AD采集值作為最終采集信號,以減少誤差干擾。
2.4 水量監測
用戶飲水的監測是計算水杯的重量變化得到的,由于水的密度是相對不變的,因此,通過計算水杯重量的變化,就可以計算出用戶飲水的體積。通過采用校準后的重量與設定重量的比較,來判斷用戶是否處于在喝水狀態,從而計算出本次用戶的飲水量。另外,由于壓力傳感器形變恢復較為緩慢,因此,我們最終采用多次滯回比較算法得出用戶飲水量。滯回比較既能解決壓力傳感器形變恢復時間影響,又能過濾去一些采集誤差和減少一些不確定因素進而對飲水量數據干擾。
3 結束語
本設計實現了水溫控制和水量監測功能的結合,很好地解決了上班族飲水不足和飲水溫度不適的問題。
參考文獻
[1]胡壽松.自動控制原理(第五版)[M].北京:科學出版社,2007.
[2]李英順,倫淑嫻.模糊PID溫度測控儀[J].儀表技術與傳感器,2003,01.
[3]葉金晶,周健,等.基于Arduino的PM2.5和溫濕度實時檢測器設計[J].傳感器與微系統,2016,08.