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