2014TI杯(D题)带啸叫检测与抑制的音频功率放大器

为了能够在2018年的TI杯电子设计竞赛中获得个好成绩,也为了多学些知识,我和我的团队选了2014年TI杯大学生电子设计竞赛的D 题来训练:带啸叫检测与抑制的音频功率放大器

 

第一眼看到这个题目时,感觉难度似乎不大,前几问都是做个音频功率放大器,无非是指定了芯片,要求功率程序可调,这个挺容易实现的啊,用数字电位器就可以很方便的解决的啊。

 

后面啸叫的检测部分。了解到,啸叫是因为声场的作用,导致输出反馈进入输入,使得某一个频率的信号呈现增幅震荡,经喇叭放大形成了啸叫。既然是单频信号,就会有很多的方法可以检测到这个频率,比如:使用一个单限比较器,当出现啸叫时,单频信号幅度足够大,达到了比较器的阈值电平,就会被整形成方波,送入单片机就可以测出频率值。还可以使用数字的方法,将音频信号放大、抬高之后送给单片机的ADC单元、之后对采集到的离散的电压信号做傅里叶变换,这样就可以得到这一段信号的频谱,找出频谱中幅度最大的那个点,对应的频率就是啸叫频率。

得到频率后,显示出来。之后就是抑制了,我们计划了以下几种方案:首先就是使用专用的程控滤波芯片MAX262,软件设置滤波中心频率、Q值和滤波器类型,但现成的模块比较贵,康威科技做的一块就要188。然后想到了使用数字滤波的方法,这多省事,滤波电路都不用搭,而且ARM已经提供了FIR和IIR滤波的函数,只要调用就可以了。最后还有一种纯模拟的方法,就是移频电路,将信号的频谱搬移几个Hz,再与原信号相加,这样就可以破坏原始信号的相位特征,使得反馈回路建立不起来,从而抑制啸叫。测量输出功率使用有效值检测模块,方案大体就是这样,接下来就是在做的时候出了好多问题。


以下内容更新于2018/07/25日


大概一个月之前写的上面的内容,现在电赛已经做完了,有时间来完善一下了,但是当时好多的细节都已经有点不清晰了。

制作功放的时候,要求了使用TPA3112这个功放芯片,于是就淘了几片,设计电路是让一个队友来做的,他也是刚刚入门,就焊过几个放大器啊比较器之类的基础电路,自主设计还没怎么做过。我让他仔细看看数据手册,再在网上找一找有没有好的电路解决方案,最终选定了TI手册中给出的那个典型电路图:

                           

根据这个电路图焊出了个洞洞板电路,加上了输入信号,但是输出信号的功率一直上不去,好像是到了5W的时候就没有波形了,然后重新上电才会再出来,看了看手册,应该是芯片的自我保护模式,但一直不知道为什么会进入自我保护模式,说的明明是可以达到25W的,然后我们加大了供电电压,不幸的是芯片一下子就烧了,特别的烫。

没办法,按照手册上说的,供电电压是可以达到26V的。我18V就把它烧了(至今仍然不知为什么),为了验证是不是电压太大把它烧了,我们又卖了几个芯片实验,又在网上查找论文,但所有的论文里面的电路都是一样的这一个典型电路,就像是所有的假芯片都被我买到了一样,所以……最后……终于发现不了什么原因,但为了可以使用,我们只能把供电电压限制在一个安全水平。

之后是啸叫的检测,考虑到了啸叫频率可能会有多个,而且为了不受到音频信号的干扰,我们没有使用比较器通过测方波频率的方法来检测啸叫频率,而是使用了AD采集4096个点,将信号做4096点的实数FFT运算,得到频谱,进而确定啸叫频率的。

得到了啸叫的频率,然后就是啸叫的抑制,我们首先是尝试了数字滤波方法,使用IIR滤波,单片机先采集一段信号,然后做个傅里叶变换测出来啸叫频率,然后使用对应的参数进行IIR滤波,这个参数是使用Matlab提前生成的,需要生成许多的数据,因为啸叫的频率在变化,只能先建立一个离线的很大的系数表,得到频率后就去查找,得到对应的系数数组,进行IIR滤波。我们使用的是NUCLEO-F767的板子,F7具有双精度的浮点运算单元,计算FFT啊或者IIR啊还是很快的,测试的时间是小于4个毫秒,但是问题是采集一段波形需要时间,FFT和IIR只能对一个数组里的数进行操作,不能动态的对数据进行处理,这就导致了很大的延迟,计算了一下,大概会有50ms的延时,播放音乐时已经可以分辨出了,而且不知为什么输出的声音信号有很大的噪声,特别不清晰。最终我们放弃了这个方法;

改成了使用程控滤波器MAX262,我们买了芯片,自己动手开始焊接,根据手册……结合康威科技……做了个电路,程序也写了写,发现效果还真的好,而且使用方便,直接软件修改中心频率和Q值就可以。

……吃了个饭……回来再测芯片就烧了,特别烫,不知道为啥,换了一个,加上电压,发现输出电流也不大,但是芯片发烫,很烫,又烧……这是怎么回事,一瞬间烧了两个芯片了……50多块钱啊。

不知为什么,然后自己比较了一下我的电路和别人的电路的区别,发现只有电源供应处,我比他少了两个二极管!!!难道真的是因为电压高,手册里写的±5V的供电范围啊,没办法,只好是又加上了两个二极管,发现终于不烧了,真开心

然后就基本没有什么特别难的地方的,有个有效值检测电路,我们也自己做了一个,用的是有效值检测芯片AD736,效果还可以。

整体调试还算顺利,可以抑制啸叫,效果不错,最后附上一张整个系统的照片:


2018/07/25/23:46

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
FPGA(现场可编程门阵列)的啸叫检测抑制系统设计是一种用于检测并减少噪音、啸叫和干扰的技术,该技术广泛应用于声音处理、通信系统和无线电设备中。 在这个系统中,FPGA是关键的处理单元,它通过采集和分析信号来检测是否存在啸叫。首先,系统需要将输入信号进行采样和滤波处理,以去除高频噪声和啸叫。随后,FPGA使用数信号处理算法对滤波后的信号进行分析,并判断是否存在啸叫。 一旦检测啸叫,FPGA将采取相应的措施来抑制它。其中一种常见的方法是使用自适应滤波算法。该算法根据检测到的啸叫频率和幅度调整滤波器的参数,以实现最佳的抑制效果。另外,FPGA还可以通过动态增益控制和相位调整来进一步减少啸叫的影响。 设计这个系统需要考虑如下几个关键因素。首先是采集和滤波的采样率和精度,如果采样率过低或精度不够高,可能会导致对啸叫检测不准确。其次是算法的选择和优化,需要根据具体应用场景和要求来选择最适合的检测抑制算法。此外,系统还需要合理的输入和输出接口设计,以适应实际应用环境。 总之,FPGA的啸叫检测抑制系统设计是一项在声音处理和通信领域有着广泛应用的技术。通过采用适当的算法和参数配置,该系统能够有效地检测抑制啸叫,从而提高音频质量和通信可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值