陸榮鑑,李 品,孫 周
(南京林業大學機電院機械電子工程系,江蘇南京 210037)
倉儲管理、生產制造、氣象觀測、科學研究以及日常生活中,需要對溫度、濕度進行實時檢測。傳統的溫度、濕度傳感器測量精度難以保證,且在線性度、重復性、互換性、一致性等方面表現較差。隨著新技術和新材料的發展,數字式溫濕度傳感器出現了,具有代表性的是瑞士Sensirion公司生產的SHT1x/7x系列單片集成傳感器,這類傳感器可以同時測量濕度、溫度,不僅提高了測量精度,還簡化了外圍電路。本文選用的是SHT10傳感器[1]。
在工業控制領域,RS—485是常用的計算機與外部串行設備之間進行數據交換的通信協議。因其具有良好的抗噪聲干擾性,長的傳輸距離和多站能力等上述優點就使其成為首選的串行接口。本文介紹了基于RS—485串行接口總線的多點溫濕度監測系統。
數據采集單元由溫濕度傳感器SHT10和微控制器PIC16F873組成。
SHT10通過二線串行接口與微處理器連接,如圖1所示。SHT10 的供電電壓是 2.4~5.5 V,推薦使用 3.3 V,電源引腳VDD和GND之間需要加一個100nF的去耦電容器。串行時鐘輸入線SCK用于使PIC16F873與SHT10之間通信同步,由于SHT10接口包含了完全靜態邏輯,因而不存在最小SCK頻率限制,即微控制器可以以任意低的速度與SHT10通信。串行數據線DATA引腳是三態門結構,用于數據的讀取。DATA在SCK時鐘下降沿之后改變狀態,并僅在SCK時鐘上升沿有效。在PIC16F873向SHT10發送數據且SCK時鐘為高電平時,DATA必須保持穩定。為避免信號沖突,PIC16F873應拉低 DATA,當需要拉高DATA信號時,可以通過附加的上拉電阻來實現[1]。
RS—485總線采用雙絞線差分傳輸,可連接成半雙工和全雙工方式,最遠傳輸距離為4000ft(1ft=0.3048m)。系統數據傳輸網絡采取主從式,上位機PC機為主機[2],下位機PIC16F873為從機。主機控制整個網絡的通信時序,每個從機有一個識別地址,當從機被尋址時,該機做出響應,保證各從站分時使用總線,從而避免數據傳輸沖突。系統選用半雙工式通信芯片75LBC184,允許在總線上掛接最多64個類似器件。該芯片帶有內置高能量瞬變噪聲保護裝置,顯著提高了抵抗數據同步傳輸電纜上的瞬變噪聲的可靠性。
PIC16F873單片機自帶異步通信接口,外接RS—485收發器75LBC184。PIC16F873的異步通信口與75LBC184之間采用3片光耦進行電氣隔離,如圖2所示。由于上位機的接口是RS—232接口,故兩者之間還需加上 RS—232/RS—485轉換器進行信號轉換。

圖1 數據采集單元Fig 1 Data acquisition unit

圖2 數據傳輸單元Fig 2 Data transmission unit
SHT10上電后11 ms進入休眠模式,首先應發送一個傳輸啟動時序(如圖3所示)喚醒芯片。隨后,微控制器可向SHT10發送命令,命令字包括高3位的地址位 (目前只支持000)和低5位的命令位。常用命令有:0x03測溫度,0x05測相對濕度,0x07讀寄存器,0x06寫寄存器,0x1e軟件復位。在發送命令時序中,SHT10在第8個SCK時鐘周期下降沿后拉低DATA來表示正確接收到命令。SHT10在第9個SCK時鐘周期的下降沿之后釋放DATA線,DATA恢復至高電平。微控制器發出一組測量命令后需要根據測量數據精確度8/12/14 bit分別等待最長20/80/320 ms,SHT10通過拉低DATA表示測量結束,同時存儲測量結果等待微控制器讀取,SHT10自動進入空閑狀態[1]。

圖3 SHT10傳輸啟動時序Fig 3 Transmission start timing sequence of SHT10
測量數據讀取前,微控制器重新啟動SCK,SHT10傳送2字節的測量數據與1字節的CRC校驗數據,傳輸數據的順序是從最高位(MSB)到最低位(LSB)。微控制器接收到每個字節后,將數據線拉成低電平,產生應答信號ACK,以CRC校驗字節的確認表示通信結束。CRC寄存器通過計算多項式(x8+x5+x4+1)來判定測量過程是否發生錯誤,一旦發現錯誤,微控器就發送軟啟動命令,重新進行測量。如果不使用CRC—8校驗,微控器可以在測量值LSB后保 持DATA高電平來終止通信。SHT10在測量和通信完成后會自動返回睡眠模式。
如果微控制器與SHT10通信中斷,可通過連接復位時序復位,即當DATA保持高電平時,觸發SCK時鐘9次或更多次,如圖4所示。這個時序只復位串口,狀態寄存器內容仍然保留。

圖4 SHT10連接復位時序Fig 4 Connection reset timing sequence of SHT10
這個模塊主要是根據SHT10的功能時序對I/O口進行操作,使其完成溫濕度的測量,并將測量結果發送至微控制器中進行計算,如圖5所示。

圖5 數據采集程序Fig 5 Data acquisition program
溫濕度值在PIC16F873中以BCD碼存儲,共計5個寄存器。0x0020存放溫度值的小數部分,0x0021存放溫度值整數部分的十位和個位,0x0022存放溫度值整數部分的符號位和百位數;0x0023存放濕度值的小數部分,0x0024存放濕度值的整數部分。
異步通信中以10位字符為1幀,1位起始位,8位數據位,1 位停止位,無奇偶校驗位,波特率為 9 600 bps[3]。PIC16F873的USART模塊帶有一個8位的波特率發生器BRG,為串行信息幀格式中的每一位編碼的發送和接收檢測提供定時時鐘,通過BRGH,SPBRG寄存器確定波特率。這里選用BRGH=1(高速方式),SPBRG寄存器初值設為25。
RS—485電氣接口規范只規定了電氣特性,而沒有規定插件傳輸電纜和通信協議,在數據收發過程中,依據ModB-us協議保證數據的可靠傳輸。ModBus協議有2種傳輸模式,即RTU模式和ASCII模式。RTU模式表達相同的信息需要較少的位數,即信息幀中的8位數據作為2個4位16進制字符,且在相同通信速率下具有更大的數據流量,故系統選用RTU模式,典型的消息幀如表1所示。最終數據會被從最低位開始轉換成二進制編碼發送,采用CRC—16進行數據有效性檢驗[4]。

表1 RTU協議典型消息幀Tab 1 Agreement typical news frame of RTU
在RTU模式中,一幀信息的結束到另一幀信息的開始至少需要3.5個字符的時間間隔(由于波特率是9600 kps,故這里的時間間隔是3.7 ms),系統通過定時器2設定中斷來判斷幀的起始和結束。從機每接收到一個新的字節,就重啟定時器計時。當超過設定的3.7 ms時,定時器中斷,并在中斷中設定一個標志位,當主程序查詢到這個標志位時暫停定時器的工作繼而處理接收到的數據。另外,整個消息幀必須作為一連續數據流傳輸,如果在幀完成之前有超過1.5個字符的時間間隔,接收設備將刷新不完整的消息并假定下一字節是一個新消息的地址字節。如果一個新消息在小于3.5個字符時間(1.6 ms)內接著前個消息開始,接收的設備將認為它是前一消息的延續,但這樣CRC校驗不會正確[5]。串口中斷和定時器中斷子程序如圖6和圖7所示。
在PIC16F873里,專門劃出一塊緩沖區用于串行通信,從0x0060到0x0080。系統中若主機設備想要了解某一從機的測量值時,發送一個包含從機地址編碼的信息,則符合相應地址碼的從機接收通信命令,并根據功能碼與相關要求讀取信息。如果CRC校驗無誤,則執行相應的任務,然后把執行結果返送給主機。

圖6 串口中斷子程序流程圖Fig 6 Flow chart of serial interrupt subprogram

圖7 定時器中斷子程序流程圖Fig 7 Flow chart of timer interrupt subprogram
單片機主程序分為四部分:初始化模塊、數據接收模塊、數據采集模塊、數據處理和發送模塊。初始化模塊包括波特率設置、定時器設置、開中斷等;數據接收模塊由串口中斷子程序和定時器中斷子程序組成;數據采集模塊如前所述;數據處理和發送模塊包括校驗計算和將數據打包成協議設定格式并回復主機。從機接收到主機命令并且校驗正確之后,進入數據采集模塊,繼而再將所需數據發送至主機。
本系統共放置了10個監測點,所有監測點通過RS—485總線連到中心計算機,監測軟件采用VB編寫。
界面分4個區,分別為通信串口設置區、數據查詢區、監測點溫濕度數據顯示區、采集控制區。其中通信串口設置區用來設置串口號和通信速率;數據查詢區提供各監測點的溫度、濕度查詢,溫度、濕度報警設置值查詢,當按下要查詢項目的按鈕,會跳出相應的文本框,提供復制黏貼;監測點溫濕度數據顯示區顯示10個監測點當前的溫度和濕度;采集控制區是對溫濕度數據進行復位,對溫濕度報警值進行設定。測試數據如表2所示。

表2 實驗測試值Tab 2 Experimental test value
經測試,所測數據均符合要求,達到技術指標的要求。
本文介紹了SHT10在溫濕度監測系統中的應用,通過RS—485實現指定范圍內溫濕度監測網絡。本系統已在大棚和藥品倉庫溫濕度監系統系統得到應用。在后續的研究中,考慮組建無線傳感器網絡,通過基站收集各節點的數據,集中處理后提交給用戶。以此實現復雜的指定范圍內目標檢測與跟蹤,具有快速展開、抗毀性強等特點。
[1] Datasheet SHT1x(SHT10,SHT11,SHT15)humidity and temperature sensor datasheet[Z].Sensirion,2009.
[2] 李學海.PIC單片機原理[M].北京:北京航空航天大學出版社,2004.
[3] B&B Electronics Ltd.RS—422 and RS—485 Application Note[Z].Ireland,2006.
[4] Modicon Manual,Inc.Modicon modbus protocol reference guide P1—MBUS—300Rev.J.[Z].Modicon Manual Inc,1996.
[5] 孟 華,王鵬達,李明偉.基于ModBus協議的觸摸屏與PIC單片機的通信實現[J].儀表技術與傳感器,2009(10):58-60.