盧 淵,李艷麗,馮成龍,李新達
(荊楚理工學院 電子信息工程學院,湖北 荊門 448000)
目前廣泛使用的傳統的手動按壓式產品,因其出液量不固定,極容易造成資源浪費。手動按壓模式容易造成細菌殘留,增大交叉感染的風險。公共場所放置洗手液的場合較多,經常出現消殺用品無法及時補充的情況,給用戶帶來不便。利用物聯網技術設計全新的系統,實現免接觸式自動泵壓出液、實時數據監測上傳、遠程監控等功能,具有較高的實用性。
本系統主要由3部分組成。數據采集板塊通過超聲波傳感器實現人員距離的檢測,并通過單片機控制泵壓系統出液;單片機通過電阻式液位傳感器測量瓶裝液位的信息,并將數據通過4G通信模塊將數據上傳到物聯網云平臺[1-2]。產品整體框架如圖1所示。

圖1 產品整體框架
綜合系統的使用環境與檢測性能,采用HC-SR04型號超聲波傳感器,系統通過2個該型號超聲波傳感器實現精準測量。超聲波傳感器的觸發引腳trigger和回波引腳echo均需與單片機的數字引腳相連接。其中,trigger引腳必須給予10 μs以上的高電平才能發射超聲波,需與單片機可輸出PWM的數字引腳相連接[3-5]。
本系統通過電阻式傳感器實現對水位的實時監測。同電壓下,不同液位高度的電阻不同,電流差異較大,將電阻式液位檢測模塊輸出口與單片機模擬功能接口連接,從而實現單片機對液位信息的準確讀取,后續通過實驗即可確定液位與采集的數據之間的關系,實現液位的準確判斷。電阻式液位傳感器原理如圖2所示。

圖2 電阻式液位傳感器原理
結合傳統裝置弊端,綜合考慮后,本系統采用微型無刷水泵,通過PWM對微型水泵進行控制,改變泵出液速度,實現精準化出液。微型無刷水泵只需將水泵的正極與單片機實物PWM輸出端口連接,負極與單片機共地端連接即可[6]。
本系統可實現遠程連接,通過4G模塊將相關數據上傳至物聯網云平臺,4G通信模塊與單片機之間通過TTL通信方式連接,傳輸單片機數據與4G通信模塊數據。通信模塊與單片機接口電路如圖3所示。

圖3 通信模塊與單片機接口電路
在使用該模塊時,將串口波特率設置為115 200,8位數據,需有1位停止位,無需校驗位。通過固件,將通信模塊設置為TCP通信模式,通過專用命令,將服務器的IP和端口更改為建立數據庫的服務器,并設置通信串口[7]。
本裝置涉及硬件較多,為保障各模塊正常運行,需有良好的硬件設計,系統整體電路如圖4所示。

圖4 系統整體電路
本系統采用C語言開發,實現人員距離判斷與人員是否使用本產品的判斷,通過PID算法實現對微型無刷水泵轉速的控制,實現系統定量出液。當液量無法滿足產品正常工作需求時,向客戶端發送報警信息,提醒工作人員加液,保障產品處于正常工作狀態。同時,工作人員可通過手機客戶端對產品剩余液量、工作狀態進行實時查看。程序整體工作流程如圖5所示。

圖5 程序整體工作流程
式中,高電平時間通過單片機I/O口與定時器結合實現距離換算。當位于系統正面的超聲波傳感器檢測到人員距離系統小于20 cm時,單片機將進行10 ms定時中斷,10 ms內產品前方人員距離數據變化在誤差范圍之內,單片機對中斷內容予以執行。通過中斷激活下方超聲波傳感器工作,當采集到的距離小于30 cm且趨于穩定時,系統跳出中斷,繼續利用正面人員監測模塊收集數據,數據無異常后,系統將判定為人員將使用本產品,發送指令,確定執行[8]。
為避免液體浪費,本系統通過PID控制算法與液位檢測模塊共同作用,實現準確出液。
在本系統中,采用PID閉環控制算法,閉環控制具有更高的控制精確度,其中有類似于生物中的反饋調節,能夠減小系統誤差,提高系統整體精確度。在一套系統中閉環控制可以通過連接各類傳感器對系統整體進行數據測量與監控,當數據產生誤差時閉環控制就會根據制定的標準對系統進行數據的反饋糾正。算法如下:
式中:error為產品實際洗手液出量和目標洗手液出量的誤差;0.01為系統最小增益系數,用來減小誤差;kP、kI分別表示為P算法和I算法的增益系數。系統會根據H1的結果進行調整,來達到減小洗手液出量的目的。當長時間出液時,D算法會抵消一部分由P算法造成的過度響應影響(d(error)/dt=響應速度)。H2通過對累計的誤差進行積分來降低產品長時間工作造成的累計誤差。PID算法工作流程如圖6所示。

圖6 PID算法工作流程
當系統初始化后,系統自動將此刻數據記錄為初始值,因本產品使用的PID算法,每次出液量固定,系統自動估算可以使用的次數,每使用一次,數據將會上傳到云平臺,顯示系統剩余液量。當次數小于10次時,已無法保證正常運行,系統將通過4G模塊向客戶端發送報警信息,提醒工作人員及時更換、補充。報警功能程序流程如圖7所示。

圖7 報警功能程序流程
將系統安裝固定于墻面,走到距離系統正面50 cm處,系統不出液。走到距離系統10 cm處,下方檢測處無觸發,裝置無誤出液現象。將手伸入下方檢測裝置大于20 cm處,裝置無誤出液現象。手伸入正常檢測范圍,系統正常出液。系統方案設計無誤,系統可正常工作。
因涉及遠程數據傳輸,系統使用了云服務器與通信模塊,前期需確保其配置無誤,否則系統的整體功能無法實現。在本產品第一次對通信模塊進行測試時,通信模塊與服務器無法連接,向服務器發送測試信息,正常等待后,無法獲得服務器返回的數據,通信系統搭建失敗。檢查系統后,最終鎖定錯誤出現的原因在于通信模塊配置時命令錯誤,給予復位引腳7 s以上的高電平,成功對通信模塊進行了初始化,按照操作手冊重新配置,成功收到服務器的響應數據,通信線路搭建成功[9]。
本系統為使出液量趨于固定值,采用PID閉環控制算法,通過PID實現對出液的精準化控制。PID閉環控制算法較為抽象,無法直接進行現象觀察,本團隊通過有、無PID閉環控制算法設計對照實驗,通過實驗數據,確定產品中PID閉環控制算法是否可以達到設計目標。實驗數據見表1所列。

表1 有無PID閉環算法對照實驗數據
通過表中數據可看出,使用PID閉環控制算法出液平均誤差遠小于未使用算法的數據,且使用PID閉環控制算法能夠使每次出液量更加穩定、可靠。軟件中的PID閉環控制算法發揮了作用,且效果良好[10]。
本文設計的基于Arduino NANO單片機互聯免接觸式自動泵壓消毒產品克服了傳統公共場所提供給用戶使用的消毒產品浪費嚴重、重復利用率不高、無液時無法遠程提醒的弊端,產品可以自動偵測人員信息,利用雙重檢測避免產品誤碰、誤觸等問題。利用PID閉環控制算法實現液體準確出液,利用硬件+云服務+客戶端的形式,實現數據實時查看,缺液及時提醒,降低工作人員的工作強度,提升普通用戶使用體驗。后續我們將對產品外觀進行設計,力爭實現產品功能的復用性,為商場、醫院等公共場合減少開支。