基于NRF905的无线多点温度测量系统

2011-07-12 12:29陈敏孟立凡王华斌
电子测试 2011年4期
关键词:序列号数码管流程图

陈敏,孟立凡,王华斌

(中北大学电子测试技术国家重点实验室 信息与通信工程学院 山西 太原 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).

猜你喜欢
序列号数码管流程图
一种离线电子钱包交易的双向容错控制方法
微课教学设计之“数码管动态显示”
Arduino编程
关于《国家税务总局 工业和信息化部关于加强车辆配置序列号管理有关事项的公告》的解读
MC9S08FL16单片机数码管静态显示分析
单片机控制的四位数码管动态显示编程
recALL
专利申请审批流程图
专利申请审批流程图
宁海县村级权力清单36条