雷子浩,张丽艳,费继友,李兆鹏
(1大连交通大学 电气信息学院,辽宁 大连 116028;2.大连交通大学 动车运输与维护工程学院,辽宁大连116023)*
温度是直接影响生产、化学反应、发酵等很多物理和化学过程的一个非常重要的物理量.温度控制失误就可能引起生产安全、产品质量等一系列问题.因此对温度进行方便,有效的测量就显得十分必要.传统的温度测量系统一般采用有线的方式进行数据传输时,这种方式容易受到电磁信号的干扰,从而造成信号的大幅衰减.同时在一些比较危险或者封闭的场合,有线传输会受到很多因素的限制.因此,本文给出了一种基于nRF905射频模块的无线温度测量系统,该系统采用atmega16单片机主控芯片,采用的DS18B20温度传感器,并采用VB语言结合 Access数据库技术实现对接收到的温度数据做相应的数据处理.
系统结构整体上可以分三部分:温度数据采集,数据传输和数据处理.温度采集部分是通过单片机对温度传感器进行控制而获得.数据传输包括数据发送和数据接收.在数据发送端,单片机将采集到的温度数据以无线传输模块特定的传输协议将数据发送;在接收端,无线通信模块依照规定的传输协议进行数据接收,然后单片机将接收到的数据通过串口传给PC端.数据处理主要是PC端将接收到的数据进行实时曲线图显示,以及和设定的温度上下限比较以及温度的存储,查找,修改,删除等等.系统结构框图如图1所示.
图1 系统的结构框图
本文给出了电源电路、温度传感器工作电路和nRF905无线模块电路的设计说明.
由于 nRF905 工作电压为1.9 ~3.6 V,所以本系统直接用ASM1117电压调节器芯片将5 V的USB电源转换成nRF905的正常工作时所需的3.3 V电源.然后用这个3.3 V电源模块为nRF905供电.3.3V电源电路图如图2所示.
图2 3.3 V电源电路图
DS18B20是DALLAS公司生产的一款单总线数字温度传感器[1].其温度测量范围为 -55~125℃,测量精度为0.1℃.每个芯片内部有64位的身份序列号.DS18B20温度传感器具有体积小,成本低,测温精度高,连接方便,易于组建温度检测网络等优点.DS18B20可采用寄生电源和外接电源两种供电方式[1]:寄生电源供电,在进行多点测温时,通常需要多占用一根I/O口线对其进行强上拉切换,这样才能解决I/O口电流供应不足而产生的温度测量的误差大的问题;外部电源供电方式下,DS18B20工作电源由VDD引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题,同时可以保证转换精度,而且在总线上理论可以挂接任意多个DS18B20传感器,组成多点测温系统.本系统中DS18B20采用外部电源供电方式.DS18B20工作电路[2]如3图所示.
图3 DS18B20工作电路图
nRF905是挪威Nordic公司推出的单片射频发射器芯片,工作电压为1.9~3.6V,可以工作于433/868/915 MHz三个ISM频道.由于内部集成了频率调制器,带解调器的接收器,功率放大器,晶体震荡器以及调节器.因此它可以自动完成处理字头,CRC循环冗余校验以及曼彻斯特编码/解码.nRF905带有标准的SPI总线接口.nRF905与atmega16单片机可以通过SPI方式和通过I/O模拟SPI方式进行通信[3-5].当以SPI方式进行通信时,通常是将单片机作为主机,nRF905作为从机.因此往nRF905内部寄存器写数据同时也是从它读数据.而通过I/O模拟SPI方式进行通信必须严格遵守SPI时序,I/O是在时钟线为高电平的触发下对nRF905内部寄存器进行读写操作.本系统采用的是以SPI方式进行通信.nRF905和atmega16单片机的连接如下图4所示.
图4 nRF905和atmega16的连接电路图
本系统的软件程序设计主要包括温度数据采集[1,6-7]、nRF905 无线数据发送和接收和上位机软件设计.
图5 温度采集流程图
对于多个温度的测量,可以用多个I/O口挂多个温度传感器,也可以用一个I/O口上挂多个温度传感器.前者在温度测量的时候是需要省去ROM匹配,测温程序相对简单.后者则明显节省I/O口资源.本系统采用的第二种方法,此方法温度测量的关键是:对DS18B20的操作总是严格遵循DS18B20复位,ROM指令,ROM指令的先后顺序.DS18B20温度测量的流程图如图5所示.
nRF905无线数据发送和接收流程如图6所示.由图6所知,nRF905发送数据时首先进行nRF905初始化,设置如工作频率,输出功率,接收地址宽度,数据宽度,晶体振荡器频率,CRC校验等,接着将其设置成发送模式即TX_EN置位,然后将发送地址和发送数据写入相应的发送地址寄存器和发送数据寄存器,最后启动发送即TRX_CE置位.TRX_CE置位之后,nRF905内部射频寄存器自动开启,数据打包(加字头和CRC校验码),发送数据包三个过程按顺序自动完成.当数据包发送完成之后,DR数据引脚位会置高,可以用DR置高来触发LED灯闪烁作为发送完成的标志.同样,接收数据时,先初始化,然后将nRF905设置成接收模式,启动接收.650 μs之后,nRF905开始检测接收数据,当接收到了同频载波时,CD引脚置高;当接收到的地址匹配时,AM引脚置高;当一个正确的数据包接收完后,nRF905会自动对字头,CRC校验位,地址进行处理,然后将DR引脚置高.接着将TRX_CE置低进入空闲模式以准备读取接收到的数据.然后使能SPI,以SPI通信协议指定的速率从接收数据寄存器读取接收到的数据.当所有的数据接收完成后,nRF905将AM引脚和DR引脚置低.
图6 nRF905无线数据发送和接收流程图
本系统采用VB语言[8-9]和Access数据库实现上位机界面的设计.VB语言具有简单、易学、可视化界面设计风格和面向对象的程序设计等优点.本系统使用MSComm控件来实现单片机与上位机的串口通信.Access是微软公司推出的基于Windows的桌面关系数据库管理系统,它具有面向对象、界面友好、易学易用、支持广泛易于扩展、维护简单等优点.使用VB结合数据库开发上位机的整体思路是;首先用VB提供的可视化数据库管理器建立好所需要的数据库和数据表,然后在程序中使用ADODC数据库控件或者使用ADO对象与数据库中的表建立连接,再通过各种数据库感知控件对数据库进行各种操作.本系统设计的上位机界面如图7所示.
图7 上位机界面图
通过对室内温度数据的测量验证本系统运行稳定,结果可靠,不仅可以实时显示当前温度,还会超过温度限定值而自动触发报警功能,也能够显示实时温度曲线,对所测得的温度数据进行存储,删除,查找和修改,可以使用户更直接,准确的掌握环境温度情况.本系统不仅成本相对较低,使用方便,稍作修在就能够使用很多工业检测领域,具有实在的使用价值.
[1]普仕凡,张丽艳,李桂林,等.基于89C52单片机的智能温控仪设计[J].大连交通大学学报,2008,29(3):91-94.
[2]秦莉,岳文秀,杨伟东.基于DS18B20的多点温度测量体系的设计与仿真[J].实验室科学,2012(1):104-107.
[3]薛敏迪.基于nRF905的低功耗温湿度无线测量系统[J].现代电子技术,2010(1):135-137.
[4]门少杰,王宝珠.基于nRF905的温室环境无线测控系统研究[J].测试测量技术,2010(8):1-3.
[5]邓星灵,康赫男.基于nRF905的无线温湿度采集系统的设计[J].仪表技术,2012(8):35-38.
[6]郭天祥.51单片机C语言教程[M].北京:电子工业出版社,2010.
[7]周兴华.手把手教你学AVR单片机C程序设计[M].北京:北京航空航天大学出版社,2009.
[8]王晓岚.基于VB 6.0串口通信的气压测高系统数据采集实现[J].现代电子技术,2010(3):116-118.
[9]温小敏.visual basic数据库系统项目开发实践[M].北京:科学出版社,2005.