×
嵌入式 > 技术百科 > 详情

如何设计防啸叫模块—EasyEDA给你支大招

发布时间:2020-06-18 发布时间:
|

在话筒拾音的扩声系统中总会遇到各种各样不预期的声音,例如回音、啸叫、底噪、电流声等,其中啸叫对扩声系统的危害最大。

啸叫即声音信号的自激振荡,其产生示意图如图1 所示:

图1 啸叫产生示意图

扬声器播放的声音经障碍物反射后又叠加在麦克风上,麦克风则将反射回来的声音信号再通过扬声器播放出去,这样周而复始的叠加便会产生刺耳的尖叫声,这就是声音信号正反馈所导致的自激振荡,用示波器观察,叫声的波形为“频率稳定,幅度稳定的正弦波”,如图2所示,它有两个特征: 1、频率稳定,频率与扩音系统所处环境有关,一般处在[1kHz,5 kHz]范围内;2、幅度稳定,幅度会随着麦克风和扬声器距离的拉近而增大。且麦克风和扬声器的距离越近,越容易产生啸叫,啸叫的幅度越大。

图2 啸叫波形

自激振荡时,功率放大器会产生很大的功率输出,可能超出扩声设备的承受范围,烧坏功率放大器和发声设备。

目前,国内主流的啸叫检测与抑制途径是通过调音台、均衡器和移频器,由专业的调音师手动逐渐加大音量来找啸叫点,找到之后再通过均衡器消除。如果扩声系统是双声道系统,则需要调音师先关闭一个通道,调节另一个通道的啸叫点; 调好一个通道后,关闭此通道,按照同样方法去调节另一个通道;两边都调好之后,还需要将两个通道同时推起来再检查是否还有其他的啸叫点,若有则仍然通过均衡器消除。传统的这些处理办法比较繁琐,不够智能,也非常讲究技巧。

今天和大家分享一款智能防啸叫电路,虽然啸叫抑制效果没有专业的处理办法调出来的效果好(暂时从笔者的调试结果来看是这样,但是理论上应该可以做到更好的效果),但是足以满足一般应用时的啸叫抑制要求。

在开始设计细节的描述前,简单交代一下这次的作图工具,因为它有点小特别,可能有些小伙伴还没用过。这次使用的工具是EasyEDA(不明所以的小伙伴可以自行百度EasyEDA),它有点像硬件工程师的老朋友PDM系统,我们可以上传设计上去,大家都可以在线查看这些设计,很好地实现了硬件设计的开源,便于查看,有用才拿来用。但是它又远不止上传并查看图纸这么简单,它还支持在线设计,看到别人的设计有使用价值可以直接拷贝到个人空间中进行二次设计。还有,每一份设计在上面就跟朋友圈的图片一样,我们可以在上面点赞和发表评论,遇到没看明白的设计,还可以直接留言咨询设计者,大大就提升了开源的效果,不单只是给出设计,还能让使用者快速使用,有点像软件开源中的说明文档。

用了蛮长时间,个人觉得EasyEDA对硬件设计开源支持是非常好的,和Github有点相似,不过侧重于开源硬件设计,而且个人觉得比Github亲民很多。Github侧重的是软件的开源,有很强大的版本管理功能,而EasyEDA侧重在线进行硬件设计,并且也具有很好的项目管理和版本管理功能。

下面描述时,可能有些图纸不够清晰,有兴趣的小伙伴可以在EasyEDA官网上搜索oscillation_suppresion关键字便可。

整个工程项目如下:

图3 工程管理

本系统的啸叫检测原理就是: 啸叫产生时,声音信号通过比较器会被整形为占空比为50% 的方波,MCU 在固定时间内对其计数便可得到方波的频率;同信号通过AD637 峰值检测电路得到的幅度。来判断频率和幅度是否稳定下来,而“稳定”这一概念量化后的衡量标准如下:MCU对频率每采样20 次,便找出这20 个频率值的最大值fh、最小值fl和取整后的众数fmode,即在20 次的测量时间内,声音信号的频率处在[fl,fh]范围内。若fh - fl < fe,并持续n 个回合( fe为频率抖动参数,n 为啸叫判定延时,20 次采样为1 回合) ,则满足“频率稳定特征”; 同时,MCU对幅度每采样20 次,便找出这20 个幅度值的最大值Vh和最小值Vl,即在20 次的测量时间内,声音信号的幅度处在[Vl,Vh]范围内。若Vh - Vl < Ve,并持续n 个回合( Ve为幅度抖动参数,n 为啸叫判定延时, 20 次采样为1 回合) ,则满足“幅度稳定特征”。本fe取200Hz,Ve取( Vh + Vl)2 × 5%,n 取10。若声音信号同时具备频率特征和幅度特征,则系统判定“声音信号在n 个回合的时间段内,变成频率稳定且幅度稳定的正弦波”,即啸叫产生。本系统的啸叫抑制原理就是通过窄带陷波器降低扩声系统开环增益,即破坏啸叫产生的幅度条件;通过全通滤波器引入相移,即破坏啸叫产生的相位条件。因此,通过消除自激振荡的两个产生条件可有效抑制扩声系统的啸叫。

系统进行啸叫抑制的工作流程为: 首先,啸叫检测电路检测到一个“主啸叫频率点”( 此频率点的开环放大倍数最大,故最先浮现) ,然后MCU将MAX262 的第一级滤波通道配置为窄带陷波器,中心频率设置为所检测到主啸叫频率,并将第二、三、四级滤波通道配置为全通滤波器,即移相器。接着,抑制完主啸叫频率点之后,啸叫检测电路继续监测是否存在“次啸叫频率点”( 此频率点的开环放大倍数较小,故没有最先浮现) ,若存在,则再次启用,将第二级滤波通道配置为窄带滤波器,中心频率设置为所检测到的次啸叫频率。同理,系统会继续监测是否存在第三个和第四个啸叫频率点,来确定如何配置第三、四滤波通道( 默认配置为全通滤波器) ,这些啸叫频率点的开环放大倍数依次减小,啸叫音量也依次减小。陷波滤波器的通道数不能过少,否则啸叫抑制不彻底; 同时也不能过多,否则会影响声音的质量。实践证明,扩音系统的啸叫现象不可能完全消除,只可能最大程度地抑制,且当抑制到第四级啸叫频点时,人耳就很难听出有啸叫产生了。故本系统只采用了四级滤波通道。

啸叫自动检测与抑制系统接入示意图如图4所示,虚线内为啸叫抑制系统。该系置于拾音电路后级,功率放大器前级。未产生啸叫时,无啸叫通路导通,拾音电路直接与功率放大器相连; 产生啸叫时,无啸叫通路断开,音频信号由拾音电路后接入啸叫抑制电路,再经过功率放大器; 由双刀双掷继电器实现音频信号的通道切换。

图4 系统接入示意图

(01) 啸叫检测电路oscillation_detection

图5 啸叫检测电路

啸叫检测电路如图5所示,包括频率检测和幅度检测。频率检测部分由LM391比较器和MCU来完成,可以实时监测声音信号的频率。输入的音频信号通过比较器整形为矩形波,对方波的上升沿计数,便可计算出方波的频率。事实上,只有啸叫时,声音信号才会变成频率稳定的正弦波,经整形成占空比为50%的方波,此时才能读出稳定的频率值。LM391输出端集电极开路,所以电路外接10KΩ的上拉电阻R45。滑动变阻器PR1可以调节阈值电压,使之与MCU的TTL 高低电平相兼容。幅度检测部分使用ADI 公司的RMS-DC 峰值检波芯片AD637,其输出电压包含输入信号的有效值信息;使用TI 公司的16 位模数转换芯片ADS1118 将输出的模拟电压量转换成数字电压量,再通过SPI 时序将包含输入音频信号有效值信息的数字电压量送给MCU的IO口,便可计算出声音信号的幅度。

(02)啸叫抑制电路oscillation_suppression

图6 啸叫抑制电路

图7 MAX262原理框图

MAX262 是由MAXIM 公司生产的CMOS 双二阶通用开关电容有源滤波器,原理框图如图7所示,由微处理器精确控制滤波函数,可配置成低通、高通、帯通、带阻和全通滤波器,且无需外部电路,需要程序设置中心频率f0、品质因数Q 和工作方式MODE,同时需要保证外部时钟频率fclk对滤波器中心频率f0的比值精度为1%( A 级) ,故系统采用MCU来提供精确的外部时钟,完全能够满足A级精度要求。另外,为了提高时钟频率对中心频率的比值精度,系统固定采样频率控制字FN =63,即将开关电容的采样频率参数配置为最大值。这样,外部时钟频率就获得了最大的可变范围。设滤波器的品质因数为Q,中心频率为f0,则MAX262 的控制字QN 和所需要的外部时钟频率fclk可由公式( 8) 和公式( 9) 计算得到。

QN = 128 - 90.51 /Q ( 8)

fclk = 44.5 × π × f0 ( 9)

由于信号经过MAX262 会引入负偏置,故在四个滤波通道( 每片MAX262 含有两个滤波通道) 后各加上一个0.1uF 的隔直电容用以消除芯片引入的负偏置。啸叫抑制电路最多可有效抑制4个啸叫频率点。若系统啸叫检测电路判定系统存在的两个啸叫频率点分别是2kHz 和3kHz,则由继电器切换至啸叫抑制电路后,MCU配置前2 级程控滤波通道为窄带陷波器,中心频率分别为2kHz 和3kHz;同时配置后2 级程控滤波通道为全通滤波器。啸叫抑制电路如图6所示,电路由两片MAX262 构成,通过MCU对其进行配置并提供可变的驱动时钟。

(03)主控电路MCU

图8 主控电路

图9 主控内部原理框图

主控芯片选的是宏晶的STC12C5A60S2,只需外接一片MAX3232就能完成程序的下载和调试程序。无论是啸叫检测程序还是啸叫抑制电路的控制程序都跑在上面。

(04)音频放大与选通电路audio_amplifier

图10 音频放大与选通电路

音频放大电路将音频输入输出作适当的放大。当系统的啸叫检测电路判定啸叫产生时,立刻控制继电器从图4中的“无啸叫通路”切换到“啸叫抑制电路”;当系统无啸叫产生时,再控制继电器切回到“无啸叫通路”。

(05)电源电路power

图11 电源电路

因为设计涉及到运放电路,为了得到较大的输入输出范围,并且获得较好的音频效果,运放均采用双电供电。本设计的电源包括±12V和±5V。

(06)锁存电路GPIO

图12 锁存电路

为了简化编程,并且将资源用在啸叫检测上,在控制GPIO口与有源滤波器之间加入锁存器,锁定GPIO口控制状态。

原理图就这么多,主要是要注意啸叫检测与抑制电路的设计。接下来描述一下PCB layout。先看效果图,EasyEDA的效果图跟实际的样板似的,相当逼真,如下:

图13 正面效果图

图14 底面效果图

PCB图共有两层,具体如下:

图15 顶层走线图

图16 底层走线图

设计的注意点有几个:1、注意防护元器件的放置,要就近放置在信号的输入方向;2、涉及数模混合涉及,电源和地设计要注意隔离,中间使用磁珠或者电容进行隔离;3、主控芯片尽量放在设计的中央;4、如果为了全面评估方案的效果,建议将板卡设计成4层,中间走电源和底层,并将底层做到最完整的。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ADI 高精度低功耗精密放大器