概述

使用运算放大器对mic采集到的音频信号进行放大偏置,通过ADC进行采集,使用ARM-DSP FFT进行计算,得到频谱,使用u8g2量化显示。

前言

在人耳能听到的频率范围(20-20KHz)中,各类乐器和人声的频率大部分在 5KHz 以下。主要是在 0-5KHz 这段频率的频谱变化明显一些,所以观赏性更好。故我们设置采样频率为 10KHz(根据采样定理,采样频率要大于信号最大频率的两倍,才能保证不失真)来采集这 0-5KHz 的音频信号。显示是使用的 0.96 OLED-12864 屏,分辨率为 128*64,在 x 轴方向上最多显示 128 个点,所以我们把采样点数设置为 256 个点,因为 FFT 计算出来的数据是对称的,我们只取一半, 128 个点刚刚好。

电路设计

音频采集放大偏置电路

可以参考一下这篇内容

MIC信号输入通过电容耦合去除直流分量。也可以使直流偏置与放大倍数无关,图中+极输入为直流偏置电压,相当于反向信号+2.5v,一般会采用精密电源直接提供电压可以得到更稳定的直流偏置效果
信号进入-极,输出的信号为反向信号,可以通过调节滑动变阻器调节输入信号的放大倍率,再通过耦合电容去除直流分量,可以单电源实现电流放大

可以直接使用max9814进行信号的放大与直流偏置,AGC(自动增益)可以接受更细微的声音,比如远处的声音,也可以手动在一定范围内调节增益

由于单片机的ADC不能采集到负值,随意需要吧信号加上1/2Vcc的直流偏置,50倍增益可调

这里如果考虑多一些,应当加一个低通滤波,去除高频信号的影响,防止出现频谱叠加,影响观赏效果。我们简单制作,就不考虑这个了。

下图是我自己做的咪头放大电路,原理图就是上面的。

实际上我自己则是直接买了成品的音频采集放大器模块,省的焊很多的线路

使用ADC采集咪头电路的输出信号,使用定时器触发ADC采样,采样完成后使用DMA搬运到指定位置,搬运完成后调用FFT函数进行计算。需要注意的是,因为采集的信号加了一定的直流偏置,我们需要减去加上的直流偏置,可以直接减去指定的数值,比如1.5v/3.3v*4096=1872,这样就可以减去1.5v的直流偏置了。我代码里则是计算了这段时间的平均值,然后减去平均值,可能可以避免因为直流偏置的波动而导致的频谱波动。如果这个直流分量不减,频谱的直流分量则会非常大

标签: none

添加新评论