如何有效地提高传感器的测试精度
如何有效地提高传感器的测试精度
在传感器测试过程中,50Hz工频干扰是一个常见的问题,它会导致信号中出现明显的噪音,影响测试精度。本文将从硬件和算法两个角度,详细介绍如何通过滤波技术消除这种干扰,提高传感器的测试精度。
问题描述
在传感器实验测试中,发现信号中存在明显的50Hz工频干扰,即使传感器未发生变形,输出信号也具有明显的波动(幅度约为0.6mV)。为了解决这一问题,本文将从硬件滤波和算法滤波两个方面进行探讨。
硬件滤波方案
滤波器基本结构
图a和图b分别展示了无源一阶低通和高通滤波器的基本结构。图c和图d展示了有源二阶低通和高通滤波器的基本结构,其中,有源滤波器通过引入运算放大器,能够更有效地减小信号干扰。
有源滤波器设计
有源二阶低通滤波器的传递函数为:
$$
H(s) = \frac{A_{vp}}{1 + \frac{s}{\omega_0} + \frac{s^2}{\omega_0^2}}
$$
其中,通带增益为:
$$
A_{vp} = 3 - \frac{1}{Q}
$$
有源二阶高通滤波器的传递函数为:
$$
H(s) = \frac{s^2}{s^2 + \frac{s}{\omega_0} + \frac{1}{\omega_0^2}}
$$
其中,通带增益为:
$$
A_{vp} = 3 - \frac{1}{Q}
$$
带通和带阻滤波器设计
带通和带阻滤波器可以通过基本的低通和高通滤波器串并联组成。图a展示了低通和高通滤波器串并联组成带通和带阻滤波器的基本过程。图b和图c分别展示了带通和带阻滤波器的基本结构。
MATLAB设计实例
以下是一个基于MATLAB的带通滤波器设计实例,程序通过计算低通和高通滤波器的传递函数,并将它们串联组成带通滤波器。结果通过波特图直观展示,其中纵坐标单位为dB(20lg|G(jw)|),横坐标采用对数坐标系。
clear all;clc
%有源带通滤波器
%LPF 传递函数计算 f0=35Hz C = 1uF,R = R=4.549kΩ
c1 = 1e-6;
r1 = 4549;
%HPF 传递函数计算 f0=15Hz C = 1uF
c2 = 1e-6;
r2 = 10615;
%q 品质因子(品质因子和通带增益具有一定关系)
q=0.7
%LPF
Avp1 = 3-(1/q);
k1 = (3-Avp1)/(c1*r1);
k2 = 1/(c1*c1*r1*r1);
k3 = Avp1/(c1*c1*r1*r1);
num1=[k3]; %传递函数分子
den1=[1 k1 k2]; %传递函数分母
G1=tf(num1,den1);
%HPF
Avp2 = 3-(1/q);
k4 = (3-Avp2)/(c2*r2);
k5 = 1/(c2*c2*r2*r2);
k6 = Avp2;
num2=[k6 0 0]; %传递函数分子
den2=[1 k4 k5]; %传递函数分母
G2=tf(num2,den2);
p=bodeoptions;
p.FreqUnits='Hz';
p.Grid= 'on';
[num,den] = series(num1,den1,num2,den2); %计算串联传递函数
printsys(num,den) %显示串联后的总传递函数
hold on;
bode(num,den,p); %绘制波特图
% hold on;
% bode(G1,p);
% hold on;
% bode(G2,p);
title('有源二阶模拟带通滤波器相频特性'); %标题
算法滤波方案
FIR滤波器设计
图a展示了FIR滤波器的幅频特性曲线。信号的采样频率为1000Hz,根据采样定理,待测信号的最大频率为500Hz。采用低通滤波器,截止频率为50Hz,当信号频率高于截止频率时,信号幅值衰减10倍以上。
图b展示了采用FIR滤波器对包含工频干扰的信号进行处理的结果,可以看出,滤波算法与直接屏蔽干扰源具有相同的采样效果。
MATLAB实现
以下是一个基于MATLAB的FIR滤波器设计实例,程序通过firpmord函数计算滤波器阶数,然后使用firpm函数计算滤波器系数,最后使用dfilt.dffir创建滤波器对象。
clear all;clc
% 读取传感器输出信号
node='信号采集结果.txt';
[x,y]...
=textread(node,'%f%f','emptyvalue',0,'headerlines',10);
output=filter(lowpass,y);
caiji=1000length(y);
output=output(caiji,1);
plot(output)
function Hd = lowpass
%LOWPASS Returns a discrete-time filter object.
% All frequency values are in Hz.
Fs = 2000; % Sampling Frequency
Fpass = 40; % Passband Frequency
Fstop = 50; % Stopband Frequency
Dpass = 0.057501127785; % Passband Ripple
Dstop = 0.1; % Stopband Attenuation
dens = 20; % Density Factor
% Calculate the order from the parameters using FIRPMORD.
[N, Fo, Ao, W] = firpmord([Fpass, Fstop]/(Fs/2), [1 0], [Dpass, Dstop]);
% Calculate the coefficients using the FIRPM function.
b = firpm(N, Fo, Ao, W, {dens});
Hd = dfilt.dffir(b);
% [EOF]
通过上述硬件和算法滤波方案,可以有效地消除50Hz工频干扰,提高传感器的测试精度。