语音数字记录仪的电话接口
2008-12-11
作者:许海国 陆延丰
摘 要:介绍语音数字记录仪的电话接口,采用单片机控制,电路简单,可靠性高,应用灵活。现已作为铁路语音数字记录仪的一个必备接口。
关键词:单片机 DTMF 通信接口
随着数字信号处理芯片(DSP)的发展,语音编解码技术日益广泛地应用于军事、民用和监控等领域。就语音数字记录仪而言,它可广泛地应用于运输、公安、消防、电话服务质量监督等诸多领域。但是记录仪通常放置在工作现场附近,如果要知道记录仪的工作状态" title="工作状态">工作状态或查询其中的记录数据,维护人员必须到现场,工作量极大。本文介绍的电路主要是为记录仪提供远程的电话查询接口,维护人员依靠手中的电话就可以查询记录仪的工作状态和数据记录。系统需要独占一个电话号码,接通电话后使用者在语音提示下通过电话键盘输入密码,经过确认后可以查询记录仪的工作状态是否正常。也可以输入时间对记录仪所存储的一段语音进行查询,语音记录将经由电话线路播放(本地查询时通过喇叭播放)。如果三次密码输入不正确,或在语音提示下长时间没有反应,系统将会强制挂机。
为了简化电路,本接口使用ATMEL89C2051" title="89C2051">89C2051单片机作为控制核心,它有128字节RAM,2K字节ROM,两个时钟。采用DTMF信号进行通信,实现远程控制。电路可靠性高,价格低。电路可独立地作为一个系统,也可用作自动电话查询或电话拨号控制系统的接口电路" title="接口电路">接口电路,使用比较灵活方便。
本电路具有语音回放接口、消侧音模块,提高了系统的稳定性,可避免系统出现误动作,配合相应的软件可以实现双向通信。本电路在设计中对电话线的地和记录仪的地作了隔离,否则系统会无法正常工作。
1 总体的功能要求
(1)来电时,在振铃几次后自动摘机;
(2)在通话过程中,检测到对方挂机后自动挂机,也可以主动地进行强制挂机;
(3)能够将电话线上传输的DTMF信号转换成为数字信号,并通过自定义通信口或者UART端口传送给其它模块;
(4)电话线的地和记录仪的地需要隔离;
(5)电路需要提供功率放大器到电话线的传输接口,以实现远程监听和查询;
(6)系统要有高可靠性。
2 硬件构成及原理
系统组成框图如图1所示。
接口电路主要包含以下几个模块:电话线接口、振铃检测、双音多频信号检测、忙音检测以及与主控单片机的通信。下面分别介绍其中的一些模块电路。
2.1 电话线接口电路
电话线接口电路如图2所示。电路模拟摘挂机通过控制一个电流源通断来实现。交换机通过线路上的直流电流来判断用户的摘挂机状态。在挂机状态下,电路上的直流电流为0;在摘机状态下,线路上的直流电流为18mA~55mA,如果电流超出此范围,则认为用户环路出了故障。单片机通过端口I/O1控制三极管T1的通断来控制电路中的电流,模拟摘挂机的动作。当I/O1为低电平时,T1截止,电流比较小,处于挂机状态;当 I/O1为高电平,T1导通,此时T1和T2组成的电流源将提供30mA左右的电流,相当于电话摘机,交换机会接通话路。另外,恒流源可以保证电路具有较小的直流阻抗(<300Ω)和较大的交流阻抗(>600Ω)。在电话线之间跨接压敏电阻,以达到抗雷击保护的作用。
由于在检测振铃信号的时候T1截止,在稳压二极管的钳制下,线路上的电压几乎都加在T1的集电极和发射极两端,此时电压高达100多伏。所以三极管需要选择一个耐压比较高的三极管,耐压在150V左右比较合适。需要注意的是所使用的单片机I/O脚的输出电流,T1的基极工作电流大约为2mA~3mA,而89C2051的输出电流只有80μA,无法驱动三极管,所以需要驱动电路。
为了将功率放大器的输出送到电话线路上去,通常的做法是采用变压器耦合。但在本文中采用了一种更为简单的办法。
电路采用了直接电容耦合。记录仪的I/O输出通过电容、8Ω电阻R1将声音耦合到电话线路。89C2051通过I/O2控制继电器来控制声音是播放到本地的喇叭还是电话线路。电阻放在电桥的后面,便于直接从Voice处取出声音信号来消侧音。
2.2 振铃检测电路
在待机状态下,电话线路上的电压一直保持约52V;当有用户呼叫本机时,交换机将向电话线路上发送振铃信号,振铃信号为90V±15V、25Hz±3Hz、3s通、4s断的蜂音。此时只需将线路上的电压与参考电压进行比较,I/O3为高电平时就可以检测出振铃信号,电路如图3所示。因为振铃电压要比平时高许多,所以可靠性高,干扰信号不会影响检测结果。同时,可以在软件部分进行振铃次数的检测,设置在一定次数的振铃后再摘机,提高系统的稳定性。
2.3 DTMF信号检测
DTMF信号检测则由MT8870完成,见图4。当有DTMF信号时,MT8870可以将其解码得出四位二进制代码,同时产生一个STB信号,用作与其它控制芯片连接。
2.4 忙音检测
图5为忙音检测电路。通话中一方挂机后,交换机会向另一方发送忙音信号。电话远程模块必须具备的一个功能就是在查询者挂机后,检测出忙音,自动挂机。线路上的忙音信号是0.35s±0.05s断续的450Hz±25Hz峰音。本电路采用Teltone公司的M982。这是一个专门用于电话呼叫进程检测的芯片。其作用是把蜂音信号转换成高低电平的信号,使用本身的时钟,所以检测比较准确,且与单片机接口比较方便。
2.5 消侧音电路
因为挂机依据的是忙音检测结果,而语音中包含了忙音450Hz这个频率,所以在线路上声音比较大时,有可能影响忙音检测的进程,使得电路误挂机。消侧音电路可以减少在放音过程中系统的误动作,提高系统的可靠性和稳定性。
电路如图4所示。从Voice处取出的语音通过T3反向后与通过话路耦合过来的信号相加,以达到消除忙音检测输入信号中的声音的目的,电路简单可靠。
2.6 光耦隔离
光耦电路如图6所示。使用电话接口的电路需要注意的一点是,电源必须悬浮(由于记录仪采用了接地设计,两部分的电源必须隔离)。此电路中采用光电耦合器来实现隔离。电路中采用普通的4N35,在标定的传输频率下需要的电流为几个mA,但是因为89C2051可以提供10mA的吸收电流,故可以直接同光耦连接使用,比较方便。
2.7 与记录仪的通信接口
接口电路与记录仪的通信通过四个信号线来实现,分别是STB选通、ASW应答、DATA数据、CLK时钟。这种通信接口可以从远程模块向记录仪单向发送DTMF数据。
3 软件控制流程
主程序" title="主程序">主程序流程图如图7所示。
系统一直监测线路信号,在三次振铃后接通电话。提示音通过8Ω电阻耦合到电话线路上后,就可以进行DTMF信号的通信。系统检测电话线上的DTMF码;同时检测线路是否有忙音信号,判断对方是否已挂机,若对方挂机则本地也挂机。在挂机后系统返回初始等待状态;如果主叫方三次密码输入错误,则记录仪通知电话查询模块主动挂机;主叫方在接通电话以后长时间没有输入需要查询的记录时间,电路也会主动挂机。
软件首先对所用到的寄存器和存储器进行初始化,然后进入节电模式。
如果有振铃信号,则通过中断方式进行响应。振铃3次后接通电话;对于异常情况,如振铃只响过一次对方就已经挂机,则不响应。中断处理程序中首先将中断屏蔽掉(以避免同一次铃流而产生几次中断),计时4s后打开中断;如果超过8s仍然没有下一次铃流来触发中断,则清除计数器,跳转到程序开始。累计振铃3次后,关掉中断,避免其他干扰信号打断程序的正常运行。此后进入主程序。
为了保证程序的实时性且不丢失数据,主程序为一个主循环。循环中根据输入和标志位来判断是否有DTMF数据需要接收,是否有数据需要发送,是否需要挂机。而数据的接收检测、发送和忙音检测是在定时中断中来做。
有忙音时,M982的输出是一个0.35s±0.05s的方波。此时对方已经挂机,其他的任务已基本不需要占用时间,所以可以采取一种比较严格的检测方法。本文在检测到有忙音信号,即I/O3变低时,开始连续监测,每隔100μs检测一次,如果连续100ms中有85ms均为低电平,即检测1000次中至少有850次为低,则认为检测到一次方波的低电平部分,然后延时200ms后再开始检测高电平。在检测到高以后,同样监测100ms,然后再检测低电平。一共检测3个周期,如果检测都通过,即认为收到一个合格的忙音信号,在挂机的同时通知记录仪。
在检测到有DTMF信号时,即I/O4变为高电平时,设置接收标志位,在主程序中接收数据,并且缓存在RAM中。因为接收到的数据除了密码,就是查询时间,需要用FIFO的存储方式,将顺序输入的数据发给记录仪。在时钟中断服务程序中仅设置标志位,在主程序中读取。
如果有数据需要发送,电路首先在STB上给出信号;然后等待ASW线上的应答信号;在得到应答后,开始发送程序产生的时钟信号" title="时钟信号">时钟信号,在时钟信号的上升沿发送数据位,外围电路在时钟信号的下降沿接收数据。电路的传送速率是100kbps。由于DTMF信号都只有四位数据,所以数据发送时定义了一个前导码,即三个‘0’,一个‘1’,然后是数据。
这个接口电路经过实际运行检验,具有电路可靠、使用灵活、成本低等特点。
参考文献
1 国标开云棋牌官网在线客服集成电路通信电路系列和品种.北京:中国标准出版社,1993
2 曾 刚,贺 蓉,徐成. DTMF远程通信的软硬件实现技术.电子技术应用, 2000;26(5)