謝 波 侯海良
(湖南人文科技學(xué)院 信息學(xué)院,湖南 婁底 417000)
在農(nóng)業(yè)生產(chǎn)中,溫度和濕度直接決定了農(nóng)作物的質(zhì)量,在工業(yè)應(yīng)用中,很多儀器和設(shè)備對溫濕度有很高要求[1]。因此,實時檢測生產(chǎn)環(huán)境的溫濕度對工農(nóng)業(yè)的生產(chǎn)效率至關(guān)重要。
傳統(tǒng)儀器的功能取決于儀器制造商,擴(kuò)展性方面受到很大的限制,操作界面不夠直觀方便,數(shù)據(jù)的處理和運算功能不夠理想,很難得到更新,維護(hù)和升級的成本太高,用戶不能根據(jù)自己的需求對系統(tǒng)進(jìn)行改進(jìn)[2]?;趥鹘y(tǒng)儀器以上缺點,本文旨在設(shè)計一個易于擴(kuò)展,實時性高,界面一目了然,易進(jìn)行二次開發(fā)的溫濕度檢測系統(tǒng)。本設(shè)計采用LabVIEW 作為上位機(jī)來進(jìn)行數(shù)據(jù)的處理和顯示,用戶可以根據(jù)自己的需求進(jìn)行功能定義,能實現(xiàn)普通機(jī)械儀表儀器無法實現(xiàn)的功能,且LabVIEW 作為計算機(jī)的一個開發(fā)環(huán)境,在實現(xiàn)傳統(tǒng)儀器功能的同時成本極低,不用考慮儀器的損耗問題。下位機(jī)用單片機(jī)實時檢測溫濕度原始數(shù)據(jù),并通過無線串口模塊將下位機(jī)與上位機(jī)進(jìn)行連接,可以進(jìn)行遠(yuǎn)程操作,控制十分方便。
本設(shè)計主要用到了LabVIEW 開發(fā)環(huán)境和STM32 單片機(jī)最小系統(tǒng)以及SHT20 溫濕度傳感器,單片機(jī)作為下位機(jī)用于將傳感器檢測到的數(shù)據(jù)處理后通過定時器中斷再發(fā)送給串口,LabVIEW 作為上位機(jī)用于讀取串口數(shù)據(jù),將接收到的數(shù)據(jù)經(jīng)過運算后進(jìn)行顯示、存儲和打印。上位機(jī)完成對下位機(jī)的使能,處理數(shù)據(jù),進(jìn)行顯示。整個設(shè)計的系統(tǒng)總體設(shè)計框圖如圖1 所示。
圖1 系統(tǒng)總體設(shè)計框圖
上位機(jī)使用LabVIEW 處理接收到的溫濕度數(shù)據(jù),并將處理后的數(shù)據(jù)進(jìn)行顯示和保存。上位機(jī)的設(shè)計主要分為以下幾個模塊:前面板界面的設(shè)計、溫濕度數(shù)據(jù)處理設(shè)計、串口通信數(shù)據(jù)傳輸?shù)脑O(shè)計、歷史記錄模塊的設(shè)計。程序流程圖如圖2所示。
串行通信模塊是上位機(jī)軟件設(shè)計中最重要的模塊之一,本設(shè)計單片機(jī)與LabVIEW 之間采用的也是串行通信方式[3-4]。在LabVIEW的串行通信中,最常用的是VISA 串行通信,本設(shè)計在計算機(jī)上安裝了VISA 驅(qū)動,并在上位機(jī)程序中進(jìn)行了相關(guān)參數(shù)配置,該方法簡單且傳輸數(shù)據(jù)的穩(wěn)定性高。
2.3.1 數(shù)據(jù)讀取
圖2 上位機(jī)程序流程圖
應(yīng)用LabVIEW 的VISA 控件進(jìn)行計算機(jī)串口配置,接收下位機(jī)發(fā)送過來的數(shù)據(jù)。LabVIEW 從串口接收到的數(shù)據(jù)會轉(zhuǎn)換為二進(jìn)制形式,因此需先將數(shù)據(jù)轉(zhuǎn)換再進(jìn)行處理和顯示,需要在讀取到數(shù)據(jù)后添加相應(yīng)的數(shù)據(jù)類型轉(zhuǎn)換控件,如圖3 所示,其中VISA 讀取控件的“字節(jié)總數(shù)”連接端子需要連接到數(shù)字常量“2”,以便將溫度數(shù)據(jù)和濕度數(shù)據(jù)分離,顯示完成后再進(jìn)行下一次的數(shù)據(jù)讀取。
在本設(shè)計中,上位機(jī)LabVIEW 每隔一段時間向下位機(jī)發(fā)送一個請求指令,下位機(jī)會進(jìn)入中斷進(jìn)行數(shù)據(jù)發(fā)送。所以在進(jìn)行串口初始化后,添加一個串口寫入控件向下位機(jī)發(fā)送指令,這一命令對下位機(jī)來說就相當(dāng)于一個開始命令,沒有接收到正確的開始命令時下位機(jī)處于休眠狀態(tài)。
2.3.2 溫濕度測量模塊的設(shè)計
通過VISA 讀取控件讀取下位機(jī)發(fā)過來的數(shù)據(jù),但是下位機(jī)發(fā)送過來的數(shù)據(jù)是溫濕度數(shù)據(jù)交叉一起發(fā)送過來的。因此在接收到數(shù)據(jù)后要先將溫度數(shù)據(jù)和濕度數(shù)據(jù)進(jìn)行區(qū)分。分別顯示溫濕度需在后連接索引數(shù)組控件。溫濕度的波形圖表需要在前面板創(chuàng)建,在前面板創(chuàng)建兩個波形圖表后,程序面板會出現(xiàn)兩個波形圖表控件,分別連接至數(shù)組索引的輸出端子,便可在程序運行后得到溫濕度波形圖。溫濕度數(shù)據(jù)分別處理后可根據(jù)時間索引進(jìn)行存儲。溫濕度測量模塊如圖4 所示。
圖4 溫濕度測量模塊
2.3.3 報警模塊的設(shè)計
報警模塊的設(shè)計如圖5 所示。將傳入的溫濕度值與設(shè)定值進(jìn)行比較,當(dāng)實際的溫度或濕度值不在設(shè)定的溫濕度范圍內(nèi)時,會觸發(fā)溫度或濕度報警。觸發(fā)報警后上位機(jī)用指示燈常亮來進(jìn)行提示,同時下位機(jī)蜂鳴器會發(fā)出警報。此模塊只涉及到基本的算術(shù)運算和基本的邏輯運算,實現(xiàn)比較簡單。
圖5 報警模塊
2.3.4 數(shù)據(jù)存儲模塊和數(shù)據(jù)回放模塊的設(shè)計
數(shù)據(jù)存儲及回放模塊如圖6 所示。在前面板創(chuàng)建兩個Express 表格控件,該控件的作用是使信號轉(zhuǎn)換為數(shù)據(jù)表的形式,寫出每一個信號的數(shù)值和每一個信號對應(yīng)的時間數(shù)據(jù)。將控件的“信號”端分別連接溫度和濕度數(shù)據(jù),并進(jìn)入表格控件的屬性,將“包含時間數(shù)據(jù)”勾上,便可將時間及溫濕度的歷史數(shù)據(jù)在表格上依次顯示,然后在程序面板創(chuàng)建寫入電子表格文件控件,將表格控件的“表格”引腳連至寫入電子表格文件控件的“二維數(shù)據(jù)”引腳,并設(shè)置文件路徑,即可以Excel形式保存溫濕度歷史數(shù)據(jù)。寫入電子表格文件控件的“添加至文件?”引腳的值應(yīng)設(shè)為“T”,這樣就不會覆蓋之前所保存的表格數(shù)據(jù)。打開Excel表格就可查看以前測量的溫濕度數(shù)據(jù)。
圖6 數(shù)據(jù)存儲及回放模塊
下位機(jī)主要由單片機(jī)最小系統(tǒng)和溫濕度傳感器組成,本次設(shè)計用的是STM32 單片機(jī)和SHT20數(shù)字溫濕度傳感器。溫濕度傳感器SHT20 的電源引腳接+5V,接地引腳接GND,數(shù)據(jù)傳輸引腳接單片機(jī)的I/O 口GPIOA.1,這樣便可實現(xiàn)SHT20與采集數(shù)據(jù)的單片機(jī)之間的通信。由于單片機(jī)供電電壓為3.3V,傳感器供電電壓為5V,因此系統(tǒng)采用5V 電壓進(jìn)行供電,然后通過穩(wěn)壓芯片XC6206 將電壓降至3.3V 用于單片機(jī)供電。上位機(jī)與下位機(jī)是通過串口進(jìn)行無線通信的。單片機(jī)與SHT20 連接原理圖如圖7 所示[5-7]。
圖7 單片機(jī)最小系統(tǒng)和降壓模塊
程序是整個系統(tǒng)的核心與靈魂,單片機(jī)及其外圍電路需要通過程序的驅(qū)動才能運行,所以系統(tǒng)的程序是非常重要的。程序中出現(xiàn)一個小的邏輯錯誤有可能導(dǎo)致系統(tǒng)無法正常工作或是無法實現(xiàn)預(yù)期功能。本次設(shè)計選用的是STM32 單片機(jī),程序是用C 語言編寫的。單片機(jī)TIM1 定時器工作于自動重裝載模式,當(dāng)單片機(jī)接收到上位機(jī)發(fā)來的指令時,單片機(jī)開始向上位機(jī)發(fā)送讀取到的溫濕度數(shù)據(jù)。圖8 為本設(shè)計下位機(jī)的程序流程圖。
圖8 下位機(jī)程序流程圖
調(diào)試完成后,便可運行程序,運行LabVIEW程序前將hex 文件燒錄進(jìn)單片機(jī),并且應(yīng)配置好串口參數(shù),以便正確傳輸溫濕度數(shù)據(jù),程序運行后LabVIEW 前面板如圖9 所示。運行結(jié)果表明,所測得的溫濕度值都為環(huán)境溫濕度實際值。系統(tǒng)實現(xiàn)了溫濕度的顯示、存儲、歷史回放及報警等功能,并且圖表顯示能直觀地看到溫濕度的變化趨勢。
圖9 程序運行界面
本文設(shè)計了一個基于LabVIEW 的溫濕度檢測系統(tǒng),下位機(jī)使用的是STM32 單片機(jī)和溫濕度傳感器SHT20。能在LabVIEW 前面板實現(xiàn)溫濕度數(shù)據(jù)和波形實時顯示,并且能顯示和記錄檢測溫濕度值所對應(yīng)的時間,便于查詢歷史記錄。當(dāng)溫濕度不在設(shè)定值范圍內(nèi)時,單片機(jī)和電腦端都會產(chǎn)生報警。該系統(tǒng)界面設(shè)計人性化,操作簡單,且易于擴(kuò)展功能,由于是無線通信,溫濕度檢測設(shè)備和顯示設(shè)備可以分離,使得在實際應(yīng)用中更加方便。因此該系統(tǒng)有很好的使用價值和應(yīng)用前景。