关键词:DS18S20 温度传感器 无线测温 nRF9E5
无线测温系统是一种集温度信号采集、大容量存储、射频发送、LCD动态显示、控制与通信等功能于一体的新型系统。适用于发电厂、采油厂、钻井施工等许多不宜进行有线测温的场合。本文介绍的无线测温系统包括数字温度传感器DS18S20、射频SoC nRF9E5、LCD、E2PROM和RS232串行口等模块。整个系统由多个端机和1个基站组成。端机工作在各个测温地点,进行温度数据采集和无线发送;基站与多个端机进行无线通信,并通过LCD把数据显示出来,同时可以通过RS232串口将数据发送给PC机。
1 DS18S20[1]
数字温度传感器DS18S20是美国DALLAS公司生产的新型总线数字温度传感器,它有2种封装形式:3引脚封装和8引脚封装。3引脚封装的DS18S20结构如图1所示。DS18S20的数据写入只需要1线I/O(即图1中的DQ,GND为接地端,VDD为高电平端),以串行通信的方式与微控制器进行通信;工作电压为3~5V,测量温度范围为-55°C~+125°C,测量温度为-10°C~+85°C时的测量精度为±0.5°C;可编程数据位为9~12位,转换12位温度信号所需时间为750ms(最大);用户可自行设定预警上下限温度。DS18S20主要应用于调温控制、工业系统、温度计和其他的温度传感系统。
DS18S20主要由64位ROM、温度传感器、用于设定温度报警上限的TH和设定温度下限的TL三部分组成。此外,还带有电源感应模块、存储和控制逻辑器、中间结果暂存器和8位循环冗余校验码(CRC)发生器部分(见图1)。
DS18S20内部存储器由ROM、RAM和E2PROM组成。其中,ROM由64位二进制数字组成,共分为8个字节,字节0的内容是系列代号10H,字节1~6的内容是48位器件序列号,字节7为ROM前56位的CRC校验码。由于64位ROM码具有惟一性,因此在使用时作为该器件的地址,通过读ROM命令可以将它读出来。RAM由9个字节的高速度暂存器和非易失性电擦写E2PROM组成,其中字节1、字节2存储当前温度,字节3、字节4存储上、下限报警温度TH和TL,字节5是结构寄存器的易失性拷贝,字节6、7、8用于内部计算,字节9是RAM前64位的CRC校验码。RAM中E2PROM用于存储TH、TL和配置器的值。数据先写入RAM,经校验后再传送给E2PROM。通过DS18S20功能命令对RAM进行操作。
DS18S20的温度测量范围在-55°C~+125°C,分辨率的默认值为12位。检测温度由2个字节组成,字节1的高5位S代表符号位,字节0的低4位是小数部分,中间7位是整数部分,字节4是配置寄存器控制字的格式。当R1R0的值为00B、01B、10B、11B时,对应的分辨率为9、10、11、12位,转换时间分别为93ms、187ms、375ms、750ms。
当主机发出温度转换命令时,即启动了温度转换过程,转换时间最长为750ms。主机通过暂存器功能命令将温度值读出,可通过写暂存器功能命令改变分辨率的设置。
2 射频SoC nRF9E5[2]
nRF9E5是挪威Nordic公司于2004年推出的射频片上系统,其片内集成了射频收发器nRF905和与标准51兼容的微控制器。nRF9E5的片内微控制器的指令时序与标准51稍有区别,如nRF9E5的片内微控制器的指令周期为4~20个指令周期(标准51的指令周期为2~40)。nRF9E5的功能图如图2所示,其片内资源简要介绍如下。
nRF9E5片内中断控制器支持5个扩展的中断源:ADC中断、SPI中断、RADIO1中断、RADIO2中断和唤醒定时器中断。其片内控制器有3个与8052相同的定时器,1个和8051相同的串口,可以用定时器1和定时器2来作为异步通信的波特率产生器。此外,还扩展了2个数据指针,以便从XRAM区读取数据。微处理器中有256字节的数据RAM和512字节的ROM。上电复位或软件复位后,处理器自动执行ROM中的引导区中的代码。用户程序通常是在引导区的引导下,从E2PROM加载到1个4KB的RAM中,该RAM也可作存储数据用。当进行批量生产时,可以要求厂家代理把程序固化在片内,这样可以省去E2PROM的费用并进一步减小系统体积。
nRF9E5收发器通过内部并行口或内部SPI口与其他模块进行通信,具有同单片射频收发器nRF905相同的功能。DuoCeiver接收器输出的数据准备信号,可通过程序使其作为微处理器的中断信号或通过GPIO口传给CPU。nRF9E5工作于433/868/915MHz频段。收发器由1个完整的频率合成器、1个功率放大器、1个调节器和2个接收器组成。输出功率、频道和其他射频参数可通过对特殊功能寄存器RADIO(0xA0)编程进行控制。发射模式下,射频电流消耗仅为11mA,接收模式下为12.5mA。为了降低能耗,可通过程序控制收发器的开/关。
nRF9E5还具有载波检测功能。在ShockBurstTM接收方式(这是Nordic公司为了节省射频收发的能耗而采取的一种收发方式)下,当出现nRF9E5工作信道内的射频载波时,载波检测引脚(CD)被置高。这个特性很好地避免了同一工作频率下不同发射器的数据包之间的碰撞。
3 LCD模块12864-12[3]
12864-12汉字图形点阵液晶显示模块可显示汉字、图形、ASCII码和自定义字形,内置8 192个16×16的中文汉字、128个8×16字符以及64×256点阵显示RAM。12864-12液晶显示屏为128×64点阵,可显示4行(每行8个)汉字,外形尺寸为93mm×70mm×12.5mm,视域尺寸为72mm×40mm。模块内有多种软件功能:光标显示、画面移位、自定义字符、反白、清除、关闭显示和睡眠模式等,可方便地对模块进行控制。为了便于和多种微处理器的接口设计,12864-12提供了2线串行、3线串行、4位并行及8位并行多种接口方式。12864-12内置升压电路,无需负压,配置了LED背光,只需1个20kΩ的电阻把V0和地相接,就可在3V低电平下工作。具有为3.3~5.5V宽范围的工作电压,故适用于目前比较常见的3.3V或5V工作电压的系统中。控制器为台湾矽创电子公司的ST7920,具有串/并接口方式,其内部含有中文字库。
考虑到nRF9E5的I/O接口比较少,本无线测温系统的基站中,12864-12采用串行接口方式。使用12864-12的3线串行接口方式可大大简化液晶显示模块与单片机之间的接口设计;同时,也使液晶显示模块显示汉字变得极为容易,从而改变过去单片机系统人机界面不够友好的弊端。当模块的PSB脚接低电平时,模块即进入串行接口模式。串行模式使用串行数据线SID与串行时钟线SCLK来传送数据,即构成2线串行模式。12864-12还允许同时接入多个液晶显示模块以完成多路信息显示功能。此时,要利用片选端“CS”构成3线串行接口方式,即当“CS”接高电位时,模块可正常接收并显示数据,否则模块显示将被禁止。通常情况下,当系统仅使用1个液晶显示模块时,“CS”可连接固定的高电平。nRF9E5与12864-12的接口电路如图3所示。
4 无线测温系统的组成及硬件
无线测温系统分有基站和端机二大模块。
(1)端机布置在数据采集点,一般由温度传感器、微控制器、射频收发器和电池组成,根据需要可以有多个端机,它们与基站之间通过射频进行无线通信。
本系统在设计中,为了减小体积,射频片上系统采用了Nordic公司的nRF9E5,其片内集成了51系列微控制器和射频收发器。端机由智能数字温度传感器DS18S20、射频片上系统nRF9E5和电池组成,其硬件连接如图4所示。其中,25AA320为E2PROM程序存储器。端机上电后,nRF9E5把25AA320内的程序自动加载到其片内的4KB RAM中,这个过程由nRF9E5片内固化在512字节ROM中的程序来自动执行。DS18S20在空闲时,其DQ口由一个3kΩ的上拉电阻置为高电平。完成数据采集以后,以无线射频信号的形式发射给基站。
(2)每套系统一般只有1个基站,包括微控制器、射频收发器和显示器等(基站的具体硬件连接见图3)。基站在接收到数据后,把信息显示在液晶显示屏上,根据需要,也可以通过RS232接口与PC机进行通信。LM1117为电源管理模块(有多种封装形式,设计时可以灵活选择),为系统提供+3.3V工作电源。12864-12共有20个引脚,在本系统中采用串行接口的连接方式,只需要使用其中的10个引脚(接法见图3)。射频发射天线为印制天线,布置在PCB板上。实际应用中,也可根据需要使用单鞭天线。
5 无线测温系统软件设计
本系统程序比较复杂,限于篇幅,只列举其中几个函数供读者设计时参考。本程序用C语言编写,用Keil C51进行编译。
5.1 串行传送1字节的数据到LCD的函数
void SendBYTE(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
LCD_CLK=0;//串行时钟
if((dat&0x80)!=0)//连续发送8字节
{
LCD_SID=1;//数据信号,高为1
}
else
{
LCD_SID=0;//数据信号,低为1
}
LCD_CLK=1;
dat=dat<<1;//右移1位
}
}
5.2 图形方式显示1个16×16点的函数
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位数据
SendDAT(*_p2++);//低8位数据
y_pos16++;
}
}
5.3 射频发送函数
void Transmitter(void)
{
uchar b;
CS=1;//使2401(RADIO)工作于发送模式
Delay100μs(0);
for(b=0;b
SpiReadWrite(tconf.buf[b]);//发送nRF9E5的配置字
}
CS=0;
b=Temperature;//温度数据
PutChar(b);//送到RS232串行口
TransmitPacket(b);//射频发送
}
6 结束语
本文系统地介绍了无线测温系统的组成和其中所用到的数字温度传感器、LCD等。该系统适用于多种场合。实际应用中,可对其进行扩充(如增加键盘模块等)。实践证明,该系统具有很高的推广应用价值。
参考文献
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在线.LCD在线液晶显示器技术手册12864-12.2003