问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

如何有效地提高传感器的测试精度

创作时间:
作者:
@小白创作中心

如何有效地提高传感器的测试精度

引用
1
来源
1.
https://m.elecfans.com/article/6444482.html

在传感器测试过程中,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工频干扰,提高传感器的测试精度。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号