- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于CY7C68013A的无线多路温度采集系统设计与开发
0 引言
温度采集系统在现代工业和农业领域有着极其广泛的应用,在某些特殊环境下,采集的温度必须通过无线电波才能传输出来。传统的无线温度采集系统一般只能在终端进行显示,没有上位机数据采集存储功能。本文设计与开发了一套无线传输多路温度采集系统,该系统由温度采集端和温度接收端两部分组成。温度采集端由DS18B20温度传感器,AT89C52单片机和NRF24L01无线发射模块组成,八枚DS18B20温度传感器获取数字温度信号后,传输给主控AT89C52单片机,然后通过NRF24L01无线模块将数据通过2.5GHz的载波发送出来。接收端由CY7C68013A单片机、LCD12864显示模块、NRF24L01无线接收模块和上位机组成。NRF24L01无线接收模块将温度采集端发送过来的数据送至CY7C68013A单片机,然后通过USB2.0总线上传给上位机进行温度数据采集和存储,同时把温度数据送至LCD12864进行实时显示。
1 系统硬件设计
系统总体框架如图1所示。温度采集端的8枚温度传感器采集将温度数据送入主控芯片AT89C52,再通过NRF24L01无线模块将数据发送出来。温度接收端的NRF24L01无线模块将收到的温度数据送至CY7C68013A单片机,然后通过USB2.0总线提交给上位机。
(1)温度采集端。温度采集端由8枚DS18B20温度传感器,AT89C52单片机和NRF24L01无线发射模块组成。8枚DS18B20温度传感器共用一个总线与AT89C52单片机的P2.2口连接。每个DS18B20都具有唯一的64位二进制ROM代码作为识别序列号,利用唯一的序列号可以分别读出各个DS18B20的温度,这在多路采集中应用非常方便,大大减少了I/O口的
占用。利用DS18B20的此特征,本系统也可以非常方便的扩展为16路或32路温度采集。NRF24L01无线模块与单片机的P3.2口~P3.7口连接,负责将8路温度数据通过2.5GHz的载波发送出来。本文所采用的是基于挪威VLSI公司出品的无线数字传输芯片NRF24L01开发的无线收发模块,其丰富资料,硬件上无需附加其他元件,直接通过相应接口与单片I/O端口相连即可由单片机控制使用,非常方便。
(2)CY7C68013A系统模块。温度接收端的主控芯片为CY7C68013A,其为美国CYPRESS公司推出的功能强大的USB2.0接口芯片,内建增强型51单片机,是USB2.0设备常用的主控芯片。CY7C68013A的系统模块电路图如图3所示,其中LT1763CS8—3.3为3.3V稳压芯片,负责将USB接口的5V电压转换为CY7C68013A工作所需的3.3V电压。AT24C08为I2C总线的E2PROM存储芯片,其容量为8K,用来存储CY7C68013A的固件程序。
(3)LCD显示模块与无线接收模块。为了让温度接收端实时直观显示温度数据,本系统设置了LCD12864液晶模块,LCD12864工作在串行显示模式,由CY7C68013A通过PD0~PD2端口控制显示,PA0~PA7端口控制数据的传输。NRF24L01无线接收模块与CY7C68013A的PB0~PB5端口连接,负责接收温度采集端发来的无线温度数据。图4 LCD显示模块与无线接收模块电路图。
2.系统软件设计
系统软件的开发包含了温度采集端AT89C52和温度接收端CY7C68013A的固件程序开发、CY7C68013A的windows驱动程序开发以及USB上位机应用程序的开发。对于温度接收端的CY7C68013A的固件、驱动和上位机的程序的开发,我们可以利用CYPRESS公司提供的开发包,缩短开发周期,提高开发效率。
温度采集端的AT89C52的固件程序主要完成对8枚DS18B20温度采集的控制和对NRF24L01无线模块数据发送的控制。为此我们采用TC51语言编写,开发环境为Keil uVision 4.0。其固件程序的主要思路为:先初始化NRF24L01,然后进入大循环,从DS18B20读取温度数值(采用默认12位精度),将得到的温度数据(2字节16位)进行标记,将此数据表示的温度路数标记在高4位(1~8路的数据分别对应为0000~0111),然后将数据写入发射数组,再将温度发射出去,经过延时温度发送完毕。然后循环切换到下一路DS18B20的ROM地址,继续下一路温度的读取与发射。
CY7C68013A的固件程序主要完成对NRF24L01无线模块的通信控制,将其接收的无线数据传送给LCD12864进行实时显示和上传给USB上位机。对于CYTC68013A的固件程序的开发,我们采用了C51语言编写,开发环境为Keil uVision4.0,并利用了CYPRESS公司提供的固件程序框架,免去了编写一些通用性比较强、模式化的程序,提高了开发效率。在驱动程序开发方面,我们直接利用了CYPRESS公司的SDK中为CY7C68013A提供的通用设备驱动程序CYUSB.SYS,其不仅完全符合Windows Driver Foundation规范,而且还具有兼容USB1.1和USB2.0设备、支持即插即用和支持高带宽数据传输等优点。我们只对CYUSB.SYS通用驱动程序相匹配的CYUSB.INF文件进行相应的简单修改,使其符合我们USB硬件的VID和PID数值。在上位机的应用程序的开发方面,我们同样利用CYPRESS公司SDK中为CY7C68013A提供的功能强大的C++编程接口:CyAPLLib库函数。我们选用了Microsoft Visual C++6.0作为开发工具,通过CyAPLLib函数与CYUSB.SYS设备驱动程序传递温度数据,并将8路温度数据存入了相应的服务器上的SQL2005数据库,从而实现了温度数据的实时采集和储存。
3.总结
本文针对目前无线测温系统的不足,利用CY7C68013A芯片、NRF24L01无线模块、DS18B20数字温度传感器等元件设计与开发了一套无线传输多路温度采集系统。该系统具有以下优点:温度米集端利用8个DS18B20数字温度传感器进行并联,共用一根I/O总线,不仅大幅度节约了端口资源,而且非常容易扩展为16路和32路温度采集;温度接收端采用CY7C68013A芯片为主控CPU,不仅能实现8路温度数据的LCD实时显示,而且可以与上位机直接进行USB通信,通过上位机的应用程序可以非常方便的对温度数据进行图形显示、计算分析和上传数据服务器进行储存。经实物测试,该系统测温精度可达0.1摄氏度,无线传输距离可达50米,能同时采集8路温度数据。