基于NRF905的无线多点温度测量系统
2011-07-12陈敏孟立凡王华斌
陈敏,孟立凡,王华斌
(中北大学电子测试技术国家重点实验室 信息与通信工程学院 山西 太原 030051)
0 引言
目前许多场合都要对温度进行监测和控制。比如现代电力系统向着高电压大机组、大容量的方向发展,对电力系统供电可靠性的要求越来越高,由于绝大多数的电力设备长期在高电压、大电流和满负荷的条件下运行,导致热量集结加剧,如果不对温度的变化采取有效的监测措施,将会危及电力设备的安全运行[1-4]。
基于以上背景,本文提出了一种基于AT89C52单片机的数据采集及无线收发系统的设计方法。无线收发部分,采用挪威NordicVLSI公司推出的NRF905单片射频收发器实现数据的无线传输,使得数据采集更加具有实时性。
1 测试系统硬件设计
1.1 系统硬件结构
该系统硬件结构由少量的外部设备、无线数据传输模块,以及供电电路组成。无线数据传输模块基于低功耗单片射频收发芯片NRF905,采用ATMEL公司的8位通用微处理器AT89C52为主处理芯片,完成数据的处理和控制。系统结构如图1 所示。
图1 系统总体框图
1.2 温度数据采集
DS18B20内部结构主要由4部分组成:64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,高速暂存器。64位光刻ROM是出厂前被光刻好的,它可以看作是该DS18B20的地址序列号。不同的器件地址序列号不同。在多点测量的时候,需要读取它相对应的序列号,才能正确的读取相应的温度[5]。
1.3 电源电路设计
由于NRF905需要3.3V的电压供电,而市场上直接提供3V左右电压的适配器价格比5V电压的适配器贵,同时5V适配器种类较多,所以考虑电压转换。由于适配器输出的电压含有较多的杂质成分,所以要有相应的滤波电路。本课题我们采用ASM1117-3.3稳压模块和一些简单元器件组成的电路进行供电。
1.4 无线收发部分的设计
无线收发部分采用挪威NordicVLSI公司推出的nRF905单片射频收发器,它可以自动产生前导码和CRC校验码,可以很容易通过SPI接口进行编程配置。
NRF905的工作模式由TRX_CE、TX_EN、PWR_UP三个引脚的设置来决定,见表1。工作模式决定了模块的工作状态,在发送和接收的时候需要设定好[6-7]。
表1 nRF905的工作模式
1.5 显示电路设计
单片机的单低电平已经可以控制数码管的亮灭。但在动态显示时,数码管的亮度比较暗。并且即使扫描频率很高,仍然有微小的闪动现象。这是因为单片机一般为+5V的TTL电平,点亮数码管一般需要较大的电流。所以,我们需要将电源信号放大,即驱动。本设计采用三极管作为放大器件,它即可以起到放大电流的作用,又可以起到开关的作用,即某一时刻打开或关闭数码管,形成动态显示。接通电路实验后发现,数码管亮度适合,因此不需要接限流电阻。
2 测试系统软件设计
2.1 DS18B20编程
2.1.1 DS18B20初始化
DS18B20的初始化始于单片机发送一个复位脉冲,即单片机将总线拉低,持续480~960μs后将总线拉高,释放总线进入接收状态,之后DS18B20开始控制总线,在检测到总线的上升沿之后,等待15~60μs,DS18B20发送存在脉冲,将总线拉低,持续60~240μs,在区间(60~240μs)区间内释放总线,然后由单片机控制总线进行延时操作,待DS18B20检测到总线上升沿的480μs以后,初始化结束。
2.1.2 DS18B20的写操作
单片机将总线拉低1μs后,就产生写间隙,总线开始拉低的15μs内单片机将所要写的位送到总线上,DS18B20在之后的15~45μs内对总线采样,若为低电平,写入的位是“0”;若为高电平,写入的位是“1”,写“0”操作过程完成的时间为60~120μs,写“1”操作过程完成的时间为1μs-正无穷。单片机在将位送总线之后DS18B20控制总线时进行延时操作。写操作程序流程图见图2。
2.1.3 DS18B20的读操作
单片机将总线从高电平拉至低电平,只需保持1μs,之后的14μs内将总线拉高,就产生读间隙,DS18B20将要读的位送到总线,单片机必须在产生间隙后,至读操作开始的15μs内完成读位操作,然后进行延时,待整个读操作时间>60μs且小于120μs时释放总线。读操作程序流程图见图3。
图2 DS18B20写操作程序流程图
图3 DS18B20读操作程序流程图
2.1.4 多点DS18B20读取
1)由于多个DS18B20连接在同一个通信线上,所以它们的温度值不能同时的读取,必须先读取DS18B20的序列号。对此,首先要对单个DS18B20给与读序列号命令,读取的序列号通过串口调试助手显示,64位的序列号读取之后,把这64位数据存入单片机的寄存器内,作为依次扫描的序列号。
2)对于多个DS18B20,为了更加合理的分配时间,首先对所有的传感器初始化并开始温度转换,然后依次扫描各个点的序列号,读取温度值,把温度值依次的存在要发射的寄存器上等待发送。发送完数据之后,进行新一轮的初始化和温度转换等操作。
2.2 NRF905编程
2.2.1 无线发射的程序设计
发送程序流程图如图4所示。
2.2.2 无线接收的程序设计
接收程序流程图如图5 所示。
图4 发送程序流程图
图5 接收程序流程图
2.2.3 数据的发送和接收
1)当多点的温度被读取完之后,温度数据被存储在相应的寄存器内,然后,单片机通过SPI通信,把数据发送给NRF905的发射缓冲区;完成发射任务后,单片机进行下一轮的温度采集。
2)另一边的NRF905检测到所设定的发射频率所发出的信息,进行地址校正后,开始接收数据。数据按顺序存放在单片机的寄存器内,用于数码管显示。由于数码管显示是用动态的扫描显示,在时间的处理上,单片机的内部程序的延时要恰当,否则会出现数码管跳动显示或者只显示其中一个的情况。
3 实验论证
本实验用到5个DS18B20,为了验证数据的正确性,首先将各个传感器按顺序进行编号。把5个传感器放在一个恒温箱内(本实验恒温箱为20℃),另一边的接收数据显示的温度都是同样的温度。这样做的目的是保证整个系统的采集是正确的。用手捏住第一个传感器,进过几秒钟之后,检测接收数据,第一个的数据为32.5℃,明显高于其他4个。接着放开手,用手捏住第二个传感器,并以此类推,可以分别得到用手捏的温度为33.0℃, 32.5℃,32℃, 32.5℃。由于手捏的时间和手温不一定一致,会有一个很小的误差,对于本设计来说,可以忽略。实验证明,本系统是确实可行的。
[1]赵丽娟,邵欣,房世平.基于单片机的温度监控系统的设计与实现[J].机械制造,2006(01).
[2]徐姗姗,杨福宝.基CC1000的无线通信系统设计[J].中国水运,2007,12(5):1-4.
[3]辛洁, 孙运强, 张伦.基于ATmega16和nRF2401的无线射频收发系统设计[J].电子测试, 2009(4):2-3.
[4]涂兵,肖洪祥.无线测温在电子产品中的应用研究[J].电子测试,2008(7).
[5]DS18B20数据手册 http://www.aterlin.com/upload/files/2008/10/20081017153504555.pdf.
[6]荚庆,王代华,张志杰.基于NRF905的无线数据传输系统[J].国外电子元器件,2008(01).
[7]NRF905数据手册http://wt.down.elecfans.com/dm/elec/nRF905%20CN.PDF.
[8]杨光松.基于NRF905的无线温度数据采集系统[J].微计算机信息,2008 (22).