李朝陽
(仲愷農(nóng)業(yè)工程學(xué)院,廣東廣州 510550)
水是人類生命的源泉,身體健康需要保持良好的飲水習(xí)慣。然而,現(xiàn)代社會中,越來越多的人因為工作、學(xué)習(xí)等原因,常常忽視了飲水的重要性,導(dǎo)致身體出現(xiàn)脫水、口渴等癥狀,不利于身體健康。
為了解決這個問題,飲水量計量裝置應(yīng)運而生,可以測量人體攝入水分量,幫助人們更好地掌握自己的飲水量。隨著現(xiàn)代人生活方式的改變,越來越多的人開始注重健康飲食和身體健康,因此飲水量計量裝置的需求也越來越高。
HX711 是24 位A/D 轉(zhuǎn)換器芯片,西安外事學(xué)院工學(xué)院汪顯衛(wèi)[1]、無錫商業(yè)職業(yè)技術(shù)學(xué)院物聯(lián)網(wǎng)學(xué)院王小娟[2]、北京信息科技大學(xué)于飛[3]、中國電子科技集團公司第三十八研究所劉磊[4]、杭州職業(yè)技術(shù)學(xué)院信息工程學(xué)院葛海江[5]等,對HX711 進行研究分析并設(shè)計電子秤,武漢交通職業(yè)學(xué)院商林就精度與穩(wěn)定性進行了實踐[6]。
筆者在前人的基礎(chǔ)上,設(shè)計了一種基于HX711的帶記憶功能的飲水量計量裝置,能夠計量單次飲水量、飲水次數(shù)、總飲水量,并且用液晶顯示,方便用戶隨時查看飲水量。
圖1 總體設(shè)計
計量裝置主要由懸臂梁、形變電阻橋式電路、HX711模數(shù)轉(zhuǎn)換電路、STC89C52控制器、液晶顯示電路、按鍵輸入電路、DS1302 時鐘電路等構(gòu)成,如圖1所示。
供電電路如圖2所示,將+9V ~+12V電壓轉(zhuǎn)換成5V 電壓,為單片機最小系統(tǒng)電路、液晶顯示電路供電。
圖2 供電電路
形變電阻橋式電路將應(yīng)變計電阻變化轉(zhuǎn)化為電壓或電流的電信號,如圖3所示,以電阻應(yīng)變計作為橋臂組成電橋電路,當(dāng)有重物放置到秤盤上時,橋臂發(fā)生彎曲,彎曲程度與放置物重量有關(guān),電阻應(yīng)變器感應(yīng)到相應(yīng)的信號后,輸出微弱的電壓信號。
圖3 形變電阻橋式電路
基于HX711的模數(shù)轉(zhuǎn)換電路如圖4所示,電路將形變電阻橋式電路微弱電信號放大,并轉(zhuǎn)變?yōu)閿?shù)字信號,再傳遞給控制器。HX711 芯片具有集成度高、響應(yīng)速度快、抗干擾性強等優(yōu)點,芯片內(nèi)部集成穩(wěn)壓電路,可直接供電于芯片內(nèi)部連接的傳感器和A/D 轉(zhuǎn)換器。此外,時鐘振蕩器也被集成在芯片內(nèi)部,不需要額外的外接設(shè)備。另外,芯片內(nèi)部已整合上電自動復(fù)位電路,使開機初態(tài)的設(shè)定變得簡單化。該器件中有通過輸入選擇開關(guān)隨意選擇信道A 或信道B 來完成信號放大的低噪聲可編程放大器。連接可編程放大器,內(nèi)部噪聲小??删幊淘鲆鏋?28 或64 的通道A,分別對應(yīng)±20mV 或±40mV 輸入信號幅值的滿量程差分。B 通道增益定值64,可檢測系統(tǒng)參數(shù)[7]。
該芯片與后端MCU 芯片的接口和編程非常簡單,所有控制信號由管腳驅(qū)動,無須對芯片內(nèi)部的寄存器編程。HX711 是一款電子秤專用的高精度24位A/D 轉(zhuǎn)換器芯片,可以降低電子秤的整機成本,提高整機的性能和可靠性。
圖4 模數(shù)轉(zhuǎn)換電路
單片機最小系統(tǒng)電路如圖5,由晶振電路、復(fù)位電路、片外存儲器選擇電路構(gòu)成。
表1 HX711芯片引腳
圖5 單片機最小系統(tǒng)電路
DS1302 是美國DALLAS 公司低功耗實時時鐘芯片,具有涓細電流充電能力,DS1302 時鐘電路如圖6所示。它可以對年、月、日、周、時、分、秒進行計時,并且具有閏年補償?shù)榷喾N功能。
圖6 DS1302時鐘電路
液晶顯示電路如圖7所示。LCD1602液晶內(nèi)部控制器HD44780 是一款點陣式液晶顯示控制器,接收STC89C52單片機控制器的指令、數(shù)據(jù)后,根據(jù)指令顯示數(shù)據(jù)。
圖7 液晶顯示電路
按鍵電路如圖8 所示,有三個獨立按鍵K1、K2、K3,按下不同按鍵,STC89C52單片機控制器執(zhí)行相應(yīng)操作。
圖8 按鍵電路
主函數(shù)主要是進行變量初始化、調(diào)用模數(shù)轉(zhuǎn)換函數(shù)、采集當(dāng)前稱重值、調(diào)用液晶顯示函數(shù)、調(diào)用FLASH存儲函數(shù),流程圖如圖9所示。
程序開始,進行液晶初始化、變量初始化,調(diào)用模數(shù)轉(zhuǎn)換程序,讀取當(dāng)前稱重值b0;調(diào)用時鐘函數(shù),讀取當(dāng)前時間;調(diào)用液晶顯示函數(shù),顯示當(dāng)前時間年月日時分秒、稱重值、單次飲水量、飲水次數(shù)、總飲水量。按下K2,調(diào)用模數(shù)轉(zhuǎn)換程序,讀取當(dāng)前稱重值b1,b1減去b0為當(dāng)前稱重值。按下K3,調(diào)用模數(shù)轉(zhuǎn)換程序,讀取當(dāng)前稱重值b2,b2減去b0,為當(dāng)前稱重值。
飲水后,將水杯放在裝置上,按下K3,STC89C52記錄此時的稱重值b3,飲水次數(shù)加1,計算出本次飲水量(b3-b2)、總飲水量,保存到FLASH。
圖9 流程圖
要使X711 芯片與單片機進行通信,需要使用PD_SCK 時鐘引腳和Dout引腳進行數(shù)據(jù)輸出。另外,輸入通道選擇也是有必要的。如果輸出數(shù)據(jù)的管腳DOUT 是高電平,說明A/D 轉(zhuǎn)換器還沒有做好輸出數(shù)據(jù)的準備。這時,串口時鐘輸入信號PD_SCK 要保持低電平狀態(tài)。當(dāng)Dout 從高電平變成低電平時,PD_SCK 需要輸入25 到27 個不同的時鐘脈沖。當(dāng)?shù)谝粋€時鐘脈沖上升沿發(fā)生時,會讀出輸出的最高位數(shù)據(jù)(即MSB),并將24 位數(shù)據(jù)逐位輸出,從最高位(MSB)到最低位(MSB),直至第24 個脈沖完成。用于在接下來的A/D 轉(zhuǎn)換中選擇輸入通道和增益的是第25 至27 個時鐘脈沖[7]。
讀取HX711 芯片,首先初始化引腳,然后數(shù)據(jù)引腳拉高,延時一段時間后,將時鐘引腳拉低,等待AD轉(zhuǎn)換結(jié)束,然后開始讀取數(shù)據(jù)。接下來循環(huán)24次數(shù)據(jù)接收,在第25個脈沖將數(shù)據(jù)異或轉(zhuǎn)換,并拉低時鐘引腳結(jié)束AD 轉(zhuǎn)換。模數(shù)轉(zhuǎn)換函數(shù)HX711_Read(),讀取24位數(shù)據(jù),返回主函數(shù):
通過形變電阻橋式電路獲得的電信號,在外界因素干擾項,摻雜很多別的信號,比如磁場、抖動、空氣流動之類的自然的或人為不可避免的信號。為了過濾干擾信號,采用了遞推中位值平均濾波法。連續(xù)采集,對采集到的數(shù)據(jù)進行排序,選取其中的中位值作為濾波后的值,達到平滑信號的目的。該算法能有效地克服因偶然因素引起的波動干擾,使測得的數(shù)據(jù)更為準確。
液晶顯示函數(shù)LCD_display(),顯示當(dāng)前重量、單次飲水量、飲水次數(shù)、總飲水量。
DS1302 時鐘讀取函數(shù)DS1302_read(),讀取當(dāng)前時間。
內(nèi)部FLASH 存儲空間讀取函數(shù)FLASH_read()、FLASH_eraser()、FLASH_write(),分別完成存儲空間讀取、擦除、寫入功能。
我們通過實驗驗證飲水量計量裝置。連續(xù)幾次按下K2、K3計算飲水次數(shù)、每次飲水量、總飲水量。
圖10 裝置工作過程
裝置工作過程如圖10所示:
1)裝置通電
裝置通電前,裝置懸臂梁上面不能放置任何物品。通電后,STC89C52 調(diào)用模數(shù)轉(zhuǎn)換函數(shù)HX711_Read(),并記錄此時的稱重值b0。如果需要飲水次數(shù)和總飲水量清空,請按下K1,此時液晶界面,稱重值、飲水次數(shù)、總飲水量為0。液晶第一行顯示時間5月1日10點30分,實時稱重值0,第二行飲水次數(shù)0、本次飲水量0,總飲水量0。
圖11 裝置通電液晶顯示
2)水杯裝水放在裝置上,實時稱重值537
3)飲水
飲水前,水杯需要放在裝置上,按下K2,STC89C52 記錄此時的稱重值b1。端起杯子飲水,此時實時稱重值為0。
飲水后,將水杯放在裝置上,按下K3,STC89C52記錄此時的稱重值b3,飲水次數(shù)加1,計算出本次飲水量(b3-b2)、總飲水量,保存到FLASH。
4)重復(fù)飲水動作
5)加水
6)重復(fù)飲水動作
7)重復(fù)飲水動作
此時實時稱重值、飲水次數(shù)、本次飲水量、總飲水量,顯示在液晶界面,實時稱重值432g,飲水次數(shù)4,本次飲水量63g,總飲水量257g。
圖12 運行過程液晶顯示
隨著現(xiàn)代人生活方式的改變,越來越多的人開始注重健康飲食和身體健康,因此飲水量計量裝置的需求也越來越高。
用24 位高精度AD 數(shù)模轉(zhuǎn)換芯片HX711 設(shè)計的帶記憶功能的飲水量計量裝置,可以實時準確計量飲水次數(shù)、每次飲水量、每天飲水總量。同時本裝置有記憶功能,數(shù)據(jù)保存在FLASH 存儲空間,平時不用可以關(guān)閉電源,下次打開從FLASH存儲空間讀取飲水次數(shù)、每次飲水量、飲水總量數(shù)據(jù),具備節(jié)能綠色環(huán)保。本裝置幫助人們更好地掌握自己的飲水量,為健康提供更好的指導(dǎo)和幫助,促進身體健康。