1、 引言
dtmf信号首先用于电话的拨号系统,在频率编码遥控系统及数据编码传输中的应用也很普遍。目前的dtmf译码器中,大多采用通用集成器件(单音译码电路和组合门电路)或专用dtmf信号译码集成电路(如mc145436等)组成译码电路。在很多情况下,dtmf译码器输出的数据仍需送入单片机进行相应的运算及处理,进而控制其它各种设备的动作。因此,如果能找到一种基于单片机的dtmf信号的译码算法,再辅之以简单的整形电路就可以,既可省去成套译码电路,又能达到简化电路降低成本的目的。本文所要介绍的,就是这种构想的初衷,结果通过计算机仿真计算数据论证认为完全能够达到设计要求。
2、dtmf信号频率组成及整形前dtmf信号的幅值密度
在dtmf信号中,16个指令键均由两个单音频率信号组合(见表1)。单音频率有两组,高频组为(1209hz、1336hz、1447hz、1633hz),低频组为(697hz、770hz、852hz、941hz),每个指令键,对应的都是一个高频组的频率和一个低频组的频率的组合。以“*”号指令键为例:其dtmf信号是由941hz的低频组信号和1209hz的高频组信号组成。图1为其频谱图。
表1 dtmf信号频率组成表
从图1中可以看出,“*”号指令键的dtmf信号在941hz和1209hz处有谱线。在理想条件下,可计算出频谱密度函数x(f)在f=941hz和1209hz时的模值为|x(941)|,|x(1209)|,即它们模值均不为零。也就是说,要是同时存在频谱密度函数模值为|x(941)|,|x(1209)|,并且它们模值均不为零时,其表征的键号为“*”。以此类推(见表1),可分别计算出低频组信号|x(697)|、|x(770)|、|x(852)|、|x(941)|和高频组信号|x(1209)|、|x(1336)|、|x(1447)|、|x(1633)|的模值。如果高、低频组中均各自有一个x(f)的模值不为零,则再通过f在表1查找出其表征的指令键。
在用单片机进行x(f)运算即离散傅立叶变换(dft)时,只能对有限长的dtmf信号进行分析与处理,即对有限时间tp=nt内的n个数据进行离散傅立叶变换(n为采样点数,t为采样时间间隔)。
根据dft定义式:
同样以“*” 指令键信号为例,在高频率组f=1209 hz,采样点数n=256,采样时间间隔t=55×10-6 s时,由式k=f×n×t,可得k=17,即|x(17)|为dtmf信号在频率为1209 hz处的幅值密度其值为121.5。在低频率组f=941 hz,采样点数n=256,采样时间间隔t=54×10-6 s时,由式k=f×n×t,可得k=13,即|x(13)|为dtmf信号在频率为941 hz处的幅值密度其值为123.6。同理,可计算出其它15个指令键的幅值密度,见表2(表2为对16个指令键的dtmf信号采用计算机仿真计算后的幅值密度)。
表2 整形前dtmf信号的幅值密度表
从表2看出:由于时域无限长dtmf信号被截断所引起的泄漏效应,如“2”、“3”号键对应的dtmf信号虽然不含有频率为1209 hz和941 hz的信号成份,可是|x(17)|、|x(13)|不为零,理想时应为零,也就是说存在一定的幅值密度误差。但对于含有f=1209 hz高频组信号的dtmf信号(如“1”、“4”、“7”、“*”键),其|x(17)|值远大于不含f=1209 hz高频组信号的dtmf信号的|x(17)|值。同样,对于含有f=941 hz低频组信号的dtmf信号的|x(13)|值远大于不含f=941hz低频组信号的dtmf信号的|x(13)|值,这样就为实际dtmf信号译码识别提供了必要的条件。
因在实际dtmf信号译码应用时,任一键号所对应的dtmf信号的译码过程为:
(1)分别采样dtmf信号计算出谱线为697hz、770hz、852hz、941hz的幅值密度|x(k)|。
(2)从中排序找到低频组频率fl对应幅值密度|x(k)|最大的值。
(3)同法计算,谱线为1209hz、1336hz、1467hz、1633hz的幅值密度|x(k)|。
(4)从中排序找到高频组频率fh对应幅值密度|x(k)|最大的值。
(5)根据fl、fh查表1,即可得到其所表征的键号。
2、整形后dtmf信号的幅值密度及其实验数据误差分析
为了把dtmf信号送入单片机进行dtmf信号译码,还必须要对dtmf信号进行整形,见图2所示。dtmf信号经比较限幅,整形为方波后。从dft变换定义式看出:式中x(nt)的值只能为0或者1,因此计算|x(k)|的运算量大大降低,表3即为通过整形后dtmf信号采用计算机仿真计算出的幅值密度。
图2 dtmf信号比较限幅示意图
表3 整形后dtmf信号的幅值密度表
对比表3和表2可以发现,整形为方波后的dtfm信号泄漏谱线的幅值密度有所增大,而有效谱线的幅值密度也相应变小。例如7号指令键产生的泄漏谱线的幅值密度其值从14.09增大到22.38,而有效幅值密度其值从127.9减小到107.26。造成此类问题的主要原因是:
(1)由于n,t只能选择整数,1/f不可能被n×t所整除,所以这必然会带来栅栏效应,此时计算所得的有效谱线的幅值密度必然 小 于 实 际 值 。同 时 ,由于采样时间tp=nt有限长而引起的泄漏效应,也必然会导致泄漏谱线的幅值密度增大。
(2)dtmf信号经整形为方波后会产生了十分丰富的谐波干扰,这些干扰信号的频率如果接近泄漏谱线的频率,也会使泄漏谱线的幅值密度增大。
因此在译码过程中,如果有效谱线的幅值密度值变小,而泄漏谱线的幅值密度增大,当泄漏谱线的幅值密度大于有效谱线的幅值密度时,就会引起错译和漏译现象。所以在n×t值选择过小,或者与待测周期的整数倍相差过大,再加上整形为方波后谐波干扰,将有可能引起错译和漏译。
但是从表3中可见泄漏谱线的幅值密度最大值为22.38,而有效谱线的幅值密度最小值为87.92两者相差近4倍,还存在较大的冗余量。例如:对于含有f=1209 hz高频组信号的dtmf信号(如“1”、“4”、“7”、“*”键),其|x(17)|值仍远大于不含f=1209 hz高频组信号的dtmf信号的|x(17)|值。同样,对于含有f=941 hz低频组信号的dtmf信号的|x(13)|值也远大于不含f=941hz低频组信号的dtmf信号的|x(13)|值,二者仍可在排序中明显区分出来,所以对dtmf信号整形后产生的一定幅值密度误差增大,完全可以忽略不计,只要译码应用程序设计得当,合理选取n、t值,不会出现错译和漏译现象。
在dtmf信号比较准确或干扰较小的场合,甚至还可以通过减少n,t的值来提高运算速度,减少译码时间。
茶多酚检测仪的操作步骤
苹果13promax起售价格
博世发布远程激光雷达传感器 用于自动驾驶汽车
通过数据中心内的视频加速获得图像
360n5“充电半小时,正常用一天”,感觉oppo被挑衅了
基于单片机的DTMF信号的译码算法
旧金山比特币社区把比特币孵化成了一个强大的有机体
魅族Flow耳机正式发布:售价599元 8月5日京东首发
小米最新消息:小米6即将发布,售价小幅上涨!小米6全新配色曝光
光纤光缆的交叉连接与互连方法
Mavenir通过电信管理论坛计划带来动态网络切片创新
存储大战:西部数据如何在竞争中立于不败之地?
大面积二维Cu2Te垂直阵列催化剂助力CO2电还原
在医疗设备领域,如何快速提高生产效率
在太空发生情感崩溃的人工智能得到了升级
阿里巴巴物联网生态峰会在国家会议中心举行,思必驰出席了本次会议
WCDMA终端的RRM测试
智能蓝牙电路设计图集锦 —电路图天天读(61)
OpenHarmony硬件资源池化模型
隔离式-48V风扇的速度控制