基于DTMF的智能电话控制器
2006-05-07
摘要:介绍一种基于DTMF(双音多频)信号和RS485的远程智能控制器。它具有振铃检测和模拟摘机、DTMF信号解调、红外遥控编码自举学习和发射多路红外遥控信号的功能。本文对该控制器的组成、硬件配置、软件设计、工作原理、功能以及技术性能进行了详细论述。该控制器在远程控制的数据终端系统中使用后,证明其方便、可靠和有实用价值。
关键词:DTMF RS485 红外遥控 MT8870
1 概述
随着工业自动化水平的进一步提高,在许多无人看守的工业现场,希望能够对设备进行远程的控制和监测,以及对远程数据终端进行设置和数据采集。电话的逐渐普及使得在工业现场安装电话成为可能。根据这种情况,我们设计并制作了一种基于DTMF(Dual
Tone Multiple Frequency)的多路电话控制器,只要将电话控制器并接在工业现场的电话线上,就可以通过它随着时随地用电话对设备进行开关控制、数据采集、远程设置等[1]。另外,社会经济水平的不断提高已经开始促使家庭自动化,人们希望能够随时随地对家庭安全实行远程监控以及对家电实行远程控制。由于电话线路是全国联网的,所以遥控距离可以跨省市。该控制器采用单片机和语音芯片,可利用语音对于不同操作进行提示并可反馈受控方状态的信息。
2 控制的组成及原理
2.1 控制器的工作原理
整机电路如图1所示,包括:振铃检测与模拟摘机电路,由MT8870等组成的解码电路,红外生成发射电路、八路开关量输入和八路开关量输出控制电路,语音控制和录放电路,由DS12887组成的时钟电路,RS232或RS485串行通信电路,外加键盘和液晶显示构成的红外信号自学习电路。
该控制器的工作原理:当需要远程控制时,拨打相应的电话号码,振铃检测电路检测铃流信号。振铃次数达到5次后(次数可以通过软件任意设定),单片机89C51控制实现电路自动摘机,并启动语音电路发出提示输入密码。密码经接收电路接收并输入到单片机中进行核对,核对正确则提示输入控制命令键,单片机对命令进行分析判断,并根据命令要求完成相应的操作。当输入“*”键后,自动实现电话挂机,从而完成一次远程控制。摘机的30s内若不输入命令或密码,电路会自动挂机;同样,若输入按键超过8个键也自动挂机。
该控制器还可以通过RS485串行通信电路实现远程信息采集,控制若干开关量和具有红外遥控功能的设备;还可通过远程电话或计算机设置定时开机或关机等功能。
2.2.1 振铃检测、摘机电路
振铃检测电路是由光耦T521-1和74LS123构成的。当有电话呼入时,25Hz、90V振铃信号由整流后光电隔离输出脉冲信号。该脉冲输入到74LS123中,74LS123将小脉冲整形成大方波信号,送入单片机中计数。当计数达到设定次数时,单片机控制输出高电平,使三极管导通,从而继电器吸合,完成模拟摘机动作。由于语音信号和双音频信号电压远低于振铃信号电压,因此该电路不会引起误判。振铃检测、摘机电路如图2所示。
2.2.2 双音多频解调电路
MT8870是DTMF信号接收处理的专用芯片,其功能是将接收到的DTMA信号解码为4位二制码,由Q1~Q4直接输出。模拟摘机以后,双音多频信号经过耦合隔离变压器耦合入MT8870输入脚。该双音频信号先经MT8870内部的拨号音滤波器滤除拨号音信号后,再经前置放大器送入双音频滤波器,将双音频信号按高、低频信号分开,又经高、低频滤波器、幅度检测器送入译码电路,最后从MT8870的数据输出端输出相应的编码。为了获取有效的数据,MT8870的STD接AT89C51的INT0。当STD电平由低变高,经AT89C51检测后通过P1口总线接收有效拨号键值码。双音多频解调电路如图3所示。
2.2.3 语音控制与语音录放电路
语音控制与语音录放电路如图4所示,采用ISD2590芯片作数字录音器件。录放时间可达90s,可以连续录放也可以通过地址线A0~A9选择分段录放。语音芯片ISD2590的片选输入端CE为低脉冲时启动放音周期。放音不随CE电平的返高而结束。CE信号的下降沿启动录音周期。PD脚为高时进入低功耗状态。P/R输入端为高电平时选定放音操作,低电平时选定录音操作。相应语音段的播放由软件来实现。ISD2590的SP+、SP-端的信号送至音频放大电路LM386进行放大,再经隔离变压器耦合至电话回路,用户可以从电话里听到系统控制语音芯片发出的提示,以进行相应的操作。
2.2.4 红外发射电路
由时基电路555构成产生38.5kHz脉冲振荡电路,用GAL16V8逻辑阵列器件实现输出通路选择并叠加输出38.5kHz载波信号作控制输出,经八路驱动器2803驱动后发射出去。单片机89C51的P1.4、P1.5、P1.6作为GAL16V8的三个通道选择输入,P1.7作为使能控制。当P1.7为高电平时,禁止输出;当P1.7为低电平时,允许输出。红外脉冲串宽度和间隔由89C51单片机的定时器T0控制。为提高抗干扰能力和进行可靠的通信,有些遥控器在发送二进制编码前要插入各种各样的引导码,以便接收器容易识别。为了区分不同类型的遥控器,还需要发送地址码和校验码。另外,不同遥控器所发送的码长也不相同。红外发射电路如图5所示。
2.2.5 其它电路
控制器还增加了实时时钟电路DS12887,可给系统提供标准空间。同时控制器具备定时控制功能。
控制器还可通过RS485远程通信接口与上位计算机进行通信,可设置定时时间、不同类型的红外信号编码等,邓可用计算机对控制器发出命令实现远程控制和读取采集的信息。
3 软件设计
3.1 89C51A的程序
(1)振铃检测和模拟摘机程序
根据软件设定的振铃呼叫次数,进行检测比较。当到达设定值时,启动摘机和语音提示。
(2)DTMF接收和命令解释程序
这段程序主要是模拟摘机后,单片机接收由MT8870输出的数据,并判断是否结束。输入结束后,分析所得到的数据和执行相应的操作。
(3)串行通信程序
主要接收上位机的命令和执行相应操作。
(4)语音录放和控制程序。
3.2 89C51B的程序
(1)红外接收程序
用INT0作为输入引脚,当有下降沿时产生中断,启动定时器T0开始计时。当INT0由低到高时,停止计时,读计数值并存入存储器后再启动定时。
(2)自学习红外编码处理分析程序
根据存储器中存放红外信号的高电平和低电平的时间值,判断是否有引导码。若有,找出引脚码的高电平和低电平的时间间隔值。通过比较,计算机信息码元“0”和“1”的时间间隔t、t0、t1,再找出地址码、信息码并存入存储器。
2个单片机之间通过INT1产生中断,读取数据。并行通信格式为:引导码,字节数N,命令码,数据1,数据2……数据N-2,校验码。
(4)键盘扫描和液晶显示程序
(5)红外发射程序
红外输出信号的实现程序:根据所要控制的命令,选择相应的通道后,将遥控控制码从EEPROM中取出送入移位缓冲区,判断是否需要引导码。而后移位遥控控制码,当移位为“1”时,先使P1.4为高,时间间隔为t,然后再使P1.4为低,时间间隔为t1。发送多少个“1”和“0”是根据遥控控制码的长短而定的;何时发出“1”和“0”,由地址码和控制码来决定。
结束语
本系统具有很强的适应性,可以远程对工业现场的设备、各类家用电器进行控制,并且在安装时不需对已有的工业现场或住宅的布线作任何改动,安装和维护方便,成本低,因而具有较高的实用价值。除此以外,本系统的操作方便简单,用户通过电话机(无论是固定电话还是移动电话),就可以输入精简的指令和修改密码;还可以根据语音提示进行操作,所以该系统具有较高的推广应用价值。