雨雪报警器的设计

孟钧

(国家新闻出版广电总局呼和浩特地球站,呼和浩特,010070)

摘要:本文通过雨雪报警器的设计说明阐述了雨雪报警器的工作原理。文中给出了各部分具体的实现电路。通过对硬件及软件的设计说明,介绍了各部分的设计要点。本文还重点介绍了单片机中断驱动编程整体思路,介绍了部分程序的流程图,对流程图进行了详细的说明。

关键词:雨雪报警;PID加热控制;中断驱动

1 引言

雨雪天气对无线通信有着非常大的不利影响。特别是对卫星通信系统的影响更加严重。通过科技手段对雨雪及时报警为安全播出提供有力的保障。为了能够感知天气的变化,经过多次试验研发了高灵敏度的雨雪传感器。雨雪报警器是为了在突发雨雪时能够及时告警,提醒值班人员采取雨雪天气的应对措施而设计的。该系统的核心元件为宏晶科技公司的高性能MCS51系列单片机。该系统经过近一年的使用证明能够及时准确的雨雪天气进行告警,对安全播出工作起到了较好的辅助作用。

2 系统简介

该系统可分为三个部分:核心控制部分、雨雪传感器、外围辅助部分。核心控制部分采用宏晶科技的增强型MCS51单片机STC12C2052AD构成。雨雪传感器是经过多次的实验,从形式、结构和材料不断改进,最终达到了实际使用要求。外围部分包括电源、RS232串行通信端口声光报警等一些辅助电路。结构如图2.1所示。

系统框图

图2.1 系统框图

雨雪传感器送该单片机的是模拟电压信号,电压信号由单片机内部集成的模数转换器进行量化采样。单片机对数据进行处理判断是否出现雨雪。另外,雨雪传感器的温度变化也是通过模拟电压信号来反映的。单片机对此模拟电压信号采样量化,判断传感器的温度是否低于设定温度,温度低了就通过控制加热器延长加电时间来提升温度,反之则缩短加电时间使温度降低。具体的控制流程在本文后面详述。

单片机外围扩展了由MAX232芯片构成RS232串行接口。即可通过该接口完成在系统编成,又可以在正常工作时作为串行通信端口使用,完成与其它设备的数据交换。另外,设计了声光报警接口。

3 雨雪传感器设计与实现

3.1 雨雪传感器的工作原理

对雨雪的探测是利用水的导电性实现的。雨水落在两电极间从而改变了两电极间的电阻,通过检测两电极间的电阻变化从而感测到雨雪。在下雪时通过加热将雪融化变成水,用上述方法实现对下雪的感测。

探测器是一块10cm×10cm方形的电路板,电路板整齐的焊满间隔为100 mile的探针。探针隔排连在一起,构成两个电极。在电路板的背面贴有一块硅橡胶加热片来在冬天对电极加热,保证下雪时能够及时将雪融化为水。之所以采用这种结构主要是克服水的表面张力的影响,在探针之间形成凹坑是水滴总能较好的覆盖在两个电极之间。

传感器和水平面呈30度左右的夹角,避免在传感器上大量积水,造成积水太多使感应器对雨雪停止的感测太慢。传感器上面少量的表面积水可利用加热器迅速将积水蒸发,及时感知雨雪停止。

3.2 雨雪传感器电路

雨雪的探测电路如图3.1所示。由电阻R9和探测电极U8串联构成分压电路,由于探测电极R9电阻值的变化引起电压变化。分压点(RainSen)与单片机内置的A/D转换输入引脚相连,单片机通过对电压变化的检测感知雨雪天气的变化。电容C9主要作用是对电压其平滑作用。

雨雪探测电路

图3.1 雨雪探测电路

加热器温度测量电路如图2.2所示。该电路由热敏电阻RT1和分压电阻R2构成,由于温度的变化引起热敏电阻的阻值变化,从而引起电压变化。分压点(T_Test)同样与单片机内置的A/D转换器输入引脚相连,单片机通过对电压变化的检测来测量加热器的温度值。由于应用中只需检测2℃和60℃两个控制温度点,采用这样简单的测温电路设计即经济又可靠。

加热器温度测量电路如图3.2所示。该电路由热敏电阻RT1和分压电阻R2构成,由于温度的变化引起热敏电阻的阻值变化,从而引起电压变化。分压点(T_Test)同样与单片机内置的A/D转换器输入引脚相连,单片机通过对电压变化的检测来测量加热器的温度值。由于应用中只需检测2℃和60℃两个控制温度点,采用这样简单的测温电路设计即经济又可靠。

加热器温度测量电路

图3.2 加热器温度测量电路

加热控制电路如图3.3所示。该电路由硅橡胶加热板加热器、双向可控硅及带过零检测的可控硅输出的光耦构成。加热器采用220V交流电加热。单片机控制光耦的发光二极管导通,发光二极管发光激发光耦的双向可控硅导通,光耦的双向可控硅导通后驱动功率较高的可控硅Q1导通,硅橡胶加热器开始加热。通过改变可控硅的导通角来控制加热温度。

加热控制电路

图3.3  加热控制电路

为了控制可控硅的导通角和降低功耗,所以系统中设计了交流电过零检测电路。交流过零检测电路如图3.4所示。电路由两个光耦和一个带施密特触发器的反向器构成。该电路从9V的电源变压器的输出采样。两个光耦的发光二极管以相反的极性并联在交流回路中,两个发光二极管分别在交流的正半周和负半周发光。两个光耦的输出构成一个线与电路,从电路可以看出只有在交流电过零点附近的两只光耦的输出三极管均截止,反相器输入高电平输出低电平;其余时间相反输出高电平。所以每次过零反相器均输出一个很窄的低电平脉冲。过零电路的输出与单片机的外部中断输入引脚相连,当输出低电平脉冲时,触发单片机的外部中断,单片机的外部中断服务程序完成交流电过零时系统应该进行的响应。

交流过零检测电路

图3.4  交流过零检测电路

 

4 核心控制电路设计与实现

核心部分由STC12C2052AD单片机及其外围电路构成。采用单片机可以使设计更加灵活,运行更加可靠。下面对其硬件电路进行说明。

4.1 单片机电路设计

这部分硬件电路采用单片机最小系统加一片I2C接口的存储芯片。其电路如图4.1  单片机系统电路图所示。

单片机系统电路图

图4.1  单片机系统电路图

R12、C23构成简单的上电复位电路,在系统上电时复位单片机。Y2、C21、C22构成石英晶体振荡滤波电路,和单片机内部时钟电路一起为单片机提供时钟信号。STC12C2052AD单片机具有在系统可编程功能。在上电时如果检测到P1.0/P1.1=0/0,则执行固化在单片机内的在系统编程程序否则自动复位执行用户程序;如果运行了固化在芯片内部的编成程序,则编成程序检测到有编程数据流,则将编程数据流存储到用户程序区,然后自动复位到用户程序区运行用户程序;如果检测不到编程数据流,自动复位到用户程序区运行用户程序。所以,P1.0/P1.1口设计了跳接模块J10、J11,需要下载程序时将跳接模块跳接2、3脚;正常运行程序时跳接到1、2脚。

STC12C2052AD单片机内部集成了的E2PROM,可将内部Data Flash当E2PROM,擦写次数在10万次以上。EEPROM可分为若干个扇区,每个扇区包含512字节。数据存储器的擦除操作是按扇区进行的。E2PROM可用于保存一些需要在应用过程中修改并且掉电不丢失的参数数据。在用户程序中,可以对E2PROM进行字节读/字节编程/扇区擦除操作。本系统就是将参数存储在单片机内部集成了的E2PROM之中。

该系统信号采样利用单片机内部A/D转换器实现,对信号的处理通过程序实现,具有结构简单、可靠的特点。

4.2 单片机外围电路设计

外围部分主要包括电源电路、报警电路及输入输出接口电路等。这部分中最主要的是RS232串行通信接口,它采用MAX232A专用芯片实现。通过RS232接口可以实现在系统编程,对系统进行参数设置,将采样信息及告警信息上传等。通过U13A集电极开路非门7406驱动继电器LS2提供报警开关量节点。

单片机外围系统电路图

图4.2  单片机外围系统电路图

5 软件设计

该系统软件采用模块化设计,设计工具为Keil C单片机开发环境。软件开发采用C语言模块化编程,方便设计和调试。软件由主程序模块、模数转换模块、延时模块、定时模块、串行通信模块、E2ROM读写模块、加热控制模块、PID控制模块,共8个块构成。系统共使用定器0中断、ADC中断、串行通信中断、外部中断0中断,共4个中断。

5.1 串行通信模块

串行通信采用中断方式完成,数据成帧发送接收,帧长不固定。帧格式如图5.1帧结构所示。共分为三个部分,第一部分帧头为固定的2个字节AA、55,第二部分为帧长占1个字节,第三部分为有效数据长度不固定。

帧结构

图5.1 帧结构

通信程序通过通信缓存与主程序交换数据。通信程序接收到数据存储到接收缓存中,当接收完一帧数据后,设置接收到数据标志通知主程序进行处理。主程序将要发送的数据存入到发送缓存中,然后启动发送程序。串行通讯程序可实现与PC机超级终端的通信,利用超级终端就可以控制和设置系统参数和采集系统数据。

5.2 E2ROM读写模块

STC12C2052系列单片机内部集成了Data Flash,利用ISP/IAP技术可将其当作内部集成E2ROM来使用,擦写次数在10万次以上,以下将集成Data Flash称为E2ROM。该系列单片机的E2ROM可分为若干个扇区,每个扇区包含512字节。该单片机内部集成的E2ROM与程序空间是分开的,可用于保存一些需要在应用过程中修改并且掉电不丢失的参数数据。对它的操作必须按照字节读/字节编程/扇区擦除进行操作。因此使用时,建议一般同一次修改的数据放在同一个扇区,不是同一次修改的数据放在不同的扇区,不一定要用满。数据存储器的擦除操作是按扇区进行。本系统利用单片机内部集成的E2ROM来存储运行参数。

E2ROM读写模块提供字节读、字节写和扇区擦除函数。主程序利用这些函数可完成参数的读取、修改。

5.3 DAC模块

STC12C2052AD系列单片机带A/D转换,A/D转换口在P1口(P1.7-P1.0),有8路电压输入型8位高速A/D转换器,速度可达到100KHz(10万次/秒)。STC12C2052AD系列单片机的ADC是逐次比较型ADC。逐次比较型ADC由一个比较器和D/A转换器构成,通过逐次比较逻辑,从最高位(MSB)开始,顺序地对每一输入电压与内置D/A转换器输出进行比较,经过多次比较,使转换所得的数字量逐次逼近输入模拟量对应值。逐次比较型A/D转换器具有速度高,功耗低等优点。

DAC模块完成模数转换功能。数模转换由主程序启动,通过DAC中断服务程序实现。完成采样后中断服务程序将数据保存到缓存中,然后设置采样完成标志通知主程序。数据由主程序进行处理。

该模块提供A/D初始化、A/D转换启动和A/D中断服务函数。主程序通过对A/D初始化函数的调用完成与A/D转换相关寄存器的初始化;通过调用A/D启动函数启动A/D转换。

5.4 加热模块

加热模块提供完成控制雨雪传感器加热工作所需的函数。当无雨雪状态下,环境温度低于2℃时,控制雨雪传感器的加热并保持2℃,当环境温度高于2℃时则停止加热。这样设计既可保证下雪时可即时感知,又可使系统工作在较低的温度及节能又可提高使用的可靠性和寿命。当检测到发生雨雪时,则控制传感器大功率加热,及时将传感器上的水蒸发。加热过程采用PID控制。该模块包括:

5.4.1 设定温度值对应的数值计算

温度测量范围-20℃到+80℃,温度采样对应的电压范围为1V到4.8V,这个范围内温度和对应的电压值可看作是线性关系。测量值的计算公式为:

其中:Vin为温度对应的电压值;

TData为电压对应的A/D转换数值;

Vcc为电源电压,也是A/D转换的参考电压。

由式5.4.2知1.0V对应的TData 值为51;4.8V对应的TData值为245

温度值精确到0.1℃,0.1℃对应的电压值为:

温度值计算TData的公式为:

由式5.4.3知设定温度2℃对应的TData为94;设定温度60℃对应的TData为171。

5.4.2 PID计算

PID控制原理框图如图5.2PID控制框图所示:

PID控制框图

图5.2PID控制框图

PID的计算公式为:

其中:u(k)为PID计算结果;

err(k)为当前误差,等于设定值减去当前采样值;

eer(k-1)为上一次的误差;

Kp为比例放大系数;

Ki为积分放大系数;

Kd微分放大系数。

加热的控制分辨率设定为1/256。为了防止控制的过饱和将PID的计算结果限制在0到255的范围内。

5.4.3 加热控制原理

为了提高加热效率利用交流过零时对加热器进行启/停控制,所以加热控制的最小单位为半个市电周期。因设定分辨率为1/256所以加热的控制周期为2.56秒。实现的方法是利用单片机内部的可编程计数器阵列(PCA)的PWM模式。交流电过零脉冲信号从单片机P3.4送入,作为单片机可编程计数器阵列(PCA)模块的PCA定时器时钟。单片机的可编程计数器阵列(PCA)模块工作在脉宽调节模式(PWM),它以交流电的过零脉冲为时钟信号,这样可以巧妙地在交流电的过零点实现了PWM控制。

这样只要完成几个相关寄存器的初始化,就可以在不需要程序干预的情况下实现温度控制,控制程序非常的简单、可靠。

PID的采样周期设定为10秒,采样完成后计算u(k),然后将u(k)值传送到可编程计数器阵列的捕获寄存器[EPCnL,CCAPnL]和[EPCnH,CCAPnH]中。

当EPCnL = 0及ECCAPnL = 00H时,PWM固定输出高

当EPCnL = 1及CCAPnL = 0FFH时,PWM固定输出低

5.5 程序流程

系统运行由中断驱动。通过定时器0中断服务程序来完成各种定时的判断,当达到设定定时时间完成相应定时标志的设定,通知主程序有定时事件发生。A/D转换由主程序启动,每次A/D转换完成后由其中断服务程序将采集好的数据存储到相应的存储单元,然后设置转换完成标志,通知主程序有A/D采样事件发生。当接收到串行数据后会产生串行通信中断,中端服务程序将接收到的数据存储到定义的存储单元缓存,并设置数据接收标志,通知主程序有数据接收;程序将要发送的数据除首字节外存储到相应的内存缓存,将首字节放到发送缓存启动发送,其余的发送数据由串行中断服务程序完成发送。

主程序首先完成初始化,然后循环等待各种中断时间标志的产生。通过循环判断各个标志来启动相应的处理函数。这样设计程序思路清晰间接,由相应的函数完成特定的功能。这样的程序结构非常适合模块化编程。程序按功能划分为不同的模块,将对应的函数集中到相应的模块中,使程序更宜于编写排错、日后的修改和维护和重复利用。主要流程如图5.2主程序流程图所示。

主程序流程图

图5.3  主程序流程图

6 小结

本文探讨了基于单片机的雨雪报警器的设计与实现问题,描述了系统的软硬件设计和实现方法。提出了利用单片机的PWM模块和市电的过零脉冲相结合,在交流电过零点进行PWM控制转换的一种简便方法。提出了简单程序利用中断驱动简化程序逻辑的思路。雨雪报警器在实际使用过程中稳定可靠,反应灵敏,较好地达到了预想目标。