《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 音乐频率幅度彩灯指示器的设计与实现
音乐频率幅度彩灯指示器的设计与实现
来源:微型机与应用2011年第24期
崔 鸣,尚 丽
(苏州市职业大学 电子信息工程系,江苏 苏州215104)
摘要: 利用32位STM32F103 ARM和快速傅里叶变换(FFT)算法,实现了音乐频率幅度彩灯指示器的设计,该彩灯指示器可以指示不同的频率等级和音量等级。整个系统采用模块化设计,电路功能实现较好,只要接入信号就能测量,无需过多的人为操作。测试结果验证了FFT算法的准确性, 进一步证实了所设计的系统对音频信号不同的频段等级和音量等级具有较好的指示效果,具有较好的实用性。
Abstract:
Key words :

摘  要: 利用32位STM32F103 ARM和快速傅里叶变换(FFT)算法,实现了音乐频率幅度彩灯指示器的设计,该彩灯指示器可以指示不同的频率等级和音量等级。整个系统采用模块化设计,电路功能实现较好,只要接入信号就能测量,无需过多的人为操作。测试结果验证了FFT算法的准确性, 进一步证实了所设计的系统对音频信号不同的频段等级和音量等级具有较好的指示效果,具有较好的实用性。
关键词: STM32F103单片机;FFT算法;音乐信号;幅度;频率;LED灯

    本文主要讨论了音乐频率幅度彩灯指示器的设计与制作,设定音量等级为32级,频率等级为15级,每一频率等级下的音量等级又分为31级;以嵌入式单片机STM32F103作为主控制核心,以音乐信号自动增益、电压抬高、真有效值测量、LCD显示、按键等作为辅助硬件电路;采用快速傅里叶变换FFT(Fast Fourier Transform)理论对音乐信号进行详细的频域分析和处理。在此方案下完成音乐频率幅度彩灯指示器的设计后,以信号发生器产生的标准正弦波、方波以及手机播放的任意MP3音乐(即音频信号)作为输入信号进行现场测试,实验结果验证了设计题目的全部基础和提高要求,具有较好的音乐信号频率等级和幅度等级指示效果。
1 理论分析和计算
1.1 快速傅里叶变换原理

    快速傅里叶变换(FFT)是1965年由J.W.库利和T.W.图基提出的[1-3]计算离散傅里叶变换(DFT)的一种快速算法,其实质是根据离散傅氏变换的奇、偶、虚、实等特性进行改进的一种DFT算法。计算有限长信号序列x(n)的离散傅里叶变换时,其正变换式如下所示:


2 系统硬件设计
2.1 总体设计

    所设计系统的总体原理图如图1所示。其中,ARM控制器采用ST公司生产的STM32F103芯片,内有2个12 bit的A/D转换器、7个定时器、9个通信接口,最高工作频率72 MHz,足以满足设计需求;音频信号的峰-峰值范围为0~Vmax,Vmax的大小根据需要设定,频率范围为50 Hz~10 kHz。为了避免输入信号过小和保证输入信号的幅值为正,需要对其进行自动增益和抬高电压预处理,预处理后的音频信号的峰-峰值范围约为0~3 V,然后经过A/D采样,快速傅里叶(FFT)变换,得到不同的等级的频率和音量,经过串口输出;点阵电路大小为32×64,采用AT89S51单片机对其控制[4-6]。在LED阵列中,其中前15列表示15个频率等级,第16列表示总音量等级;另采用一行16个LED灯,用其亮度指示每个频段下音量的强弱。整体电路采用模块化设计,简单易懂,易于调试和实现系统要求。

2.2 主要单元电路
    采用STM32F103 ARM芯片,配置外部5 V的直流电源和晶振电路就可以构成单片机最小控制系统电路,限于篇幅,其最小系统电路图忽略,文中主要介绍关键的硬件单元电路,即音频信号预处理电路和电压真有效测量电路,限于篇幅,仅介绍电路组成及功能,硬件单元电路图忽略。
2.2.1 音频信号预处理电路
    音频信号预处理电路主要包含两个部分:电压自动增益电路、电压抬高电路。由于输入音频信号的电压范围(峰-峰值)为0~5 V,当音频信号电压的峰-峰值比较小时,信号的幅值较小,受外界信号干扰大,容易引起测量不准,所以要采用放大电路。设计中选用OP2365组成三级增益可调的放大电路,电压增益可调范围分为四档:10 mV~200 mV,70 mV~750 mV,200 mV~2 V和300 mV~5 V。当输入音频信号电压值较小时,就选择增益较大的一档进行调节;当输入音频信号电压值较大时,就不需要再对信号放大。另外,音频信号采样时,要求输入信号的电压范围不能有负值,并保证被转换电压的幅值范围在STM32F103芯片自带的A/D转换器的处理范围内,这就需要对输入信号电压负值进行抬高处理,保证信号电压为正值。经过抬高处理后,正弦信号的负峰值点刚好和横轴相交,抬高电压值vtg=3.3 V。
2.2.2 真有效值电压检测电路
    交流电压的真有效值是通过电路对输入交流电压进行“平方—求平均值—开平方”的运算而得到的。设计中采用AD736和OP07组成真有效值电压检测电路。AD736是经过激光修正的单片精密真有效值AC/DC转换器,准确度较高、频率特性较好。OP07芯片是一种低噪声、非斩波稳零的双极性运算放大器集成电路,具有低失调、高开环增益的特性。实际测试中,该电路测量正弦波电压的综合误差不超过±3%。假设输入信号的峰值为vmax,则有效值,检测出峰值后,按照比例进行放大。
3 系统软件设计
      系统软件采用模块化设计,分为主程序和子程序两大部分。主控制芯片采用STM32F103,由于处理器速度较快,所以采用C语言编程,方便简单。子程序包括A/D采样、周期性判断、FFT变换、延时、LED驱动、LCD显示等。系统程序流程图如图2所示,限于篇幅,文中仅介绍FFT变换子程序。系统通过模式选择按键进入不同的功能。对频率的指示采用两种频率等级计算方法:线性方法和对数方法。线性方法是在最低频率点和最大频率点之间进行15等分,得到各个频率点及其对应的幅度,然后根据这些频点计算出中心频率点及其对应的幅度;对数方式是在最低频率点和最大频率点之间采用对数函数计算15个频率等级点及其对应的幅度。同时,系统也采用了按键模式来控制各个频段对应的音量强弱。系统输入信号自动增益的档位、按键模式、对各个频点下的幅度及总的幅度会显示在LCD液晶屏上。

4 测试方法与结果分析

 


    测试中,输入信号经过音频输入预处理电路,系统处理的电压在0~3.3 V范围内。同时,在硬件系统测试之前,要验证自编的FFT算法对信号处理的准确性。
    首先任意选择一个WAV音频信号进行自编FFT程序的测试。测试中借助了MATLAB软件中自带的FFT子程序,设定一个采用频率,选取不同的采样点128和1 024,应用MATLAB进行频谱分析,观察采样点选择不同信号对频域分析的影响,得到的仿真结果如图3所示。对其进行信号频谱分析的结果与自编FFT程序在STM32F103单片机上运行的结果进行数据对比分析,测试数据误差小于0.1%,频谱图形状几乎与MATLAB仿真波形一致,证实了自编FFT算法的正确性。

    结合仿真分析结果,对系统选定的采样频率为fs=23.81 kHz,采样点数为1 024,又知输入信号的最大频率为10 kHz,则测定的采样频率fs>20 kHz,满足香农采样定理,故fs选定符合理论分析结果。在此采样频率下,最小采样频点为23.25 Hz,最大采样频点为10.74 kHz,分别采用线性方法和对数方法实现频率分析和处理。
    然后采用方波和不同频率的正弦波作为输入信号,对FFT变换结果进行量化,根据能量定理,检验各频率点对应的功率值;同时观察最大幅值在数组的位置P,以及被测信号频率f、采样频率fs、采样点数N(测试中取N=1 024)之间的关系是否满足公式f=(fs/N)×P。对系统运行得到的频谱分析数据与采用MATLAB软件进行FFT分析的结果进行对比,观测到两种方法在相同频点处信号的幅度和功率数据变化不大,由此验证了所设计的STM32F103单片机系统进行信号频域分析的准确性。
    最后,任意选择手机播放的男声、女声演唱的MP3歌曲作为输入信号进行测试,观测播放时15个频率等级、每一个频率等级下31个等级的音量强弱的LED指示情况以及32个总音量等级的LED指示情况,观察音乐幅度、频率的LED指示效果,根据运行情况进行程序调试,同时观测LCD显示的最大4个功率(即幅度值)所在的频率点以及总功率并记录数据。
    以正弦信号作为输入信号的总功率测量和单个频率分量测量得到的结果分别如表1和表2所示,测试结果表明测试数据和用电脑模拟的结果很接近。

    应用STM32F103 ARM最小控制系统和快速傅里叶变换(FFT)算法,并结合LED点阵技术,本文设计并实现了一个音乐频率幅度彩灯指示器。系统的硬件电路采用模块化设计,各模块之间串口少,调试方便;音频输入信号预处理电路具有自动增益和电压抬高功能,频率等级分析方法分为线性均分和对数处理两种,可以通过按键进行方法选择,同时频率等级的大小由LED灯的个数指示,且指示结果较准确;每一频段的大小及该频段下音量的强弱和所有频段下的总音量强弱都能由LED灯的亮度变化进行指示。分别采用标准方波信号和正弦信号进行测试,同时借助MATLAB的FFT分析结果,验证了自编FFT算法在STM32F103单片机系统中运行的准确性,然后应用任意音频输入信号进行测试,测试结果实现了比赛题目的基础要求和提高要求,证实了所设计的音乐频率幅度指示器具有较好的频率等级和音量等级指示效果,而且整个系统的设计方案与实现都具有重要的理论研究意义和实用意义。
参考文献
[1] 周围,姚丽娜.基于FFT变换的快速信道估计算法[J].重庆邮电大学学报,2010,22(5):551-554.
[2] 邓小平,张贤,谭书伟,等.基于FFT算法的音频信号分析仪[EB/OL].(2011-03-15).[2011-06-05].http://www.paper.edu.cn.
[3] 王平,江华丽,郑孔华,等.基于单片机的音频信号分析仪的设计[J].现代电子技术,2009(19):122-124.
[4] 周杰英,陈晓帆,王涛,等.点阵LED多功能动态显示实验系统设计[J].实验室研究与探索,2010,29(9):36-40.
[5] 张立科.单片机典型外围器件及应用实例[M].北京:人民邮电出版社,2006.
[6] 吴国伟.嵌入式操作系统原理及应用开发[M].北京:北京航空航天大学出版社,2007.

此内容为AET网站原创,未经授权禁止转载。