基于單片機(jī)和LabVIEW的溫濕度監(jiān)測(cè)系統(tǒng)設(shè)計(jì)
引言
隨著技術(shù)的發(fā)展,溫濕度測(cè)量應(yīng)用到了工作和生活的方方面面,溫濕度監(jiān)測(cè)系統(tǒng)的應(yīng)用也愈加廣泛。目前,基于虛擬儀器的監(jiān)控與數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)主要依賴于價(jià)格昂貴的數(shù)據(jù)采集卡,系統(tǒng)開發(fā)和應(yīng)用成本高。LabVIEW是美國(guó)國(guó)家儀器(NI)公司研制開發(fā)的一款圖形化編程開發(fā)環(huán)境,本文基于單片機(jī)和LabVIEW平臺(tái)實(shí)現(xiàn)了溫濕度實(shí)時(shí)監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)。單片機(jī)和溫濕度傳感器構(gòu)成下位機(jī)系統(tǒng),以串口通信方式將采集的數(shù)據(jù)發(fā)送至上位機(jī)PC端LabVIEW平臺(tái),實(shí)現(xiàn)溫濕度數(shù)據(jù)實(shí)時(shí)采集、溫濕度趨勢(shì)圖繪制、門限報(bào)警、歷史數(shù)據(jù)存儲(chǔ),并對(duì)數(shù)據(jù)進(jìn)行精細(xì)化管理。該監(jiān)測(cè)系統(tǒng)快速有效,開發(fā)成本低,非常適合日常使用。
1系統(tǒng)設(shè)計(jì)思路
該系統(tǒng)下位機(jī)控制核心為STC89C52,溫濕度傳感器DHT11采集溫濕度信號(hào),液晶顯示屏LCD1602顯示系統(tǒng)信息。系統(tǒng)設(shè)置報(bào)警電路,用戶可自行設(shè)定報(bào)警閾值,當(dāng)溫度或濕度超過設(shè)定值時(shí)則啟動(dòng)報(bào)警。上位機(jī)采用LabVIEW編寫程序,單片機(jī)與其通過串口進(jìn)行通信,實(shí)現(xiàn)系統(tǒng)溫濕度數(shù)據(jù)的實(shí)時(shí)測(cè)量、監(jiān)控、存儲(chǔ)及統(tǒng)計(jì)分析。LabVIEW圖形化編程人機(jī)交互界面友好,開發(fā)成本低,簡(jiǎn)單易行,功能可靠。系統(tǒng)結(jié)構(gòu)如圖1所示。
2硬件電路設(shè)計(jì)
2.1下位機(jī)硬件電路設(shè)計(jì)
下位機(jī)單片機(jī)控制系統(tǒng)硬件電路包括:溫濕度傳感器DHT11電路、LCD1602顯示電路、聲光報(bào)警電路和鍵盤電路,本文在此只闡述溫濕度傳感器DHT11的電路設(shè)計(jì)。DHT11只需要占用單片機(jī)一個(gè)I/O口即可完成連接。如圖2所示,DHT11的供電電壓為3.5~5.5V,其1腳接VCC,2腳接單片機(jī)的I/O口,3腳懸空,4腳接GND。上電后等待1s以越過不穩(wěn)定狀態(tài),在此期間不要發(fā)送任何指令。
2.2上位機(jī)串行通信電路設(shè)計(jì)
上位機(jī)通過串口通信獲取單片機(jī)采集的溫濕度數(shù)值。串行通信線路簡(jiǎn)單,只需一對(duì)傳輸線即可實(shí)現(xiàn)通信,速度慢但成本低。在串行通信中,需要進(jìn)行邏輯電平轉(zhuǎn)換,使其對(duì)信息的邏輯定義與TTL兼容,接口電路如圖3所示。
3系統(tǒng)軟件設(shè)計(jì)
3.1下位機(jī)單片機(jī)程序設(shè)計(jì)
下位機(jī)程序設(shè)計(jì)主要包括DHT11溫濕度讀取、LCD1602顯示、鍵盤、聲光報(bào)警以及單片機(jī)串口通信設(shè)計(jì),圖4為下位機(jī)主程序流程圖。
下位機(jī)程序設(shè)計(jì)中的復(fù)雜部分是關(guān)于DHT11如何讀取溫濕度數(shù)據(jù)。DHT11采用單總線數(shù)據(jù)格式,一次通信時(shí)間要小于3ms,主機(jī)連續(xù)采樣間隔建議大于100ms,其讀取單總線上的1個(gè)字節(jié)數(shù)據(jù)程序設(shè)計(jì)如圖5所示。其溫濕度數(shù)據(jù)包由5Byte(40bit)組成:8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bit溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)+8bit校驗(yàn)和,可以據(jù)此讀出采集到的溫濕度數(shù)據(jù)。
3.2上位機(jī)LabVlEW程序設(shè)計(jì)
3.2.1LabVIEW上位機(jī)設(shè)計(jì)模式
由于下位機(jī)連續(xù)不斷地采集溫濕度數(shù)據(jù),為保證數(shù)據(jù)不丟失,上位機(jī)設(shè)計(jì)模式代碼框架采用生產(chǎn)者/消費(fèi)者模式。利用消息隊(duì)列處理器,將用戶界面UI、數(shù)據(jù)采集、數(shù)據(jù)保存顯示、數(shù)據(jù)分析4個(gè)隊(duì)列多線并行運(yùn)行,如圖6所示。用戶界面有任何動(dòng)作,生產(chǎn)者均會(huì)在事件結(jié)構(gòu)產(chǎn)生對(duì)應(yīng)的事件消息,發(fā)送到隊(duì)列,消費(fèi)者不斷取出隊(duì)列的事件消息進(jìn)行處理,對(duì)所有動(dòng)作做出反應(yīng)。
3.2.2LabVIEW上位機(jī)串口發(fā)送程序
本程序運(yùn)行前需要先配置串口,將命令(如55AA01)通過VIsA串口寫入,等待不少于0.02s,時(shí)間太短會(huì)導(dǎo)致讀取緩存失敗。通過串口屬性節(jié)點(diǎn)ByteatPort可判斷串口緩存的字符個(gè)數(shù),若單片機(jī)返回錯(cuò)誤標(biāo)志,則重新發(fā)送。由于DHT11是單總線器件,單片機(jī)正在執(zhí)行時(shí)序時(shí)不能被打斷,會(huì)錯(cuò)過上位機(jī)命令,所以需要重復(fù)發(fā)送幾次,保證連接成功,不管成功與否最多發(fā)送5次。執(zhí)行部分程序框圖如圖7所示。
3.2.3LabVIEW上位機(jī)串口接收程序
為保證單片機(jī)發(fā)送過來的數(shù)據(jù)不會(huì)丟失,上位機(jī)將串口緩沖中的數(shù)據(jù)一一讀到隊(duì)列中,再建立另外一個(gè)線程來取出隊(duì)列中數(shù)據(jù)并進(jìn)行分析,如圖8所示。
3.2.4數(shù)據(jù)文件存儲(chǔ)和調(diào)用
上位機(jī)存儲(chǔ)數(shù)據(jù)文件類型為TDMs(TechnicalDataManagementSTreaming)文件,它兼顧了存取方便、高速等優(yōu)勢(shì)。TDMS的邏輯結(jié)構(gòu)分為三層:文件(Fi1e)、通道組(Channe1Groups)和通道(Channe1s),程序員可以非常方便地使用這三個(gè)邏輯層次定義測(cè)試數(shù)據(jù),數(shù)據(jù)檢索是有序的、方便存取的,如圖9所示。
4系統(tǒng)設(shè)計(jì)結(jié)果
系統(tǒng)測(cè)試結(jié)果如圖10~圖13所示。本系統(tǒng)實(shí)現(xiàn)了基于單片機(jī)和LabVIEW的溫濕度監(jiān)測(cè),下位機(jī)實(shí)時(shí)監(jiān)測(cè)溫濕度數(shù)據(jù),上位機(jī)在LabVIEW前面板實(shí)現(xiàn)溫濕度數(shù)據(jù)和波形實(shí)時(shí)顯示,當(dāng)溫濕度數(shù)值超出或低于預(yù)設(shè)值時(shí),可通過下位機(jī)蜂鳴器和上位機(jī)指示燈進(jìn)行報(bào)警,歷史數(shù)據(jù)能以TDMS文件形式保存,易于查詢和打印。
5結(jié)語(yǔ)
本文設(shè)計(jì)了基于單片機(jī)和LabVIEW的溫濕度監(jiān)測(cè)系統(tǒng),經(jīng)測(cè)試,該系統(tǒng)可實(shí)現(xiàn)溫濕度的實(shí)時(shí)監(jiān)測(cè)、報(bào)警、歷史數(shù)據(jù)存儲(chǔ)和查詢功能,且監(jiān)測(cè)界面美觀、操作便捷,系統(tǒng)成本低,功能易擴(kuò)展,具有較好的使用和推廣價(jià)值。