關(guān)鍵詞: DS18S20 溫度傳感器 無(wú)線(xiàn)測(cè)溫 nRF9E5
無(wú)線(xiàn)測(cè)溫系統(tǒng)是一種集溫度信號(hào)采集、大容量存儲(chǔ)、射頻發(fā)送、LCD動(dòng)態(tài)顯示、控制與通信等功能于一體的新型系統(tǒng)。適用于發(fā)電廠、采油廠、鉆井施工等許多不宜進(jìn)行有線(xiàn)測(cè)溫的場(chǎng)合。本文介紹的無(wú)線(xiàn)測(cè)溫系統(tǒng)包括數(shù)字溫度傳感器DS18S20、射頻SoC nRF9E5、LCD、E2PROM和RS232串行口等模塊。整個(gè)系統(tǒng)由多個(gè)端機(jī)和1個(gè)基站組成。端機(jī)工作在各個(gè)測(cè)溫地點(diǎn),進(jìn)行溫度數(shù)據(jù)采集和無(wú)線(xiàn)發(fā)送;基站與多個(gè)端機(jī)進(jìn)行無(wú)線(xiàn)通信,并通過(guò)LCD把數(shù)據(jù)顯示出來(lái),同時(shí)可以通過(guò)RS232串口將數(shù)據(jù)發(fā)送給PC機(jī)。
1 DS18S20[1]
數(shù)字溫度傳感器DS18S20是美國(guó)DALLAS公司生產(chǎn)的新型總線(xiàn)數(shù)字溫度傳感器,它有2種封裝形式:3引腳封裝和8引腳封裝。3引腳封裝的DS18S20結(jié)構(gòu)如圖1所示。DS18S20的數(shù)據(jù)寫(xiě)入只需要1線(xiàn)I/O(即圖1中的DQ,GND為接地端,VDD為高電平端),以串行通信的方式與微控制器進(jìn)行通信;工作電壓為3~5V,測(cè)量溫度范圍為-55°C~+125°C,測(cè)量溫度為-10°C~+85°C時(shí)的測(cè)量精度為±0.5°C;可編程數(shù)據(jù)位為9~12位,轉(zhuǎn)換12位溫度信號(hào)所需時(shí)間為750ms(最大);用戶(hù)可自行設(shè)定預(yù)警上下限溫度。DS18S20主要應(yīng)用于調(diào)溫控制、工業(yè)系統(tǒng)、溫度計(jì)和其他的溫度傳感系統(tǒng)。
DS18S20主要由64位ROM、溫度傳感器、用于設(shè)定溫度報(bào)警上限的TH和設(shè)定溫度下限的TL三部分組成。此外,還帶有電源感應(yīng)模塊、存儲(chǔ)和控制邏輯器、中間結(jié)果暫存器和8位循環(huán)冗余校驗(yàn)碼(CRC)發(fā)生器部分(見(jiàn)圖1)。
DS18S20內(nèi)部存儲(chǔ)器由ROM、RAM和E2PROM組成。其中,ROM由64位二進(jìn)制數(shù)字組成,共分為8個(gè)字節(jié),字節(jié)0的內(nèi)容是系列代號(hào)10H,字節(jié)1~6的內(nèi)容是48位器件序列號(hào),字節(jié)7為ROM前56位的CRC校驗(yàn)碼。由于64位ROM碼具有惟一性,因此在使用時(shí)作為該器件的地址,通過(guò)讀ROM命令可以將它讀出來(lái)。RAM由9個(gè)字節(jié)的高速度暫存器和非易失性電擦寫(xiě)E2PROM組成,其中字節(jié)1、字節(jié)2存儲(chǔ)當(dāng)前溫度,字節(jié)3、字節(jié)4存儲(chǔ)上、下限報(bào)警溫度TH和TL,字節(jié)5是結(jié)構(gòu)寄存器的易失性拷貝,字節(jié)6、7、8用于內(nèi)部計(jì)算,字節(jié)9是RAM前64位的CRC校驗(yàn)碼。RAM中E2PROM用于存儲(chǔ)TH、TL和配置器的值。數(shù)據(jù)先寫(xiě)入RAM,經(jīng)校驗(yàn)后再傳送給E2PROM。通過(guò)DS18S20功能命令對(duì)RAM進(jìn)行操作。
DS18S20的溫度測(cè)量范圍在-55°C~+125°C,分辨率的默認(rèn)值為12位。檢測(cè)溫度由2個(gè)字節(jié)組成,字節(jié)1的高5位S代表符號(hào)位,字節(jié)0的低4位是小數(shù)部分,中間7位是整數(shù)部分,字節(jié)4是配置寄存器控制字的格式。當(dāng)R1R0的值為00B、01B、10B、11B時(shí),對(duì)應(yīng)的分辨率為9、10、11、12位,轉(zhuǎn)換時(shí)間分別為93ms、187ms、375ms、750ms。
當(dāng)主機(jī)發(fā)出溫度轉(zhuǎn)換命令時(shí),即啟動(dòng)了溫度轉(zhuǎn)換過(guò)程,轉(zhuǎn)換時(shí)間最長(zhǎng)為750ms。主機(jī)通過(guò)暫存器功能命令將溫度值讀出,可通過(guò)寫(xiě)暫存器功能命令改變分辨率的設(shè)置。
2 射頻SoC nRF9E5[2]
nRF9E5是挪威Nordic公司于2004年推出的射頻片上系統(tǒng),其片內(nèi)集成了射頻收發(fā)器nRF905和與標(biāo)準(zhǔn)51兼容的微控制器。nRF9E5的片內(nèi)微控制器的指令時(shí)序與標(biāo)準(zhǔn)51稍有區(qū)別,如nRF9E5的片內(nèi)微控制器的指令周期為4~20個(gè)指令周期(標(biāo)準(zhǔn)51的指令周期為2~40)。nRF9E5的功能圖如圖2所示,其片內(nèi)資源簡(jiǎn)要介紹如下。
nRF9E5片內(nèi)中斷控制器支持5個(gè)擴(kuò)展的中斷源:ADC中斷、SPI中斷、RADIO1中斷、RADIO2中斷和喚醒定時(shí)器中斷。其片內(nèi)控制器有3個(gè)與8052相同的定時(shí)器,1個(gè)和8051相同的串口,可以用定時(shí)器1和定時(shí)器2來(lái)作為異步通信的波特率產(chǎn)生器。此外,還擴(kuò)展了2個(gè)數(shù)據(jù)指針,以便從XRAM區(qū)讀取數(shù)據(jù)。微處理器中有256字節(jié)的數(shù)據(jù)RAM和512字節(jié)的ROM。上電復(fù)位或軟件復(fù)位后,處理器自動(dòng)執(zhí)行ROM中的引導(dǎo)區(qū)中的代碼。用戶(hù)程序通常是在引導(dǎo)區(qū)的引導(dǎo)下,從E2PROM加載到1個(gè)4KB的RAM中,該RAM也可作存儲(chǔ)數(shù)據(jù)用。當(dāng)進(jìn)行批量生產(chǎn)時(shí),可以要求廠家代理把程序固化在片內(nèi),這樣可以省去E2PROM的費(fèi)用并進(jìn)一步減小系統(tǒng)體積。
nRF9E5收發(fā)器通過(guò)內(nèi)部并行口或內(nèi)部SPI口與其他模塊進(jìn)行通信,具有同單片射頻收發(fā)器nRF905相同的功能。DuoCeiver接收器輸出的數(shù)據(jù)準(zhǔn)備信號(hào),可通過(guò)程序使其作為微處理器的中斷信號(hào)或通過(guò)GPIO口傳給CPU。nRF9E5工作于433/868/915MHz頻段。收發(fā)器由1個(gè)完整的頻率合成器、1個(gè)功率放大器、1個(gè)調(diào)節(jié)器和2個(gè)接收器組成。輸出功率、頻道和其他射頻參數(shù)可通過(guò)對(duì)特殊功能寄存器RADIO(0xA0)編程進(jìn)行控制。發(fā)射模式下,射頻電流消耗僅為11mA,接收模式下為12.5mA。為了降低能耗,可通過(guò)程序控制收發(fā)器的開(kāi)/關(guān)。
nRF9E5還具有載波檢測(cè)功能。在ShockBurstTM接收方式(這是Nordic公司為了節(jié)省射頻收發(fā)的能耗而采取的一種收發(fā)方式)下,當(dāng)出現(xiàn)nRF9E5工作信道內(nèi)的射頻載波時(shí),載波檢測(cè)引腳(CD)被置高。這個(gè)特性很好地避免了同一工作頻率下不同發(fā)射器的數(shù)據(jù)包之間的碰撞。
3 LCD模塊12864-12[3]
12864-12漢字圖形點(diǎn)陣液晶顯示模塊可顯示漢字、圖形、ASCII碼和自定義字形,內(nèi)置8 192個(gè)16×16的中文漢字、128個(gè)8×16字符以及64×256點(diǎn)陣顯示RAM。12864-12液晶顯示屏為128×64點(diǎn)陣,可顯示4行(每行8個(gè))漢字,外形尺寸為93mm×70mm×12.5mm,視域尺寸為72mm×40mm。模塊內(nèi)有多種軟件功能:光標(biāo)顯示、畫(huà)面移位、自定義字符、反白、清除、關(guān)閉顯示和睡眠模式等,可方便地對(duì)模塊進(jìn)行控制。為了便于和多種微處理器的接口設(shè)計(jì),12864-12提供了2線(xiàn)串行、3線(xiàn)串行、4位并行及8位并行多種接口方式。12864-12內(nèi)置升壓電路,無(wú)需負(fù)壓,配置了LED背光,只需1個(gè)20kΩ的電阻把V0和地相接,就可在3V低電平下工作。具有為3.3~5.5V寬范圍的工作電壓,故適用于目前比較常見(jiàn)的3.3V或5V工作電壓的系統(tǒng)中??刂破鳛榕_(tái)灣矽創(chuàng)電子公司的ST7920,具有串/并接口方式,其內(nèi)部含有中文字庫(kù)。
考慮到nRF9E5的I/O接口比較少,本無(wú)線(xiàn)測(cè)溫系統(tǒng)的基站中,12864-12采用串行接口方式。使用12864-12的3線(xiàn)串行接口方式可大大簡(jiǎn)化液晶顯示模塊與單片機(jī)之間的接口設(shè)計(jì);同時(shí),也使液晶顯示模塊顯示漢字變得極為容易,從而改變過(guò)去單片機(jī)系統(tǒng)人機(jī)界面不夠友好的弊端。當(dāng)模塊的PSB腳接低電平時(shí),模塊即進(jìn)入串行接口模式。串行模式使用串行數(shù)據(jù)線(xiàn)SID與串行時(shí)鐘線(xiàn)SCLK來(lái)傳送數(shù)據(jù),即構(gòu)成2線(xiàn)串行模式。12864-12還允許同時(shí)接入多個(gè)液晶顯示模塊以完成多路信息顯示功能。此時(shí),要利用片選端“CS”構(gòu)成3線(xiàn)串行接口方式,即當(dāng)“CS”接高電位時(shí),模塊可正常接收并顯示數(shù)據(jù),否則模塊顯示將被禁止。通常情況下,當(dāng)系統(tǒng)僅使用1個(gè)液晶顯示模塊時(shí),“CS”可連接固定的高電平。nRF9E5與12864-12的接口電路如圖3所示。
4 無(wú)線(xiàn)測(cè)溫系統(tǒng)的組成及硬件
無(wú)線(xiàn)測(cè)溫系統(tǒng)分有基站和端機(jī)二大模塊。
(1)端機(jī)布置在數(shù)據(jù)采集點(diǎn),一般由溫度傳感器、微控制器、射頻收發(fā)器和電池組成,根據(jù)需要可以有多個(gè)端機(jī),它們與基站之間通過(guò)射頻進(jìn)行無(wú)線(xiàn)通信。
本系統(tǒng)在設(shè)計(jì)中,為了減小體積,射頻片上系統(tǒng)采用了Nordic公司的nRF9E5,其片內(nèi)集成了51系列微控制器和射頻收發(fā)器。端機(jī)由智能數(shù)字溫度傳感器DS18S20、射頻片上系統(tǒng)nRF9E5和電池組成,其硬件連接如圖4所示。其中,25AA320為E2PROM程序存儲(chǔ)器。端機(jī)上電后,nRF9E5把25AA320內(nèi)的程序自動(dòng)加載到其片內(nèi)的4KB RAM中,這個(gè)過(guò)程由nRF9E5片內(nèi)固化在512字節(jié)ROM中的程序來(lái)自動(dòng)執(zhí)行。DS18S20在空閑時(shí),其DQ口由一個(gè)3kΩ的上拉電阻置為高電平。完成數(shù)據(jù)采集以后,以無(wú)線(xiàn)射頻信號(hào)的形式發(fā)射給基站。
(2)每套系統(tǒng)一般只有1個(gè)基站,包括微控制器、射頻收發(fā)器和顯示器等(基站的具體硬件連接見(jiàn)圖3)?;驹诮邮盏綌?shù)據(jù)后,把信息顯示在液晶顯示屏上,根據(jù)需要,也可以通過(guò)RS232接口與PC機(jī)進(jìn)行通信。LM1117為電源管理模塊(有多種封裝形式,設(shè)計(jì)時(shí)可以靈活選擇),為系統(tǒng)提供+3.3V工作電源。12864-12共有20個(gè)引腳,在本系統(tǒng)中采用串行接口的連接方式,只需要使用其中的10個(gè)引腳(接法見(jiàn)圖3)。射頻發(fā)射天線(xiàn)為印制天線(xiàn),布置在PCB板上。實(shí)際應(yīng)用中,也可根據(jù)需要使用單鞭天線(xiàn)。
5 無(wú)線(xiàn)測(cè)溫系統(tǒng)軟件設(shè)計(jì)
本系統(tǒng)程序比較復(fù)雜,限于篇幅,只列舉其中幾個(gè)函數(shù)供讀者設(shè)計(jì)時(shí)參考。本程序用C語(yǔ)言編寫(xiě),用Keil C51進(jìn)行編譯。
5.1 串行傳送1字節(jié)的數(shù)據(jù)到LCD的函數(shù)
void SendBYTE(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
LCD_CLK=0;//串行時(shí)鐘
if((dat&0x80)!=0)//連續(xù)發(fā)送8字節(jié)
{
LCD_SID=1;//數(shù)據(jù)信號(hào),高為1
}
else
{
LCD_SID=0;//數(shù)據(jù)信號(hào),低為1
}
LCD_CLK=1;
dat=dat<<1;//右移1位
}
}
5.2 圖形方式顯示1個(gè)16×16點(diǎn)的函數(shù)
void DisplayNum(uchar x_pos1,uchar y_pos16,uchar code*
_p1,uchar code*_p2)
{
uchar y_label;
for(y_label=0;y_label<16;y_label++)
{
SendCMD(y_pos16);//行地址
SendCMD(x_pos1);//列地址
SendDAT(*_p1++);//高8位數(shù)據(jù)
SendDAT(*_p2++);//低8位數(shù)據(jù)
y_pos16++;
}
}
5.3 射頻發(fā)送函數(shù)
void Transmitter(void)
{
uchar b;
CS=1;//使2401(RADIO)工作于發(fā)送模式
Delay100μs(0);
for(b=0;b<tconf.n;b++)
{
SpiReadWrite(tconf.buf[b]);//發(fā)送nRF9E5的配置字
}
CS=0;
b=Temperature;//溫度數(shù)據(jù)
PutChar(b);//送到RS232串行口
TransmitPacket(b);//射頻發(fā)送
}
6 結(jié)束語(yǔ)
本文系統(tǒng)地介紹了無(wú)線(xiàn)測(cè)溫系統(tǒng)的組成和其中所用到的數(shù)字溫度傳感器、LCD等。該系統(tǒng)適用于多種場(chǎng)合。實(shí)際應(yīng)用中,可對(duì)其進(jìn)行擴(kuò)充(如增加鍵盤(pán)模塊等)。實(shí)踐證明,該系統(tǒng)具有很高的推廣應(yīng)用價(jià)值。
參考文獻(xiàn)
1 Dallas Semiconductor.DS18S20 High Precision 1-Wire Digital Thermometer.2002
2 Nordic VLSI ASA Inc.433/868/915MHz RF Transceiver with Embedded 8051 Compatible Microcontroller and 4 Input,10 bit ADC.2004
3 LCD在線(xiàn).LCD在線(xiàn)液晶顯示器技術(shù)手冊(cè)12864-12.2003