音频信号分析仪设计_第1页
音频信号分析仪设计_第2页
音频信号分析仪设计_第3页
音频信号分析仪设计_第4页
音频信号分析仪设计_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 27 页 摘要 本音频信号分析仪以STM32F103为主控制器,通过AD转换,对音频信号进行采样,把连续信号离散化,然后通过FFT快速傅氏变换运算,在时域和频域对音频信号各个频率分量以及功率等指标进行分析和处理,然后通过高分辨率的LCD对信号的频谱进行显示。该系统能够精确测量的音频信号频率范围为20Hz-10KHz,其幅度范围为5mVpp-5Vpp,分辨力为100Hz。 关键词: STM32F103 FFT 频谱 功率 Abstract The audio signal analyzer is based on a 32-bit MCU controller, through the AD

2、 converter for audio signal sampling, the continuous signal discrete, and then through the FFT fast Fourier transform computing, in the time domain and frequency domain of the various audio frequency signal weight and power, and other indicators for analysis and processing, and then through the high

3、-resolution LCD display signals in the spectrum. The system can accurately measure the audio signal frequency range of 20 Hz-10KHz, the range of 5-5Vpp mVpp, resolution of 100 Hz correspondent.Keyword: STM32F103 FFT Spectrum Power 前言 随着信息社会的到来,计算机技术已经在科学研究与应用领域中得到了最引人注目的应用和推广;尤其在信息、信号处理及其通信方面有其特殊的优越

4、性。我们常见的音频信号分析仪,它是一种用来对被测信号进行频率、频谱及波形分析的重要测量工具,广泛应用于电声测量、音频制作、信号分析乃至振动测试等领域。随着数字技术的飞速发展,这种复杂仪器已经可以在一个普通的单片机系统上用软件来实现,即所谓的“音频信号分析仪”。 第一章 系统总体方案设计1.1实验要求设计、制作一个可分析音频信号频率成分,并可测量正弦信号失真度的仪器。1.1.1基本要求(1)输入阻抗:50(2)输入信号电压范围(峰-峰值):100mV5V(3)输入信号包含的频率成分范围:200Hz10kHz(4)频率分辨力:100Hz(可正确测量被测信号中,频差不小于100Hz的频率分量的功率值

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

6、其他。1.2 整体方案整体方案如图1.1所示音频信号经过一个由运放和电阻组成的50 Ohm阻抗匹配网络后,经由量程控制模块进行处理,若是一般的100mV-5V的电压,我们选择直通,也就是说信号没有衰减或者放大,但是若信号太小,12位的A/D转换器在2.5V参考电压的条件下的最小分辨力为1mV左右,所以如果选择直通的话其离散化处理的误差将会很大,所以若是采集到信号后发现其值太小,在20mV-250mV之间的话,我们可以将其认定为小信号,从而选择信号经过20倍增益的放大器后再进行A/D采样。经过12位A/D转换器ADS7819转换后的数字信号经由STM32F103进行FFT变换和处理,分析其频谱特

7、性和各个频率点的功率值,然后将这些值送由LCD进行显示。信号由STM32F103分析后判断其周期性,然后进行显示。 图1.1整体方案图1.3模块分析从整体方案图中,我们可以得到系统所需的模块:中心模块:STM32F103的FFT的算法编程;阻抗匹配电路;峰值检测;增益放大电路;滤波器设计;AD转换;液晶显示模块。下面就围绕这些模块进行硬件电路设计。 第二章:分模块硬件电路设计2.1 阻抗匹配电路 由于设计指标要求输入阻抗为50欧姆,所以在前端电路信号输入处加了一个跟随电路,利用一个50欧姆的电阻与一运放的输入端并联,满足50欧姆输入阻抗的要求,在选择运放方面,通过查资料我们比较了各种运放,选择

8、了带宽增益积较高、输入失调电压较小比较适合音频信号的NE5532。 其中用到运放NE5532,NE5532是高性能低噪声双运算放大器(双运放)集成电路。与很多标准运放相似,但它具有更好的噪声性能,优良的输出驱动能力及相当高的小信号带宽,电源电压范围大等特点。因此很适合应用在高品质和专业音响设备、仪器、控制电路及电话通道放大器。用作音频放大时音色温暖,保真度高,在上世纪九十年代初的音响界被发烧友们誉为“运放之皇”,至今仍是很多音响发烧友手中必备的运放之一。 利用Multisim仿真原理图如图2.1 图2.1阻抗匹配仿真原理图仿真结果如图2.2所示,其中输入信号为Vp-p 4V,1KHz的正弦波,

9、得到输出也为同等参数的正弦波。 图2.2阻抗匹配仿真结果图2.2峰值检测电路峰值检测电路设计的要点:1.模拟开关存储器,即电容2.单向电流开关,即二极管3.当一个新峰值到来,是电容电压能够跟踪输入电压,电压跟随,输入输出缓冲4.电容放电复位开关设计原理框图:利用到运放OP07:OP07芯片是一种低噪声,非斩波稳零的双极性(双电源供电)运算放大器集成电路。由于OP07具有非常低的输入失调电压(对于OP07A最大为25V),所以OP07在很多应用场合不需要额外的调零措施。OP07同时具有输入偏置电流低(OP07A为±2nA)和开环增益高(对于OP07A为300V/mV)的特点,这种低失调

10、、高开环增益的特性使得OP07特别适用于高增益的测量设备和放 大传感器的微弱信号等方面。利用Multisim仿真原理图如图2.3 图2.3 峰值检测仿真原理图 图2.4峰值检测仿真结果图仿真结果如图2.4,当输入是正弦信号时,输出是紧贴峰值的直流电压,满足实验要求 2.3增益放大 直接利用运放电路来搭建各种增益放大电路,利用比较器和继电器来选择不同的信号的不同放大倍数,可以满足要求,电路元件较小且较容易控制,实现了小信号大增益,大信号小增益。 放大电路同时设置了×1,×5, ×0.5,3 个放大通道,分别对100mv到300mv,300mv到3v和3v到5v的峰峰

11、值范围内的信号进行不同放大,这样将可测量信号的动态范围扩展到了50mV;电路图见图2-5。同时通过峰值保持电路记录一个FFT 运算周期内的信号峰值,通过与设定的参考电压进行比较以确定信号的峰峰值范围,以作为下一次采样时放大通道的选择参考;控制器通过模拟开关来选择不同的放大通道。 图2.5 5倍放大和一倍放大电路,利用的是最基本的运算电路,同相比例运算电路。0.5倍的电压放大是为了满足后端电路ADC模块的输入范围0到3.3v的需要,0.5倍不能用同相比例运算电路,我们选择的是两路反向比例运算电路级联,前一级是放大一倍,为了使信号相位反相,以便于在下一级0.5倍放大后与输入信号同相,电路图如下所示

12、: 图2.62.4低通滤波器设计 音频信号的频率范围是20hz到20khz,为了有效的滤除各种干扰信号,我们设计了一个20khz的低通滤波器,利用OP27及其外围元件采用的是VCVS(VCVS全称为Voltage Controlled Voltage Source电压控制电压源)电路设计的一种巴特沃斯低通滤波器。 图2.7四阶巴特沃斯低通滤波器 图2.8滤波器仿真结果图 第三章 软件设计3.1程序设计流程 在本设计中,控制及计算部分都由STM32来实现。其中STM32核完成液晶显示、FFT 算法实现、功率计算、A/D 转换控制,增益选择控制等,系统流程图如图3.1: 图3.1软件流程图3.2

13、FFT算法采用FFT实现采集的音频信号频域分析,得到音频信号中各频率分量的大小。FFT运算主要分为位倒置和蝶形运算两个功能部分。其中位倒置程序流程如图3-3。 蝶形运算设计:由X1(k)、X 2(k)表示X(k)的运算是一种特殊的运算-碟形运算 实现上式运算的流图称作蝶形运算(N/2个蝶形)。由上式可以看出蝶形运算主要是系数的确定。而第L级的系数因子为(L=1,2,3.,M)。 ,(J=0,1,2,.,) 即第L级的蝶形运算系数因子类型数为个。设系统共有M级,可得 即有,。 图3.2位倒置程序流程图3.3 AD转换本设计中要求分析的信号峰峰值范围为100mVp-p5Vp-p,用8 位A/D 进

14、行采样,不能满足题目的精度要求(5000/255 = 19.6mV,相对于5Vp-p 信号,相对误差达到了20%),采用12 位的A/D 芯片,其分辨率可达到1.2mV(相对于5Vp-p 信号),满足了题目要求的5%误差范围。同时其100K 的采样频率也满足本设计中的频率要求。3.4功率计算 功率谱测量主要通过对音频信号进行离散化处理,通过FFT运算,求出信号各个离散频率点的功率值,然后得到离散化的功率谱。由于题目要求频率分辨力为100Hz和20Hz两个档,这说明在进行FFT运算前必须通过调整采样频率(fK)和采样的点数(N),使其基波频率f为100Hz和20Hz。根据频率分辨率与采样频率和采

15、样点数的关系: f=fk/N;可以得知, fk=N*f;又根据采样定理,采样频率fk必须不小于信号频率fm的2倍,即: fk>=2fm;题目要求的最大频率为10KHz,所以采样频率必须大于20KHz,考虑到FFT运算在2的11次数的点数时的效率较高,所以我们在20Hz档时选择40.96KHz采样率,采集2048个点,而在100档时我们选择51.2KHz采样率,采集512个点。通过FFT 分析出不同的频率点对应的功率后,就可以画出其功率谱,并可以在频域计算其总功率。3.5 LCD显示LCD的软件设计由LCD的初始化程序、数值的显示程序组成,为了实时更新数据,此部分软件采用了定时器中断,时间

16、间隔为5s,即每隔5秒都会进行一次数据的读取,并更新显示在LCD上。 图3.3显示流程图 第四章 系统调试4.1阻抗匹配电路 图4.1阻抗匹配电路调试结果如图4.1所示,输入信号与输出信号基本一致,基本无噪声,打到预期效果。4.2峰值检测电路 图4.2峰值检测电路调试结果如图4.2所示,当输入是正弦波时,输出是峰值的一直流电压,达到实验要求。4.3增益放大 图4.3 0.5倍放大电路结果如图4.3所示,0.5倍放大,略微有些噪声,放大倍数满足实验要求。 图4.4 5倍放大电路结果如图4.4所示,5倍放大效果良好,满足实验要求。4.4 低通滤波器 图4.5低通滤波器结果如图4.5所示,当输入一频

17、率为20KHz的正弦波时,输出的频率未变,但幅度明显变小,达到了滤波的效果。4.5整体测试 图4.6整体实物图将硬件电路与STM32F103连接起来,再将LCD显示屏与开发板相接。接上电源,输入信号。启动程序,观察LCD显示结果。 五、测试结果当输入信号为1KHz,Vp-p1V的正弦波时,实验结果如下表输入信号幅值(v)12345功率(mW)理论值2.51022.54062.5实际值2.5210.323.140.563.2误差0.8%3%2.6%1.3%1.1% 表5.1正弦波测试结果由表5.1可知,误差均小于3%,实验效果良好。当输入信号是方波信号时,结果如表5.2所示。输入信号幅值(v)1

18、2345理论值一次谐波功率(mW)4.0516.2136.4764.84101.32二次谐波功率(mW)0.451.804.057.2011.26总功率(mW)5204580125实际值一次谐波功率(mW)4.1316.2636.5365.23103.47二次谐波功率(mW)0.461.844.217.3211.54总功率(mW)5.220.745.881.3126.4误差(%)一次误差2%0.3%1.5%0.6%2%二次误差2%2%3%1.7%2.5%总攻误差4%3.5%1.8%1.6%1.1% 表5.2方波测试结果由表5.2可知,误差均在4%以内,对方波测试效果同样精确。 六、总结 我们所

19、制作的音频信号分析仪基本完成了题目的要求,系统整体性能良好。其实本设计还有很大的提升空间,但由于我们的动手能力以及理论水平有限,没能很好的达到。通过本次设计,我们的动手能力以及处理问题的能力都有了很大的提高,并加深了对信号处理的理解,我们的收获很大! 附录部分源程序/*/ FFT转换函数,dataR:实部,datai:虚部,/*/void FFT(float *dataR,float *dataI,int n)int i,L,j,k,b,p,xx,qq;int x11=0;float TR,TI,temp;float QQ;/位倒置/for(i=0;i<countn;i+) xx=0;

20、for(j=0;j<n;j+) xj=0; for(j=0;j<n;j+) xj=(i/countj)&0x01; for(j=0;j<n;j+) xx=xx+xj*countn-j-1; dataIxx=dataRi;for(i=0;i<countn;i+) dataRi=dataIi; dataIi=0; /蝶形运算/for(L=1;L<=n;L+) b=1; i=L-1;while(i>0) b=b*2; i-; for(j=0;j<=b-1;j+) p=1; i=n-L; while(i>0) p=p*2; i-;p=p*j;fo

21、r(k=j;k<countn;k=k+2*b) TR=dataRk; TI=dataIk; temp=dataRk+b; QQ=2*pi*p/countn;qq=p*count11-n;dataRk=dataRk+dataRk+b*cos_tabqq+dataIk+b*sin_tabqq;dataIk=dataIk-dataRk+b*sin_tabqq+dataIk+b*cos_tabqq;dataRk+b=TR-dataRk+b*cos_tabqq-dataIk+b*sin_tabqq; /查表运算dataIk+b=TI+temp*sin_tabqq-dataIk+b*cos_tabq

22、q; for(i=0;i<countn;i+) wi=sqrt(dataRi*dataRi+dataIi*dataIi);wi=wi/countn-1;w0=w0/2; /回放数据/void viewdata(void)unsigned int key,page,i;page=0; LCD_PenColor=0x1F; /红色LCD_WriteChineseString(font5,2,40,0);LCD_PenColor=0xFC; /蓝色while(1)key=getkey();if(key!=0xFF) if(key=4) SystemState=fft_mode;return;

23、/返回 if(key=2) LCD_ClearScreen(); LCD_WriteChineseString(font3,2,10,0);LCD_WriteChineseString(font4,2,60,0); i=page*4+1; p3510(Rei,0,15); print3510(Imi*mode,50,15); p3510(Rei+1,0,26); print3510(Imi+1*mode,50,25); p3510(Rei+2,0,38); print3510(Imi+2*mode,50,35); p3510(Rei+3,0,50); print3510(Imi+3*mode,

24、50,50); if(page>0) page-; delay_nms(8000000); /上翻页 if(key=1) LCD_ClearScreen(); LCD_WriteChineseString(font3,2,10,0);LCD_WriteChineseString(font4,2,60,0); i=page*4+1; p3510(Rei,0,15); print3510(Imi*mode,50,15); p3510(Rei+1,0,26); print3510(Imi+1*mode,50,25); p3510(Rei+2,0,38); print3510(Imi+2*mod

25、e,50,35); p3510(Rei+3,0,50); print3510(Imi+3*mode,50,50); page+;if(page>=SampleNum/4) page=0; delay_nms(8000000); /下翻页 /失真度计算/void distortion(void)LCD_ClearScreen(); LCD_WriteChineseString(font6,3,10,20);unsigned int key;int fr;while(1) /获取频率/log_2_N=11;SampleNum=SampleTablog_2_N;reset_timer(0);i

26、nit_timer0(40960);New_Flag=0;enable_timer(0);/等待采样完成/while(!FFT_Flag); disable_timer(0); /关定时器0/FFT运算/FFT(Re,Im,log_2_N);/频域功率/for(i=1;i<SampleNum/2;i+) Rei=Rei*Rei;Rei=Rei/2;/总功率/Fp=0;for(i=1;i<SampleNum/2;i+) Fp+=Rei;sort(&Re1,&Im1,SampleNum/2-1); fr=1000000/fre;if(Tflag) LCD_WriteCh

27、ineseString(font7,1,50,20);LCD_WriteEnglishString(" ",0,38);print3510(fr,10,38);LCD_WriteEnglishString("US",58,38);else LCD_WriteEnglishString(" ",0,38);LCD_WriteChineseString(font8,1,50,20);/按键扫描/key=getkey();if(key!=0xFF)if(key=1) SystemState=fft_mode;mode=20;break; /返回if(key=2) SystemState=fft_mode;mode=100;break; /返回/按键扫描/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论