当前位置:首页 期刊杂志

基于zigbee的压力传感器数据采集系统设计

时间:2024-09-03

惠州市技师学院电子工程系 康婷霞

本文设计了一种基于zigbee的压力传感器数据采集系统,该系统采用CC2530微处理器,结合zigbee协议栈Z-Stack,实现压力数据通过zigbee网络自动采集。压力传感器的输出信号通过16位的高精度∑-Δ型AD7705进行模数转换,协调器节点收到的数据能够通过AT24C04进行存储,达到掉电保存。整个系统稳定可靠,更换不同的传感器,可轻松实现不同应用需求。

1 引言

压力传感器的数据采集是自动监测、自动控制系统中非常重要的一部分,比如车载称重系统,医疗器械中的称重床,数字称重计等都是通过压力传感器进行前端压力信号的转换,输出的模拟信号再通过AD转换器实现模/数转换,所有的这些系统的压力信号采集方式都是大同小异。同时,随着无线通信技术的发展,特别是数字电路和射频工艺的进步,使得压力传感器的无线数据采集变的更加经济、可靠,相较于传统的有线数据采集,它更有优势。在一些高温、高压、严寒等恶劣环境,布线困难场所,无线方式能够方便准确的进行数据的采集和传输。本文采用TI公司的CC2530芯片,设计了一种基于zigbee的压力传感器数据采集系统,实现压力数据通过zigbee网络自动采集,不同场合下通过更换不同量程的传感器,可以方便的实现不同的系统应用,具有很强的实用性。

2 系统整体设计

本设计采用树状的Zigbee网络结构,完整的系统包括三个部分,如图1所示,从左至右分别为终端采集部分、路由部分、协调器部分,其中终端采集部分中的zigbee设备为RFD(Reduced Function Device,简化功能设备),路由部分和协调器部分的zigbee设备都为FFD(Full Function Device,全功能设备)。终端采集部分通过由压力传感器和高精度AD组成的压力传感器模块对压力信号进行模数转换,然后通过终端节点无线发送,路由节点对终端信息进行路由转发,协调器节点收到路由转发的信息后进行相应的显示和存储。本系统中,由于传输距离较近,未使用图1虚线框中的路由部分进行路由转发,传感器节点的数据直接传送到协调器节点。

图1 系统框图

3 系统硬件实现

本设计的整个系统包括4个传感器节点和一个协调器节点。每个传感器节点由一个压力传感器,一个高精度的16位∑-Δ型AD7705,一个CC2530基本模块组成;协调器节点由一个CC2530基本模块外加存储模块AT24C04和Nokia5110液晶显示屏组成,同时协调器节点的CC2530基本模块带有RS232串口,可以和PC机进行通信并且显示。同时,传感器节点和协调器节点的P1.3和P1.4都分别设置有两个独立按键S1,S2,用于Zigbee网络中的通信节点配置。

3.1 传感器

本系统的传感器采用悬臂梁式称重传感器,量程为30kg,精度为±0.02%F.S,灵敏度为2.0±0.1mV/V,输入阻抗410±15Ω,输出阻抗350±5Ω,绝缘电阻≥5000MΩ,本设计中采用的激励源为5V,传感器的电压输出为10mv左右。称重传感器一共有四根线,输入线VCC和GND,输出线V+和V-,传感器的输入输出线均采用金属屏蔽线,防止干扰。

3.2 A/D转换器AD7705

系统的测量分辨率及精度主要取决于A/D转换单元,这里选用高精度、宽动态范围、2通道16位∑-Δ型AD7705,该器件具有完整的模拟前端,内部具有可选择的增益,能够直接测量传感器输入的微弱信号,转换精度达到16位无误码,采用五线串行口与MCU连接。本设计中将CS直接接地,故连接CC2530的信号线就四根,具体连接方式如图2所示。通过软件设置AD7705第一通道为压力测量通道,转换频率为50Hz,内部增益GAIN为64,单极性输出,则经过AD7705放大后的传感器信号AIN为640mv左右。基准电压采用TI公司的REF3012,该芯片输出的基准电压VREF为1.25v,精度可达±2.5mV,在 0°C到+70°C时,最大的温漂为50ppm/°C。根据AD的数据输出编码CODE=(216* AIN * GAIN )VREF,得最大CODE的十六进制编码为0x8312,约为满量程0xFFFF的一半。为了滤除ADC输入端来自称重传感器的噪声,在输入端加入一个简单的一阶RC滤波器。同时为了防止其他电磁波等干扰,在AD芯片上加一金属屏蔽罩,经过实验发现,效果有所改善。

图2 CC2530与AD7705的硬件连线图

3.3 微处理器CC2530

CC2530芯片具有一个增强型的8051内核,32/64/128kB可编程闪存和8kB的RAM,包含模/数转换器(ADC)、4个定时器、看门狗定时器、32.768kHz晶振的休眠模式定时器、上电复位电路、掉电检测电路、21个可编程的数字I/O口。低功耗,在休眠模式下,仅有不到1uA的电流损耗,此时通过外部中断或者睡眠定时器中断进行唤醒系统。CC2530芯片的休眠模式转换到主动模式的时间很短,特别适合那些需要电池寿命非常长的应用。本设计中协调器节点中的CC2530设置为休眠模式,睡眠定时器中断唤醒,从而大大降低系统的功耗(如图2)。

3.4 EEPROM存储单元

AT24C04是4KB的电可擦除芯片,该芯片采用IIC协议与CC2530进行通信,AT24C04的SDA和SCL脚分别与CC2530的P1.0和P1.1相连。在压力传感器的数据采集系统中需要记录一些重要的数据,比如zigbee终端协调器节点的编号,压力传感器无重物时的初始输出等等,以达到掉电后保存。

3.5 终端显示

终端显示主要有两种方式,一种是通过RS232串口与计算机相连,采用串口调试助手显示,主要是注意CC2530的串口发的波特率和计算机接收波特率的一致,最终显示输出的界面如图4和图5所示。此外,在不使用串口情况下,采用Nokia5110进行显示,该LCD具有如下特点:1)84*64的点阵LCD,可以显示4行汉字。2)采用串行接口与处理器进行通信,包括电源和地在内的信号线仅有九条。3)3.3V的低电压供电,正常显示的工作电流在200uA以下。4)传输速率高达4Mbps。本设计中通过IO模拟SPI接口,实现数据的通信显示。

4 系统软件实现

TI公司推出的Zigbee协议栈是基于优先级的轮转查询式操作系统,它是由称为层的模块组成,每一层为其上一层提供特定的服务。Zigbee协议栈为每个层均分配的不同的任务编号,每一个任务中又包含若干个事件。对于开发者来说,一般只需要关注应用层函数的设计即可。当然,如果硬件电路不同,则其硬件抽象层函数也是不同的。本采集系统的软件在CC2530的协议栈基础上进行设计。

4.1 传感节点的数据采集

首先需要对AD7705进行初始化,对相关的寄存器进行配置,本设计设置双极性输入,增益为64,差分通道1,片外晶振。AD7705的SCLK、DIN、DOUT、DRDY分别与CC2530的P0.0、P0.1、P0.2、P0.3相连,其中CC2530的P0.0和P0.1引脚配置为输出,P0.2和P0.3引脚配置为输入。CS接地,使得AD7705处于选通的状态。AD7705的DRDY输出端上的逻辑低电平表示从AD7705的数据寄存器获取新的输出字,即AD7705完成一次A/D转换。完成对一个完全的输出字的读操作后,DRDY引脚立即回到高电平。RFD定时对传感器采集的数据,通过射频端发送。终端节点的功耗主要是无线的发送,通过定时中断发送,能提高RFD节点的使用时间。传感器的数据采集流程图如图3所示。其中in为AD有效转换的次数。

整个上述的过程封装到myApp_Readsensor()函数,调用此函数,即可得到经过软件处理过的数据。处理方法主要用到了数值滤波和压力补偿。目前关于数字滤波的方法很多,本系统采用的是复合滤波方法,首先将30次采样值按大小排列,然后去掉前五个值和后五个值,然后对剩余的20个数据求算术平均值。复合滤波既可以去掉脉冲干扰,又可以对采样值进行平滑加工,它兼有中值滤波和算术平均值的优点。关于温度引起的压力传感器热零点漂移现象,采用非线性函数多项式拟合的规范方法。在程序中通过拟合出的规范化多项式,对压力值进行温度漂移的补偿计算。最后函数返回的稳定数据,通过zb_SendDataRequest()函数发送。

图3 传感器的数据采集流程图

4.2 协调器节点和传感节点之间的通信

首先是协调器启动和建立网络,协调器节点启动后,首先完成系统的初始化,然后进入操作系统。协调器节点首次启动时,flash存储器中的Startoption默认值为0x00,不能建立网络,此时按下按键S1,设置其为协调器,并且重启协调器,最后ZDO层通过系统定时器函数osal_start_timerEx(ZDAppTaskID,ZDO_NETWORK_INIT,delay )产生网络初始化事件,该事件通过启动ZDO_StartDevice ()函数,调用NLME_NetworkFormationRequest()来形成网络,建立网络后,给予ZDO层反馈。ZDO层设置网络启动事件,更新网络状态,最后将自己的设备状态改为启动状态。

传感器节点首次启动时,flash存储器中的Startoption默认值为0x00,不能加入网络,此时按下按键S2,设置其为传感节点,并且重启传感节点,同协调器一样,在ZDO层形成网络事件,并且启动ZDO_StartDevice ()函数,调用NLME_NetworkDiscoveryRequest()函数寻找网络,当发现有网络存在后,网络层给予ZDO层发现网络反馈信息。然后网络层发起加入网络请求,如加入网络成功,网络层将给予ZDO层加入网络反馈。ZDO层更新网络状态,最后改变自己的设备状态位加入状态,然后启用定时器,不断发触发绑定事件。

按下协调器节点的允许绑定按键S2,执行绑定函数zb_Allow-Bind(),协调器允许绑定,这样传感节发送的绑定请求才能得到协调器的响应。传感器的绑定事件通过zb_BindDevice()形成绑定请求,协调器节点在自身寻找相匹配的描述符,找到后则给传感节点发送绑定响应信息,传感节点收到响应后,建立绑定表。当传感节点与协调器节点建立绑定连接后,将自动进入数据采集并且发送至协调器节点,协调器节点通过串口将数据发送到终端。

4.3 协调器节点的数据处理

传感节点将多次AD采集的数据经过一系列处理后,向协调器发送一个十进制数字转换量。由于传感器的零点输出和托盘的影响,空载时,传感器的输出不为零。本设计将协调器节点外扩一片掉电数据不丢失的芯片AT24C04,空载时,收到的传感节点数据通过按键方式,写入AT24C04,加载物体时,协调器节点收到的数据减去空载的数据,得到实际变化量,通过相应的数值转换和标定显示物体的实际重量。

图4 加载前的数据显示

图5 加载后的数据显示

5 实验结果与分析

在PC机的串口调试界面中,当空载时,4个节点收到的信息如图4所示,协调器节点给每个传感器节点都分配一个16位的网络地址。将每个传感器节点的托盘上放1kg的砝码,收到一组稳定的数据如图5所示,加载前后数据的对比如表1所示。

加载物体前,由于零点输出和托盘本身的重量,所以传感器的输出不为零,相应的转换值也不为零,为一稳定的量。每个传感节点的托盘加载1kg的砝码,采集到一组稳定的数据,加载前后的结果表明,该数据采集系统能够准确测量压力传感器的数据,且最小分辨率为1g左右。

表1 加载前后结果对比

6 结束语

将zigbee与压力传感器结合,构成无线压力数据采集系统,其适应性强,方便地实现了多点测量,有效避免了有线采集时布线复杂的难题。在温度变化不大,电源稳定的条件下,该系统能够准确的实现压力传感器数据的采集。实际的应用中,可以更换不同量程的传感器,以满足不同的应用需求。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!