APP下载

SHT10传感器在温湿度监测系统中的应用

2012-10-22陆荣鑑

传感器与微系统 2012年9期
关键词:微控制器时序校验

陆荣鑑,李 品,孙 周

(南京林业大学机电院机械电子工程系,江苏南京 210037)

0 引言

仓储管理、生产制造、气象观测、科学研究以及日常生活中,需要对温度、湿度进行实时检测。传统的温度、湿度传感器测量精度难以保证,且在线性度、重复性、互换性、一致性等方面表现较差。随着新技术和新材料的发展,数字式温湿度传感器出现了,具有代表性的是瑞士Sensirion公司生产的SHT1x/7x系列单片集成传感器,这类传感器可以同时测量湿度、温度,不仅提高了测量精度,还简化了外围电路。本文选用的是SHT10传感器[1]。

在工业控制领域,RS—485是常用的计算机与外部串行设备之间进行数据交换的通信协议。因其具有良好的抗噪声干扰性,长的传输距离和多站能力等上述优点就使其成为首选的串行接口。本文介绍了基于RS—485串行接口总线的多点温湿度监测系统。

1 系统硬件设计

1.1 数据采集单元设计

数据采集单元由温湿度传感器SHT10和微控制器PIC16F873组成。

SHT10通过二线串行接口与微处理器连接,如图1所示。SHT10 的供电电压是 2.4~5.5 V,推荐使用 3.3 V,电源引脚VDD和GND之间需要加一个100nF的去耦电容器。串行时钟输入线SCK用于使PIC16F873与SHT10之间通信同步,由于SHT10接口包含了完全静态逻辑,因而不存在最小SCK频率限制,即微控制器可以以任意低的速度与SHT10通信。串行数据线DATA引脚是三态门结构,用于数据的读取。DATA在SCK时钟下降沿之后改变状态,并仅在SCK时钟上升沿有效。在PIC16F873向SHT10发送数据且SCK时钟为高电平时,DATA必须保持稳定。为避免信号冲突,PIC16F873应拉低 DATA,当需要拉高DATA信号时,可以通过附加的上拉电阻来实现[1]。

1.2 数据传输单元设计

RS—485总线采用双绞线差分传输,可连接成半双工和全双工方式,最远传输距离为4000ft(1ft=0.3048m)。系统数据传输网络采取主从式,上位机PC机为主机[2],下位机PIC16F873为从机。主机控制整个网络的通信时序,每个从机有一个识别地址,当从机被寻址时,该机做出响应,保证各从站分时使用总线,从而避免数据传输冲突。系统选用半双工式通信芯片75LBC184,允许在总线上挂接最多64个类似器件。该芯片带有内置高能量瞬变噪声保护装置,显著提高了抵抗数据同步传输电缆上的瞬变噪声的可靠性。

PIC16F873单片机自带异步通信接口,外接RS—485收发器75LBC184。PIC16F873的异步通信口与75LBC184之间采用3片光耦进行电气隔离,如图2所示。由于上位机的接口是RS—232接口,故两者之间还需加上 RS—232/RS—485转换器进行信号转换。

图1 数据采集单元Fig 1 Data acquisition unit

图2 数据传输单元Fig 2 Data transmission unit

2 系统软件设计

2.1 SHT10 工作时序

SHT10上电后11 ms进入休眠模式,首先应发送一个传输启动时序(如图3所示)唤醒芯片。随后,微控制器可向SHT10发送命令,命令字包括高3位的地址位 (目前只支持000)和低5位的命令位。常用命令有:0x03测温度,0x05测相对湿度,0x07读寄存器,0x06写寄存器,0x1e软件复位。在发送命令时序中,SHT10在第8个SCK时钟周期下降沿后拉低DATA来表示正确接收到命令。SHT10在第9个SCK时钟周期的下降沿之后释放DATA线,DATA恢复至高电平。微控制器发出一组测量命令后需要根据测量数据精确度8/12/14 bit分别等待最长20/80/320 ms,SHT10通过拉低DATA表示测量结束,同时存储测量结果等待微控制器读取,SHT10自动进入空闲状态[1]。

图3 SHT10传输启动时序Fig 3 Transmission start timing sequence of SHT10

测量数据读取前,微控制器重新启动SCK,SHT10传送2字节的测量数据与1字节的CRC校验数据,传输数据的顺序是从最高位(MSB)到最低位(LSB)。微控制器接收到每个字节后,将数据线拉成低电平,产生应答信号ACK,以CRC校验字节的确认表示通信结束。CRC寄存器通过计算多项式(x8+x5+x4+1)来判定测量过程是否发生错误,一旦发现错误,微控器就发送软启动命令,重新进行测量。如果不使用CRC—8校验,微控器可以在测量值LSB后保 持DATA高电平来终止通信。SHT10在测量和通信完成后会自动返回睡眠模式。

如果微控制器与SHT10通信中断,可通过连接复位时序复位,即当DATA保持高电平时,触发SCK时钟9次或更多次,如图4所示。这个时序只复位串口,状态寄存器内容仍然保留。

图4 SHT10连接复位时序Fig 4 Connection reset timing sequence of SHT10

2.2 数据采集模块软件设计

这个模块主要是根据SHT10的功能时序对I/O口进行操作,使其完成温湿度的测量,并将测量结果发送至微控制器中进行计算,如图5所示。

图5 数据采集程序Fig 5 Data acquisition program

温湿度值在PIC16F873中以BCD码存储,共计5个寄存器。0x0020存放温度值的小数部分,0x0021存放温度值整数部分的十位和个位,0x0022存放温度值整数部分的符号位和百位数;0x0023存放湿度值的小数部分,0x0024存放湿度值的整数部分。

2.3 数据传输部分程序设计

异步通信中以10位字符为1帧,1位起始位,8位数据位,1 位停止位,无奇偶校验位,波特率为 9 600 bps[3]。PIC16F873的USART模块带有一个8位的波特率发生器BRG,为串行信息帧格式中的每一位编码的发送和接收检测提供定时时钟,通过BRGH,SPBRG寄存器确定波特率。这里选用BRGH=1(高速方式),SPBRG寄存器初值设为25。

2.4 协议设计

RS—485电气接口规范只规定了电气特性,而没有规定插件传输电缆和通信协议,在数据收发过程中,依据ModB-us协议保证数据的可靠传输。ModBus协议有2种传输模式,即RTU模式和ASCII模式。RTU模式表达相同的信息需要较少的位数,即信息帧中的8位数据作为2个4位16进制字符,且在相同通信速率下具有更大的数据流量,故系统选用RTU模式,典型的消息帧如表1所示。最终数据会被从最低位开始转换成二进制编码发送,采用CRC—16进行数据有效性检验[4]。

表1 RTU协议典型消息帧Tab 1 Agreement typical news frame of RTU

在RTU模式中,一帧信息的结束到另一帧信息的开始至少需要3.5个字符的时间间隔(由于波特率是9600 kps,故这里的时间间隔是3.7 ms),系统通过定时器2设定中断来判断帧的起始和结束。从机每接收到一个新的字节,就重启定时器计时。当超过设定的3.7 ms时,定时器中断,并在中断中设定一个标志位,当主程序查询到这个标志位时暂停定时器的工作继而处理接收到的数据。另外,整个消息帧必须作为一连续数据流传输,如果在帧完成之前有超过1.5个字符的时间间隔,接收设备将刷新不完整的消息并假定下一字节是一个新消息的地址字节。如果一个新消息在小于3.5个字符时间(1.6 ms)内接着前个消息开始,接收的设备将认为它是前一消息的延续,但这样CRC校验不会正确[5]。串口中断和定时器中断子程序如图6和图7所示。

在PIC16F873里,专门划出一块缓冲区用于串行通信,从0x0060到0x0080。系统中若主机设备想要了解某一从机的测量值时,发送一个包含从机地址编码的信息,则符合相应地址码的从机接收通信命令,并根据功能码与相关要求读取信息。如果CRC校验无误,则执行相应的任务,然后把执行结果返送给主机。

图6 串口中断子程序流程图Fig 6 Flow chart of serial interrupt subprogram

图7 定时器中断子程序流程图Fig 7 Flow chart of timer interrupt subprogram

2.5 单片机主程序设计

单片机主程序分为四部分:初始化模块、数据接收模块、数据采集模块、数据处理和发送模块。初始化模块包括波特率设置、定时器设置、开中断等;数据接收模块由串口中断子程序和定时器中断子程序组成;数据采集模块如前所述;数据处理和发送模块包括校验计算和将数据打包成协议设定格式并回复主机。从机接收到主机命令并且校验正确之后,进入数据采集模块,继而再将所需数据发送至主机。

2.6 监测中心软件界面与实验数据

本系统共放置了10个监测点,所有监测点通过RS—485总线连到中心计算机,监测软件采用VB编写。

界面分4个区,分别为通信串口设置区、数据查询区、监测点温湿度数据显示区、采集控制区。其中通信串口设置区用来设置串口号和通信速率;数据查询区提供各监测点的温度、湿度查询,温度、湿度报警设置值查询,当按下要查询项目的按钮,会跳出相应的文本框,提供复制黏贴;监测点温湿度数据显示区显示10个监测点当前的温度和湿度;采集控制区是对温湿度数据进行复位,对温湿度报警值进行设定。测试数据如表2所示。

表2 实验测试值Tab 2 Experimental test value

经测试,所测数据均符合要求,达到技术指标的要求。

3 结论

本文介绍了SHT10在温湿度监测系统中的应用,通过RS—485实现指定范围内温湿度监测网络。本系统已在大棚和药品仓库温湿度监系统系统得到应用。在后续的研究中,考虑组建无线传感器网络,通过基站收集各节点的数据,集中处理后提交给用户。以此实现复杂的指定范围内目标检测与跟踪,具有快速展开、抗毁性强等特点。

[1] Datasheet SHT1x(SHT10,SHT11,SHT15)humidity and temperature sensor datasheet[Z].Sensirion,2009.

[2] 李学海.PIC单片机原理[M].北京:北京航空航天大学出版社,2004.

[3] B&B Electronics Ltd.RS—422 and RS—485 Application Note[Z].Ireland,2006.

[4] Modicon Manual,Inc.Modicon modbus protocol reference guide P1—MBUS—300Rev.J.[Z].Modicon Manual Inc,1996.

[5] 孟 华,王鹏达,李明伟.基于ModBus协议的触摸屏与PIC单片机的通信实现[J].仪表技术与传感器,2009(10):58-60.

猜你喜欢

微控制器时序校验
基于时序Sentinel-2数据的马铃薯遥感识别研究
基于Sentinel-2时序NDVI的麦冬识别研究
炉温均匀性校验在铸锻企业的应用
物联网技术在微控制器实验教学中的应用
一种毫米波放大器时序直流电源的设计
大型电动机高阻抗差动保护稳定校验研究
基于加窗插值FFT的PMU校验方法
锅炉安全阀在线校验不确定度评定
Atmel针对新一代物联网应用发布全新32位微控制器
最新STM32设计工具增加对混合信号微控制器的支持