李朝陽
(仲愷農業工程學院,廣東廣州 510550)
水是人類生命的源泉,身體健康需要保持良好的飲水習慣。然而,現代社會中,越來越多的人因為工作、學習等原因,常常忽視了飲水的重要性,導致身體出現脫水、口渴等癥狀,不利于身體健康。
為了解決這個問題,飲水量計量裝置應運而生,可以測量人體攝入水分量,幫助人們更好地掌握自己的飲水量。隨著現代人生活方式的改變,越來越多的人開始注重健康飲食和身體健康,因此飲水量計量裝置的需求也越來越高。
HX711 是24 位A/D 轉換器芯片,西安外事學院工學院汪顯衛[1]、無錫商業職業技術學院物聯網學院王小娟[2]、北京信息科技大學于飛[3]、中國電子科技集團公司第三十八研究所劉磊[4]、杭州職業技術學院信息工程學院葛海江[5]等,對HX711 進行研究分析并設計電子秤,武漢交通職業學院商林就精度與穩定性進行了實踐[6]。
筆者在前人的基礎上,設計了一種基于HX711的帶記憶功能的飲水量計量裝置,能夠計量單次飲水量、飲水次數、總飲水量,并且用液晶顯示,方便用戶隨時查看飲水量。

圖1 總體設計
計量裝置主要由懸臂梁、形變電阻橋式電路、HX711模數轉換電路、STC89C52控制器、液晶顯示電路、按鍵輸入電路、DS1302 時鐘電路等構成,如圖1所示。
供電電路如圖2所示,將+9V ~+12V電壓轉換成5V 電壓,為單片機最小系統電路、液晶顯示電路供電。

圖2 供電電路
形變電阻橋式電路將應變計電阻變化轉化為電壓或電流的電信號,如圖3所示,以電阻應變計作為橋臂組成電橋電路,當有重物放置到秤盤上時,橋臂發生彎曲,彎曲程度與放置物重量有關,電阻應變器感應到相應的信號后,輸出微弱的電壓信號。

圖3 形變電阻橋式電路
基于HX711的模數轉換電路如圖4所示,電路將形變電阻橋式電路微弱電信號放大,并轉變為數字信號,再傳遞給控制器。HX711 芯片具有集成度高、響應速度快、抗干擾性強等優點,芯片內部集成穩壓電路,可直接供電于芯片內部連接的傳感器和A/D 轉換器。此外,時鐘振蕩器也被集成在芯片內部,不需要額外的外接設備。另外,芯片內部已整合上電自動復位電路,使開機初態的設定變得簡單化。該器件中有通過輸入選擇開關隨意選擇信道A 或信道B 來完成信號放大的低噪聲可編程放大器。連接可編程放大器,內部噪聲小??删幊淘鲆鏋?28 或64 的通道A,分別對應±20mV 或±40mV 輸入信號幅值的滿量程差分。B 通道增益定值64,可檢測系統參數[7]。
該芯片與后端MCU 芯片的接口和編程非常簡單,所有控制信號由管腳驅動,無須對芯片內部的寄存器編程。HX711 是一款電子秤專用的高精度24位A/D 轉換器芯片,可以降低電子秤的整機成本,提高整機的性能和可靠性。

圖4 模數轉換電路
單片機最小系統電路如圖5,由晶振電路、復位電路、片外存儲器選擇電路構成。

表1 HX711芯片引腳

圖5 單片機最小系統電路
DS1302 是美國DALLAS 公司低功耗實時時鐘芯片,具有涓細電流充電能力,DS1302 時鐘電路如圖6所示。它可以對年、月、日、周、時、分、秒進行計時,并且具有閏年補償等多種功能。

圖6 DS1302時鐘電路
液晶顯示電路如圖7所示。LCD1602液晶內部控制器HD44780 是一款點陣式液晶顯示控制器,接收STC89C52單片機控制器的指令、數據后,根據指令顯示數據。

圖7 液晶顯示電路
按鍵電路如圖8 所示,有三個獨立按鍵K1、K2、K3,按下不同按鍵,STC89C52單片機控制器執行相應操作。

圖8 按鍵電路
主函數主要是進行變量初始化、調用模數轉換函數、采集當前稱重值、調用液晶顯示函數、調用FLASH存儲函數,流程圖如圖9所示。
程序開始,進行液晶初始化、變量初始化,調用模數轉換程序,讀取當前稱重值b0;調用時鐘函數,讀取當前時間;調用液晶顯示函數,顯示當前時間年月日時分秒、稱重值、單次飲水量、飲水次數、總飲水量。按下K2,調用模數轉換程序,讀取當前稱重值b1,b1減去b0為當前稱重值。按下K3,調用模數轉換程序,讀取當前稱重值b2,b2減去b0,為當前稱重值。
飲水后,將水杯放在裝置上,按下K3,STC89C52記錄此時的稱重值b3,飲水次數加1,計算出本次飲水量(b3-b2)、總飲水量,保存到FLASH。

圖9 流程圖
要使X711 芯片與單片機進行通信,需要使用PD_SCK 時鐘引腳和Dout引腳進行數據輸出。另外,輸入通道選擇也是有必要的。如果輸出數據的管腳DOUT 是高電平,說明A/D 轉換器還沒有做好輸出數據的準備。這時,串口時鐘輸入信號PD_SCK 要保持低電平狀態。當Dout 從高電平變成低電平時,PD_SCK 需要輸入25 到27 個不同的時鐘脈沖。當第一個時鐘脈沖上升沿發生時,會讀出輸出的最高位數據(即MSB),并將24 位數據逐位輸出,從最高位(MSB)到最低位(MSB),直至第24 個脈沖完成。用于在接下來的A/D 轉換中選擇輸入通道和增益的是第25 至27 個時鐘脈沖[7]。
讀取HX711 芯片,首先初始化引腳,然后數據引腳拉高,延時一段時間后,將時鐘引腳拉低,等待AD轉換結束,然后開始讀取數據。接下來循環24次數據接收,在第25個脈沖將數據異或轉換,并拉低時鐘引腳結束AD 轉換。模數轉換函數HX711_Read(),讀取24位數據,返回主函數:

通過形變電阻橋式電路獲得的電信號,在外界因素干擾項,摻雜很多別的信號,比如磁場、抖動、空氣流動之類的自然的或人為不可避免的信號。為了過濾干擾信號,采用了遞推中位值平均濾波法。連續采集,對采集到的數據進行排序,選取其中的中位值作為濾波后的值,達到平滑信號的目的。該算法能有效地克服因偶然因素引起的波動干擾,使測得的數據更為準確。
液晶顯示函數LCD_display(),顯示當前重量、單次飲水量、飲水次數、總飲水量。
DS1302 時鐘讀取函數DS1302_read(),讀取當前時間。
內部FLASH 存儲空間讀取函數FLASH_read()、FLASH_eraser()、FLASH_write(),分別完成存儲空間讀取、擦除、寫入功能。
我們通過實驗驗證飲水量計量裝置。連續幾次按下K2、K3計算飲水次數、每次飲水量、總飲水量。

圖10 裝置工作過程
裝置工作過程如圖10所示:
1)裝置通電
裝置通電前,裝置懸臂梁上面不能放置任何物品。通電后,STC89C52 調用模數轉換函數HX711_Read(),并記錄此時的稱重值b0。如果需要飲水次數和總飲水量清空,請按下K1,此時液晶界面,稱重值、飲水次數、總飲水量為0。液晶第一行顯示時間5月1日10點30分,實時稱重值0,第二行飲水次數0、本次飲水量0,總飲水量0。

圖11 裝置通電液晶顯示
2)水杯裝水放在裝置上,實時稱重值537
3)飲水
飲水前,水杯需要放在裝置上,按下K2,STC89C52 記錄此時的稱重值b1。端起杯子飲水,此時實時稱重值為0。
飲水后,將水杯放在裝置上,按下K3,STC89C52記錄此時的稱重值b3,飲水次數加1,計算出本次飲水量(b3-b2)、總飲水量,保存到FLASH。
4)重復飲水動作
5)加水
6)重復飲水動作
7)重復飲水動作
此時實時稱重值、飲水次數、本次飲水量、總飲水量,顯示在液晶界面,實時稱重值432g,飲水次數4,本次飲水量63g,總飲水量257g。

圖12 運行過程液晶顯示
隨著現代人生活方式的改變,越來越多的人開始注重健康飲食和身體健康,因此飲水量計量裝置的需求也越來越高。
用24 位高精度AD 數模轉換芯片HX711 設計的帶記憶功能的飲水量計量裝置,可以實時準確計量飲水次數、每次飲水量、每天飲水總量。同時本裝置有記憶功能,數據保存在FLASH 存儲空間,平時不用可以關閉電源,下次打開從FLASH存儲空間讀取飲水次數、每次飲水量、飲水總量數據,具備節能綠色環保。本裝置幫助人們更好地掌握自己的飲水量,為健康提供更好的指導和幫助,促進身體健康。