<dl id="jlhvx"><noframes id="jlhvx">
<dl id="jlhvx"></dl><del id="jlhvx"><noframes id="jlhvx">
<span id="jlhvx"><progress id="jlhvx"></progress></span><del id="jlhvx"></del><listing id="jlhvx"><strike id="jlhvx"><listing id="jlhvx"></listing></strike></listing>
<listing id="jlhvx"><noframes id="jlhvx"><listing id="jlhvx"></listing>
<listing id="jlhvx"><noframes id="jlhvx"><listing id="jlhvx"></listing>
<var id="jlhvx"></var>
<dl id="jlhvx"></dl>
<span id="jlhvx"></span>
<var id="jlhvx"><strike id="jlhvx"></strike></var>
<dl id="jlhvx"><noframes id="jlhvx">
<listing id="jlhvx"><strike id="jlhvx"></strike></listing><dl id="jlhvx"><noframes id="jlhvx">
<del id="jlhvx"></del>
<dl id="jlhvx"><noframes id="jlhvx">
<listing id="jlhvx"></listing>
<dl id="jlhvx"><strike id="jlhvx"></strike></dl>
<del id="jlhvx"><noframes id="jlhvx">
<var id="jlhvx"><noframes id="jlhvx"><var id="jlhvx"></var>
<del id="jlhvx"><strike id="jlhvx"></strike></del>
<dl id="jlhvx"><noframes id="jlhvx">

基于無線多點通信的倉儲溫度濕度的檢測與控制

2021-12-22 11:48| 發布者: www.artist-contribution.com| 查看:

摘要: 一種基于無線多點數據傳輸的溫度與濕度檢測系統, 采用模塊化設計, 有一套簡單可靠的通信協議。系統設計實用簡潔。實際應用中有很高的靈活性和可擴展性。此種模式還可以用于不同的系統。 ...
要防止倉儲保存的物品變質, 對倉庫環境溫度和濕度的控制顯得極為重要。本系統采用單片機聯合上位機對溫度、濕度進行實時檢測、數字顯示、和實時控制??紤]到倉庫的容積較大, 一般需要多個檢測點, 而且檢測點的位置應隨著貨物的堆放位置、類型以及貨物的堆放高度等實際情況發生改變。為了使感應頭能更靈活地放置, 同時又能方便的采集檢測數據, 作者采用了無線數據傳輸模塊進行主、從機之間的數據傳輸。用多臺“從”單片機負責溫濕度采集, 控制排氣扇的步進電機、窗口的步進電機、除濕機等, 再通過每一個“從”單片機上的無線收發模塊將采集到的溫度濕度等數據發往一臺裝有無線收發模塊的“主”單片機, “從”單片機接通過“主”單片機收上位機發來的控制命令;上位機采用PC機。主單片機作為系統的主機, 所有的“從”單片機和上位機 (PC機) 都通過主機接收和發送數據。
圖1 從單片機電路原理圖圖1 從單片機電路原理圖  下載原圖
 
“從”機上的電路原理圖如圖1, 溫度檢測采用DS18B20單總線溫度傳感器, 可以根據需要串聯安裝多個傳感器。每一個傳感器上帶有唯一的串行號, 將它們存在EEPROM AT24C08串行存儲器中 (見圖1) 。濕度傳感器HIH-4000是美國Honeywell公司的相對濕度傳感器, 由于HIH-4000提供的是數據電壓DC放大線性輸出, 所以采用ADC0809進行D/A轉換。電風扇或除濕機的開關采用繼電器控制。窗子的開關采用步進電機控制。無線收發模塊 (nRF401) 和單片機的串行口連接。上位機根據從機采集的溫度和濕度數據, 判斷兩者有否超出用戶預先在上位機設置上限值, 超過則通過“主”單片機發出命令給相應的“從”單片機, 要求打開窗口、排氣扇或除濕機等降低溫濕度, 同時PC機發出警報信號通知工作人員。待到的溫度和濕度數據低于用戶預先設置下限值時關閉以上設備, 并撤消報警。系統可以實現自動地將溫度和濕度控制在一個合理的范圍內。在PC機上可以用數據庫保存歷史數據, 供查詢和分析[1,2,3]。
系統采用的DS1820數字溫度傳感器, 是一種單總線器件, 只有三個引腳:數據腳, 接地腳, 電源腳。它的數據位是9位, 溫度值測量范圍-55~+125℃, 以0.5℃遞增。在中央微處理器和DS1820之間僅需要一條連接線 (外加公共線) 用于讀寫。DS1820的電源可以從數據線本身獲得, 無需外部電源。限于篇幅, 有關這種器件的讀寫方法和程序筆者就不在這里多敘述, 讀者可以參考有關的資料[1,2]。
每個DS1820都有一個唯一的片序列號, 可以將多只DS1820串接在一個單線總線上 (圖一AT89S52的P3.4) , 這樣只要用一位單片機的并行口線就可實現多點溫度采集。節省了單片機的I/O引腳資源。但是溫度傳感器共用同一條總線, 在讀寫數據時要用傳感器片內的序列號來把他們區別開來, 這個序列號要事先讀出來并把它寫在主程序中才能實現多個溫度傳感器共用一條總線的多點溫度采集。當用戶在更換溫度傳感器時, 也要重新更換單片機的程序。為了解決這個問題, 本系統采用即插即用技術。在單片機的主程序中讀出溫度傳感器的片內序列號, 將它們存到IIC-EEPROM芯片AT24C08中, 并標記已經讀過序列號, 以后就不再讀。每次單片機要讀寫一個溫度傳感器的數據時, 要先從AT24C08中取出一個序列號串行送到單總線, 溫度傳感器讀后將自己的序列號與之比對, 符合的則將數據串行送到單總線, 讓單片機讀取, 如此進行溫度采集。如果有溫度傳感器壞了要更換, 先把壞的溫度傳感器拔下來, 插上新的溫度傳感器, 讓單片機再讀出并記下新溫度傳感器的片內序列號。系統程序核對原有的系列號, 并把舊溫度傳感器的序列號從AT24C08芯片中刪除, 如此系統又可以重新正常工作了。
系統采用的無線通信模塊是RF401, 它是國外最新推出的單片無線收發一體芯片, 它在一個20腳的芯片中包括了高頻發射、高頻接收、PLL合成、FSK調制、FSK 解調、多頻道切換等功能, 是目前集成度最高的無線數傳產品。以往設計無線數傳產品往往需要相當的無線電專業知識和價格高昂的專業設備, 傳統的電路方案不是電路繁瑣就是調試困難, 因而影響了用戶的使用和新產品的開發, RF401的出現使人們擺脫了無線產品設計的困難。RF401采用具有較強抗干擾能力的FSK調制方式, 工作頻率穩定可靠, 外圍元件少, 便于設計生產, 功耗極低, 適合于便攜式及手持式產品的設計, 由于采用了低發射功率和高接收靈敏度的設計, 因而可滿足無線管制要求, 無需使用許可證, 開闊地的使用距離最遠可達1000米。是目前低功率無線數傳的理想選擇, 可廣泛用于遙控、遙測、小型無線網絡、機器人控制等系統[4]。
nRF401收發模塊 (見圖2) 的引腳:PW-UP是電源控制腳, 為0表示模塊電源關, 進入節電模式;為1表示打開電源。TXEN引腳是收發控制腳, 為0表示接收數據;為1表示發送數據。
圖2 PC機與無線收發模塊連接圖圖2 PC機與無線收發模塊連接圖  下載原圖
 
在設計程序時, 要注意各狀態轉換的時延。nRF401的通訊速率最高為20kbit/s, 發送數據之前需將電路置于發射模式;接收模式轉換為發射模式的轉換時間至少為1ms;可以發送任意長度的數據;發射模式轉換為接收模式的轉換時間至少為3ms。在待機模式時, 電路進入待機狀態, 電路不接收和發射數據。待機模式轉換為發射模式的轉換時間至少為4ms;待機模式轉換為接收模式的轉換時間至少為5.0ms。
圖3 節點分布圖3 節點分布  下載原圖
 
圖2是nRF401無線收發模塊與主單片機和PC機的連接圖。以一片51系列單片機作為串行通信的主機, 主機上安裝有無線通信模塊, 上位機 (PC機) 在通信上作為主單片機的從機。各從機間的數據傳輸都要經過主機轉發 (見圖3) 。采用這種形式是因為單片機便于控制無線模塊的工作。為了實現51系列單片機與無線模塊和PC機三者間的通信, 有的設計者加入8251芯片擴展串行口, 有的設計者用并行口模擬串行口。前者要加入一個時鐘芯片產生8251芯片的時鐘脈沖, 硬件的開銷顯著增加;后者, 要用軟件模擬串行通信, 使軟件的復雜度增加。經過仔細思考后, 用主單片機的串行口直接掛接到無線模塊nRF401串行通信引腳及PC機的串行口 (圖2) , 利用不同的地址來區分通信對象。充分利用單片機的串行口, 將硬件和軟件的開銷都做到最優。“從”單片機只有收到主機的查詢命令后, 才能向主機發送數據[5]。
表1 通信指令 導出到EXCEL



指 令格 式
指 令 功 能

字節1
字節2 字節3 字節4 字節5
F0 從單片機地址 溫度數值 濕度數值 F1 (結束) 從單片機發送數據到主單片機

F2
從單片機地址 設備號 (0~FF) 關閉 (00) /打開 (FF) 設備 F1 (結束) 主單片機發給從單片機的設備操作命令

F3
從單片機地址 FF FF F1 (結束) 主單片機發給從單片機的查詢命令。

F4
從單片機地址 溫度數值 濕度數值 F1 (結束) 主單片機傳送數據給PC機

F5
從單片機地址 設備號 (0~FF) 關閉 (00) /打開 (FF) 設備 F1 (結束) PC機傳送命令給主機
 

 
圖4 “主”單片機的程序框圖圖4 “主”單片機的程序框圖  下載原圖
 
當主單片機的串行口輸出一個字節的數據時, PC機和每一臺從單片機都能收到來自主單片機的數據。從單片機和PC機平時都處于接收狀態, 收到的5字節的指令字 (見表1) 后, PC機和每一臺從單片機根據第一個字節判斷是否是自己應收的指令。“從”單片機再根據第二個字節的地址, 判斷是否為主機給自己的指令, 不是就放棄收到的指令字。“從機”收到的指令字有兩種, 查詢命令和設備操作命令。主機每隔一段時間向每一個從機發出查詢溫度和濕度命令。收到查詢命令后“從”單片機向主機發出以“F0”開頭的5個字節采集數據。主單片機收到從單片機發來的數據后, 將第一個字節F0改為F4轉變成主機傳送數據給PC機的指令字。PC機收到這個指令字后, 保存并判斷收到的溫度和濕度數據是否超限, 再發出設備操作命令給主單片機, 主單片機收到此命令后將第一個字節F5改為F2, 變成為“從”單片機的設備操作指令字, 轉發給“從”單片機。如此使各個模塊都可以根據第一和第二字節判斷接收到的數據是否為自己的數據, 避免數據沖突。圖4是“主”單片機的程序框圖。
現場安裝時, 從單片機并不都有窗子和電扇需要控制, 可讓某些“從”機只負責溫度和濕度的監測??梢宰屇承?ldquo;從”機只負責窗子和電扇的控制, 不進行和濕度的監測。使系統有更好的現場適應性及擴展性。
上位機通過串行口得到系統的工作情況后, 通過用戶界面反映出來, 同時根據設置的參數通過主單片機指示各個“從”機做出反應, 控制倉庫排氣扇打開關閉、窗口打開大小。上位機主要使用Visual C++提供的串行通訊控件MSComm來實現微機與單片機之間的通訊。在上位機上利用數據庫保存各點的溫度和溫度。[6]
另外, 考慮到系統的安全可靠, 設置了一個軟件看門狗, 用T0做定時器在主程序運行一定時間后初始化T0的值, 在T0的中斷地址處寫一個跳轉到主程序第一條命令。當主程序進入死循環或程序跑飛, 引起超時, 使T0產生中斷, 程序又轉回到第一條命令運行。
本系統結合單片機及相關器件, 實現倉庫的溫度的采集和控制, 本系統還可以稍加更改可應用在其他的領域。