一、任务
设计、制作一个可分析音频信号频率成分,并可测量正弦信号失真度的仪器。
二、要求
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%。
放大输入信号动态范围:
频谱分析:
误差分析:
信号输入及放大
模数转换器(ADC)
信号处理
AD620(可调增益放大器)
ADS1115(16位ADC)
六、主要原理图设计
下面是设计一个可分析音频信号频率成分和测量正弦信号失真度的仪器的主要原理图设计。这只是一个概述,实际的设计可能需要更详细的优化与调整。
包含一个50Ω的匹配网络和可调增益放大器(使用运算放大器AD620)。
+5V
|
.-.
|<| LED
'-'
|
|--------R1---------|
| |
----- |
----- C1 |
| |
GND |
| VOCM----> AD620 Ref Pin
Rin |
(Input) ----|----Rin---+---+ AD620
-|/
|
GND
选用ADS1115,高精度16位ADC。ADS1115可以连接到单片机(如Arduino)或FPGA进行数据采集。
+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类型和原理图设计有不同。
MCU会读取ADS1115的输出数据,然后进行FFT计算。
+5V
|
-----
| |
| MCU |
| |
-----
/ | \
/ | \
---- ---- ----
| | | |
|ADC | |DAC| |
#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
}
此模块通过MCU来控制,例如使用液晶屏显示频谱分析结果,同时使用存储器或SD卡模块来记录数据。
以上主要原理图设计包括信号输入及放大模块,模数转换模块以及频谱分析模块。结合适当的显示与存储模块,构成了一个完整的频率分析和信号失真度测量系统。完整的设计与调试可能需要进行调整和优化来适应特定需求。
本题考察的主要知识点:
本题主要考察信号处理与频谱分析的基本知识、模拟信号到数字信号的转换、增益调节与信号放大、误差分析与校正等方面的知识。此外,还涉及高精度采样与数据存储、快速傅里叶变换(FFT)算法的实现、频率成分检测以及相关电子电路设计的基础技能。这些知识在实现一个精确的信号频率组成分析仪器中尤为重要。