传感器课程实验:传感器静态特性研究-电涡流传感器位移特性实验
传感器与测试技术实验报告,我就知道会有人来抄作业……
传感器静态特性研究-电涡流传感器位移特性实验
骆苏-一只小菜鸡
一、实验目的与任务
- 了解电涡流传感器的结构、特性。
- 掌握电涡流传感器的工作原理
- 了解电涡流传感器测量位移的工作原理。
- 了解不同的被测体材料对电涡流传感器性能的影响。
二、实验原理
(一)、涡流效应
电涡流传感器是一种建立在涡流效应原理上的传感器。当金属板置于变化着的磁场中时,或者在固定磁场中运动时,金属板内就要产生感应电流,这种电流的流线在金属体内是闭合的,所以叫做涡流。涡流的大小与金属体的电阻率、导磁率、厚度以及线圈与金属板之间的距离,线圈的激磁电流角频率等参数有关。通高频电流的线圈产生磁场,当有金属导电体接近线圈时,导电体内产生涡流,当除线圈与金属导体表面的距离x以外的所有参数一定时,涡流损耗只与金属导电体离线圈的距离x有关,因此可以进行位移测量。
涡流效应与金属导体本身的电阻率和磁导率有关,因此不同的材料会有不同的性能。
(二)、测量电路
图1-电涡流传感器调频电路图
三、实验设备
主机箱、电涡流传感器实验模板、电涡流传感器、测微头、被测体(铁、铜、铝圆片)
四、实验内容
(一)、实验操作
- 观察传感器结构,根据示意图安装测微头、被测体、电涡流传感器并接线。
图2-电涡流传感器安装、连接示意图
图3-正确安装实验设备、连接电路
- 调整测微头使被测体与传感器接触,调节合适的电压表量程,检查接线无误后,开启主机箱电源开关,记下电压表读数(x=0mm)。
- 调节测微头,取合适的步长记录下对应的电压表读数,逐渐增大x直到电压表示数几乎不变。
- 更换不同材质的被测体,重复前3测量。
(二)、数据处理
实验数据如表所示,铁、铜、铝的测量距离与输出电压分别为图4、5、6,表1、2、3所示。
表1-铜材料距离与输出电压之间的关系
图4-铜材料距离与输出电压之间的关系
表2-铁材料距离与输出电压之间的关系
图5-铁材料距离与输出电压之间的关系
表3-铝材料距离与输出电压之间的关系
图6-铝材料距离与输出电压之间的关系
图7-三种材料距离与输出电压之间的关系
- 铜材料在量程为1mm时灵敏度为3.1194V/mm,其非线性度为0.925%
- 铁材料在量程为1mm时灵敏度为1.5399V/mm,其非线性度为2.024%
- 铝材料在量程为1mm时灵敏度为3.2868V/mm,其非线性度为0.549%
- 铜材料在量程为3mm时灵敏度为2.5989V/mm,其非线性度为15.629%
- 铁材料在量程为3mm时灵敏度为1.7008V/mm,其非线性度为5.227%
- 铝材料在量程为3mm时灵敏度为2.2662V/mm,其非线性度为18.167%
(三)、结果分析
由图 7 可知,三种材料输出电压随距离的变化规律相似,均为先线性后几乎不变。
铜和铝材料的线性范围相差较小,均为1mm 左右,但灵敏度较高;铁材料的线性范围较大,能达到3mm左右,但灵敏度较低。
由于安装误差等因素,在表上距离为零时,几种材料都有一定的零点误差导致线性段偏移,其中铁最为明显,因此在处理数据时,为保证线性度,均舍去了前若干组数据。
五、 实验思考
- 电涡流传感器的量程与哪些因素有关,如果需要测量5mm的量程应如何设计传感器:
量程与线性度、灵敏度、初值(工作点)均有关系。如果需要测量5mm的量程应使传感器在这个范围内线性度最好,灵敏度最高,这样才能保证准确度。 - 用电涡流传感器进行非接触测量时,如何根据位移选择传感器:根据需要测量距离的大小,一般距离较大要求量程较大,且灵敏度要求不会太高;相反需要测量的距离较小,则对灵敏度要求较高,量程不需要太大。
- 为什么性能受不同材料的影响:传感器基于电涡流效应,感应涡流特性与被测物体的导电率、磁导率有关。
附录:数据处理代码
%%-------------电涡流传感器位移特性实验------------%%
% 代码功能:处理实验数据--电涡流传感器位移特性实验
% 代码语言:matlab脚本
% 输 入:
% 铜、铁、铝材料位移x;单位:mm
% 铜、铁、铝测试电压V;单位:V
% 输 出:
% 灵敏度S;单位:V/mm
% 非线性误差δ%;单位:1
%
% 编写时间:2022年4月11日
% 更新时间:2022年4月11日
% 编 写 人: 骆苏
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 程序初始化
clc;clear;close all;
%% 〇、输入实验数据
Cu.x = [0.000 0.200 0.400 0.600 0.800 1.000...
1.200 1.400 1.600 1.800 2.000...
2.200 2.400 2.600 2.800 3.000...
3.200 3.400 3.600 3.800 4.000...
4.500 5.000 5.500 6.000 6.500...
7.000 10.000 13.000 16.000 19.000 22.000];
Cu.V = [1.55223 1.95269 2.5687 3.1959 3.8637 4.4688...
5.0463 5.6489 6.1811 6.7304 7.1699...
7.6031 8.0239 8.3766 8.7512 9.0500...
9.2630 9.5403 9.7730 10.0034 10.1815...
10.5481 10.8514 11.0677 11.2091 11.3319...
11.4255 11.6908 11.8174 11.8659 11.8842 11.8896];
Fe.x = [0.000 0.200 0.400 0.500 0.600 0.800 1.000...
1.200 1.400 1.500 1.600 1.800 2.000...
2.500 3.000 3.500 4.000 4.500 5.000...
6.000 7.000 8.000 9.000 10.000...
11.000 12.000 13.000 14.000 15.000...
16.000 17.000 18.000 19.000 20.000];
Fe.V = [0.004/1000 0.018/1000 62.850/1000 154.352/1000 0.24739 0.45602 0.66899...
0.89623 1.14620 1.27240 1.40275 1.69111 1.98581...
2.8070 3.7000 4.6210 5.5230 6.4528 7.2669...
8.6864 9.7372 10.4096 10.8689 11.1416...
11.3066 11.4536 11.5655 11.6327 11.6908...
11.7047 11.7416 11.7680 11.7923 11.8130];
Al.x = [0.000 0.200 0.400 0.600 0.800 1.000...
1.200 1.400 1.600 1.800 2.000...
2.200 2.400 2.600 2.800 3.000...
3.200 3.400 3.600 3.800 4.000...
4.500 5.000 5.500 6.000 6.500 7.000...
10.000 13.000 16.000 19.000 22.000];
Al.V = [1.90001 2.5652 3.2323 3.8903 4.5649 5.1701...
5.7877 6.3553 6.8750 7.3823 7.8168...
8.2200 8.6158 8.9604 9.2766 9.5416...
9.7970 10.0144 10.1924 10.3627 10.5060...
10.7948 11.0451 11.2326 11.3615 11.4500 11.5275...
11.8312 11.9173 11.9530 11.9541 11.9541 ];
%% 一、调用子程序处理实验数据,注意铁的零点偏差较大,取前10个数据均可作为备选的修正零点,铜、铝的取前3个即可
[Cu.long.a,Cu.long.b,Cu.p,Cu.D] = find_long_line(Cu.x,Cu.V,3,10);
[Cu.straight3.a,Cu.straight3.b,Cu.p,Cu.D] = find_straight_line(Cu.x,Cu.V,3,3);
[Cu.straight1.a,Cu.straight1.b,Cu.p,Cu.D] = find_straight_line(Cu.x,Cu.V,3,1);
[Fe.long.a,Fe.long.b,Fe.p,Fe.D] = find_long_line(Fe.x,Fe.V,10,10);
[Fe.straight3.a,Fe.straight3.b,Fe.p,Fe.D] = find_straight_line(Fe.x,Fe.V,10,3);
[Fe.straight1.a,Fe.straight1.b,Fe.p,Fe.D] = find_straight_line(Fe.x,Fe.V,10,1);
[Al.long.a,Al.long.b,Al.p,Al.D] = find_long_line(Al.x,Al.V,3,10);
[Al.straight3.a,Al.straight3.b,Al.p,Al.D] = find_straight_line(Al.x,Al.V,3,3);
[Al.straight1.a,Al.straight1.b,Al.p,Al.D] = find_straight_line(Al.x,Al.V,3,1);
%% 二、绘制图表
figure(1);
plot(Cu.x,Cu.V,'--x','Color','k','LineWidth',1.5,'MarkerSize',6);
hold on;
plot(Cu.x(Cu.long.a:Cu.long.b),polyval(Cu.p{Cu.long.a,Cu.long.b},Cu.x(Cu.long.a:Cu.long.b))...
,'-','Color','r','LineWidth',3,'MarkerSize',8);
hold on;
plot(Cu.x(Cu.long.a)/2+Cu.x(Cu.long.b)/2,polyval(Cu.p{Cu.long.a,Cu.long.b},Cu.x(Cu.long.a)/2+Cu.x(Cu.long.b)/2),'.','Color','k','MarkerSize',30);
text(Cu.x(Cu.long.a)/2+Cu.x(Cu.long.b)/2,polyval(Cu.p{Cu.long.a,Cu.long.b},Cu.x(Cu.long.a)/2+Cu.x(Cu.long.b)/2),...
[' ','\fontname{Times New Roman}最佳工作点x=\it \rm',num2str(Cu.x(Cu.long.a)/2+Cu.x(Cu.long.b)/2),'mm,',...
'灵敏度',num2str(Cu.p{Cu.long.a,Cu.long.b}(1)),'V/mm,非线性度',num2str(Cu.D(Cu.long.a,Cu.long.b)),'%']); %指定位置标注
legend('show');
legend({'铜材料测试曲线','铜材料线性段拟合曲线','最佳工作点'});
legend('Location','southeast');
grid on;
title('铜材料距离与输出电压')
xlabel('传感器与材料距离x/mm');
ylabel('输出电压V/V');
figure(2);
plot(Fe.x,Fe.V,'--x','Color','k','LineWidth',1.5,'MarkerSize',6);
hold on;
plot(Fe.x(Fe.long.a:Fe.long.b),polyval(Fe.p{Fe.long.a,Fe.long.b},Fe.x(Fe.long.a:Fe.long.b))...
,'-','Color','r','LineWidth',3,'MarkerSize',8);
hold on;
plot(Fe.x(Fe.long.a)/2+Fe.x(Fe.long.b)/2,polyval(Fe.p{Fe.long.a,Fe.long.b},Fe.x(Fe.long.a)/2+Fe.x(Fe.long.b)/2),'.','Color','k','MarkerSize',30);
text(Fe.x(Fe.long.a)/2+Fe.x(Fe.long.b)/2,polyval(Fe.p{Fe.long.a,Fe.long.b},Fe.x(Fe.long.a)/2+Fe.x(Fe.long.b)/2),...
[' ','\fontname{Times New Roman}最佳工作点x=\it \rm',num2str(Fe.x(Fe.long.a)/2+Fe.x(Fe.long.b)/2),'mm,',...
'灵敏度',num2str(Fe.p{Fe.long.a,Fe.long.b}(1)),'V/mm,非线性度',num2str(Fe.D(Fe.long.a,Fe.long.b)),'%']); %指定位置标注
legend('show');
legend({'铁材料测试曲线','铁材料线性段拟合曲线','最佳工作点'});
legend('Location','southeast');
grid on;
title('铁材料距离与输出电压')
xlabel('传感器与材料距离x/mm');
ylabel('输出电压V/V');
figure(3);
plot(Al.x,Al.V,'--x','Color','k','LineWidth',1.5,'MarkerSize',6);
hold on;
plot(Al.x(Al.long.a:Al.long.b),polyval(Al.p{Al.long.a,Al.long.b},Al.x(Al.long.a:Al.long.b))...
,'-','Color','r','LineWidth',3,'MarkerSize',8);
hold on;
plot(Al.x(Al.long.a)/2+Al.x(Al.long.b)/2,polyval(Al.p{Al.long.a,Al.long.b},Al.x(Al.long.a)/2+Al.x(Al.long.b)/2),'.','Color','k','MarkerSize',30);
text(Al.x(Al.long.a)/2+Al.x(Al.long.b)/2,polyval(Al.p{Al.long.a,Al.long.b},Al.x(Al.long.a)/2+Al.x(Al.long.b)/2),...
[' ','\fontname{Times New Roman}最佳工作点x=\it \rm',num2str(Al.x(Al.long.a)/2+Al.x(Al.long.b)/2),'mm,',...
'灵敏度',num2str(Al.p{Al.long.a,Al.long.b}(1)),'V/mm,非线性度',num2str(Al.D(Al.long.a,Al.long.b)),'%']); %指定位置标注
legend('show');
legend({'铝材料测试曲线','铝材料线性段拟合曲线','最佳工作点'});
legend('Location','southeast');
grid on;
title('铝材料距离与输出电压')
xlabel('传感器与材料距离x/mm');
ylabel('输出电压V/V');
figure(4);
plot(Cu.x,Cu.V,'-x','Color','b','LineWidth',1.5,'MarkerSize',6);
hold on;
plot(Cu.x(Cu.long.a:Cu.long.b),polyval(Cu.p{Cu.long.a,Cu.long.b},Cu.x(Cu.long.a:Cu.long.b))...
,'--','Color','b','LineWidth',3,'MarkerSize',8);
hold on;
plot(Fe.x,Fe.V,'-x','Color','k','LineWidth',1.5,'MarkerSize',6);
hold on;
plot(Fe.x(Fe.long.a:Fe.long.b),polyval(Fe.p{Fe.long.a,Fe.long.b},Fe.x(Fe.long.a:Fe.long.b))...
,'--','Color','k','LineWidth',3,'MarkerSize',8);
hold on;
plot(Al.x,Al.V,'-x','Color','r','LineWidth',1.5,'MarkerSize',6);
hold on;
plot(Al.x(Al.long.a:Al.long.b),polyval(Al.p{Al.long.a,Al.long.b},Al.x(Al.long.a:Al.long.b))...
,'--','Color','r','LineWidth',3,'MarkerSize',8);
legend('show');
legend({'铜材料测试曲线','铜材料线性段拟合曲线','铁材料测试曲线','铁材料线性段拟合曲线','铝材料测试曲线','铝材料线性段拟合曲线',});
legend('Location','southeast');
grid on;
title('不同材质对涡流传感器的影响')
xlabel('传感器与材料距离x/mm');
ylabel('输出电压V/V');
%% 三、输出结论
fprintf('铜材料在量程为1mm时灵敏度为%6.4fV/mm,其非线性度为%4.3f%% \n',Cu.p{Cu.straight1.a,Cu.straight1.b}(1),Cu.D(Cu.straight1.a,Cu.straight1.b));
fprintf('铁材料在量程为1mm时灵敏度为%6.4fV/mm,其非线性度为%4.3f%% \n',Fe.p{Fe.straight1.a,Fe.straight1.b}(1),Fe.D(Fe.straight1.a,Fe.straight1.b));
fprintf('铝材料在量程为1mm时灵敏度为%6.4fV/mm,其非线性度为%4.3f%% \n',Al.p{Al.straight1.a,Al.straight1.b}(1),Al.D(Al.straight1.a,Al.straight1.b));
fprintf('铜材料在量程为3mm时灵敏度为%6.4fV/mm,其非线性度为%4.3f%% \n',Cu.p{Cu.straight3.a,Cu.straight3.b}(1),Cu.D(Cu.straight3.a,Cu.straight3.b));
fprintf('铁材料在量程为3mm时灵敏度为%6.4fV/mm,其非线性度为%4.3f%% \n',Fe.p{Fe.straight3.a,Fe.straight3.b}(1),Fe.D(Fe.straight3.a,Fe.straight3.b));
fprintf('铝材料在量程为3mm时灵敏度为%6.4fV/mm,其非线性度为%4.3f%% \n',Al.p{Al.straight3.a,Al.straight3.b}(1),Al.D(Al.straight3.a,Al.straight3.b));
%% 附、子程序部分
function [p,y_fit,D] = fit(x,y)
%%%%-------- 线性拟合 --------%%%%
% 代码功能: 对输入数据进行最小二乘拟合,返回拟合值结果与非线性度
% 编写语言: matlab脚本
% 输 入:
% 自变量数据集x,单位:无关;浮点行向量
% 因变量数据值y,单位:无关;浮点行向量
% 输 出:
% 拟合多项式k,单位:1;二维行向量(斜率,截距)
% 拟合值y_fit,单位:无关
% 非线性度D%,单位:1;百分数
%
% 编 写 人: 骆苏
% 编写时间: 2022年4月11日
% 更新时间: 2022年4月11日
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 进行拟合
p = polyfit(x,y,1);
% 计算拟合值
y_fit = polyval(p,x);
% 计算拟合误差
d = (y-y_fit)./y;
% 计算非线性度
D = max(abs(d))*100;
end
function [a_out,b_out,p,Delta] = find_long_line(x,y,a_max,Delta_max)
%%%%-------- 给定线性度找长度最长的线性段 --------%%%%
% 代码功能:
% 选取输入数据(x,y)的第a到b组数据段,对其进行最小二乘并计算其非线性度
% 将第a到b组数据的拟合结果存在p{a,b},D(a,b)中
% 选取a_max之前的a,比较所有非线性度小于Delta的数据段,选取最长的一段
% 最后,输出此段的起始数据索引a与结尾数据索引b
% 编写语言: matlab脚本
% 输 入:
% 自变量数据集x,单位:无关;浮点行向量
% 因变量数据值y,单位:无关;浮点行向量
% 可接受的最大零点索引a_max,单位:1;整数
% 可接受的最大非线性误差Delta_max,单位:%;整数、百分数
% 输 出:
% 线性段起始索引a_out
% 线性段结束索引b_out,
% 不同分段的拟合多项式结构体p,单位:1;结构体数组(起点a,终点b).二维行向量[斜率,截距]
% 非线性度D%,单位:1;百分数,浮点型数组(起点a,终点b)
%
% 编 写 人: 骆苏
% 编写时间: 2022年4月11日
% 更新时间: 2022年4月11日
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 读取数据集长度
[~,N] = size(x);
%% 遍历计算所有分段方式的拟合结果与线性度
% 初始化提高效率
p{N-1,N} = [0,0];
Delta(N-1,N) = 0;
% 选取第a到b组数据遍历计算拟合结果
for a = 1:N-1
for b = a+1:N
[p{a,b},~,Delta(a,b)] = fit(x(a:b),y(a:b));
end
end
%% 选取最长的线性段
% 初始化,先选取一个最短的线性段
l_max = x(2) - x(1);
% 遍历比较所有满足最大非线性值要求的线性段
for a = 1:a_max
for b = a+1:N
l = x(b)-x(a);
if l>l_max && Delta(a,b)< Delta_max
l_max = l;
a_out = a;
b_out = b;
end
end
end
end
function [a_out,b_out,p,Delta] = find_straight_line(x,y,a_max,x_min)
%%%%-------- 给定长度找线性度最好的线性段 --------%%%%
% 代码功能:
% 选取输入数据(x,y)的第a到b组数据段,对其进行最小二乘并计算其非线性度
% 将第a到b组数据的拟合结果存在p{a,b},D(a,b)中
% 选取a_max之前的a,比较所有长度大于x_min的数据段,选取非线性度最小的一段
% 最后,输出此段的起始数据索引a与结尾数据索引b
% 编写语言: matlab脚本
% 输 入:
% 自变量数据集x,单位:无关;浮点行向量
% 因变量数据值y,单位:无关;浮点行向量
% 可接受的最大零点索引a_max,单位:1;整数
% 可接受的最短线性段长度x_min,单位:无关;浮点数
% 输 出:
% 线性段起始索引a_out
% 线性段结束索引b_out,
% 不同分段的拟合多项式结构体p,单位:1;结构体数组(起点a,终点b).二维行向量[斜率,截距]
% 非线性度Delta%,单位:1;百分数,浮点型数组(起点a,终点b)
%
% 编 写 人: 骆苏
% 编写时间: 2022年4月11日
% 更新时间: 2022年4月11日
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 读取数据集长度
[~,N] = size(x);
%% 遍历计算所有分段方式的拟合结果与线性度
% 初始化提高效率
p{N-1,N} = [0,0];
Delta(N-1,N) = 0;
% 选取第a到b组数据遍历计算拟合结果
for a = 1:N-1
for b = a+1:N
[p{a,b},~,Delta(a,b)] = fit(x(a:b),y(a:b));
end
end
%% 选取线性度最好的线性段
% 初始化,先选取整个数据段,线性度较差
Delta_min = Delta(1,N);
% 遍历比较所有满足最小长度要求的线性段
for a = 1:a_max
for b = a+1:N
l = x(b)-x(a);
if l>=x_min && Delta(a,b)<Delta_min
Delta_min = Delta(a,b);
a_out = a;
b_out = b;
end
end
end
end
更多推荐
所有评论(0)