摘 要 詳細介紹Sensirion傳感器公司推出的新型集成數(shù)字式溫濕度傳感器,。該傳感器采用CMOSens專利技術(shù)將溫度濕度傳感器,、A/D轉(zhuǎn)換器及數(shù)字接口無縫結(jié)合,使傳感器具有體積小,、響應(yīng)速度快,、接口簡單、性價比高等特點,。本文結(jié)合實例講解該傳感器的命令,、時序,以及其在單片機系統(tǒng)中的應(yīng)用,。
關(guān)鍵詞 SHTl0 溫濕度傳感器 數(shù)字傳感器 ATmeg8L
引 言
隨著社會的不斷發(fā)展前進,,人們進入了數(shù)字化信息時代,對生活質(zhì)量的要求越來越高,。汽車,、空調(diào)、除濕器,、烘干機等都已家喻戶曉,,它們都離不開對溫度、濕度等環(huán)境因素的要求,。
瑞士Sensirion公司推出了SHTxx單片數(shù)字溫濕度集成傳感器,。采用CMOS過程微加工專利技術(shù)(CMOSens technology),確保產(chǎn)品具有極高的可靠性和出色的長期穩(wěn)定性,。該傳感器由1個電容式聚合體測濕元件和1個能隙式測溫元件組成,,并與1個14位A/D轉(zhuǎn)換器以及1個2一wire數(shù)字接口在單芯片中無縫結(jié)合,使得該產(chǎn)品具有功耗低,、反應(yīng)快,、抗干擾能力強等優(yōu)點。
1 SHTl0的特點
SHTlO的主要特點如下:
◆相對濕度和溫度的測量兼有露點輸出,;
◆全部校準,,數(shù)字輸出;
◆接口簡單(2一wire),,響應(yīng)速度快,;
◆超低功耗,自動休眠,;
◆出色的長期穩(wěn)定性,;
◆超小體積(表面貼裝);
◆測濕精度±4.5%RH,,測溫精度±O.5℃(25℃),。
2 引腳說明及接口電路
(1)典型應(yīng)用電路" title="應(yīng)用電路">應(yīng)用電路
SHTlO典型應(yīng)用電路如圖1所示,。
(2)電源引腳(VDD、GND)
SHTlO的供電電壓為2.4~5.5 V,。傳感器上電后,,要等待11 ms,從“休眠”狀態(tài)恢復(fù),。在此期間不發(fā)送任何指令,。電源引腳(VDD和GND)之間可增加1個100 nF的電容器,用于去耦濾波,。
(3)串行接口
SHTlO的兩線串行接口(bidirectional 2一wire)在傳感器信號讀取和電源功耗方面都做了優(yōu)化處理,,其總線類似I2C總線但并不兼容I2C總線。
①串行時鐘輸入(SCK),。SCK引腳是MCU與SHTlO之間通信的同步時鐘,,由于接口包含了全靜態(tài)邏輯,因此沒有最小時鐘頻率,。
②串行數(shù)據(jù)(DATA),。DATA引腳是1個三態(tài)門,用于MCU與SHTlO之間的數(shù)據(jù)傳輸,。DATA的狀態(tài)在串行時鐘SCK的下降沿之后發(fā)生改變,,在SCK的上升沿有效。在數(shù)據(jù)傳輸期間,,當SCK為高電平" title="高電平">高電平時,,DATA數(shù)據(jù)線上必須保持穩(wěn)定狀態(tài)。
為避免數(shù)據(jù)發(fā)生沖突,,MCU應(yīng)該驅(qū)動DATA使其處于低電平狀態(tài),,而外部接1個上拉電阻將信號拉至高電平,。
3 命令與時序
(1)SHTl0命令
SHTlO命令如表1所列,。
(2)命令時序
發(fā)送一組“傳輸啟動”序列進行數(shù)據(jù)傳輸初始化,如圖2所示,。其時序為:當SCK為高電平時DATA翻轉(zhuǎn)保持低電平,,緊接著SCK產(chǎn)生1個發(fā)脈沖,隨后在SCK為高電平時DATA翻轉(zhuǎn)保持高電平,。
緊接著的命令包括3個地址位(僅支持“000”)和5個命令位,。SHTl0指示正確接收命令的時序為:在第8個SCK時鐘的下降沿之后將DATA拉為低電平(ACK位),在第9個SCK時鐘的下降沿之后釋放DATA(此時為高電平),。
(3)測量時序(RH和T)
“000 00101”為相對濕度(RH)測量,,“000 0001l”為溫度(θ)測量。發(fā)送一組測量命令后控制器要等待測量結(jié)束,,這個過程大約需要20/80/320 ms,,對應(yīng)其8/12/14位的測量,。測量時間隨內(nèi)部晶振的速度而變化,最多能夠縮短30%,。SHTlO下拉DATA至低電平而使其進入空閑模式,。重新啟動SCK時鐘讀出數(shù)據(jù)之前,控制器必須等待這個“數(shù)據(jù)準備好”信號,。
接下來傳輸2個字節(jié)的測量數(shù)據(jù)和1個字節(jié)的CRC校驗,。MCU必須通過拉低DATA來確認每個字節(jié)。所有的數(shù)據(jù)都從MSB開始,,至LSB有效,。例如對于12位數(shù)據(jù),第5個SCK時鐘時的數(shù)值作為MSB位,;而對于8位數(shù)據(jù),,第1個字節(jié)(高8位)數(shù)據(jù)無意義。
確認CRC數(shù)據(jù)位之后,,通信結(jié)束,。如果不使用CRC一8校驗,控制器可以在測量數(shù)據(jù)LSB位之后,,通過保持ACK位為高電平來結(jié)束本次通信,。
測量和通信結(jié)束后,SHTlO自動進入休眠狀態(tài)模式,。
(4)復(fù)位時序
如果與SHTlO的通信發(fā)生中斷,,可以通過隨后的信號序列來復(fù)位串口,如圖3所示,。保持DATA為高電平,,觸發(fā)SCK時鐘9次或更多,接著在執(zhí)行下次命令之前必須發(fā)送一組“傳輸啟動”序列,。這些序列僅僅復(fù)位串口,,狀態(tài)寄存器" title="狀態(tài)寄存器">狀態(tài)寄存器的內(nèi)容仍然保留。
(5)狀態(tài)寄存器讀寫時序
SHTl0通過狀態(tài)寄存器實現(xiàn)初始狀態(tài)設(shè)定,。
讀狀態(tài)寄存器時序如圖4所示,。
寫狀態(tài)寄存器時序如圖5所示。
狀態(tài)寄存器位如表2所列,。
4 幾點說明
①CRC一8校驗,。整個數(shù)據(jù)的傳輸過程都由8位校驗保證,確保任何錯誤的數(shù)據(jù)都能夠被檢測到并刪除,。
②為保持自身發(fā)熱溫升小于O.1℃,,SHTxx的激活時間不超過10%。如12位精度測量,每秒最多測量2次,。
③轉(zhuǎn)換為物理量輸出,。相對濕度輸出轉(zhuǎn)換公式為:
其中,RHlinear為25℃時相對濕度的線性值,,SORH為傳感器輸出" title="傳感器輸出">傳感器輸出的相對濕度的數(shù)值,,c1,c2,,c3為系數(shù),,如表3所列。
當測量溫度與25℃相差較大時,,則需要考慮傳感器的溫度系數(shù):
其中,,RHtrue為溫度不等于25℃時相對濕度的實際值,θ為當前溫度,,t1,、t2是系數(shù),如表4所列,。
溫度輸出轉(zhuǎn)換公式為:
其中,,θ為實際溫度,SOθ為傳感器輸出的溫度數(shù)值,,θ1,,θ2為系數(shù),如表5,、表6所列,。
由于濕度與溫度經(jīng)由同一塊芯片測量而得,因此SHTlO可以同時實現(xiàn)高質(zhì)量的露點測量,。具體算法可參閱參考文獻,,這里不再詳述。
5 SHTl0與ATmega8L的應(yīng)用實例
這里以SHTlO與Atmel公司低功耗8位RISC指令集的ATmega8L(內(nèi)部8 MHz振蕩頻率)MCU的接口電路為例,,給出實際應(yīng)用電路及控制程序?qū)嵗?。本例采用ATmega8L微控制器控制SHTlO,讀取溫濕度數(shù)據(jù),,并將結(jié)果顯示在LCDl602(采用4位模式)上,,如圖6所示。
程序采用C語言模塊化設(shè)計,,大大方便被移植到其他MCU上使用,提高了工作效率,。