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