基于FFT算法的电流信号检测装置设计
2020-12-09李加升
李加升,熊 洁,阳 磊
(湖南城市学院 信息与电子工程学院,湖南 益阳 413000)
在电路中,电流信号是一个重要标志,对它进行准确检测是判断电路性能的重要依据.而在对这些电流信号进行检测时,由于电路的复杂性和不稳定性,往往很难达到所需要的精度.对电流信号检测技术及设备进行研究和探讨具有重要意义,如何有效精准地检测电流信号是电子领域的一个难题[1-2].电流信号的应用范围很广,在教学、科研、实验和生产实践中都存在大量交、直流以及各种波形的电流信号.目前,人们获取这些电流信号,一般是通过电流传感器等设备来实现的,它能够检测出被测电流信号的信息,并将检测到的复杂、无规则的信号通过一定规律进行转换,使之成为符合一定标准的电气信号或其它形式的信号输出,来实现参数的测量与分析[3].
近年来,随着科技的发展,对电流信号检测的需求越来越迫切,传统的电磁式检测设备已经无法满足需要,出现了非接触式的基于单片机的电流传感器[4-5].本文主要以STM32 为主控芯片对电流信号检测装置进行设计和探讨.
1 总体设计方案
电流信号检测装置结构如图1 所示,系统主要由任意波形信号发生器、功率放大电路、电流传感器、运算放大电路、辅助电源、STM32 模块和LCD 显示模块等组成.由任意波形发生器产生信号,功率放大后接入10 Ω 电阻负载,形成电流回路,使回路通过用漆包线绕制的电流传感器,从而实现对电流信号的非接触式检测.传感器获 得的信号经运算放大电路调理放大后,最后由STM32 处理与控制,经显示模块将电流信号的电流峰值和频率等参数显示出来.电流传感器采用漆包线手工绕制而成,可根据电路设计需要,改变漆包线的粗细、大小、线圈绕制匝数和磁芯材质,以满足测量电路要求.其绕制方法简单,成本低,易于实现,也便于操作.功率放大电路选择TDA2030A,它是一款单片功率放大器,采用了先进的电路技术,具备很强的处理能力[6].它还具有体积小、输出功率大和失真小等特点,并具有内部保护电路,其输出的电流能满足本设计要求.运算放大电路选用AD623,它是一种低成本、高精度的仪表放大器[7],需要一个外部电阻来设置增益系数,其增益范围大,可以采用单电源供电,属于轨到轨运放,很适合集成并在低功耗放大器中应用,信号放大后基本无失真,符合本设计要求.
图1 系统总体结构
2 理论分析及相关参数计算
2.1 功率放大器
功率放大器采用TDA2030A,它可以实现电流和电压的放大,一级为电压放大,二级为电流放大[8].根据设计要求,应使电压增益为1,其电流有效值和功率的计算式为
其中,Irms为电流有效值;Ipp为电流峰峰值;P为功率;R 为负载电阻.
2.2 电流传感器
电流传感器由初级线圈、次级线圈和磁芯组成,初级线圈通过主电路从磁环中连接而过(线圈匝数为N1,电流为I1),次级线圈为锰芯磁环绕制的漆包线(匝数为N2,电流为I2),电流互感器的变流率K 为 次级线圈电流为
2.3 电流测量
磁环感应电流转换成电压信号后,先进行AD 采样,再经过傅里叶变换把时域信号转换成频域信号,可得到频率和振幅,最后经过多次测量比较,转换成幅度系数.
离散傅里叶变换(DFT)是指傅里叶变换在时域和频域都是离散的,它将信号在时域的采样转换为在频域的采样[9-10].虽然变换两端(时域和频域)的序列长度在形式上有一定的限制,但在实际应用中,应将这2 组序列视为离散周期信号的主值序列.即使对有限长度的离散信号做DFT,也应将其视为经过周期延拓后的信号(周期信号)再作变换.为提高DFT 的计算效率,实际工程中常采用快速傅里叶变换(FFT).因此,本设计选用STM32 主控芯片进行FFT 分析.
2.4 谐波测量
采用FFT 算法对采样数据进行分析,比较采样数据的频率、幅值、基波或谐波等参数.三角波的傅里叶级数形式见公式(5),方波的傅里叶级数形式见公式(6),由此也可得到相应波形参数.
其中,A 为三角波幅值;E 为方波幅值;n 取1、3、5 等奇数;L 为常量.
对各点进行FFT 分析之后,可得出各点的频率值,再通过进一步分析,即可得到基波和谐波的频率和峰值.
3 主要硬件电路设计及相关说明
3.1 功率放大电路
根据设计要求,一是输入信号的频率应为50~1 000 Hz,且信号不能失真;二是流过负载电阻的电流峰值应大于1 A.若欲达到该要求,输入较宽的频率范围信号,同时还不能失真,功放电路中的芯片选择就显得非常重要,如果选择的功放芯片精度达不到,就会出现各种各样的意外结果.设计采用TDA2030A,连接10 Ω 负载,形成闭合回路,功率放大电路如图2 所示.
图2 功率放大电路
3.2 电流传感器
当通电的导线穿过采用漆包线绕制而成的电感线圈时,线圈两端就会输出感应信号.无铁芯电感线圈又称中空线圈,线性度好,易校准,瞬态反应能力强,可用于中高压保护;其可测电流频率较宽(0.1 Hz~1 MHz)、范围大(1 mA~1 MA),还可以用来测量谐波.
3.3 运算放大电路
若想准确还原被测电流,须在电磁感应装置后面加一个运算放大电路.因为电流信号经过线圈感应后输出的信号较小,需经过运算放大才能供单片机采集.AD623 直流性能出色,失调电压小,共模抑制比随增益同步增大,误差极小,噪声低且抗干扰,其电路结构如图3 所示.
图3 运算放大电路
AD623 是在传统的三运放结构基础上改进的一种新型仪表放大器,它的增益调节可变,通过输入信号作用到电压缓冲器的PNP 晶体管上,会提供一个共模信号到输入放大器,每个放大器接入一个精确的50 kΩ 的反馈电阻,来保证输出增益可调节.AD623 差分输出为
其中,Vc和Vo分别为输入和输出电压,V;Rg为反馈电阻,Rg=R1//R2,kΩ.
3.4 采样控制模块
功率放大后的信号,经漆包线制成的电流互感线圈,进一步经运算放大,再经AD 转换,输入STM32;STM32 采用改进的FFT 算法对信号进行分析和处理,并将信号参数输送至LCD 显示模块,最终实现了电流信号的检测和显示.在Keil uVision 5 软件上编程,调用STM32 的AD转换库和FFT 库以完成软件编写;通过FlyMcu软件写入STM32.该模块实现了对电流信号的检测分析,并能显示电流的幅值和频率等信息.
所选用的STM32F405RGT6 主控芯片是带有FPU 的32 位 Cortex-M4 CPU,支持所有ARM 单核的精确数据处理指令和数据类型,同时还具备睡眠、停止和待机3 种低功耗模式,能在节省CPU内存的情况下快速计算,有内置的ADC 转换模块,可以用FFT 算法对获取的信号进行分析.
4 主程序流程
系统软件设计采用 C 语言编程,运用ADC+DMA+定时器等模块化结构.首先,定时器触发ADC,后者再调用ADC 库进行转换;其次,由DMA 完成数据传输;最后,基于FFT 算法对采样结果进行分析,以实现对基波电流的频率、峰峰值、谐波频率和谐波幅度等参数的测量与显示.主程序流程如图4 所示.
图4 主程序流程
5 实物测试与结果分析
5.1 实测装置与步骤
电流信号检测装置实物如图5 所示.
图5 电流检测装置
任意波形发生器选用ICL8038 信号发生器,它能发射正弦波、方波和三角波,完全满足设计需求.上电后,先把排线插在输出正弦波的接口,在所需范围内调节好频率,连接负载,穿过电流互感线圈形成闭合回路;用示波器测量检测电流大小,并调节至大于1 A 的要求,观察波形有无失真;检测感应线圈的信号,测出电流信号的峰峰值和频率;重复进行多组测量,并计算精度.
输入非正弦波信号,控制基波频率范围为50~200 Hz,连接已写好程序的STM32,观察LCD显示的谐波频率和幅度,计算测量精度.
5.2 测试方案
1)将信号发生器输出的振幅值设为100 mV,频率分别设为50,500 和1 000 Hz,在输出端检测输出电流的大小,计算相对误差.
2)使信号发生器产生频率为50 Hz,振幅分别为0.1,5 和10 V 的脉冲波,检测信号输出点的电流大小和频率,计算相对误差.
3)非正弦电流信号测量时,输入的幅值不变,频率分别设为50,120 和200 Hz,测量基波和2次谐波的电流幅值,计算相对误差.
5.3 结果分析
5.3.1 频率对电流测量结果的影响
控制输入信号的幅值不变(100 mV),分别对频率为50,500 和1 000 Hz 时的电流进行测量,测试结果如表1 所示.
表1 不同频率下的电流测量结果及误差
从表1 中可以看出,电流测量误差在2%以内,达到了设计的精度要求.
5.3.2 幅值对电流测量结果的影响
保持输入信号的频率为50 Hz,分别设置其幅值为0.1,5 和10 V,对电流进行测量,测试结果如表2 所示.
表2 不同幅值下的电流测量结果及误差
从表2 中可以看出,电流测量误差在2%以内,满足设计精度要求.
5.3.3 幅值对频率测量结果的影响
输入信号频率给定为50 Hz,输入信号幅值分别设为0.1,5 和10 V,对信号频率进行测量,结果如表3 所示.
表3 不同幅值下的频率测量结果及误差
从表3 中可以看出,频率测量误差在1%以内,满足设计精度要求.
5.3.4 非正弦波电流测试
输入幅值不变、频率分别为50,120 和200 Hz的非正弦电流信号时,测量输出端基波和2 次谐波所对应的电流幅值,结果如表4 所示.
表4 不同频率非正弦电流信号测试结果及误差
从表4 中可以看出,基波电流测量精度在2%以内,2 次谐波的电流测量精度5%以内,满足设计精度要求.
6 结语
本文设计并实现了一种基于STM32 的电流信号检测装置,它利用任意波形信号发生器产生的信号,经功率放大后接入10 Ω 电阻负载,形成电流回路,并使回路通过漆包线绕制的电流传感器,从而实现对电流信号的非接触式检测,再由STM32 主控和显示模块将电流信号的相关参数计算并显示出来.用所设计的电流信号检测装置对给定电路电流的有关参数进行了测试,并与示波器、电流表和信号发生器等测量工具的所测参数进行了比较.结果表明,本装置所测数据精度较高,各项指标均达到了较为满意的效果.