摘 要:为在无人值守情况下实现对多点温度实时监测,并在温度超过设定范围时及时通知相关人员,设计了基于PIC单片机控制、多点温度采集、串口通信、键盘和显示控制、语音录制和播放以及电话拨号控制的智能温度监测及电话语音报警系统。介绍了系统结构、硬件电路设计和软件实现。该系统设计灵活,使用方便,报警迅速有效,且成本较低,具有广泛的适用范围。
关键词:温度监测; 语音处理; 电话报警
温度是一个重要的物理量,随着现代工农业技术的发展及人们对生活环境要求的提高,对温度的测量与控制具有重要的意义。在一些对温度有要求的场所,通常依靠人工对温度进行监测,为避免事故发生,需要人员长时间坚守岗位,这必将耗费相关人员大量的时间和精力。此外,对于一些环境条件比较恶劣、危害人体健康的场所,无法实行人工监测温度。
针对以上问题,通过单片机实现远程温度监控,是目前较多使用的一种方法。大规模语音处理集成电路的发展,使得语音提示在监控系统中的应用越来越广泛。在此基础上,借助电话通信技术传输警情信息,实现自动电话语音报警功能,不仅可以充分利用已有通信资源,使警情信息迅速传到相关人员,也使监控系统具有了智能化的特点。
本文将单片机远程监控、语音提示和电话通信技术相结合,设计开发了温度监测及电话语音报警系统,不仅实现了自动电话语音报警功能,也使监控系统具有了智能化的特点。该系统以PIC16F877单片机为控制核心,结合传感器接口电路RS485转换模块MAX485、语音芯片ISD2560、键盘/显示控制芯片Intel8279、液晶显示模块OCM4X8C、MODEM拨号以及电话信号音检测模块CR6230,能自动对多点温度进行实时监测和实时显示。当某一个监测点温度超限时,立即拨打相关人员的电话,判断电话被接听后以语音告知温度超限的监测点号和温度值。相关人员固定电话和手机号码以及各监测点温度上下限值可通过键盘和显示器随时查看、存储及更改,录音过程也可以随时进行。为适应不同应用情况的需要,系统允许温度监测点在一定数量范围内增加或减少。
1 系统硬件结构及电路设计
智能温度监测及电话语音报警系统结构如图1所示。系统由核心控制单元及其扩展电路、多路温度传感器及其接口电路、液晶显示模块、键盘控制模块、语音处理电路、电话信号音检测电路、电话线路控制及接口电路、MODEM控制电路共8部分组成。
1.1 核心控制单元及其扩展电路
美国MicrochipTechnology公司的PIC系列单片机采用精简指令集、哈佛总线结构、二级流水线取指令方式,具有低价、低功耗、高速、功能强和易开发等特点。本系统采用的PIC16F877芯片是一种功能和性价比很高的PIC系列中级产品,含有A/D、PWM、E2PROM、UART、SPI、I2C等丰富的接口模块和8 KB的Flash程序存储器,PIC16F877芯片有40个引脚,其中有33个I/O端口[1]。
系统中作为控制核心的PIC单片机要完成其他7个功能模块的协调控制,每个模块均需要单片机给出一定数量的控制线和数据线来完成相应的功能,因此对于I/O资源有限的单片机,必须进行I/O扩展。PIC单片机及其外围扩展电路如图2所示。该扩展电路包括:
(1)通过3个锁存器74LS373(U3、U8、U9)和2个收发器74LS245(U21、U22)将单片机的8个I/O端口(RD0、…、RD7)扩展成36个I/O端口,通过译码器74LS138(U7)将单片机的3个I/O端口(RC1、RC2、RC3)扩展成8个I/O端口,其中2个74LS373(U8、U9)和1个74LS138(U7)扩展出的24个I/O端口作为输出端口,用于输出其他模块的地址或控制信号,另1个74LS373(U3)扩展出的4个I/O端口作为输入端口,用于电话信号音检测信号的读取,2个74LS245(U21、U22)各扩展出的8个I/O端口分别用于键盘和显示模块的输入输出控制。
(2)通过2个单8路模拟开关CD4051和1个双4路模拟开关CD4052将单片机的异步串行端口(RC6/TX、RC7/RX)扩展成9个异步串行端口,2个CD4051扩展出的8个异步串行端口用于8路温度传感器的数据采集,1个CD4052扩展出的1个异步串行端口用于MODEM的拨号控制。
此外,由于本系统对时钟要求不是特别精确,所以单片机的振荡输入电路采用RC振荡电路,频率约为4 MHz。单片机采用简单的RC复位电路。
1.2 温度传感器及其接口电路
系统设计了8个温度监测通道,针对不同的监测距离和温度传感器输出形式,每个监测通道可采用两种温度传感器,一种是监测距离较远、按照RS485串行传输的红外温度传感器,另一种则是监测距离较近的电压输出温度传感器。
红外温度传感器采用美国EXERGEN公司IRt/c.01-K-140F/60C型红外探头,测量范围-45 ℃~+290 ℃[2]。8个温度传感器分别通过8个MAX485接口芯片转换成TTL电平,将转换后8个传感器串口的发送端口和接收端口分别与U18、U19连接。单片机通过扩展I/O芯片U9输出一定的地址和控制信号给U18和U19,选定某个温度传感器,再由串口发出读值命令输出给传感器,传感器成功接收后将把当前的温度值返回,单片机控制串口接收即完成温度采集过程。
电压输出温度传感器采用LM35DZ,在0~100 ℃内输出为0~1 V,线性输出比例为10.0 mV/ ℃。8个传感器的输出电压值直接给到单片机的8个模拟输入端口(RA0,RA1,RA2,RA3,RA5,RE0,RE1,RE2),单片机选定某一模拟通道后通过其内部的A/D转换器(10位)进行采集。
系统正常工作时,以0.5 s为周期对8路温度传感器进行采集,由于有2种传感器,在每路采集时进行相应的判断,若采集成功则显示,若没有值则认为此路没有接入传感器,此路温度值不显示也不进行报警分析,这样使系统在传感器数量不定的情况下也可以正常工作,适应多种场合的需要。
1.3 语音处理电路
系统通过单片机控制语音芯片ISD2560来实现语音录制和播放功能,语音处理电路如图3所示。
ISD2560可以存储60 s的语音,最多分成60段,1个地址单元可存储0.1 s的语音[3]。录音过程单片机通过2个扩展I/O芯片U8、U9给定相应语音段地址和录音控制信号P//R,用户按下录音键(控制/CE=0)的同时由麦克输入语音,单片机的定时器根据这段录音的时间(即RC5端口为低电平的时间)控制ISD2560的地址累加,并在此段录音结束时给出并存储下一段的起始地址,从而不会产生交叠现象,存储的语音是可以掉电保持的。当达到存储器的结束地址时,ISD2560会给出已存满信号(/OVF=0),系统也会提示录音结束。各段语音的录制是按一定的顺序进行的,以便于报警时对不同语音的组织和播放,各个语音段的首地址同样按一定的顺序存储在单片机内部的E2PROM中,E2PROM的存储内容可以掉电保持。
放音过程中单片机根据温度超限情况,按顺序从E2PROM中找到所需语音段的首地址,通过2个扩展I/O芯片U8、U9给定相应语音段地址和放音控制信号P//R=1,并通过RC5 端口控制使能/CE=0,每段播放结束时,语音芯片给出语音结束信号(/EOM=0),所需语音段依次播放,播放的语音信号由SP+、SP-端口输出,送入通信变压器CRE3(T2),耦合进入电话线路。
1.4 电话线路控制及接口电路
当某路温度超限时,报警系统引入电话线路,控制MODEM拨打相关人员的电话,同时进行电话信号音检测,判断接听后将语音信号送入电话线路,完成报警。当没有警情发生时,无须引入电话线路,电话线路可接到电话机,本系统中电话线路控制及接口电路如图4所示。
采用2个继电器(K1、K2)实现电话线路的控制,当有警情发生时,单片机通过扩展I/O芯片U9的一个端口控制继电器转向开关,将电话线路连入系统。电话线路接口芯片采用通信变压器CRE3,系统采用2个CRE3(T1、T2)分别实现电话线路与信号音检测以及语音处理电路的接口。
1.5 MODEM控制电路
系统采用外置MODEM实现拨号功能,按照RS232串行通信标准对MODEM进行控制。MODEM串口通过MAX232芯片实现RS232电平与TTL电平的转换,转换后的MODEM串口与U5对应2个端口连接。当温度超限时,系统将电话线接入MODEM,单片机通过扩展I/O芯片U9输出控制信号给U5选定MODEM,单片机串口按照MODEM的工作波特率(9 600 b/s)设置后,发出AT命令控制MODEM。AT命令是MODEM可以识别并执行的命令,典型的命令有:ATZ(复位)、ATDT+电话号码(拨号)、ATH(挂断电话)等。MODEM执行命令后的返回信息有OK、NO CARRIRIER、BUZY等,对于拨打电话而言,BUZY表明电话线路忙,NO CARRIERIER指示无人接听。这些返回信息对于判断MODEM是否正常工作以及电话是否拨通和被接听都有重要的作用。
1.6 电话信号音检测控制电路
电话信号音检测模块CR6230可以准确识别各种电话信号音,并直接输出信号识别结果,检测信号包括有效识别中断信号SS、拨号音信号PS、回铃音信号RS、忙音/催挂音信号BS。本系统中电话信号音检测控制电路如图5所示。
当温度超限时,单片机通过扩展I/O芯片U7控制CR6230(U4)的管脚CS=1,清除所有检测信号,系统引入电话线路,经过电话线路接口芯片CRE3(T1)的电话信号送入CR6230,单片机控制MODEM拨号后,单片机通过扩展I/O芯片U3读取4个电话信号音检测信号,识别回铃音信号是否有效,若无效则重拨或改拨号码;回铃音信号有效则等待,当其变为无效时则判断对方接听电话,此时还要根据MODEM的返回值来进一步确定是否被接听。
1.7 液晶显示模块
报警系统通过单片机控制液晶显示模块OCM4X8C,实现多路温度测量值的显示,相关人员固定电话、手机号码和各监测点温度上下限值的设置过程以及录音过程的显示。
本系统中单片机采用8位并行连接方式,单片机通过RA4、RB5、RB4 3个端口分别实现对OCM4X8C(J13)的指令/数据状态选择、读/写和使能控制,并通过扩展I/O芯片U21给出一定的指令字或显示数据完成不同界面的显示。显示过程为在传送命令的状态下先选择指令集、清屏,然后指定在资料写入或读取时游标的移动方向及显示的移位、开显示、设定显示地址,再进入传送数据的状态,根据显示内容从中文字库中找出相应的16进制代码并将其依次传给液晶显示器。
1.8 键盘控制模块
报警系统的工作状态控制、各路温度上下限值和电话号码的设置是通过键盘输入完成的。单片机与键盘的接口芯片采用INTEL公司生产的通用可编程键盘/显示器接口芯片8279,它可实现对键盘的自动扫描,并识别键盘上闭合键的键号,它要求外部时钟输入信号的周期不小于500 ns即频率不大于2 MHz。8279的读写有独立的控制线(RD和WR),可以进行命令的写入、状态的读出以及键盘数据的读出等操作,具体是通过选定在命令状态(A0=1)下写入相应的命令字来实现。
2 系统软件设计
为提高软件设计效率,本系统单片机控制软件采用C语言编程,主程序流程如图6所示。
系统软件可分为以下4个功能模块:
(1)系统初始化
系统上电以后,完成对各个组成电路初始状态、工作模式等参量的设置[5],并显示系统初始化界面。
(2)系统设置
系统初始化后进入系统设置界面,用户可通过按键选择录音控制、号码存储、温度上下限值设置以及直接进入多路温度监测和显示。
(3)多路温度监测和显示
按一定的周期采集和显示多路温度值,即在每个监测周期内,依次完成8个监测点温度值的采集,并与相应的温度限值进行比较和判断,所有监测点温度值采集完成后进行显示。系统进入多路温度监测和显示操作以后,可随时通过按键返回系统设置界面。
(4)电话语音报警
当有温度超限时,立即拨打预先存储的相关人员的固定电话,判断电话被接听后,组织相应的警情信息进行语音报警,若没拨通或无人接听则改拨手机,直到报警成功为止。报警成功后返回温度监测和显示操作,报警成功的那路温度监测点则不再报警,等到其恢复到正常范围后重新使能报警功能。
本文基于单片机远程监控、语音处理和电话通信技术设计的温度报警系统,可实现对多点温度的实时监测,并在某点温度异常时自动拨打相关人员的电话进行语音报警的功能,具有智能化、使用方便、报警迅速可靠和成本较低等优点,可广泛应用于商场、办公室、仓库等对环境温度有一定要求的场所。
参考文献
[1] 刘启中,李容正,王力生,等. 单片机原理及应用[M]. 北京:北京航空航天大学出版社,2003.
[2] 秦相林,吕海洋. 多路温度监测自动拨号语音报警系统技术实现[J]. 哈尔滨商业大学学报(自然科学版),2006,22(4):58-62
[3] 范寒柏,陈旭升,李雪梅. 基于ISD4000系列芯片智能录放系统设计[J]. 电子技术应用,2007,33(11):44-49.
[4] 秦相林,李俊玲,吕海洋.多路温度监测及自动拨号语音报警系统的设计[J]. 哈尔滨商业大学学报(自然科学
版),2007,23(4):476-480.
[5] 黄锐,王跃科,唐贵林,等.基于PIC单片机的电话自动报警系统[J]. 微计算机信息,1998,14(1):85-87.