蘇州信息職業(yè)技術(shù)學(xué)院通信與信息工程系 杜豫平
在傳統(tǒng)的模擬式溫濕度傳感器設(shè)計(jì)中,一般需要設(shè)計(jì)信號(hào)調(diào)理電路并需要經(jīng)過復(fù)雜的校準(zhǔn)和標(biāo)定過程,受環(huán)境影響較大,參數(shù)容易發(fā)生偏移,因此精度難以保證,且在線性度、重復(fù)性、互換性、一致性等方面不如人意。因此設(shè)計(jì)具有精度高、穩(wěn)定性好、成本低、功耗低的溫濕度檢測(cè)系統(tǒng)非常重要。為此采用數(shù)字化高精度溫度傳感器SHT10結(jié)合單片機(jī)控制技術(shù),從而克服了傳統(tǒng)溫濕度檢測(cè)系統(tǒng)需要復(fù)雜的校準(zhǔn)過程和精度低的缺點(diǎn)。
如圖1所示,溫濕度探測(cè)頭一般包括溫濕度檢測(cè)、溫濕度顯示,為能適應(yīng)與無人值守環(huán)境,系統(tǒng)中還包括遠(yuǎn)程通信以及溫濕度探測(cè)頭地址編碼模塊。本設(shè)計(jì)方案中溫濕度檢測(cè)采用數(shù)字溫濕度傳感器SHT10,其溫度檢測(cè)范圍-400C~123.80C,濕度檢測(cè)范圍在0~100%RH,以AT89C51單片機(jī)為控制核心,對(duì)溫濕度傳感器實(shí)時(shí)讀取內(nèi)部參數(shù),測(cè)量結(jié)果不僅通過本地液晶LM016L(LCD1602)顯示,而且通過RS485總線將采集數(shù)據(jù)傳送到遠(yuǎn)程服務(wù)器,以便進(jìn)一步對(duì)數(shù)據(jù)分析、存檔、處理,各探測(cè)頭地址通過撥碼開關(guān)設(shè)置完成。
圖1 溫濕度檢測(cè)器原理框圖
系統(tǒng)溫濕度檢測(cè)采用SHT10單片數(shù)字溫濕度集成傳感器,該傳感器由1個(gè)電容式聚合體測(cè)濕元件和1個(gè)能隙式測(cè)溫元件組成,并與1個(gè)14位A/D轉(zhuǎn)換器以及1個(gè)2-wire數(shù)字接口在單芯片中無縫結(jié)合,使得該產(chǎn)品具有功耗低、反應(yīng)快、抗干擾能力強(qiáng)等優(yōu)點(diǎn)。SHT10單片機(jī)控制電路如圖2所示,SHT10的供電電壓為2.4V~5.5V。傳感器上電后,要等待11ms,從“休眠”狀態(tài)恢復(fù)。在此期間不發(fā)送任何指令。電源引腳(VDD和GND)之間可增加1個(gè)100nF的電容器,用于去耦濾波。SCK引腳是MCU與SHTIO之問通信的同步時(shí)鐘,由于接口包含了全靜態(tài)邏輯,因此沒有最小時(shí)鐘頻率。DATA引腳是1個(gè)三態(tài)門,用于MCU與SHT10之間的數(shù)據(jù)傳輸。DATA的狀態(tài)在串行時(shí)鐘SCK的下降沿之后發(fā)生改變,在SCK的上升沿有效。在數(shù)據(jù)傳輸期間,當(dāng)SCK為高電平時(shí),DATA數(shù)據(jù)線上必須保持穩(wěn)定狀態(tài)。為避免數(shù)據(jù)發(fā)生沖突,MCU應(yīng)該驅(qū)動(dòng)DATA使其處于低電平狀態(tài),而外部接1個(gè)上拉電阻將信號(hào)拉至高電平。
SHT10傳感器的通訊主要包括傳感器硬件啟動(dòng)、啟動(dòng)傳輸、命令傳輸。傳感器硬件啟動(dòng)要求傳感器通電時(shí)上電速率不能低于1V/ms。通電后傳感器需要11ms進(jìn)入休眠狀態(tài),在此之前不允許對(duì)傳感器發(fā)送任何命令。對(duì)SHT10傳感器命令操作主要有溫度測(cè)量、濕度測(cè)量、讀狀態(tài)寄存器、寫狀態(tài)寄存器、軟復(fù)位等,如表1所示,命令命令包括3個(gè)地址位(僅支持“000”)和5個(gè)命令位),首先要對(duì)傳感器發(fā)送“啟動(dòng)傳輸時(shí)序”,來完成數(shù)據(jù)傳輸?shù)某跏蓟?,然后傳送相關(guān)命令數(shù)據(jù),SHT10接收到命令后,內(nèi)部控制器要等待測(cè)量結(jié)束,SHT10通過下拉DATA至低電平并進(jìn)入空閑模式,表示測(cè)量的結(jié)束??刂破髟俅斡|發(fā)SCK時(shí)鐘,對(duì)數(shù)據(jù)進(jìn)行讀取,接著傳輸2個(gè)字節(jié)的測(cè)量數(shù)據(jù)和1個(gè)字節(jié)的CRC奇偶校驗(yàn)(可選擇讀?。CU需要通過下拉DATA為低電平,以確認(rèn)每個(gè)字節(jié)。所有的數(shù)據(jù)從MSB開始,右值有效,在收到CRC的確認(rèn)位之后,表明通訊結(jié)束。如果不使用CRC-8校驗(yàn),控制器可以在測(cè)量值LSB后,通過保持ACK位為高電平來結(jié)束本次通信,SHT10自動(dòng)轉(zhuǎn)入休眠模式。
圖2 SHT10單片機(jī)擴(kuò)展電路圖
表1 SHT10 命令對(duì)照表
圖3 LCD1602與單片機(jī)接線圖
圖4 RS485通信接口原理圖
圖5 主程序流程圖
表2 1602LCD引腳說明表
表3 LCD1602指令說明表
LCD1602為字符型液晶顯示器,是一種專門用于顯示字母、數(shù)字、符號(hào)等點(diǎn)陣式LCD,其顯示容量為16×2個(gè)字符,1602LCD采用標(biāo)準(zhǔn)的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表2所示。
其中VL為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高,對(duì)比度過高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10K的電位器調(diào)整對(duì)比度。RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。R/W為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平R/W為低電平時(shí)可以寫入數(shù)據(jù)。E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。與單片機(jī)接口如圖3所示。
1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來,我們就能看到字母“A”。LCD1602液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實(shí)現(xiàn)的,內(nèi)部的控制器共有11條控制指令,如表3所示。
溫濕度檢測(cè)器所測(cè)數(shù)據(jù)通過RS485總線遠(yuǎn)程傳送至服務(wù)器端,RS485采用平衡發(fā)送和差分接收,因此具有抑制共模干擾的能力。加上總線收發(fā)器具有高靈敏度,能檢測(cè)低至200mV的電壓,故傳輸信號(hào)能在千米以外得到恢復(fù)。RS485采用半雙工工作方式,任何時(shí)候只能有一點(diǎn)處于發(fā)送狀態(tài),因此,發(fā)送電路須由使能信號(hào)加以控制。如圖4所示,本設(shè)計(jì)通過SN75LBC184芯片實(shí)現(xiàn)RS485總線驅(qū)動(dòng),為防止受雷擊等高壓干擾,總線分別接VD1、VD2、VD3、VD4穩(wěn)壓管。為了防止總線中其他分機(jī)的通信受到影響,在SN75LBC184的信號(hào)輸出端串聯(lián)了2個(gè)20Ω的電阻R1和R2,這一本機(jī)的硬件故障就不會(huì)使整個(gè)總線的通信受影響,為消除通信過程中信號(hào)反射造成信號(hào)干擾,需要在總線比兩端連接120Ω終端精密電阻。為防止總線將外部干擾或高壓信號(hào)引入控制器造成整個(gè)檢測(cè)器損壞,SN75LBC184與單片機(jī)接口間采用高速光耦TLP521進(jìn)行物理隔離。
圖6 串口中斷服務(wù)子程序流程圖
溫濕度檢測(cè)探頭軟件設(shè)計(jì)主是實(shí)現(xiàn)溫濕度檢測(cè)、溫濕度顯示、以及遠(yuǎn)程數(shù)據(jù)通信等。其中溫濕度檢測(cè)和顯示安排在主程序中實(shí)現(xiàn),數(shù)據(jù)通信程序有串行中斷服務(wù)程序完成;如圖5所示,在執(zhí)行主程序前首先完成初始化工作,初始化主要包括對(duì)溫濕度傳感器復(fù)位、LCD1602初始化以及串口相關(guān)初始化(波特率初始化、串口工作方式初始化、串口中斷設(shè)置),然后主要進(jìn)行溫濕度測(cè)量、計(jì)算和顯示。
溫濕度檢測(cè)頭采用RS485總線實(shí)現(xiàn)多機(jī)數(shù)據(jù)通信,為1主多從模式,其中主機(jī)為遠(yuǎn)程服務(wù)器、從機(jī)為各溫濕度檢測(cè)頭,如圖6所示,通信時(shí)由主機(jī)依次向各探測(cè)頭發(fā)送地址幀,各從機(jī)收到地址數(shù)據(jù)后與本機(jī)地址相比較,相等則向服務(wù)器傳送本機(jī)溫濕度參數(shù),不相等則直接結(jié)束通信。數(shù)據(jù)傳輸過程中采用累加和校驗(yàn),發(fā)送數(shù)據(jù)時(shí)將各被發(fā)送數(shù)據(jù)相加并取反后作為最后一字節(jié)傳送,服務(wù)器接收數(shù)據(jù)時(shí)將各收到數(shù)據(jù)相加,并將和與FFH,相等表示接收真確,不相等表示數(shù)據(jù)傳輸有誤,則重新發(fā)送地址幀要求對(duì)方重新發(fā)送數(shù)據(jù)。
基于51單片機(jī)的溫濕度檢測(cè)器具有精度高、量程寬、靈敏度高、體積小、功耗低,結(jié)合RS485總線遠(yuǎn)程通信的優(yōu)點(diǎn),系統(tǒng)結(jié)構(gòu)簡單、開發(fā)成本低、抗干擾能力強(qiáng)、性能穩(wěn),體現(xiàn)了較高的性價(jià)比。
[1]張志良編著.單片機(jī)原理與控制技術(shù)[M].機(jī)械工業(yè)出版社,2008.01.
[2]吳國宏.新型溫濕度傳感器SHT10的原理及應(yīng)用[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2009.4.
[3]高志國.基于RS-485總線可靠性研究[J].石油化工自動(dòng)化,2011.4.
[4]隋清江.基于PROTEUS的LCD1602接口設(shè)計(jì)與仿真[J].微計(jì)算機(jī)信息,2010.7.