温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于
STM32
正弦波
失真度
测量仪
设计
王瑞轩
自动化技术与应用2023 年第 42 卷第 6 期控制理论与应用Control Theory and ApplicationsTechniques ofAutomation&Applications基于STM32的正弦波失真度测量仪的设计王瑞轩,盖怡臣,李鸿博,孙艳丽,王国庆(海军航空大学,山东 烟台 264001)摘要:针对模拟控制正弦波失真度测量仪精度低,计算复杂等缺点,设计基于STM32的数字化计算波形失真度测量仪。该系统信号经AD采样后,通过STM32计算快速傅里叶变换(FFT),再根据采样率确定谐波分量点并计算失真度,并运用Matlab仿真对FFT结果进行理论验证。通过与方波、三角波失真度理论值比较,该失真度测量仪误差较低,可靠性高。关键词:失真度测量;STM32;快速傅里叶变换;数字谐波分析中图分类号:TP216;TP335+.1文献标识码:A文章编号:1003-7241(2023)06-0009-04Design of Sine Wave Distortion Meter Based on STM32WANG Rui-xuan,GAI Yi-chen,LI Hong-bo,SUN Yan-li,WANG Guo-qing(NavalAviation University,Yantai 264001 China)Abstract:In view of the low precision and complicated calculation of the analog control sine wave distortion measuring instrument,a digi-tal method based on STM32 is designed to calculate waveform distortion.The signal of the system is sampled by AD and the fastFourier transform(FFT)is calculated by STM32,and then the harmonic component points are determined according to the sam-pling rate and the distortion is calculated.Matlab simulation is used to verify the FFT results.Compared with the distortion valuesof square wave and triangular wave,the distortion measuring instrument has low error and high reliability.Keywords:distortion measurement;STM32;Fast Fourier transform;digital harmonic analysis收稿日期:2021-07-07DOI:10.20033/j.1003-7241.(2023)06-0009-04.1引言在进行信号处理的过程中,正弦信号经常被用作激励或输出,而失真度便是衡量信号质量好坏的一项重要指标。此外,失真度测量在电力电子、电声学等诸多领域也具有广泛应用与重要意义1-2。目前测量失真度的仪器根据测量原理可分为基波剔除法和频谱分析法两类,而信号处理方法也大致可分为模拟法和数字化方法两类。模拟法测失真度是将输出信号通过陷波器过滤掉基波,只留下所需谐波,由总电压和抑制基波后的谐振电压计算波形失真度3-4。模拟法在分析有效值时,需要计算较多频点,且抗干扰能力差,噪声和所需信号混合使得计算结果置信度下降,测量准确度为5%30%。数字化法测失真度则是通过对接收到的模拟信号进行采样、量化,采用FFT对量化后的被测信号处理,通过基波和各次谐波的电压有效值计算波形失真度。将模拟信号转换为数字信号,便于数据加密处理与储存、处理、交换,设备便与集成化,且功耗低,同时抗干扰性能强,易于纠错,传输距离远。针对以上信号失真度测量方法的优点与不足,以数字谐波分析为基础,提出了一种基于STM32的信号失真度测量仪,通过与Matlab仿真结果比较,实现了在高精度测试信号失真度的同时,降低硬件设计复杂度。2失真度算法研究2.1失真度算法分析失真度表示一个信号偏离正弦信号的程度5,通常指各次谐波电压的有效值与基波电压的有效值之比即:(1)式中:为失真度;P为信号总功率;P1为基波信号的功率;U1为基波电压的有效值;U2Un为谐波电压有效值。因此测量失真度的关键在于求解信号各谐波电压。2.2快速傅里叶变换(FFT)有限长离散信号x(n),n=0,1,N-1的DFT定义为:(2)由于,则:(3)9控制理论与应用Control Theory and Applications自动化技术与应用2023 年第 42 卷第 6 期Techniques ofAutomation&Applications其中X1(k)和X2(k)分别为x1(n)和x1(n)的 N/2 点DFT。快速傅里叶变换(FFT)将N点DFT分解为N/2个两点DFT,减少计算量。假设采样频率为fS,信号频率f,采样点数为N,FFT之后结果就是一个为N点的复数,点的模值是该频率值下的幅度特性。点n所表示的频率为:fn=(n-1)*fs/N。fn所能分辨到频率为fS/N,如果采样频率fS为1 024 Hz,采样点数为1 024点,则可以分辨到1 Hz。如果要提高频率分辨率,则必须增加采样点数,也即采样时间。假设FFT之后某点n用复数a+bi表示,那么这个复数的模就是,相位就是Pn=atan2(b,a)。由于FFT结果的对称性,通常我们只使用前半部分的结果,即小于采样频率一半的结果。对于n=1点的信号,是直流分量,幅度即为A1/N。2.3采样点选取及仿真验证采样点数往往有个最小值需求,由采样频率和所期望的最小频率分辨率决定。增加采样点数有利于提高频率分辨率或改善运算结果6。但增大样点数时既要考虑它对计算速度影响。在选择采样点数时,除了考虑满足最小值要求外,还得结合具体选用的FFT相关函数类型,比方说是基4还是基2的。如果使用基4的FFT运算函数,则样点数须满足4的整数幂。采样频率要满足不低于最高被采样信号频率的2倍的要求,但并非单纯的越高越好。一般取其36倍,具体应用时合理选择。这里使用的采样频率是100 kHz,采样点数为1 024,即每两个采样点的频率间隔约为100 Hz。使用Matlab对1 kHz的方波信号进行仿真,如图1所示,0点位处所对应的模值就是直流分量的模值。点位10处所对应的模值就是原信号中1 000 Hz正弦信号的模值。在第30点和第50点附近有比较大的值,为谐波分量。图1各谐波分量位置仿真设置采样点的个数并合理规划门限阈值通过傅里叶变换确定信号各谐波分量的位置,并将各谐波分量位置点作为输出。从而将输出结果作为后续进行STM32芯片软件调试过程的重要参考数据,为的是将其信息拷入其芯片的内嵌程序中,从而进行数据采集,并进行相关的数据处理,进而利用已有公式进行相关计算,最终输出信号失真度。3系统硬件设计硬件电路主要由晶体管放大器、采集测量模块、微处理器及显示模块构成,微处理器由STM32构成,控制放大器继电器使得输出为各种失真波形,并对采集测量模块数据进行处理,在显示屏上进行显示。硬件框图如图2所示。实物图如图3所示。图2硬件框图图3实物图片3.1A/D模数转换电路输入的模拟信号必须经过ADC转换成数字量之后才能利用嵌入式处理器做进一步的处理,由于选用STM32F407内部的芯片所集成的A/D系统的ADC输入范围为:VREF-VINVREF+,并由VREF-、VREF+、VDDA、VSSA这四个外部引脚决定。在连接引脚时,将VSSA和VREF-接地,将VREF+和VDDA接+3 V,从而得到ADC的输入电压范围为:0+3 V。输入信号电压的范围必须为正值且不能超过处理器的电源电压,对于交流被测信号,则必须利用电阻分压使得电平抬升才能满足其ADC输入电压范围的要求。因此我们在外部增加了一个分压偏置电路,把原始输入的待测信号的电压抬升至03 V,保证其在ADC合理范围之内从而实现正常测量。在实现电压抬升之后,再将信号输送至STM32开发板上对应的引脚完成后续的模数转换过程。3.2STM32核心控制器系统需要对输出的正弦波信号进行实时控制并提取10自动化技术与应用2023 年第 42 卷第 6 期控制理论与应用Control Theory and ApplicationsTechniques ofAutomation&Applications同步信息,同时考虑信号特性、运算速度、稳定性与高效性等因素,以及设计人员编程能力和效率等,因此以STM32F407微控器作为系统的主控与数据处理核心,辅以自带FFT进行数据处理。STM32F407内部具备16 MHz高速晶振和32 KHz看门狗时钟;其ADC具有3个12位AD,多达24个外部测量通道;DAC为2个12位DA;内置17个定时器。该嵌入式处理器还具备较强的逻辑组合能力及对继电器精准控制7-8。STM32提供的DSP库进行FFT,虽然FFT的点数必须是4n,但其执行效率非常高效。添加DSP库到自己的工程项目中,inc文件夹下的stm32_dsp.h和table_fft.h两个文件是必须添加的6。4系统软件实现控制模块采用一个STM32F407单片机开发板,作为信号输入输出控制端和信号接收处理端。信号输入端通过集成了A/D功能的串口接收输入信号,同时通过另外的串口端口接收液晶屏的指令。信号输出端通过对信号输出,并在液晶上显示交互界面,进行频率模式选择以及参数显示。单片机内部经过调试,通过单片机内部时钟控制,使接受端的AD采样、FFT计算以及结果输出依次有序进行。最终经过处理的数据在液晶屏显示完成失真度的输出。该系统软件工作流程图如图4所示。图4软件流程图核心代码如下所示,从ADC模块得到采样值,赋值到变量FFT_Input_f32中,进行初始化后对FFT_Input_f32做FFT,并将结果赋值到变量FFT_Output_f32中。for(adc_Count=0;adc_Count2*fftSize;adc_Cou-nt+=2)FFT_Input_f32adc_Count=(short)ADC1Conve-rtedadc_Count/2-2048;FFT_Input_f32adc_Count+1=0;status=arm_cfft_radix4_init_f32(&S,fftSize,ifft-Flag,doBitReverse);arm_cfft_radix4_f32(&S,FFT_Input_f32);arm_cmplx_mag_f32(FFT_Input_f32,FFT_Outp-ut_f32,fftSize);arm_max_f32(&FFT_Output_f321,fftSize/2,&fft_max,&fft_max_index);在编写单片机程序时,发现单片机计算完成后数值计算出现问题,之后在输出变量时通过设置输出位数得以解决。开始阶段由于是固定频率,使用定时器初始化AD采样模块,使得在采集信号及进行失真度(THD)计算时不会发生错误9-10。5测试与分析5.1Matlab仿真信号失真度结果使用Matlab对正弦波五种失真波形、三角波和方波进行仿真,并通过傅里叶变换找出其七种波形五次谐波分量的电压值,进而计算出七种波形的总谐波失真率。图5正弦波以及各类失真傅里叶变换各谐波波形及其傅里叶变换波形幅值如表1所示,由其傅里叶变换波形可知,各波形存在谐波分量,根据式(4)对各波形的总谐波失真率进行求解,五种波形的总谐波失真率如表2所示。(4)5.2STM32 信号失真度测试结果利用STM32进行主控和数据处理,结