蔡立娜
(云南能源職業技術學院,云南 曲靖 655000)
隨著科技的不斷發展進步,單片機技術日益發展成熟,在實時檢測和自動控制等領域得到了廣泛的應用,為我們的生產和生活做出了極大的貢獻,本文以STC89C52單片機為主控芯片[1-2],設計多功能液體容器,實踐檢測可以準確識別出液體種類,測量出液體重量和液位高度,并輔助以語音播報,為單片機在電子產品中的應用奠定了基礎。
(1)能檢測液體液位、重量等參數,可顯示檢測結果。
(2)裝載一定量(200-500mL)的不同液體進行測量,要求液位測量絕對誤差的絕對值≤2mm;重量測量絕對誤差的絕對值≤1g;
(3)在(2)的測量基礎上,能夠區分不同濃度的鹽水。要求顯示第二次測量液體的名稱(根據兩次測量鹽水的濃度,相對顯示是濃鹽水或淡鹽水)。
(1)根據液體特征可分辨純凈水、鹽水、牛奶、白醋四種液體種類(限定采用電子測量技術,傳感器與測量方法不限,可同時采用多種測量方法);
(2)根據液體特征可分辨出純凈水和白糖水的種類。
(1)STM32F407ZGT6。該芯片為32位MCU+FPU,210MIPS,高達1MB Flash/192+4KB RAM,USB OTG HS/FS,以太網,17個TIM,3個ADC,15個通信接口,其適用于需要浮點運算或DSP處理的應用;
(2)STC89C52。是基于8051內核的新一代增強型單片機,指令代碼完全兼容傳統8051,速度快8-12倍,3個定時器,一個串口,8個中斷源,加密性好,抗干擾強。
系統主要對重量以及液位進行數據采集,在簡單、快速開發的要求下,STC89C52的內部資源完全能夠滿足本系統開發的需求,所以最終確定采用STC89C52為主控芯片[3-4]。
(1)諧振式液位傳感器。該傳感器為投入式傳感器,采用串口輸出深度值,兼容5V、3.3V控制系統,同時自帶校準數據存儲功能,存儲校準數據值,掉電不丟失;
(2)超聲波傳感器。其為非接觸式測距,體積小,電路簡單,探測距離為0-450cm,探測精度高,穩定性較強。
由于系統需要辨別不同的液體,而本設計方案主要根據密度值來區別不同的液體,所以液位的精確度對于本設計至關重要。由于諧振式液位傳感器針對不同的液體有不同的補償值,無法實現高精度。而超聲波傳感器不容易受到各種液體干擾,測試精度高,完全滿足該方案的測試精度。所以綜合比較,采用超聲波傳感器作為系統的液位傳感器[5-7]。
(1)WTN3語音芯片為單芯片,CMOS語音合成IC,40秒和80秒(6K采樣)。具有1個Input腳和2個I/O腳,一組PWM輸出,提供最大語音段數32段;
(2)WT588D提供了多種接口可以通過單片機來控制播放,語音內容及接口方式是通過上位機軟件來下載和設置的。WT588D內部有SPI-FLASH,SPI-FLASH的容量決定了可播放文件的長度,并且提供最大語音段數232段。
由于本設計需要對語音進行編輯、合成和現場燒寫,而WT588D滿足這些要求,故采用WT588D為語音播放模塊。
提前算出超聲波模塊到盛水裝置地面的距離為H1,測量盛水后的距離為H2,H=H1-H2。通過兩次測量的值加權取值計算得到實際的水位值。
滿量程輸出電壓=激勵電壓*靈敏度,例如:供電電壓是5V乘以靈敏度=滿量程10 。相當于有10Kg重力產生時候產生10 的電壓。
假設重力為XKg,測量出來的A D 值為y,1 0Kg傳感器輸出,發送給A D 模塊的電壓為XKg×8.6 m V/1 0Kg=0.8 6Xmv,經過1 2 8 倍增益后為1 2 8×0.86X=11 0.0 8Xmv,轉換為2 4 b i t 數字信號為110.08A×224/4.3V=429496.7296X,所以y=429496.7296A/100=4294.967296X。因此得出X=y/4294.967296Kg≈y/4.30g,所以得出程序中計算公式重量=重量/4.30+0.05。
液體密度為?=m/H*S,其中容器底面積為S,液體質量為m,液體高度為H。程序設計中根據液體的密度來判斷不同的液體溶液。
本設計采用STC公司的STC89C52單片機為主控芯片,重量數據采集部分由稱重傳感器、信號放大和A/D轉換部分組成,信號放大和A/D轉換部分主要由專用型高精度24位AD轉換芯片HX711實現;超聲波傳感器輸出數據給單片機處理,語音播報模塊由WT588D芯片實現,可完成語音播報開機功能介紹以及電子秤重量等內容,人機交互界面為點陣式12864顯示屏,可直觀地顯示數據。系統總體框圖如圖1所示。各模塊電路如圖2所示。

圖1 系統總體框圖

圖2 各模塊電路設計圖
軟件部分主要實現數據的讀取和顯示。
(1)數據讀取功能:精確讀取重量、水位值;
(2)顯示部分:顯示系統名稱、重量值、水位值以及對應的液體種類;
(3)語音播報:播放設備功能及相關的重量值、水位值。
以需要實現的功能為出發點,先分析及配置出實現功能所需使用的寄存器,完成系統功能初始化,然后進去循環讀取,讀取數據采用多次取值,去掉最大、最小的部分值,留下中間值取平均數,盡量保持數據讀取的穩定性及精度,循環部分遵循先讀取后顯示的思路,高度模塊化,結構嚴謹、算法高效。軟件系統流程圖如圖3所示。

圖3 系統程序流程圖
使用高精度的電子秤、鋼尺、密度計等測量儀器進行多次測量,測試數據分布均勻,覆蓋到量程的分布范圍。測試結果如表1至表3所示。

表1 重量測試數據 單位:g

表2 液位測試數據 單位:mm

表3 溶液類型測試

圖4 系統成品圖
根據上述測試數據,通過分析計算,發現所測試數據的誤差均未超過允許誤差,可以得到以下結論:
(1)重量值測量精度高,滿足系統設計要求;
(2)液位測量精度高,滿足系統設計要求;
(3)可以正確顯示多種液體,滿足系統設計要求。
多功能液體容器系統采用單片機為控制核心,構建單片機最小應用系統,增加稱重傳感器部分功能電路,實現液體重量測量,測量誤差可控制在1g范圍內;增加超聲波傳感器,實現液位測量功能,液位測量誤差可控制在2mm范圍內;根據測量結果計算溶液密度,與標準溶液密度比對,能夠正確識別出溶液種類,很好地實現了系統設計要求。