杨晋泓 范俊杰 周继烨

摘要:该文阐述了以STM32F103C8T6为主控,以多级晶体管放大电路为主体的放大器非线性研究装置的设计与实现。通过模拟开关选择电阻阻值,改变静态工作点,得到放大后无明显失真与四类非线性失真的波形。通过采集放大后的信号电压值,利用FFT算法得到谐波幅值,实现THD的计算,通过OLED显示波形编号及THD值。

关键词:非线性失真;AD电压采集;FFT算法;THD

中图分类号:TP393       文献标识码:A

文章编号:1009-3044(2021)14-0228-03

1 引言

由非线性元件,系统产生的失真不仅含有原有信号的频率成分,而且产生了新的频率分量,我们称之为非线性失真;在实际生产中,为了分析信号特性,检查改善信号传输设备的性能,都需要对失真这一参数进行测量研究[1];同时THD(总谐波失真)对于度量各类系统的性能也有着重要的影响,从而对于非线性失真和THD具有很大的研究意义。本文设计研究的放大器非线性研究装置可通过切换不同模式显示不同非线性失真波形以及FFT处理计算各波形的THD值,来达到研究非线性失真信号的目的。

2 系统总体方案设计

本系统总体框图如图1所示,矩阵键盘与OLED屏作为人机交互部分,用于切换显示各工作电路模式;信号发生器输出正弦信号,输入至放大电路并由模拟开关选择电阻阻值来改变静态工作点,从而切换不同放大电路,控制不同的失真状态,实现在示波器上显示放大后的无明显失真波形与4种非线性失真波形;STM32F103C8T6为主控芯片,通过12位AD端口分压采样,定时器采集输出放大后的波形信号的电压值,由STM32的DSP库FFT算法对采集到的各谐波进行FFT变换并计算前五个谐波的幅值,来实现对各波形的THD值的精确计算,使其THD值在OLED屏幕上显示。

3 系统硬件设计

硬件电路主要包括控制及其外围电路、三级放大电路及推挽电路、ADC电压转换电路和模拟开关电路四部分组成。

3.1 三级放大电路

前三级放大电路通过使用模拟开关来选择电阻阻值来改变,模拟开关按下后,可切换不同放大电路,通过对晶体管静态工作点和电路放大倍数分析计算,改变静态工作点和电压放大倍数,从而实现放大后的无失真波形、顶部失真波形、底部失真波形、双向失真波形。

三级放大电路如图2所示。

(1)输出无失真电路:R21阻值调整为300欧姆,R10为10K欧姆,R3为680欧姆,放大电路经计算晶体管放大器静态工作点设置合理,不会产生任何失真,故此时电路为输出为无失真电路。

(2)输出顶部失真电路:R21阻值调整为300欧姆,R10为20K欧姆,R3为680欧姆,第三级放大电路静态工作点拉高,导致顶部失真。

(3)输出底部失真电路:R21阻值调整为150欧姆,R10为10K欧姆,R3为680欧姆,第一级放大电路静态工作点拉低,导致底部失真。

(4)输出双向失真电路:R21阻值调整为150欧姆,R10为20K欧姆,R3为680欧姆,第一级放大电路静态工作点拉低,第三级放大电路的静态工作点拉高,导致正负半周部分晶体管分别产生了顶部失真和底部失真。

3.2 推挽电路、ADC电压转换电路

推挽电路、ADC电压转换电路如图3所示,在电阻R19与电阻R20两端做ADC采样分压电路,用来保护微控制器并将信号波形进行拉高,以符合微控制器的电压转换标准。Q4(PNP型)、Q7(NPN型)两个三极管构成推挽电路,通过调整R3的电阻阻值,以形成交越失真。

输出交越失真电路: R3为0欧姆,使推挽电路中PNP和NPN两个三级管存在死区,即在一定范围内不能导通且输入电压较低,三极管产生截止,导致交越失真。

3.3 模拟开关电路

模拟开关电路如图4所示,采用模拟开关控制波形的转换,由于使能端的数字信号噪音干扰会对信号波形产生影响,采用0Ω电容将数字信号与模拟信号隔离,使噪声干扰得到抑制。

3.4 控制及其外围电路

本系统以STM32F103C8T6为控制器,其使用的OLED屏、矩阵按键、ADC引脚、模拟开关控制端口,STM32单片机I0口分配如下表1:

4 系统软件设计

4.1 STM32程序设计

本系统以STM32为主控制器。系统上电后初始化硬件设备,通过按键切换工作模式,进入相应工作模式,OLED显示电路工作模式和相应波形信号的THD值;并通过定时器采集AD端口放大后的信号的电压值,通过STM32的DSP库FFT算法处理数据,计算各次谐波幅值,并计算各波形的THD值。

STM32主程序图如图5所示。

4.2 THD算法设计

通过STM32进行FFT变化并进行数据处理,首先使用定时器设置20KHZ采样率,每次定时器采集一次信号通过AD端口进行一次ADC转换,转换完成后的数据由DMA自动搬运到内存指定位置,这个采样过程无需CPU干预,提高了效率[2]。为了保证进行FFT之后的精确程度,通过DSP库FFT算法选择进行256点傅里叶变换,256点全部采样完成后进入到DMA中断,将数据处理完成后完成标志置为1再继续转换。

256点FFT变换后进行FFT算法处理,将完成的数据结果进行求模除以2处理,即计算出各频率点上的谐波幅值,再存放到数组中找出前五次谐波幅值,代入公式可得THD值。

4.2.1 ADC采集

通过定时器采集ADC端口信号电压值,由于基频频率为1KHZ,第五次谐波频率为5KHZ,为了满足采样定理,所以采样频率必须大于10KHZ,则采样频率设置为20KHZ。对信号进行256点采样FFT变换,则分辨率为78HZ,即设置定时器周期为0.005ms。

4.2.2 FFT算法及THD计算

定时器采集ADC电压数据后,调用STM32的DSP库中的256点FFT算法,完成数据的FFT变换,DSP转换出的结果相当于一个复数,保存在32位数组中,其中16位实部,16位虚部;对输出结果进行处理,去掉直流分量后,将实部和虚部求均方根后除以2即可得到各谐波幅值,再利用循环函数找出最大谐波幅值对应的频率点,即为基波幅值,依次将此频率点乘以2、3、4、5倍得到前五次的谐波幅值,再取统计平均后代入THD公式从而得到精确的THD值。THD算法流程图如图5所示。

5 结论

本文设计的放大器非线性研究装置能够手动通过按键来切换不同工作模式实现输出不同放大非线性失真波形的功能,还具有能够在OLED屏上实时显示出当前输出波形的THD值的功能,且系统具有规模小,输出波形良好等优点,系统成本低,易于实现,容易投入研究与实验。模块化的设计,提高了实际应用中的灵活性。因此,该系统对于研究非线性失真有很大帮助。

参考文献:

[1]潘洁,许朝晖,王一丽.信号非线性失真的测量技术[C].//中国电子学会.中国电子学会第十二届全国青年学术年会论文汇编.2006:164-165,168.

[2] 谢志平.一种基于STM32F103C8T6单片机DSP库的音乐频谱[J].软件,2020,41(4):200-202,228.

【通联编辑:梁书】