李白华 秦 洁
(安徽农业大学经济技术学院信息与计算机系 安徽 合肥 230000)
气流式水平姿态传感器的敏感元件是空气摆,这样气流式水平姿态传感器可以负担高负载,反应时间短,温度特性良好,体积小等优点,非常适用于量产及精细测控环境中。它可以测定角度,也可以测定角速度。 热敏电阻是水平姿态传感器的密切相关部分,环境温度变化时,热敏电阻的输出电压就不在完全是敏感元件的输出电压,测量精度也会降低。 为了提升姿态传感器的实用性,需要减少环境温度对测算精度的不良影响,这就必须对测量器件进行温度补偿。本文选用Z-Stack 协议,使用温度传感器、姿态传感器和CC2530 组建传感器网络。 此时DS18B20 作为温度传感器,同步测量器件周围温度的数据。系统设计具备以下的优点:(1)环境温度的变化可以及时感知。 (2)耗电少。 在温度补偿完成后,从实验结果可以看到环境温度变化引起的灵敏度变化基本为0。
图1 显示了气流式水平姿态传感器[1]的构造构成。 敏感元件由两个热敏电阻r1, r2组成,r1, r2是对称的两个电阻,阻值相等。 姿态传感器发生倾斜时,空气摆发生倾斜,热敏电阻在空气摆中的位置发生变化,阻值发生变化,转换电桥输出相应的电压变化。当倾斜角度值很小时,可以近似认为θ=sinθ,输出的结果也是近似与输入角度近似成线性的关系;随着倾斜角度加大,输出信号与角度之间的线性关系发生变化,系统测量的误差提高,非线性度数值提高。在这种情况下需要对输出信号引入线性度补偿。 总的补偿公式(1)如下:
Vin 是电桥电路输出的电压值,V0是须要实时补偿的电压值,KT是要补偿的灵敏度系数,LV是一个系数,用于代表需要补偿的线性度大小。
图1 姿态传感器构造
在短距离无线通信技术中,Zigbee 称为一个良好的选择, 低功耗的特性满足传感网络构建的需求,小型自组建网络能量消耗设计很重要。 在ZigBee 的协议栈里界定了四个层,这四个层自下到上分别是:物理层、MAC 层、网络层和应用层。 IEEE802.15.4 标准规范了 Zigbee 协议的底层和底层上面一层的数据封装。Zigbee 联盟标定其它两个层的数据打包标准。
物理层[2]:负责管理工作波段的分配,信道的选择以及为MAC 层提供两种类型的服务,并与上层通信。 MAC 层:管理无线信道的如何使用。网络层:提供保障,保障链路层能准确建立起由下向上的数据传递链路,并为它的上层提出一些接口,保障数据能上传到协议顶端。应用层:主要为管理者服务,向下接受数据,为使用者的管理界面提供常用的组件,接受底层的数据。
ZigBee 网络中为了管理系统的设备,对设备依据各自的功能进行分类。在这里面协调器只能有一个,负责创建和管理网络。终端设备和路由设备可以是多个。 这三种类型的设备各有不同的功能,协调器是网络的管理者,配置网络的各种属性数据,路由设备执行网络发现的任务。 终端设备初始化时为参数配置数值,然后可选择适当的个域网加入。 本文的Zigbee 网络中,姿态传感器和温度传感器相当于终端设备,分别采集姿态信号和温度信号,CC2530 微控制器模块建立个域网网络,管理其他设备。
数字型温度传感器DSl8B20 负责测量环境温度, 其外接元件少,耗电少,契合Zigbee 网络中低功耗的要求,非常适用于充任WSN[3]的终端设备。 硬件连接里面,温度传感器的数据Data 输出端口与CC2530的P0.0 口连接,占用 GPIO 的资源。
CC2530 是 SOC 芯片,是 TI 生产的 CC253X 系列的一款芯片,通讯协议符合 IEEE802.15.4,是建立 Zigbee 通讯时非常优秀的解决方法。 内部是8051 内核,具有无线发送/接收数据的功效,可用于近距离无线通讯[4]。 此外,CC2530 功耗低,睡眠电流小。 CC2530 芯片有许多外部设备,功能各不一样,对开发者非常友好,方便进行新的系统功能拓展。
在姿态传感器构造图中,敏感电阻r1,r2组成的敏感元件在感应敏感信号,如加速度信号发生变化的时候,对应输出一个与加速度信号变化成正比的电压信号V0, 电压信号会进行一个基本的信号处理,在起始阶段开始消除噪声的影响。 处理过后的信号送往CC2530 的P0口,占用P0 口的GPIO 资源。
图2 软件补偿流程
在软件程序的设计中, 使用的CC2530 的关键资源是GPIO 口中断。CC2530 有18 个中断源,软件设计中的中断一共有两次中断产生,采集环境温度的时候产生一次中断, 采集完成X、Y 轴电压信号值的时候产生第二次中断。 软件设计中的两次中断发生的时候,需要设置相应的中断控制器, 并针对中断的信号来源设计相应的中断服务程序。 当相应的中断信号位置位成高电平的时候,进入相应的中断服务函数执行程序。
在CC2530 的使用中,I/O 口资源是最常用的。 单片机初始化的设置中,也需要完成与I/O 相关的寄存器设置。 寄存器的设置包括I/O 口功能选择、方向设置等工作。 为了建立硬件设计与软件程序之间的映射关系,需要在程序中对 P0.1 和 P0.2 口进行重定义。
补偿的算法主要包括温度补偿和线性度补偿,上图2 显示出了整个补偿的流程。 软件工作环境选择Keil。
(1)首先是单片机的初始化设置,这里要设置相应的定时器T0,P0 口初始化,开启总中断等初始化工作。
(2)姿态传感器输出的电压信号是模拟信号,温度传感器输出的信号也是模拟信号, 需要在运行相应的补偿算法前启动ADC 转换。ADC 转换程序设计中主要完成ADC 转换器的初始化, 转换信道的选择等工作。 CC2530 内部自带高精度的8 位ADC 转换器,保证信号转换的准确度。
(3)采集环境温度数据。 实时采集环境温度是程序的中断1,也是补偿程序关键的一步。 温度传感器模块作为终端节点,将采集的温度值按照Zigbee 协议打包后,使用电磁波通信的方式发送温度数据值给系统中的微控制器CC2530,姿态传感器输出与之对应的电压数值,以此建立温度值与电压值的对应关系表。这个对应关系表格是实际环境的温度-电压对应表格,依据测量得到的关键数据点,运用数据拟合法建立各个温度点和电压值的表格, 并保存在中断1 服务子程序中,供后续的中断查询使用。 其中拟合方法的选择对表格的精确度有重要作用,本文选用拉格朗日原理建立温度与电压间的数据曲线。
(4)测量温度为0°C 时姿态传感器的输出电压,定义为零位电压。测量温度为VT,产生中断1,调用中断1 服务子程序,查询已经建立的温度-电压表格,依据表格计算输出温度补偿过后的电压值。然后采集X 轴、Y 轴的输入角度,创立起输入角度与输出电压值的对应关系,产生中断2.中断2 是线性度补偿子程序,主要完成线性度的补偿,提高系统测量的线性度。 在中断1 和中断2 调用完成后,用表达式1 算出经过调理后的电压值。
本文中设计的硬件系统与PC 机之间通信时需要使用相应的JLINK 仿真器,保证程序没有错误后可以在整个系统中运行。
经过温度补偿和线性补偿后,姿态传感器输出电压与输入倾角之间的线性关系得到改善,非线性小于0.9%;因为环境温度引起的测量误差降低,提升了系统的精确度,气流式水平姿态传感器传感器与单片机的结合也提高了传感器的适用范围。Zigbee 协议的引入也为传感器数据的传输提供了新的通道,极大降低系统的功耗。