需要精密地丈量相对湿度与温度,尤其是实验室中很多实验数据需要与温湿度一一对应。然而,监测环境一般是几十到上百平方米的范围,仅监测一点的温湿度是不够的需要分布多个对环境条件要求高的场所。DHT22数字但是DHT22单总线不支持寻址,也就是说单总线仅能挂接单个DHT22传感器。若每个传感器都单独布线,势必造成浪费。因此,合理的传感器接口方式是设计的关键。本文采用4个DHT22单总线智能温湿度传感器实现分布式温湿度监测系统的设计。
也就是说,每个传感器节点的内部结构需要具备两个功能:①每个传感器节点具有两个直通连接的RJ45接口,以实现咬尾式连接;②每个传感器节点能够设定通信线路,因为每个传感器独享1根线路。
传感器节点内部结构框图如图2所示。4个传感器DHT22DA TA 引脚通过4位拨码开关分别连接至4根数据线即可。
对DHT22进行一次40bit数据的通信,时间为5ms左右,采用MSB方式,但采样周期间隔不得低于2s.40bit数据的数据格式为:40bit数据=16bit湿度数据+16bit温度数据+8bit校验和(前4个字节的和)
16bit湿度数据为无符号数,16bit温度数据为有符号数原码表示,两数据都为放大10倍后的真实物理量值。例如:00000010+10001100+00000001+01011111=11101110对应湿度=65.2%RH温度=35.1℃。
用户主机(DHT22单总线握手信号时序如图3所示。空闲时总线为高电平,通信开始时主机(MCU拉低总线110m后释放总线,延时2040μs后主机开始检测从机DHT22响应信号(一个80μs左右的低电平)随后从机拉高总线80μs左右准备进行数据传送。每bit数据都是由一个低电平时隙和一个高电平组成。
低电平时隙固定为一个50μs左右的低电平,代表数据位的起始;其后的高电平的长度决定数据位所代表的数值,较长的70μs高电平代表1较短(2628μs高电平代表0.40bit数据序列传送完毕后,从机将再次拉低总线50μs左右,随后释放总线,由上拉电阻拉高。
A VR单片机读取单个DHT22子程序如下:
单片机每隔2s就分别读取4个传感器的温度与湿度信息,并分别作平均得到温度值和湿度值。为进一步实现准确丈量,建立两个8成员的数组,系统引入8阶FIR滤波器。根据采样频率fs=1/2s=0.5Hz截止频率fc=0.1Hz利用Matlab环境的firl函数获取滤波器系数:b=firl8-12fc/f
可得:b=-0.00720.00000.13510.37210.37210.13510.0000-0.0072软件流程如图4所示。
|