国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

SHT10傳感器在溫濕度監(jiān)測(cè)系統(tǒng)中的應(yīng)用

2012-10-22 03:35:22陸榮鑑
傳感器與微系統(tǒng) 2012年9期
關(guān)鍵詞:微控制器時(shí)序校驗(yàn)

陸榮鑑,李 品,孫 周

(南京林業(yè)大學(xué)機(jī)電院機(jī)械電子工程系,江蘇南京 210037)

0 引言

倉(cāng)儲(chǔ)管理、生產(chǎn)制造、氣象觀測(cè)、科學(xué)研究以及日常生活中,需要對(duì)溫度、濕度進(jìn)行實(shí)時(shí)檢測(cè)。傳統(tǒng)的溫度、濕度傳感器測(cè)量精度難以保證,且在線性度、重復(fù)性、互換性、一致性等方面表現(xiàn)較差。隨著新技術(shù)和新材料的發(fā)展,數(shù)字式溫濕度傳感器出現(xiàn)了,具有代表性的是瑞士Sensirion公司生產(chǎn)的SHT1x/7x系列單片集成傳感器,這類傳感器可以同時(shí)測(cè)量濕度、溫度,不僅提高了測(cè)量精度,還簡(jiǎn)化了外圍電路。本文選用的是SHT10傳感器[1]。

在工業(yè)控制領(lǐng)域,RS—485是常用的計(jì)算機(jī)與外部串行設(shè)備之間進(jìn)行數(shù)據(jù)交換的通信協(xié)議。因其具有良好的抗噪聲干擾性,長(zhǎng)的傳輸距離和多站能力等上述優(yōu)點(diǎn)就使其成為首選的串行接口。本文介紹了基于RS—485串行接口總線的多點(diǎn)溫濕度監(jiān)測(cè)系統(tǒng)。

1 系統(tǒng)硬件設(shè)計(jì)

1.1 數(shù)據(jù)采集單元設(shè)計(jì)

數(shù)據(jù)采集單元由溫濕度傳感器SHT10和微控制器PIC16F873組成。

SHT10通過(guò)二線串行接口與微處理器連接,如圖1所示。SHT10 的供電電壓是 2.4~5.5 V,推薦使用 3.3 V,電源引腳VDD和GND之間需要加一個(gè)100nF的去耦電容器。串行時(shí)鐘輸入線SCK用于使PIC16F873與SHT10之間通信同步,由于SHT10接口包含了完全靜態(tài)邏輯,因而不存在最小SCK頻率限制,即微控制器可以以任意低的速度與SHT10通信。串行數(shù)據(jù)線DATA引腳是三態(tài)門結(jié)構(gòu),用于數(shù)據(jù)的讀取。DATA在SCK時(shí)鐘下降沿之后改變狀態(tài),并僅在SCK時(shí)鐘上升沿有效。在PIC16F873向SHT10發(fā)送數(shù)據(jù)且SCK時(shí)鐘為高電平時(shí),DATA必須保持穩(wěn)定。為避免信號(hào)沖突,PIC16F873應(yīng)拉低 DATA,當(dāng)需要拉高DATA信號(hào)時(shí),可以通過(guò)附加的上拉電阻來(lái)實(shí)現(xiàn)[1]。

1.2 數(shù)據(jù)傳輸單元設(shè)計(jì)

RS—485總線采用雙絞線差分傳輸,可連接成半雙工和全雙工方式,最遠(yuǎn)傳輸距離為4000ft(1ft=0.3048m)。系統(tǒng)數(shù)據(jù)傳輸網(wǎng)絡(luò)采取主從式,上位機(jī)PC機(jī)為主機(jī)[2],下位機(jī)PIC16F873為從機(jī)。主機(jī)控制整個(gè)網(wǎng)絡(luò)的通信時(shí)序,每個(gè)從機(jī)有一個(gè)識(shí)別地址,當(dāng)從機(jī)被尋址時(shí),該機(jī)做出響應(yīng),保證各從站分時(shí)使用總線,從而避免數(shù)據(jù)傳輸沖突。系統(tǒng)選用半雙工式通信芯片75LBC184,允許在總線上掛接最多64個(gè)類似器件。該芯片帶有內(nèi)置高能量瞬變?cè)肼暠Wo(hù)裝置,顯著提高了抵抗數(shù)據(jù)同步傳輸電纜上的瞬變?cè)肼暤目煽啃浴?/p>

PIC16F873單片機(jī)自帶異步通信接口,外接RS—485收發(fā)器75LBC184。PIC16F873的異步通信口與75LBC184之間采用3片光耦進(jìn)行電氣隔離,如圖2所示。由于上位機(jī)的接口是RS—232接口,故兩者之間還需加上 RS—232/RS—485轉(zhuǎn)換器進(jìn)行信號(hào)轉(zhuǎn)換。

圖1 數(shù)據(jù)采集單元Fig 1 Data acquisition unit

圖2 數(shù)據(jù)傳輸單元Fig 2 Data transmission unit

2 系統(tǒng)軟件設(shè)計(jì)

2.1 SHT10 工作時(shí)序

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

圖3 SHT10傳輸啟動(dòng)時(shí)序Fig 3 Transmission start timing sequence of SHT10

測(cè)量數(shù)據(jù)讀取前,微控制器重新啟動(dòng)SCK,SHT10傳送2字節(jié)的測(cè)量數(shù)據(jù)與1字節(jié)的CRC校驗(yàn)數(shù)據(jù),傳輸數(shù)據(jù)的順序是從最高位(MSB)到最低位(LSB)。微控制器接收到每個(gè)字節(jié)后,將數(shù)據(jù)線拉成低電平,產(chǎn)生應(yīng)答信號(hào)ACK,以CRC校驗(yàn)字節(jié)的確認(rèn)表示通信結(jié)束。CRC寄存器通過(guò)計(jì)算多項(xiàng)式(x8+x5+x4+1)來(lái)判定測(cè)量過(guò)程是否發(fā)生錯(cuò)誤,一旦發(fā)現(xiàn)錯(cuò)誤,微控器就發(fā)送軟啟動(dòng)命令,重新進(jìn)行測(cè)量。如果不使用CRC—8校驗(yàn),微控器可以在測(cè)量值LSB后保 持DATA高電平來(lái)終止通信。SHT10在測(cè)量和通信完成后會(huì)自動(dòng)返回睡眠模式。

如果微控制器與SHT10通信中斷,可通過(guò)連接復(fù)位時(shí)序復(fù)位,即當(dāng)DATA保持高電平時(shí),觸發(fā)SCK時(shí)鐘9次或更多次,如圖4所示。這個(gè)時(shí)序只復(fù)位串口,狀態(tài)寄存器內(nèi)容仍然保留。

圖4 SHT10連接復(fù)位時(shí)序Fig 4 Connection reset timing sequence of SHT10

2.2 數(shù)據(jù)采集模塊軟件設(shè)計(jì)

這個(gè)模塊主要是根據(jù)SHT10的功能時(shí)序?qū)/O口進(jìn)行操作,使其完成溫濕度的測(cè)量,并將測(cè)量結(jié)果發(fā)送至微控制器中進(jìn)行計(jì)算,如圖5所示。

圖5 數(shù)據(jù)采集程序Fig 5 Data acquisition program

溫濕度值在PIC16F873中以BCD碼存儲(chǔ),共計(jì)5個(gè)寄存器。0x0020存放溫度值的小數(shù)部分,0x0021存放溫度值整數(shù)部分的十位和個(gè)位,0x0022存放溫度值整數(shù)部分的符號(hào)位和百位數(shù);0x0023存放濕度值的小數(shù)部分,0x0024存放濕度值的整數(shù)部分。

2.3 數(shù)據(jù)傳輸部分程序設(shè)計(jì)

異步通信中以10位字符為1幀,1位起始位,8位數(shù)據(jù)位,1 位停止位,無(wú)奇偶校驗(yàn)位,波特率為 9 600 bps[3]。PIC16F873的USART模塊帶有一個(gè)8位的波特率發(fā)生器BRG,為串行信息幀格式中的每一位編碼的發(fā)送和接收檢測(cè)提供定時(shí)時(shí)鐘,通過(guò)BRGH,SPBRG寄存器確定波特率。這里選用BRGH=1(高速方式),SPBRG寄存器初值設(shè)為25。

2.4 協(xié)議設(shè)計(jì)

RS—485電氣接口規(guī)范只規(guī)定了電氣特性,而沒(méi)有規(guī)定插件傳輸電纜和通信協(xié)議,在數(shù)據(jù)收發(fā)過(guò)程中,依據(jù)ModB-us協(xié)議保證數(shù)據(jù)的可靠傳輸。ModBus協(xié)議有2種傳輸模式,即RTU模式和ASCII模式。RTU模式表達(dá)相同的信息需要較少的位數(shù),即信息幀中的8位數(shù)據(jù)作為2個(gè)4位16進(jìn)制字符,且在相同通信速率下具有更大的數(shù)據(jù)流量,故系統(tǒng)選用RTU模式,典型的消息幀如表1所示。最終數(shù)據(jù)會(huì)被從最低位開(kāi)始轉(zhuǎn)換成二進(jìn)制編碼發(fā)送,采用CRC—16進(jìn)行數(shù)據(jù)有效性檢驗(yàn)[4]。

表1 RTU協(xié)議典型消息幀Tab 1 Agreement typical news frame of RTU

在RTU模式中,一幀信息的結(jié)束到另一幀信息的開(kāi)始至少需要3.5個(gè)字符的時(shí)間間隔(由于波特率是9600 kps,故這里的時(shí)間間隔是3.7 ms),系統(tǒng)通過(guò)定時(shí)器2設(shè)定中斷來(lái)判斷幀的起始和結(jié)束。從機(jī)每接收到一個(gè)新的字節(jié),就重啟定時(shí)器計(jì)時(shí)。當(dāng)超過(guò)設(shè)定的3.7 ms時(shí),定時(shí)器中斷,并在中斷中設(shè)定一個(gè)標(biāo)志位,當(dāng)主程序查詢到這個(gè)標(biāo)志位時(shí)暫停定時(shí)器的工作繼而處理接收到的數(shù)據(jù)。另外,整個(gè)消息幀必須作為一連續(xù)數(shù)據(jù)流傳輸,如果在幀完成之前有超過(guò)1.5個(gè)字符的時(shí)間間隔,接收設(shè)備將刷新不完整的消息并假定下一字節(jié)是一個(gè)新消息的地址字節(jié)。如果一個(gè)新消息在小于3.5個(gè)字符時(shí)間(1.6 ms)內(nèi)接著前個(gè)消息開(kāi)始,接收的設(shè)備將認(rèn)為它是前一消息的延續(xù),但這樣CRC校驗(yàn)不會(huì)正確[5]。串口中斷和定時(shí)器中斷子程序如圖6和圖7所示。

在PIC16F873里,專門劃出一塊緩沖區(qū)用于串行通信,從0x0060到0x0080。系統(tǒng)中若主機(jī)設(shè)備想要了解某一從機(jī)的測(cè)量值時(shí),發(fā)送一個(gè)包含從機(jī)地址編碼的信息,則符合相應(yīng)地址碼的從機(jī)接收通信命令,并根據(jù)功能碼與相關(guān)要求讀取信息。如果CRC校驗(yàn)無(wú)誤,則執(zhí)行相應(yīng)的任務(wù),然后把執(zhí)行結(jié)果返送給主機(jī)。

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

圖7 定時(shí)器中斷子程序流程圖Fig 7 Flow chart of timer interrupt subprogram

2.5 單片機(jī)主程序設(shè)計(jì)

單片機(jī)主程序分為四部分:初始化模塊、數(shù)據(jù)接收模塊、數(shù)據(jù)采集模塊、數(shù)據(jù)處理和發(fā)送模塊。初始化模塊包括波特率設(shè)置、定時(shí)器設(shè)置、開(kāi)中斷等;數(shù)據(jù)接收模塊由串口中斷子程序和定時(shí)器中斷子程序組成;數(shù)據(jù)采集模塊如前所述;數(shù)據(jù)處理和發(fā)送模塊包括校驗(yàn)計(jì)算和將數(shù)據(jù)打包成協(xié)議設(shè)定格式并回復(fù)主機(jī)。從機(jī)接收到主機(jī)命令并且校驗(yàn)正確之后,進(jìn)入數(shù)據(jù)采集模塊,繼而再將所需數(shù)據(jù)發(fā)送至主機(jī)。

2.6 監(jiān)測(cè)中心軟件界面與實(shí)驗(yàn)數(shù)據(jù)

本系統(tǒng)共放置了10個(gè)監(jiān)測(cè)點(diǎn),所有監(jiān)測(cè)點(diǎn)通過(guò)RS—485總線連到中心計(jì)算機(jī),監(jiān)測(cè)軟件采用VB編寫(xiě)。

界面分4個(gè)區(qū),分別為通信串口設(shè)置區(qū)、數(shù)據(jù)查詢區(qū)、監(jiān)測(cè)點(diǎn)溫濕度數(shù)據(jù)顯示區(qū)、采集控制區(qū)。其中通信串口設(shè)置區(qū)用來(lái)設(shè)置串口號(hào)和通信速率;數(shù)據(jù)查詢區(qū)提供各監(jiān)測(cè)點(diǎn)的溫度、濕度查詢,溫度、濕度報(bào)警設(shè)置值查詢,當(dāng)按下要查詢項(xiàng)目的按鈕,會(huì)跳出相應(yīng)的文本框,提供復(fù)制黏貼;監(jiān)測(cè)點(diǎn)溫濕度數(shù)據(jù)顯示區(qū)顯示10個(gè)監(jiān)測(cè)點(diǎn)當(dāng)前的溫度和濕度;采集控制區(qū)是對(duì)溫濕度數(shù)據(jù)進(jìn)行復(fù)位,對(duì)溫濕度報(bào)警值進(jìn)行設(shè)定。測(cè)試數(shù)據(jù)如表2所示。

表2 實(shí)驗(yàn)測(cè)試值Tab 2 Experimental test value

經(jīng)測(cè)試,所測(cè)數(shù)據(jù)均符合要求,達(dá)到技術(shù)指標(biāo)的要求。

3 結(jié)論

本文介紹了SHT10在溫濕度監(jiān)測(cè)系統(tǒng)中的應(yīng)用,通過(guò)RS—485實(shí)現(xiàn)指定范圍內(nèi)溫濕度監(jiān)測(cè)網(wǎng)絡(luò)。本系統(tǒng)已在大棚和藥品倉(cāng)庫(kù)溫濕度監(jiān)系統(tǒng)系統(tǒng)得到應(yīng)用。在后續(xù)的研究中,考慮組建無(wú)線傳感器網(wǎng)絡(luò),通過(guò)基站收集各節(jié)點(diǎn)的數(shù)據(jù),集中處理后提交給用戶。以此實(shí)現(xiàn)復(fù)雜的指定范圍內(nèi)目標(biāo)檢測(cè)與跟蹤,具有快速展開(kāi)、抗毀性強(qiáng)等特點(diǎn)。

[1] Datasheet SHT1x(SHT10,SHT11,SHT15)humidity and temperature sensor datasheet[Z].Sensirion,2009.

[2] 李學(xué)海.PIC單片機(jī)原理[M].北京:北京航空航天大學(xué)出版社,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] 孟 華,王鵬達(dá),李明偉.基于ModBus協(xié)議的觸摸屏與PIC單片機(jī)的通信實(shí)現(xiàn)[J].儀表技術(shù)與傳感器,2009(10):58-60.

猜你喜歡
微控制器時(shí)序校驗(yàn)
基于時(shí)序Sentinel-2數(shù)據(jù)的馬鈴薯遙感識(shí)別研究
基于Sentinel-2時(shí)序NDVI的麥冬識(shí)別研究
爐溫均勻性校驗(yàn)在鑄鍛企業(yè)的應(yīng)用
物聯(lián)網(wǎng)技術(shù)在微控制器實(shí)驗(yàn)教學(xué)中的應(yīng)用
電子制作(2017年14期)2017-12-18 07:07:58
一種毫米波放大器時(shí)序直流電源的設(shè)計(jì)
電子制作(2016年15期)2017-01-15 13:39:08
大型電動(dòng)機(jī)高阻抗差動(dòng)保護(hù)穩(wěn)定校驗(yàn)研究
基于加窗插值FFT的PMU校驗(yàn)方法
鍋爐安全閥在線校驗(yàn)不確定度評(píng)定
Atmel針對(duì)新一代物聯(lián)網(wǎng)應(yīng)用發(fā)布全新32位微控制器
最新STM32設(shè)計(jì)工具增加對(duì)混合信號(hào)微控制器的支持
洪洞县| 常熟市| 滨州市| 育儿| 大石桥市| 交城县| 兴安县| 山丹县| 法库县| 金沙县| 阳山县| 饶阳县| 新宁县| 镇远县| 白银市| 昭苏县| 乐亭县| 湟源县| 那曲县| 汝州市| 调兵山市| 大厂| 囊谦县| 佛冈县| 徐州市| 汉中市| 确山县| 土默特左旗| 鸡西市| 喀什市| 寿光市| 吐鲁番市| 永修县| 米易县| 樟树市| 磐安县| 襄樊市| 洪湖市| 洪雅县| 当阳市| 崇明县|