【电赛训练】放大器非线性失真研究装置 2020年电赛E题

时间: 2023-08-18 admin IT培训

【电赛训练】放大器非线性失真研究装置 2020年电赛E题

【电赛训练】放大器非线性失真研究装置 2020年电赛E题

放大器非线性失真研究装置

一、题目要求

二、方案设计

由于笔者在自己队伍中主要负责软件编程,硬件部分在此不做详细展开。
这道题本身并不困难,就是一个固定频率波形的调制和ADC-DMA方式采样加FFT运算作频域分析,AD直接使用单片机自带的12bitAD即可。
因为M4内核的芯片有FPU,主控选择了STM32F407ZET6核心板,之前只写过103的程序,两款不同内核的芯片有很多细节上不一样,比如F407的GPIO都在AHB1上而F103的GPIO在APB,再比如输入输出配置的表述。一开始换板子时候没有仔细看数据手册,也是在直接迁移针对103写的HMI驱动程序时报错才发现的。
计算出失真度数据和波形信息在串口屏上打印出来,同时也通过蓝牙发送到手机显示。

三、算法与程序

ADC+DMA

要进行FFT分析,就需要对待测波形进行实时采样以得到连续数值。
根据奈奎斯特(Nyquist)定律, 如果被测信号带宽是有限的,那么在对信号进行采样和量化时,如果采样率是被测信号带宽的2倍以上,就可以完全重建或恢复出信号中承载的信息而不会产生混叠。如果样率不足,就会导致信号混叠,
如果使用顺序采样方式,一方面速度较慢,另一方面不能较为完善的采集完整的波形,DMA传输可以在不影响程序正常运行的情况下尽可能完整的采集波形。需要注意的是,

FFT

傅里叶认为,任何连续测量的时域信号都可以表示为不同频率的正弦波信号的无限叠加。由此推断,我们可以累加的方式来计算该信号中不同信号的频率、振幅和相位。FFT算法,也就是快速傅里叶变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。
了解其具体原理可以参考:超详细易懂FFT(快速傅里叶变换)及代码实现
编写本题代码的FFT部分主要参考了正点原子F407最小系统板例程中的DSP_FFT,只要将特定长度的数组代入函数即可实现FFT计算,其输出结果即为频域分析结果,将输出结果生成条形图可以显著观察到出5次谐波。如下图所示为其中某次分析的数据组成的图表,共1024点,由于采用的算法为基4蝶形算法,输出结果对称,实际使用数据分析时取前半部分即可。

THD

线性放大器输入为正弦信号时,其非线性失真表现为输出信号中出现谐波分量,常用总谐波失真(THD:total harmonic distortion)衡量线性放大器的非线性失真程度。总谐波失真表明功放工作时,由于电路不可避免的振荡或其他谐振产生的二次,三次谐波与实际输入信号叠加,在输出端输出的信号就不单纯是与输入信号完全相同的成分,而是包括了谐波成分的信号,这些多余出来的谐波成分与实际输入信号的对比,用百分比来表示就称为总谐波失真。

本题中,规定谐波取到5次即可,即直接计算。计算出谐波值具有一定的波动,可以采用一定的滤波算法和修正提高计算值的稳定性和准确性。

四、测试

基本满足要求

提高指标的几种方法:
1、使采样波形经可能接近真实波形
2、提高电源稳定性
3、FFT加窗