(4.2)
其中t1、t2为温度补偿系数,当传感器分辨率为12bit时,t1=0.01 t2=0.00008;当传感器分辨率为8bit时,t1=0.01 t2=0.00128 。
(3) 温度变换
由于设计的SHT71温度传感器的线性非常好,可以用公式(4.3)将温度数字输出转换成实际温度值。
(4.3)
其中d1、d2为温度转换系数,SOT为传感器相对温度测量值。电源电压为3.3V 时,当传感器分辨率为14 bit时,d1=-39.60 d2= 0.01;当传感器分别率为12bit时,d1=-39.60 d2= 0.04 。
(4)露点值的计算
由于温度与湿度经由同一块芯片测量,SHT71可以实现高品质的露点测量。空气的露点值可以根据相对温由和湿度值由公式(4.4)与(4.5)进行计算。
4.2 数据传输模块
数据传输涉及总站与子站之间的无线射频通信(基于SPI总线)与总站与监控中心的RS-485通信,其中无线通信为基于Zigbee协议的组网通信[20-21], RS-485通信基于Modbus通讯协议。下面两小节运用关键代码与系统流程图的方式分析数据传输模块。
4.2.1 总站与子站的无线通信
(1) CC2520芯片的SPI操作
控制器与CC2520芯片之间是通过SPI接口实现数据通讯,因控制器内置了SPI接口,读写数据只需向SPI的输入/输出寄存器写入数据即可。SPI接口上每个操作都包含一个读写位,一个突发访问位与一个6位地址头字节。地址和数据转换时,CSn引脚低电平有效,必须保持低电平。如果在转换过程中CSn变为高电平,则转换取消。当CSn变低,在开始转换头字节之前,单片机必须一直等待,直到SO引脚变低。SO变低表明电压调制器己达到稳定,晶体正在工作中。除非器件处在SLEEP或XOFF状态,SO引脚在CSn变低之后总会立即变低。
CC2520配置寄存器:
void CC2520_WriteReg(u8 addr, u8 value)
{
GPIO_ResetBits(GPIOD, GPIO_Pin_3); // CSn 口拉低
Delay(0x5); //延迟
SPI_Write(addr|REG_WRITE_CC2520); //发出待写寄存器地址及命令
SPI_Write(value); //发出待写寄存器数据
Delay(0x5); //延迟
GPIO_SetBits(GPIOD, GPIO_Pin_3); // CSn 口拉高
Delay(0x5); //延迟
}//end CC2520_WriteReg
通过SPI 读FIFO操作代码如下:
void CC2520_ReadRXFIFO(void)
{
u8 i;
GPIO_ResetBits(GPIOD, GPIO_Pin_3); // CSn 口拉低
Delay(0x5);
SPI_Write(RXFIFO_READ);
RCC2520_PSDU [0] = SPI_Read();
for(i=1;i<=(RCC2520_PSDU [0]-2);i++){
RCC2520_PSDU[i] = SPI_Read();
}
Delay(0x5);
GPIO_SetBits(GPIOD, GPIO_Pin_3); // CSn 口拉高
Delay(0x5);
CC2520_Command(CMD_SFLUSHRX);
}
(2)无线接入
MAC层(介质访问控制层)负责设备间无线数据连接的建立、文护和结束,确认模式的数据传送和接收,可选时隙,实现低延迟传输,支持各种网络拓扑结构,完成对无线物理信道的接入过程管理,包括:网络协调器产生网络信标,网络中设备与网络信标同步、完成PAN的入网和脱离网络过程、网络安全控制、在两个对等的MAC实体间提供可靠地链路连接、产生和识别节点网络地址以及校验帧校验系列。MAC规范定义了三种数据传输模型:数据从设备到网络协调器、从网络协调器到设备、点对点等传输模型[22-23]。MAC层共有4种类型的帧,数据帧、标志帧、命令帧及确认帧,其帧结构如图4.2所示。
图4.2 Zigbee帧格式
其中帧控制为两个字节,规定了帧类型、安全使能、帧挂起、帧应答、网络判定(网内传输还是网外传输),具体定义如表4.1所示。
表4.1帧控制定义
Bits:0-2 3 4 5 6 7-9 10-11 12-13 14-15 STM32F103X家用环境温湿度监测装置的设计(8):http://www.751com.cn/zidonghua/lunwen_6025.html