龐岳峰,朱巍巍,謝克佳,羅 義
(酒泉衛(wèi)星發(fā)射中心,甘肅 酒泉 732750)
在測控設(shè)備遠程操控建設(shè)中,設(shè)計了遠程加電系統(tǒng),實現(xiàn)在遠程操控機房控制測控設(shè)備每個分系統(tǒng)的加斷電功能[1]。隨著遠程操控精細化的進一步需求,需要對測控設(shè)備工作溫濕度環(huán)境進行實時監(jiān)測,必要時進行機房溫濕度的調(diào)節(jié)。溫濕度監(jiān)測與控制在土壤環(huán)境、機房、車間、電梯及水電領(lǐng)域已有諸多應用[2-7],按照通信方式,主要分為無線監(jiān)測[8-10]和有線監(jiān)測[3,11,12]。溫濕度監(jiān)測系統(tǒng)所采用的關(guān)鍵器件有DHT11傳感器[4]、DS18B20傳感器[5]、MTS310傳感器[8]、SHT71傳感器[9,10,13]、SHT11傳感器[14-16]、AT89C51[17]單片機以及FPGA器件[18]等。SHT11的優(yōu)點為無需外部模擬電路,可直接被微控制器訪問,精度高、長期穩(wěn)定性好、反應速度快、能耗低[15-16]。本文基于測控設(shè)備遠程加電硬件板[1]設(shè)計,采用SHT11傳感器和X3CS200芯片進行功能拓展,實現(xiàn)了溫濕度信息的采集、存貯、傳輸和計算,在監(jiān)測到溫濕度不滿足要求時,采用遠程加電、斷電功能通過溫濕度控制設(shè)備進行調(diào)節(jié)。
SHT1x系列采用工業(yè)CMOSens TM技術(shù)制作,溫濕度傳感器、信號放大調(diào)理、A/D轉(zhuǎn)換、總線接口全部集成于一芯片,體積小,可表面貼裝。該器件數(shù)字化輸出,濕度值輸出分辨率為14位,溫度值輸出分辨率為12位,并可編程為12位,具有可靠的CRC數(shù)據(jù)傳輸校驗功能。
SHT1x典型應用電路如圖1所示,輸出接口采用具有工業(yè)標準總線,通過時鐘引腳SCK和數(shù)據(jù)引腳DATA完成數(shù)據(jù)傳輸。SCK用于微處理器和傳感器SHT之間通信的同步,DATA引腳為三態(tài)數(shù)據(jù)引腳,用于從器件中輸入和輸出數(shù)據(jù)。DATA在SCK的下降沿之后變化,在上升沿時有效。在數(shù)據(jù)傳輸過程中,當SCK是高電平時,DATA線必須保持穩(wěn)定。為避免信號沖突,微處理器僅可驅(qū)動DATA為低電平。因此,需要一個額外的電阻來把信號拉高,上拉電阻一般包含在微處理器的電路中。
圖1 SHT1x系列典型應用電路
溫濕度監(jiān)測系統(tǒng)結(jié)構(gòu)如圖2所示,溫濕度采集利用SENSIRION公司的溫濕度傳感器SHT11實現(xiàn),SHT11控制模塊在FPGA開發(fā)板上實現(xiàn),完成對SHT11傳感器的指令發(fā)送及檢測結(jié)果的讀取和解碼,利用VHDL硬件語言編寫。SHT11控制模塊獲得的溫度和濕度通過串口發(fā)送,并經(jīng)NPort轉(zhuǎn)換成網(wǎng)絡數(shù)據(jù)格式,傳輸?shù)奖O(jiān)控主機,在監(jiān)控軟件上實時顯示。
圖2 溫濕度監(jiān)測系統(tǒng)結(jié)構(gòu)設(shè)計
SHT11的主要時序包括命令時序、測量數(shù)據(jù)時序、數(shù)據(jù)輸出時序和復位時序。命令時序指由微處理器向SHT11發(fā)送命令字,包含3個地址比特和5個命令比特。在發(fā)送命令時序前需要一個啟動序列信號,序列信號的定義為:在SCK高電平時,DATA變成低電平并保持,當SCK信號產(chǎn)生一個低電平脈沖后變成高電平時,DATA變?yōu)楦唠娖健?/p>
啟動序列后,微處理器即可發(fā)送命令序列,共8 bit,SHT接收到8 bit命令后,返回微處理器一個應答信號。應答信號的定義是:在命令序列的第8個SCK時鐘的下降沿后,SHT把DATA引腳拉低,在第9個SCK時鐘的下降沿之后,釋放DATA。
SHT正確接收命令序列后,進入測量周期,此時DATA保持高電平。測量時間大約為11 ms(8 bit)、55 ms(12 bit)和210 ms(14 bit)。測量結(jié)束后,SHT把DATA線拉低,開始進入數(shù)據(jù)輸出時序。
數(shù)據(jù)輸出時,先輸出高位,后輸出低位。例如默認狀態(tài)下,測量溫度使用14 bit輸出,最高位默認為零,即在DATA線被SHT拉低后,第1個SCK時鐘周期,SHT輸出為零,第2個時鐘周期開始輸出溫度值;同理,測量濕度使用12 bit,則前4個SCK時鐘周期,SHT輸出為零,從第5個周期開始輸出濕度值。SHT每發(fā)送8 bit,需要微處理器返回一個應答信號,共發(fā)送3 Byte數(shù)據(jù)。數(shù)據(jù)發(fā)送完畢,在測量結(jié)果的最低位發(fā)送后,微處理器不再返回ACK信號,而是直接把ACK信號拉高。
1.4.1 濕度計算
濕度傳感器是一個非線性器,首先需要進行非線性補償,公式為RHlinear=c1+c2×SORH+c3×SORH2,其中,SORH為SHT輸出值(十進制數(shù)),其他參數(shù)如表1所示。
表1 濕度計算參數(shù)表
SORH/bitC1C2C312 -40.040 5-2.8×10-68 -40.648-7.2×10-4
1.4.2 溫度計算
溫度傳感器為一個線性器件,計算公式為:T=d1+d2×SOT,各參數(shù)取值如表2所示。
表2 溫度計算參數(shù)表
VDD/Vd1/℃SOT/bitd2/℃3.5-39.66140.013-39.60120.04
1.4.3 CRC計算
生成多形式為x8+x5+x4,檢測的故障類型有奇數(shù)故障、2 bit故障、8 bit以內(nèi)的連續(xù)故障等。該器件輸出的CRC碼是命令序列并聯(lián)測量值的校驗和,例如測量濕度,輸入命令為0x05,測量結(jié)果是0x0931,則CRC輸出的結(jié)果相當于0x050931的校驗值,若按照逐字節(jié)計算的方法,計算過程如圖3所示。
圖3 CRC計算示意圖
CRC值與溫濕度值的輸出不同,溫濕度值先輸出高位,而CRC值先輸出低位。因此,控制模塊從SHT中讀取CRC后,需要把讀取的值倒置一下。
頂層模塊包括4個子模塊,即串口接收模塊、串口發(fā)送模塊、時鐘產(chǎn)生模塊和SHT控制模塊。SHT控制模塊完成對溫濕度傳感器SHT11的命令輸入和測量數(shù)據(jù)讀取,是核心模塊。
SHT控制模塊包含兩部分,一為測量控制模塊,是輸入SHT命令序列和讀取測量數(shù)據(jù)的控制模塊,主要完成功能是當從串口接收到指令代碼時,判斷需要進行溫度(或濕度)測量還是讀取測量數(shù)據(jù)、CRC校驗值并寄存;二為發(fā)送控制模塊,是發(fā)送測量數(shù)據(jù)的控制模塊,主要功能是檢測到SHT11模塊測量完畢后,依次輸出指令代碼、溫度、濕度和CRC值到串口發(fā)送模塊。
測量控制模塊包含3部分:① Cndprocess模塊用于發(fā)送啟動序列和命令序列;② MeasureT_RH模塊等待SHT測量完畢后,用于讀取測量的溫濕度值,并根據(jù)相應的時序返回ACK信號;③ ControlMachine模塊當接收到相應命令代碼時,觸發(fā)Cndprocess模塊,發(fā)送測量命令,在MeasureT_RH模塊測量完畢后寄存測量值和CRC校驗值,完成測量后,設(shè)置mea_end=1表示測量完畢。ControlMachine模塊的輸入輸出接口如表3所示。
表3 ControlMachine模塊輸入輸出接口
信號名稱端口位數(shù)功能描述clkinput1時鐘信號,19.2 kHzrst_ninput1復位信號,低電平有效finishinput1測量過程標示MeaCodeinput16測量命令代碼MeaStartinput1串口使能信號commendoutput3SHT的命令代碼序列Mea_endoutput1測量完畢指示信號,上升沿有效startoutput1發(fā)送SHT起始序列的觸發(fā)信號
其主要功能是:根據(jù)串口輸入的字節(jié)值,選擇不同的測量命令序列,并觸發(fā)開始測量信號。模塊工作的流程圖如圖4所示。
圖4 ControlMachine模塊流程
Cndprocess模塊的輸入輸出接口如表4所示。
表4 Cndprocess模塊輸入輸出接口
信號名稱端口位數(shù)功能描述clkinput1時鐘信號,19.2 kHzrst_ninput1復位信號,低電平有效startinput1發(fā)送SHT起始序列的觸發(fā)信號,高電平有效commendinput3SHT的命令代碼序列ackoutput1ACK信號,布爾類型,true有效doutoutput1SHT器件DATA線的輸出值sckxoutput1SHT器件的時鐘信號SCKwenoutput1三態(tài)端口信號的使能信號
完成SHT器件的起始命令序列、溫度/濕度測量命令序列以及ACK信號的傳輸,同時產(chǎn)生SHT器件的SCK時鐘信號,主要采用計數(shù)器法,對命令序列進行賦值。流程圖設(shè)計如圖5所示,信號sck_c為一個2 bit的信號,在時鐘clk的觸發(fā)下,進行循環(huán)加1,而在sck_c=“01”或“02”時,令sckx=1,其他情況等于0,從而產(chǎn)生SHT器件的SCK信號。
圖5 Cndprocess模塊流程
MeasureT_RH模塊的輸入輸出接口定義如表5所示。
表5 MeasureT_RH模塊輸入輸出接口
信號名稱端口位數(shù)功能描述clkinput1時鐘信號,19.2 kHzrst_ninput1復位信號,低電平有效sckinput1SHT器件的時鐘信號SCKack_cndinput1ACK信號,布爾類型,true有效crcoutput7SHT器件輸出的CRC校驗碼dataT_RHoutput16SHT器件輸出的溫度/濕度測量值finishoutput1讀取測量值標示信號,1表示閑,0標示忙sht_readyoutput1SHT內(nèi)部測量過程的標示信號ack_moutput1ACK信號,布爾類型,true有效wenoutput1三態(tài)端口信號的使能信號
完成讀取SHT器件溫度/濕度測量值和CRC校驗碼,并完成對ACK信號的傳輸。首先,當命令序列發(fā)送完畢后,等待SHT返回ACK信號,檢測到ACK信號后,說明SHT已經(jīng)正確接收到命令序列,開始測量。其次,等待SHT的“準備完畢”信號(SHT把DATA線拉低)有效后,采用計數(shù)器法,對讀取的測量值和CRC校驗碼進行控制,通過檢測SCK時鐘的上升沿,實現(xiàn)計數(shù)器的疊加,具體流程如圖6所示。
圖6 MeasureT_RH模塊流程
完成向串口模塊發(fā)送4 Byte的控制功能,模塊外部接口定義如表6所示。
表6 發(fā)送控制模塊輸入輸出接口
信號名稱端口位數(shù)功能描述clkinput1時鐘信號,19.2 kHzrst_ninput1復位信號,低電平有效Mea_endinput1SHT測量結(jié)束標識信號DATAT_RHinput16溫濕度測量值的輸出crcinput8CRC校驗值Commendinput3SHT的命令序列Tra_startoutput1串口的發(fā)送起始信號TraSHT_finishoutput1串口發(fā)送過程的標示信號TraDataoutput8發(fā)送至串口的數(shù)據(jù)
發(fā)送的4個字節(jié)主要包括:測量命令1 Byte(0xCC或0xDD)、測量值2 Byte(溫度值或濕度值)和測量值的CRC校驗碼1 Byte。返回測量命令的作用是:對測量結(jié)果進行識別,便于測量值的計算和校驗。
如圖2所示,搭建溫濕度測量環(huán)境平臺,測試環(huán)境為測控設(shè)備機房。根據(jù)器件說明書,采用14位數(shù)據(jù)測量溫度的分辨率為0.01 ℃,量程范圍為-40 ℃~123.8 ℃,溫度最大測量誤差為±3 ℃,在-20 ℃~40 ℃范圍內(nèi),測量誤差< 1.5 ℃。采用12位數(shù)據(jù)測量濕度的分辨率為0.03%,量程范圍為0~100%,濕度測量在20%~80%范圍內(nèi),測量誤差為±3%,其他范圍隨測量濕度變化而現(xiàn)行變化,最大為±5%。
以“逸品博洋HTC-8”型溫濕度計為參考,通過空調(diào)控制測控設(shè)備內(nèi)溫度和濕度,HTC-8溫濕度計和自行設(shè)計的溫濕度計同時測量并記錄,獲得數(shù)據(jù)如表7所示。從表中可看出,本設(shè)計的溫度測量值與參考溫濕度計的測量值(HTC-8)之間誤差<1℃,濕度測量值之間的誤差小于4%。根據(jù)測控設(shè)備日常環(huán)境溫濕度要求,本設(shè)計能夠滿足正常的環(huán)境監(jiān)控需求。
表7 溫濕度測量結(jié)果比較表
序號溫度/℃濕度/%SHT-11HTC-8SHT-11HTC-8126.7826.722.122225.6525.523.721324.2424.325.622423.5023.526.523522.7022.827.925
本文設(shè)計的測控設(shè)備溫濕度監(jiān)測系統(tǒng)與原遠程加電系統(tǒng)功能融合,通過控制加熱器、除濕機等電器通電和斷電方式在一定程度上達到了設(shè)備環(huán)境溫濕度監(jiān)測及控制的目的,但是這種方式還具有一定局限性,后續(xù)將進一步研究對空調(diào)等電器設(shè)備的遠程設(shè)置。