基于MATLAB拟合的位移传感器补偿方案
前言
本文所用传感器为电涡流位移传感器,测量量为位移,输出量为电压,所用方法为软件拟合的方法结合微处理器对系统进行非线性补偿和温度补偿。
由于电涡流位移传感器位移测量具有严重的非线性特性,主要原因有:目标金属的位移和线圈阻抗的变化是非线性关系; 线圈阻抗的变化和电桥的输出是非线性关系; 电子器件的输入和输出不是绝对的线性关系。因此需要给传感器位移测量系统接入非线性补偿模块,以使系统的输出和目标金属的位移呈线性关系。此外,系统的输出受温度影响较为明显,其主要原因是探测线圈的阻抗受温度影响较大,由于本文使用的电子器件都是低温漂器件,输出受温度影响很小,因此系统整体的温度漂移主要来源于探测线圈。温度的变化影响系统的测量精度和线性度,需要设计温度补偿模块以排除温度的干扰。本文采用软件拟合的方法结合微处理器对系统进行非线性补偿和温度补偿。
补偿原理
假设电涡流传感器输出的电压为 UX,温度传感器测得环境温度为 CT,金属导体的位移 X 与 UX和 CT有关,因此 X 是 UX、CT上的二元函数,故采用二元函数拟合的方法进行补偿。使用二元回归分析算法得到输出结果,也可以理解成三元N次方程求解,已知X与Y,求Z的值。
即用 UX和 CT联合表示 X,如下所示:
X=f(UX,CT)
二元回归模型如下所示:
实验方法及数据
在不同温度下,测量不同距离的位移所产生的电压,记录数据。由于现阶段缺少实验设备进行测试,故先使用参考文章中的数据,后续再更新实测数据。文章中具体数据如下:
MATLAB数据处理
使用MATLAB的cftool工具可以轻松处理此类问题,具体步骤如下:
1.在MATLAB命令行窗口输入U、C、X的值,依次为下方三个矩阵。(为方便使用,这里直接附上可复制的数据)
u =
0.2880 0.5260 1.0880 1.5440 1.9130 2.4350 2.9520 3.5990 4.2830
1.8380 2.0350 2.4760 2.8550 3.1290 3.5590 3.9190 4.3800 4.9470
3.8380 4.0300 4.4350 4.7840 5.0860 5.4580 5.8170 6.2480 6.7950
5.6250 5.8170 6.2020 6.5160 6.8100 7.1500 7.5190 7.9290 8.4560
7.2450 7.4170 7.7970 8.0960 8.3740 8.6940 9.0480 9.4580 9.9540
8.6830 8.8660 9.2250 9.5040 9.7770 10.0760 10.4250 10.8300 11.3110
9.9640 10.1520 10.5210 10.7750 11.0180 11.3160 11.6660 12.0560 12.5370
11.1290 11.3160 11.6610 11.9190 12.1720 12.4400 12.7800 13.1650 13.6300
12.1720 12.3540 12.7040 12.9570 13.1900 13.4530 13.7870 14.1870 14.6230
13.1140 13.2960 13.6250 13.8780 14.4160 14.3650 14.6990 15.0890 15.5190
13.9600 14.1370 14.4860 14.7140 14.9520 15.2000 15.5140 15.9040 16.3390
14.7190 14.9010 15.2410 15.4680 15.7060 15.9240 16.2530 16.6480 17.0740
15.4030 15.5800 15.9190 16.1520 16.3850 16.5930 16.9170 17.3320 17.7320
16.0250 16.2180 16.5320 16.7700 17.0180 17.2100 17.5290 17.9390 18.3390
16.5870 16.7850 17.0990 17.3370 17.5850 17.7620 18.0810 18.5010 18.8860
17.0990 17.2960 17.6150 17.8430 18.0860 18.2690 18.5770 19.0230 19.4180
17.5700 17.7570 18.0760 18.3140 18.5420 18.7290 19.0430 19.4670 19.8530
17.9900 18.1820 18.5010 18.7390 18.9670 19.1500 19.4480 19.8440 20.2480
18.3750 18.5670 18.8860 19.1290 19.3470 19.5250 19.8130 20.2130 20.5980
18.7290 18.9170 19.2310 19.4790 19.7070 19.8530 20.1420 20.5430 20.9580
19.0530 19.2410 19.5450 19.7830 20.0150 20.1780 20.4150 20.7960 21.2560
c =
22.5000 25.8000 31.6000 36.6000 40.7000 45.4000 51.0000 56.6000 61.6000
22.5000 25.8000 31.6000 36.6000 40.7000 45.4000 51.0000 56.6000 61.6000
22.5000 25.8000 31.6000 36.6000 40.7000 45.4000 51.0000 56.6000 61.6000
22.5000 25.8000 31.6000 36.6000 40.7000 45.4000 51.0000 56.6000 61.6000
22.5000 25.8000 31.6000 36.6000 40.7000 45.4000 51.0000 56.6000 61.6000
22.5000 25.8000 31.6000 36.6000 40.7000 45.4000 51.0000 56.6000 61.6000
22.5000 25.8000 31.6000 36.6000 40.7000 45.4000 51.0000 56.6000 61.6000
22.5000 25.8000 31.6000 36.6000 40.7000 45.4000 51.0000 56.6000 61.6000
22.5000 25.8000 31.6000 36.6000 40.7000 45.4000 51.0000 56.6000 61.6000
22.5000 25.8000 31.6000 36.6000 40.7000 45.4000 51.0000 56.6000 61.6000
22.5000 25.8000 31.6000 36.6000 40.7000 45.4000 51.0000 56.6000 61.6000
22.5000 25.8000 31.6000 36.6000 40.7000 45.4000 51.0000 56.6000 61.6000
22.5000 25.8000 31.6000 36.6000 40.7000 45.4000 51.0000 56.6000 61.6000
22.5000 25.8000 31.6000 36.6000 40.7000 45.4000 51.0000 56.6000 61.6000
22.5000 25.8000 31.6000 36.6000 40.7000 45.4000 51.0000 56.6000 61.6000
22.5000 25.8000 31.6000 36.6000 40.7000 45.4000 51.0000 56.6000 61.6000
22.5000 25.8000 31.6000 36.6000 40.7000 45.4000 51.0000 56.6000 61.6000
22.5000 25.8000 31.6000 36.6000 40.7000 45.4000 51.0000 56.6000 61.6000
22.5000 25.8000 31.6000 36.6000 40.7000 45.4000 51.0000 56.6000 61.6000
22.5000 25.8000 31.6000 36.6000 40.7000 45.4000 51.0000 56.6000 61.6000
22.5000 25.8000 31.6000 36.6000 40.7000 45.4000 51.0000 56.6000 61.6000
x =
0 0 0 0 0 0 0 0 0
0.1000 0.1000 0.1000 0.1000 0.1000 0.1000 0.1000 0.1000 0.1000
0.2000 0.2000 0.2000 0.2000 0.2000 0.2000 0.2000 0.2000 0.2000
0.3000 0.3000 0.3000 0.3000 0.3000 0.3000 0.3000 0.3000 0.3000
0.4000 0.4000 0.4000 0.4000 0.4000 0.4000 0.4000 0.4000 0.4000
0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000
0.6000 0.6000 0.6000 0.6000 0.6000 0.6000 0.6000 0.6000 0.6000
0.7000 0.7000 0.7000 0.7000 0.7000 0.7000 0.7000 0.7000 0.7000
0.8000 0.8000 0.8000 0.8000 0.8000 0.8000 0.8000 0.8000 0.8000
0.9000 0.9000 0.9000 0.9000 0.9000 0.9000 0.9000 0.9000 0.9000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.1000 1.1000 1.1000 1.1000 1.1000 1.1000 1.1000 1.1000 1.1000
1.2000 1.2000 1.2000 1.2000 1.2000 1.2000 1.2000 1.2000 1.2000
1.3000 1.3000 1.3000 1.3000 1.3000 1.3000 1.3000 1.3000 1.3000
1.4000 1.4000 1.4000 1.4000 1.4000 1.4000 1.4000 1.4000 1.4000
1.5000 1.5000 1.5000 1.5000 1.5000 1.5000 1.5000 1.5000 1.5000
1.6000 1.6000 1.6000 1.6000 1.6000 1.6000 1.6000 1.6000 1.6000
1.7000 1.7000 1.7000 1.7000 1.7000 1.7000 1.7000 1.7000 1.7000
1.8000 1.8000 1.8000 1.8000 1.8000 1.8000 1.8000 1.8000 1.8000
1.9000 1.9000 1.9000 1.9000 1.9000 1.9000 1.9000 1.9000 1.9000
2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000
2.输入 cftool ,运行。
3.在得到的如下界面中设置X、Y、Z对应的变量。
4.设置阶数,直至符合趋势。这里设置3阶较为合适,得到下图。
5.根据左下角“Results”中的公式及其系数可得到拟合的函数,直接使用该函数将测得的温度与电压代入计算即可。
参考文章:《基于电涡流传感器的微位移测量系统的设计_荣锋》