任务名称
2007年_A题:音频信号分析仪
任务要求
难度

一、任务
设计、制作一个可分析音频信号频率成分,并可测量正弦信号失真度的仪器。

二、要求
1.基本要求
(1)输入阻抗:50Ω
(2)输入信号电压范围(峰-峰值):100mV~5V
(3)输入信号包含的频率成分范围:200Hz~10kHz
(4)频率分辨力:100Hz(可正确测量被测信号中,频差不小于 100Hz 的频率分量的功率值。)
(5)检测输入信号的总功率和各频率分量的频率和功率,检测出的各频率分量的功率之和不小于总功率值的 95%;各频率分量功率测量的相对误差的绝对值小于 10%,总功率测量的相对误差的绝对值小于 5%。
(6)分析时间:5 秒。应以 5 秒周期刷新分析数据,信号各频率分量应按功率大小依次存储并可回放显示,同时实时显示信号总功率和至少前两个频率分量的频率值和功率值,并设暂停键保持显示的数据。
2.发挥部分
(1)扩大输入信号动态范围,提高灵敏度。
(2)输入信号包含的频率成分范围:20Hz~10kHz。
(3)增加频率分辨力 20Hz 档。
(4)判断输入信号的周期性,并测量其周期。

(5)测量被测正弦信号的失真度。
(6)其他。

三、说明
1.电源可用成品,必须自备,亦可自制。
2.设计报告正文中应包括系统总体框图、核心电路原理图、主要流程图、主要的测试结果。完整的电路原理图、重要的源程序、和完整的测试结果用附件给出。

评审标准

参考答案

GPT-4o给出的设计方案


一、系统概述

设计一个仪器,用于分析输入信号的频率成分并测量正弦信号的失真度。系统输入阻抗为50Ω,输入电压范围为100mV到5V,频率范围为20Hz到10kHz。分析频率分辨力为20Hz,能够检测各频率成分的功率占比。系统需能够测量信号的总功率及其在各频率成分的分担情况,误差不超过5%。

二、系统组成

  1. 信号输入模块:包括输入缓冲和放大电路。
  2. 模数转换模块:将模拟信号转换为数字信号,以便进一步分析。
  3. 频谱分析模块:使用FFT或其他频谱分析算法计算频率成分。
  4. 显示与存储模块:显示分析结果,并可以存储和回放历史数据。

三、理论分析

  1. 放大输入信号动态范围

    • 设计仪器需适应100mV到5V的输入信号。使用可调增益放大器来放大输入信号,确保信号在模数转换器ADC的有效范围内。
  2. 频谱分析

    • 使用快速傅里叶变换(FFT)对输入信号进行频率成分分析。频率分辨率为20Hz,则需要1 / 20Hz = 0.05s的时间窗口采样数据。
  3. 误差分析

    • 保证总功率测量的相对误差在5%以内,各频率分量功率和总功率匹配度高于95%。选择高精度的ADC和稳定的FFT算法至关重要。

四、关键电路设计要点

  1. 信号输入及放大

    • 输入阻抗匹配:设计一个50Ω的匹配网络,保证输入信号正常传输。
    • 可调增益放大器:使用运算放大器(如AD620),并设计适当的反馈网络来调节增益。
  2. 模数转换器(ADC)

    • 选用高精度ADC(如ADS1115),其分辨率满足数据量化需求。
  3. 信号处理

    • 频谱分析使用快速傅里叶变换(FFT)算法,可以实现实时频谱分析和功率计算。

五、核心器件设计要点

  1. AD620(可调增益放大器)

    • 增益调节范围:1~1000,以适应不同输入信号幅度。
    • 低噪声特性:保证高信噪比与精确测量。
  2. ADS1115(16位ADC)

    • 输入范围:0~5V,可与放大信号吻合。
    • 高速采样:能够实现高达860SPS的采样率,满足频率分析需求。

六、主要原理图设计

下面是设计一个可分析音频信号频率成分和测量正弦信号失真度的仪器的主要原理图设计。这只是一个概述,实际的设计可能需要更详细的优化与调整。

1. 信号输入及放大模块

包含一个50Ω的匹配网络和可调增益放大器(使用运算放大器AD620)。

信号输入及放大电路原理图

              +5V
               |
              .-.
              |<|  LED
              '-'
               |
               |--------R1---------|
               |                    |
             -----                  |
             ----- C1               |
               |                    |    
              GND                   |
               |                   VOCM----> AD620 Ref Pin 
              Rin                  |
 (Input) ----|----Rin---+---+  AD620
                    -|/  
                      |
                     GND
  • Rin:输入匹配电阻50Ω
  • AD620:可变增益放大器,通过调节反馈网络实现信号放大

2. 模数转换模块(ADC)

选用ADS1115,高精度16位ADC。ADS1115可以连接到单片机(如Arduino)或FPGA进行数据采集。

ADC电路原理图

                +5V
                 |
               .----.
               | VCC|
              -|SDA |-----> MCU/FPGA Data
GND-------------|GND |
               -|SCL |-----> MCU/FPGA Clock
ADC  Input----           (from AD620 output)
               -|ADDR|     
                 | NC|
GND-------------|GND | 
               -|A0 |------\ 
                 .----.       } select input channels
GND-------------|A1 |------/
               -|A2 |
             - |A3 |
               '----'

注意:具体电路连接可能会依MCU/FPGA类型和原理图设计有不同。

3. 频谱分析模块(MCU/FPGA)

如使用MCU,接口连接及频谱分析算法

MCU会读取ADS1115的输出数据,然后进行FFT计算。

                +5V
                 |
               -----
              |     |
              | MCU |
              |     |
               -----
               /  | \
             /    |   \
           ---- ---- ----
          |    |    |    |
          |ADC |     |DAC|    |

代码示例 (FFT算法,C语言)

#include <arduinoFFT.h>

#define SAMPLES 128 // Must be a power of 2
#define SAMPLING_FREQUENCY 1000 // Hz, must be less than 10000 due to ADC conversion time.
arduinoFFT FFT = arduinoFFT();

unsigned int sampling_period_us;
unsigned long microseconds;
double vReal[SAMPLES];
double vImag[SAMPLES]

void setup() {
  Serial.begin(115200);
  sampling_period_us = round(1000000*(1.0/SAMPLING_FREQUENCY));
}

void loop() {
  /* SAMPLING */
  for(int i=0; i<SAMPLES; i++)
  {
      microseconds = micros();  
      vReal[i] = analogRead(0);
      vImag[i] = 0;
      while(micros() < (microseconds + sampling_period_us)){
      }
  }

  /* FFT */
  FFT.Windowing(vReal, SAMPLES, FFT_WIN_TYP_HAMMING, FFT_FORWARD);  
  FFT.Compute(vReal, vImag, SAMPLES, FFT_FORWARD);
  FFT.ComplexToMagnitude(vReal, vImag, SAMPLES);

  /* Output Results */
  for(int i=0; i<(SAMPLES/2); i++)
  {
      Serial.print((i * 1.0 * SAMPLING_FREQUENCY) / SAMPLES, 1);
      Serial.print(" ");
      Serial.println(vReal[i],1);  
  }
  delay(1000);  // pause for one second
}

4. 显示与存储模块

此模块通过MCU来控制,例如使用液晶屏显示频谱分析结果,同时使用存储器或SD卡模块来记录数据。

结论

以上主要原理图设计包括信号输入及放大模块,模数转换模块以及频谱分析模块。结合适当的显示与存储模块,构成了一个完整的频率分析和信号失真度测量系统。完整的设计与调试可能需要进行调整和优化来适应特定需求。


本题考察的主要知识点:

本题主要考察信号处理与频谱分析的基本知识、模拟信号到数字信号的转换、增益调节与信号放大、误差分析与校正等方面的知识。此外,还涉及高精度采样与数据存储、快速傅里叶变换(FFT)算法的实现、频率成分检测以及相关电子电路设计的基础技能。这些知识在实现一个精确的信号频率组成分析仪器中尤为重要。

硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号