基于STM32的气象数据在线监测仪设计
2018-11-28,,
, ,
(广东省气象探测数据中心, 广州 510080)
0 引言
地面气象观测对象包括地面附近的空气温度、空气湿度、气压、风向、风速、自然水面蒸发量、降水量、大气能见度、日照时间、云高、云状、雷电等等,其中温度、湿度、风向、风速、气压和降水是常规观测项目[1]。气象环境数据是慢变量,而气象观测仪器是在野外工作,为了剔除错误和干扰数据,平滑波动信号,一般情况下以每分钟的平均值作为气象瞬时值[2],分钟数据实时传输到中心数据库以供气象预报、防灾减灾等应用。
目前国内气象行业已经有几万个气象数据在线监测站,但大部分监测仪主机都是采用C51系列单片机作为中央处理芯片,工作频率低,存储能力有限,功能接口简单,缺乏扩展性。工作频率低造成采样密度低,样本数量有限,进而导致数据的可信度满足不了要求。存储能力有限,当恶劣天气导致野外观测仪器实时传输失败的时候,重要的气象观测数据不能尽可能多的保存下来,以待事后的灾害分析。有的采集器只能实现简单要素的采集和数据传输,例如单雨量站;绝大部分的采集器不带显示功能,并且只能保存半个月的数据[3]。因此当数据质量和数据安全日益被重视的时候,采用C51单片机的气象数据监测设备已经不能满足现代气象监测发展的需要[4]。
1 结构及原理
监测仪基于现代总线技术和嵌入式系统技术构建,采用了国际标准并遵循标准、开放的技术路线进行设计,它由硬件和软件两大部分组成。硬件包括采集器、外部总线、传感器和外围设备四部分;软件主要为嵌入式软件采集处理。
监测仪主机内部结构如图1所示。
图1 监测仪内部结构
主采集器是监测仪的核心,由硬件和嵌入式软件组成。主采集器嵌入式处理器选取STM32F207为ARM9系列的32位处理器,具有强大的性能如下:以120 MHz高速运行时可达到150DMIPS的处理能力;自适应实时闪存加速器使得STM32F2可以在片内闪存,具有高达1 M字节的片上闪存和128 K字节的内嵌SRAM;具有灵活的高速外部存储器接口用于扩展片外存储器和外设;3个12位采样率高达2M/秒的ADC模块;翻转速率高达60 MHz的GPIO;实时时钟电路和USB/CAN总线/RJ45接口等等[5]。主采集器还为处理器配置了16位的A/D 转换电路、大容量的程序和数据存储器、监测电路、触摸显示屏和信号接线板等。硬件系统能够支持嵌入式实时操作系统的运行[6-7]。
主采集器直接挂接的传感器包括:气温、地温、湿度、气压、降水量、风向、风速、蒸发和能见度[8-9]。监测仪的信号连接示意如图2所示。各种传感器信号线通过信号接线板与监测仪相接,监测仪进行数据采集与处理之后通过2路[10]RS232端口分别发送到触摸显示屏和远距离通信模块,实现远程无线传输和设备监控。
图2 监测仪连接示意图
如图2所示,自动气象站使用的传感器,根据输出信号的特点,可分三类。第一类是模拟传感器:输出电压或者电流模拟量信号的传感器,包括气温、湿度、蒸发、草面温度和地面温度等;第二类是数字传感器:输出数字量(含脉冲和频率)信号的传感器,包括风向、风速、雨量等传感器;第三类是智能传感器:一种带有嵌入式处理器的传感器,具有基本的数据采集和处理功能,一般采用RS485/232协议,输出串行数字信号,包括气压和能见度传感器。
2 数据采集
为了在增加单位时间内的采样频率的同时不影响外部中断响应的实时性,设计了循环采样设计,将各种要素采样程序和时钟中断处理、外部中断处理程序放在一个大循环里面。在详细分析各气象传感器信号特征的基础上设计了各要素采集的信号流程和关键器件配置,并按气象观测标准对传感器信号进行采集。
2.1 循环采样设计
由于气象瞬时值和极值统计一般以分钟为基本单位长度,设计每分钟内的数据采集循环如图3所示。软件每秒钟查询是否到达下一分钟,如果没有,则进行温度各通道的数据采集,包括发送指令选择被采集通道、延时、返回信号滤波、采样前充电、模数转换和读取采样值等序列程序。然后进行湿度各通道的数据采集,采集时序流程与温度相同。如果出现时钟中断,运行中断任务,包括雨量信号探测和识别、风向读取、风速读取转换等。如果出现外部触发中断(主要指串口中断),则运行气压采样处理、能见度采样处理或者是通信交互程序。
图3 循环采样
图中可见嵌入式程序的大循环中还包含下载任务和每秒任务。下载任务指采集器接收到下载多条数据命令之后在循环中逐一发送,避免连续发送多条数据的情况,因为串口发送中断占用系统时间过长会影响其他任务的执行。每秒任务指设备定时自检和按照气象观测要求定时运行的采样数据质量控制、分钟气象瞬时值计算、数据储存和分钟数据显示任务。
2.2 温度采集
温度传感器采用铂电阻,其阻值随着温度的变化产生线性变化,当温度为0 ℃时,铂电阻为100 Ω。模数转换采用16位芯片AD7792,参考电平5 V,能够转换0~5 V信号电压。温度采集的硬件原理图如图4所示,标准电阻为精度为万分之一的100 Ω电阻,其电阻值不随温度的变化而变化。通过比较同一时刻标准电阻与铂电阻上的压降,可以计算出温度的变化值。根据《新型自动气象(气候)站功能需求书》要求,温度的每分钟采样次数必须大于30次,测量灵敏度为0.1 ℃,最大误差不超过±0.2 ℃。
图4 温度监测回路
为了提高测量精度,降低测量误差,温度铂电阻采用了四线制[11],即工作回路与信号回路分开。由于信号回路中电流非常微弱,使得回路电缆的线上压降基本为0。此外,由于监测仪需要采集多个温度信号,监测回路中的标准电阻是各温度通道的共用器件,当某一铂电阻传感器未被处理器选择采样的时候,电子开关使该传感器不经过标准电阻直接使用5VDC工作,当该铂电阻被选择进行采样时,电子开关使传感器与标准电阻串联,这样无论是否被采样,铂电阻传感器一直处于稳定工作状态。
2.3 湿度和蒸发采集
湿度传感器一般采用湿敏电容作为核心元件,湿敏电容以流通的空气作为绝缘电介质,当空气中的相对湿度发生变化,电介质的介电常数发生变化,电容值也随之改变。传感器与湿度的变化相对应输出0~1 V的连续电压信号。蒸发传感器采用超声波测距组件为核心器件,测距组件探测到蒸发器皿水面高低的变化,并将0~100 mm的变化使用4~20 mA的连续电流信号来表示。对于蒸发传感器的电流信号,采集器端增加了100 Ω的负载电阻,以便将电流信号转换成电压信号再进行数据采集。
图5 湿度信号流程
图5为湿度和蒸发的信号流程图。工作回路供电为12VDC,信号回路连接至多路复用开关ADG1607BRUZ。当中央处理器MCU运行程序轮询采集湿度或者蒸发信号的时候,软件指令接通多路复用开关,将该信号输入16位A/D转换通道。经过必要的稳定时间(一般为10~40 ms)之后,A/D将该电信号转换为数字信号,并通知处理器读取。根据功能需求书要求,湿度采集精度为1%RH,当湿度大于80%RH时,最大允许误差为±5% RH,否则为±3% RH;蒸发采集精度为0.1 mm,最大允许误差为±2%。两者的采样频率要求大于30次/分。
2.4 风向风速和雨量采集
格雷码是一种特别的二进制编码,其大小相邻的两个码之间仅有一位二进制数不同;位数相同的两个码,最大值与最小值之间也仅有一位二进制数不同,这种特性很适合使用电路实现物理量到脉冲数字量的转换。气象观测中风向传感器主要采用7位格雷码脉冲信号,即使用7个信号共同表示一个风向角度[12]。风向标随着风向的改变而朝向不同的方向,转轴带动格雷码盘,在0~360°方向对应输出不同的7位格雷码脉冲信号。例如风的来向为北偏东3°时,7位格雷码为0000001,即最低位输出高电平,其他6位输出低电平。
风速传感器则多采用光敏元件或者霍尔元件。使用光敏元件的传感器其转轴速度随风速变化,转轴带动的遮光板以不同的频率遮挡光敏元件,使其导通频率与风速具有线性的关系,可通过导通脉冲的频率计算风速。使用霍尔元件的传感器其转轴带动导线以不同的频率切割传感器中永久磁铁产生的磁力线,产生与风速具有线性关系的感生电势,可通过感生电势的脉冲频率计算风速。
雨量传感器则利用干簧管吸合的动作产生与降雨量成线性关系的脉冲个数。因此这几类传感器都具有相似的原理以及相同的信号采集方法,如图6。
图6 脉冲信号流程
图中过压保护二极管采用SMCJ6.0CA,光电耦合采用P621,缓冲器为74LV14D。脉冲信号经过压保护之后从限流电阻到达光电耦合器,被耦合器隔离之后传输至缓冲器再与MCU的I/O端口连接。I/O端口配置为无上拉/下拉的悬浮输入模式,响应频率为100 MHz,响应上升沿触发的外部中断,中断优先级最高为0。
不同的传感器信号使用不同的处理程序得到气象要素测量值。代表风向的7个电平信号被处理器逐一读取之后,作为7位格雷码,与存储在处理器中的格雷码-风向表对比检索,得到相对应的风向值。代表风速的脉冲信号则被高速采集,计算每一秒的信号脉冲个数,通过传感器厂家提供的脉冲频率与风速的关系式计算所代表的风速值。代表降雨量的脉冲信号则按分钟计算脉冲个数,通过脉冲频率与降雨量的关系式计算所代表的降雨量。为了防止高频干扰,处理器将检查雨量脉冲高电平的持续时间,只有持续时间为50~150 ms才被认为是正常的干簧管吸合产生的脉冲信号,否则认为是异常信号。根据要求,风向的采样频率为1次/秒,风速的采样频率为4次/秒。
2.5 气压、能见度采集
气压和能见度都是智能传感器,自带嵌入式处理器,能够对环境进行自主探测得到基本的采样数据,因此对这一类传感器进行数据采集主要是解析智能传感器的输出报文,读取所需要的采样数据。如图7所示,传感器使用RS232标准协议,串口配置参数为9 600波特率,无校验,8位数据位,1位停止位,即(9600,N,8,1)。按照采集要求的频率输出基本的采样数据,采集器串口通过中断接收数据,在接收完一次完整报文之后,通知处理器解析报文,并将其中的气象值读取出来作为该气象要素的分钟采样值。按照要求,气压的采样频率为30次/分,能见度的采样频率为6次/分。
图7 智能传感器数据采集
3 质控和存储
高速运行的MCU能够将分钟采样频率提高,样本数的增加增强了监测数据的代表性。此外,MCU还有更多的时间进行数据的质量控制,提高了监测数据的可靠性和可信性。检测仪的数据质控分为3个级别:首先检查各个气象传感器采样数据是否落在传感器测量范围之内,超出范围的数据被剔除,不参与计算气象瞬时值;其次,对相邻两个采样值的变化幅度进行检查,按照相关的阈值,剔除掉变化幅度超出允许范围的采样值;最后在计算气象瞬时值之后,再根据相邻几分钟气象瞬时值的变化幅度,记录当前计算值的质控码,以表示本分钟的气象瞬时值是可信的、存疑的还是确定异常的。
MCU扩展控制读写4 G以上的外部存储模块。外部存储模块上除了自身坏块管理数据,需要保存的数据有:台站参数,包括时间日期、台站号、通信波特率、传感器种类、台站经纬度、主动发送数据间隔等等;分钟内的采样数据,包括各种传感器信号每分钟的多个采样值,便于从中发现信号异常原因;分钟测量数据,即由采样数据计算得到的每分钟一份气象瞬时值。其中绝大部分空间用于分钟测量数据存储,按每份数据4 kb计算,4 G容量大约能容纳2年的分钟数据,考虑到坏块、坏块备份、台站参数和采样数据需要一部分空间,本设计能够保证1年以上的数据存储。
4 结果与分析
如图8为屏幕显示界面,每分钟更新一次气象瞬时值,在调试设备的时候,也可以实时显示每一次采样数值,让现场操作人员能够马上发现被监测数据的变化[13]。该显示屏还兼备触摸操作功能,可以在屏上直接进入选择菜单或者参数设置,便于监测仪保存不同的监测站点参数。
图8 屏幕显示界面
各测量通道的测试结果如表1所示。
表1 通道测试结果
通道以MCU管脚区分,表中湿度与蒸发采集数据均从PE1输入MCU。模拟信号采样通道性能主要取决于A/D采集电路的稳定性和抗干扰能力,16位A/D测量分辨率为5×1/65536 V,在给定已知稳定信号的情况下,采样扰动平均值为5×3/65536 V,相对于气温和湿度的要素分辨率和最大误差要求,该采样扰动是可以接受的。基于脉冲计数的I/O采样中断设置为100 MHz,按每秒8次的采样频率测试误码率为0.00003%,即平均连续运行4天出现一个误码,考虑到要素采集的要求最多为4次每秒,实际的误码率会大幅降低,转换成要素之后的测试结果最大误差也是符合要求。串口测试的频率设置为每分钟传输10次,连续运行7天出现一次误码,误码率为0.001%,在纠错和质控的程序后并没有影响要素的采集和数据的传输,满足采集的要求。
5 结论
本设计在STM32最小系统的基础上,充分利用MCU的计算能力、存储能力、高速I/O、中断管理和扩展串口的功能,增加16位A/D、大容量存储卡和触摸显示屏实现了气象要素在线监测。由于对传感器的原理和电气性能了解得比较详细,监测仪并没有发现信号连接方面的问题。各个通道的采样性能以及气象要素测量性能均能够满足气象数据在线监测的需要。由于测试条件有限,测试参数和测试数据点不够全面,考虑将设备送到具有相关资质的气象检定部门测试,进一步发现并改善本设计。本设计可以为基于STM32的其他小型环境探测设备的研制提供参考。