第三章 音频采集硬件:麦克风类型与选型、前置放大器设计、抗混叠滤波器、ADC选型与配置

各位工程师朋友,咱们今天聊聊音频采集的硬件基础。说实话,这部分内容在航空电台里特别关键——你前端采集做不好,后面降噪算法再牛也白搭。我这些年调试过的电台,有一半的噪声问题其实都出在硬件前端,而不是算法。

3.1 麦克风类型与选型

航空电台用的麦克风,跟咱们手机上的完全不是一回事。环境不一样,要求自然也不同。

动圈麦克风是我个人最偏爱的航空选择。为什么?因为它皮实。动圈麦克风靠电磁感应工作,结构简单,不需要外部供电。我在某次外场测试时,机舱温度零下二十度,电容麦克风直接罢工,动圈麦克风照样干活。

动圈麦克风的主要参数:

  • 灵敏度:一般在-50dB到-70dB之间。别追求太高灵敏度,航空环境噪声大,灵敏度高了反而麻烦。
  • 频率响应:300Hz-3.4kHz就够了。这是航空语音通信的标准带宽,超出这个范围的声音反而会干扰通信质量。
  • 阻抗:常见150Ω-600Ω。我建议选200Ω左右的,匹配性好。

电容麦克风呢?灵敏度高、频响宽,但娇气。需要幻象供电,对湿度和温度敏感。我一般只在实验室测试时用,真正装机还是动圈靠谱。

驻极体麦克风介于两者之间。灵敏度不错,体积小,价格便宜。但稳定性差一些,长时间使用后参数会漂移。嗯,这里要注意:航空设备要求的是长期可靠性,驻极体不太适合。

选型建议:航空电台首选动圈麦克风,灵敏度-60dB左右,阻抗200Ω,频率响应300Hz-3.4kHz。如果一定要用电容麦克风,务必选择带防潮处理的工业级型号。

3.2 前置放大器设计

麦克风出来的信号有多弱?我测过,动圈麦克风在正常说话时输出只有几毫伏。这点信号直接送ADC?想都别想。前置放大器就是干这个的——把微弱的麦克风信号放大到ADC能处理的电平。

设计前置放大器,我总结了几条铁律:

  1. 低噪声是第一位的。你想想看,信号本身才几毫伏,放大器自己产生的噪声如果跟信号差不多,那还玩什么?我习惯用OPA1611这类低噪声运放,噪声密度低至1.1nV/√Hz。
  2. 增益要适中。一般40-60dB就够了。增益太高容易自激,太低又浪费ADC的动态范围。我通常分两级放大:第一级20dB,第二级20-40dB可调。
  3. 输入阻抗要匹配。动圈麦克风是低阻抗器件,前置放大器输入阻抗应该比麦克风阻抗高10倍以上。200Ω的麦克风,放大器输入阻抗至少2kΩ。

实战经验:我曾经在一个项目中,前置放大器怎么调都有低频哼声。查了两天才发现是电源纹波的问题。后来加了π型滤波,问题解决。记住:前置放大器的电源质量直接影响信噪比。

一个典型的前置放大器电路结构:

麦克风 → 耦合电容 → 第一级放大(20dB) → 高通滤波(100Hz) → 第二级放大(20-40dB) → 低通滤波(3.4kHz) → 输出

耦合电容的选择要小心。太小了低频响应差,太大了又会有瞬态失真。我一般用10μF的钽电容,配合1kΩ的输入电阻,截止频率在16Hz左右,够用了。

3.3 抗混叠滤波器

抗混叠滤波器,说白了就是ADC前面的最后一道防线。为什么要加它?因为ADC采样时,高于奈奎斯特频率的信号会折叠到低频段,产生混叠失真。这个失真一旦产生,后面的数字处理再怎么折腾也去不掉。

我记得刚入行时犯过一个错误:觉得反正后面有数字滤波,模拟滤波器随便弄弄就行。结果采样出来的信号全是高频噪声折叠下来的伪影,根本没法用。从那以后,我再也不敢轻视抗混叠滤波器了。

设计抗混叠滤波器要注意几点:

  • 截止频率:设为ADC采样率的1/2.5到1/3。比如采样率8kHz,截止频率设在2.7kHz左右。留点余量,别卡在理论极限上。
  • 阶数:至少4阶。我习惯用6阶巴特沃斯滤波器,通带平坦,阻带衰减够用。
  • 实现方式:用Sallen-Key结构或者多重反馈结构。Sallen-Key对元件容差要求低一些,适合批量生产。

警告:千万别用开关电容滤波器做抗混叠!开关电容本身会产生时钟噪声,这些噪声会直接混入音频信号。我见过有人这么干,结果滤波器输出的噪声比信号还大。

一个实用的6阶低通滤波器设计参数(截止频率2.7kHz):

第一级:Sallen-Key,Q=0.518,R=10kΩ,C=5.9nF
第二级:Sallen-Key,Q=0.707,R=10kΩ,C=8.4nF  
第三级:Sallen-Key,Q=1.932,R=10kΩ,C=23nF

实际调试时,电容值可能需要微调。我一般用1%精度的电阻,5%精度的C0G电容,效果不错。

3.4 ADC选型与配置

ADC是整个模拟链路的终点,也是数字处理的起点。选对了,事半功倍;选错了,前面所有努力都白费。

航空音频ADC的选型要点:

参数 推荐值 说明
采样率 8kHz-16kHz 航空语音带宽3.4kHz,8kHz采样就够了。16kHz可以留点余量做后期处理。
分辨率 16bit 12bit动态范围不够,24bit又太浪费。16bit是性价比最好的选择。
信噪比 ≥90dB 低于90dB的话,量化噪声会明显影响语音质量。
输入范围 ±1V到±3V 配合前置放大器输出电平,别留太多余量也别削波。

我常用的ADC型号是AD7689,16bit,500kSPS,信噪比95dB。为什么选它?因为它内置了参考电压和温度传感器,省了不少外围电路。在航空设备这种对可靠性要求高的场合,少一个元件就少一个故障点。

配置ADC时,我习惯这样做:

  1. 设置采样率:用外部晶振驱动,别用内部振荡器。内部振荡器温漂大,频率不准。
  2. 选择参考电压:用外部精密参考源,比如REF5025。内部参考电压精度不够,会影响测量准确性。
  3. 配置输入模式:差分输入优先。差分输入能抑制共模噪声,这在航空电磁环境复杂的场合特别重要。
  4. 开启数字滤波:如果ADC内置了数字滤波器,可以开启。但注意不要跟后面的抗混叠滤波器重复。

关键提醒:ADC的模拟地和数字地一定要分开走线,最后单点连接。我见过太多人因为地线没处理好,导致ADC性能大打折扣。说白了,ADC是个混合信号器件,模拟部分和数字部分互相干扰是常有的事。

ADC的初始化代码示例(伪代码):

// 配置AD7689
void ADC_Init(void) {
    // 1. 复位ADC
    ADC_Reset();
    
    // 2. 配置采样率 16kHz
    // 假设主时钟 4.096MHz,需要256个时钟周期完成一次转换
    Set_SampleRate(16000);
    
    // 3. 配置输入通道 0,差分模式
    Set_Channel(0, DIFFERENTIAL);
    
    // 4. 配置参考电压 2.5V,外部参考
    Set_Reference(EXTERNAL, 2.5);
    
    // 5. 开启内部数字滤波器,截止频率 3.4kHz
    Enable_DigitalFilter(3400);
    
    // 6. 启动连续转换模式
    Start_ContinuousConversion();
}

最后说一句:ADC的布局布线比选型更重要。同样的芯片,布局好的人能跑出95dB信噪比,布局差的人可能只有80dB。我个人的习惯是:ADC下面铺完整的地平面,模拟输入走线尽量短,数字信号线远离模拟输入引脚。

好了,音频采集硬件这部分就聊到这儿。下一章咱们讲数字音频接口,到时候再细聊I2S和PDM这些协议。有什么问题欢迎交流。