劉玉玲
摘要:以Labview、單片機(jī)和DSl8820為核心,設(shè)計(jì)了一款溫度監(jiān)測(cè)系統(tǒng)。該系統(tǒng)通過DSl8820溫度傳感器采集溫度信號(hào),經(jīng)單片機(jī)的串口轉(zhuǎn)USB,再由USB接口將信號(hào)發(fā)送Labview,可以實(shí)現(xiàn)溫度的實(shí)時(shí)采集、處理、顯示及報(bào)警,同時(shí)在Lab-view中可設(shè)置溫度的上下限,查看溫度曲線以及調(diào)出歷史數(shù)據(jù)等功能。該系統(tǒng)的下位機(jī)采用的是單片機(jī)最小系統(tǒng),外加溫度傳感器,串口轉(zhuǎn)USB模塊,上位機(jī)采用的是NI公司的一款圖形化編程軟件Labview,整體簡(jiǎn)單易行,卻很好地實(shí)現(xiàn)了溫度的監(jiān)測(cè)功能。設(shè)計(jì)中,可更換傳感器實(shí)現(xiàn)不同參數(shù)的監(jiān)測(cè),如濕度監(jiān)測(cè)、粉塵監(jiān)測(cè)、煙霧監(jiān)測(cè)等,使得該系統(tǒng)可以應(yīng)用到各種不同的場(chǎng)合。
關(guān)鍵詞:Labview;單片機(jī);USB
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)13-0007-04
在很多場(chǎng)合,溫度的變化對(duì)生產(chǎn)或生活都會(huì)產(chǎn)生極大的影響,比如智能溫室大棚、多個(gè)機(jī)臺(tái)設(shè)備的生產(chǎn)車間、名貴魚的魚缸等,溫度恒定是保證產(chǎn)品質(zhì)量的重要前提,因此溫度數(shù)據(jù)的采集和監(jiān)測(cè)意義重大。
本監(jiān)測(cè)系統(tǒng)可以對(duì)監(jiān)測(cè)場(chǎng)所的溫度數(shù)據(jù)實(shí)時(shí)采集,繪制溫度曲線,當(dāng)溫度高于上限或低于下限均可實(shí)現(xiàn)報(bào)警,并可以查看相關(guān)的歷史數(shù)據(jù)。整個(gè)系統(tǒng)成本較低,非常適合學(xué)生在實(shí)驗(yàn)室中設(shè)計(jì)開發(fā)。
1系統(tǒng)的硬件部分
系統(tǒng)的硬件由溫度傳感器DS18820、51單片機(jī)AT89S51、USB轉(zhuǎn)接芯片CH340組成,其硬件框圖如圖1所示。數(shù)字溫度傳感器可將溫度值直接轉(zhuǎn)換成數(shù)字量發(fā)送至單片機(jī),單片機(jī)對(duì)該溫度信號(hào)進(jìn)行處理后,通過串口轉(zhuǎn)USB的轉(zhuǎn)接芯片將數(shù)據(jù)送至計(jì)算機(jī),計(jì)算機(jī)的Labview軟件處理后以人機(jī)界面的窗口形式,直觀地展示數(shù)據(jù)曲線。
1.1溫度傳感器DSl8820
DSl8820是一款常用的溫度傳感器,它的優(yōu)勢(shì)是低功耗、抗干擾能力強(qiáng)的單總線數(shù)字溫度傳感器,該傳感器在使用過程中無需外加AD。從DS18820到主控芯片僅連接一條線,硬件電路簡(jiǎn)單,而且每個(gè)DS18820有唯一的系列號(hào),因此多個(gè)可以存在于同一條單線總線上,有利于系統(tǒng)后續(xù)拓展成多路的溫度監(jiān)測(cè)。
DS18820提供9位溫度讀數(shù),測(cè)量范圍是-55°C至125°C,增量值位0.5℃。
1.2單片機(jī)AT89S51
系統(tǒng)的主控芯片選用了AT89S51,此單片機(jī)功能簡(jiǎn)單、價(jià)格低廉,單片機(jī)有4K的片內(nèi)程序存儲(chǔ)器,可以外擴(kuò)至64K,128B片內(nèi)數(shù)據(jù)存儲(chǔ)器,64K片外數(shù)據(jù)存儲(chǔ)器,AT89S51支持在線編程下載,極大地方便了調(diào)試。
1.3串口轉(zhuǎn)USB接口模塊
由于目前大部分筆記本電腦未配置串口,故需要將串口信號(hào)轉(zhuǎn)換成更為通用的USB接口信號(hào),選用的芯片是CH340。CH340是USB總線轉(zhuǎn)接芯片,可以實(shí)現(xiàn)USB轉(zhuǎn)串口、IrDA紅外或打印口。芯片內(nèi)置了USB上拉電阻、復(fù)位電路,內(nèi)置了獨(dú)立的收發(fā)緩沖區(qū),支持單工、半雙工或者全雙工異步串行通訊。
2系統(tǒng)的軟件部分
2.1下位機(jī)軟件
系統(tǒng)軟件的編寫是在Keil uVision4的集成開發(fā)環(huán)境下,用C語言編寫的,整個(gè)軟件實(shí)現(xiàn)了硬件初始化、溫度采集、數(shù)據(jù)轉(zhuǎn)換、上下位機(jī)通信4個(gè)模塊。系統(tǒng)的主程序流程圖如圖2所示。
2.2上位機(jī)軟件
上位機(jī)使用虛擬儀器完成溫度數(shù)據(jù)的讀取、轉(zhuǎn)換和處理,溫度上下限的設(shè)置,實(shí)時(shí)曲線圖的繪制,歷史曲線的查看。Labview虛擬儀器程序由前面板和程序框圖構(gòu)成,前面板是人機(jī)交互界面,用來輸入輸出,程序框圖是用戶以框圖的形式編制的代碼。
1)上位機(jī)的前面板
系統(tǒng)上位機(jī)前面板如圖3所示,包括三個(gè)數(shù)據(jù)輸入控件,用來輸入VISA資源端口名稱以及上下限溫度;兩個(gè)布爾量的圓形指示燈,當(dāng)溫度超過上下限時(shí),相應(yīng)指示燈點(diǎn)亮;一個(gè)溫度值顯示的儀表控件,可以更加直觀讀取當(dāng)前溫度值;三個(gè)數(shù)值顯示控件,分別顯示接收數(shù)據(jù)的字符型、數(shù)值型和接收數(shù)據(jù)的長(zhǎng)度;兩個(gè)布爾量的開關(guān)按鈕,一個(gè)控制采集數(shù)據(jù)的啟停,一個(gè)退出整個(gè)監(jiān)測(cè)界面;一個(gè)波形圖表的圖形顯示控件,顯示當(dāng)前采集溫度的實(shí)時(shí)曲線。
2)串口通信模塊
上位機(jī)框圖中所采用的串口是NI_VISA串口Serial函數(shù)來訪問和控制串口的,VISA(Virtual Instrument Software Architec-ture,簡(jiǎn)稱為“Visa”)為虛擬儀器軟件結(jié)構(gòu)。函數(shù)的打開如圖4所示,程序框圖面板a儀器I/Oa串口。串口函數(shù)常用的四個(gè)子函數(shù)分別為:VISA配置串口、VISA寫入、VISA讀取、VISA關(guān)閉。VISA配置串口是完成串口參數(shù)的初始化設(shè)置,包括串口資源的名稱、波特率、數(shù)據(jù)比特、奇偶校驗(yàn)、停止位等,停止位的典型值是1、1.5、2位,但在初始化時(shí)停止位的輸人應(yīng)配置成10、15、20。
VISA讀取子函數(shù)是每次從串口讀取一定字節(jié)數(shù)的數(shù)據(jù),VISA關(guān)閉子函數(shù)是當(dāng)程序停止前,把使用的串口設(shè)備關(guān)閉,若不關(guān)閉,該串口就一直被占用。
在設(shè)計(jì)串口時(shí),應(yīng)最先安裝VISA驅(qū)動(dòng),該驅(qū)動(dòng)并不在軟件安裝程序中,若不安裝,前面板運(yùn)行時(shí),串口資源名稱無法從下拉框獲取,程序無法運(yùn)行。安裝成功后,下拉框就可以看到相應(yīng)的COM口。
3)數(shù)據(jù)采集處理模塊
該模塊將單片機(jī)的數(shù)據(jù)進(jìn)行采集和處理,以便實(shí)時(shí)顯示。VISA讀取子函數(shù)中左邊輸入有個(gè)VISA的字節(jié)總數(shù),如圖5所示,因此在讀取前必須指定這個(gè)個(gè)數(shù)。VISA讀取函數(shù)的“讀取字節(jié)數(shù)”的輸入端口設(shè)置十分必要,在串口通信中,如果當(dāng)前緩沖區(qū)的數(shù)據(jù)量小于指定的字節(jié)數(shù),程序會(huì)一直停在VISA讀取上,在超時(shí)的時(shí)間(默認(rèn)是10秒)內(nèi)無法滿足數(shù)據(jù)量時(shí),程序會(huì)“Time out”如果超時(shí)時(shí)間設(shè)置過長(zhǎng),有可能導(dǎo)致程序停止在VISA讀取這個(gè)節(jié)點(diǎn)上。
使用“Bytes at Port”串口的屬性節(jié)點(diǎn),可以很好地解決以上問題。在儀器I/O子面板下,如圖6所示,程序框圖面板a儀器I/O&VISA&高級(jí)VISA&VISA屬性節(jié)點(diǎn)5Serial Setting&Number ofBytes atSerialPort。
也可以在資源線上右鍵a創(chuàng)建aInstr類的屬性aSerial Set-tings&Number ofBytes atSerialPort,如圖7所示。
此屬性節(jié)點(diǎn)可以很好地把當(dāng)前緩沖區(qū)字節(jié)數(shù)匹配到vI—sA讀取的“讀取字節(jié)數(shù)”這個(gè)輸入端上,緩沖數(shù)即為讀取字節(jié)數(shù),無任何等待。
目前串口的收發(fā)大致有兩種類型:一種是主動(dòng)型的,即上下位機(jī)相互通信,上位機(jī)發(fā)指令,下位機(jī)響應(yīng),并返回?cái)?shù)據(jù)給上位機(jī);另一種是被動(dòng)型,即下位機(jī)一直往上位機(jī)發(fā)送數(shù)。本系統(tǒng)采用的是被動(dòng)接收,定時(shí)器設(shè)置每ls接收一次數(shù)據(jù)。
單片機(jī)發(fā)送的溫度值為6字節(jié),首字節(jié)表示正負(fù),后五個(gè)字節(jié)表示最大三位數(shù),精度小數(shù)點(diǎn)后一位的溫度值,如+103.5。為了保證接收的數(shù)據(jù)幀不錯(cuò)亂、不丟包,當(dāng)且僅當(dāng)接收數(shù)據(jù)為6個(gè)字節(jié)的數(shù)據(jù)包,系統(tǒng)才會(huì)保存和顯示。
4)顯示、報(bào)警和存儲(chǔ)模塊
實(shí)時(shí)顯示包括數(shù)值顯示、曲線顯示。為了使曲線的橫坐標(biāo)與系統(tǒng)時(shí)間相同,需要修改波形圖表的橫坐標(biāo)屬性。程序框圖如圖8所示,獲取系統(tǒng)的時(shí)間標(biāo)識(shí),按名稱解除捆綁,分別得到時(shí)、分、秒,計(jì)算((60*時(shí))+分)*60+秒,得到曲線橫坐標(biāo)的off-set,XScale.Offset最后鏈接至波形圖表。運(yùn)行程序,波形圖的坐標(biāo)軸顯示如圖9所示。
從VISA讀取子函數(shù)接收到的是字符型數(shù)據(jù),為了直觀顯示和畫圖,將其用十進(jìn)制數(shù)字符至數(shù)值轉(zhuǎn)換,轉(zhuǎn)換成十進(jìn)制數(shù)值,此數(shù)據(jù)在前面板有三種顯示方式:數(shù)值控件顯示、儀表盤顯示、曲線顯示。前面板設(shè)定溫度的上下限,比較器比較后輸出至上下限指示燈。程序框圖如圖10所示。
系統(tǒng)還可以查詢歷史溫度數(shù)據(jù),點(diǎn)擊圖形控件,右鍵導(dǎo)出數(shù)據(jù)至Excel,可查看歷史記錄。圖11是記錄的是10:51-10:52的后半分鐘內(nèi)的溫度值。與此對(duì)應(yīng)的前面板監(jiān)測(cè)界面圖,如圖3所示。系統(tǒng)可保留一天的數(shù)據(jù)。更改坐標(biāo)軸的offset,可以保留不同時(shí)間的數(shù)據(jù)。總體的上位機(jī)軟件程序框圖如圖12所示。
3總結(jié)
該課題簡(jiǎn)單易行,成本較低,適合學(xué)生在實(shí)驗(yàn)室中設(shè)計(jì)開發(fā)。課題本身靈活性高,可進(jìn)行相關(guān)拓展,如需檢測(cè)濕度、煙霧等信號(hào),只需要將溫度傳感器對(duì)應(yīng)的更換為濕度傳感器或煙霧傳感器;若通信距離較遠(yuǎn)或者想擺脫線纜的束縛,可將通信方式由串口的有線傳輸改為無線通信,例如采用zigbee模塊CC2430或無線收發(fā)模塊NRF24L01。