基于BP神经网络的光纤光栅应变传感器温度补偿方法
基于BP神经网络的光纤光栅应变传感器温度补偿方法
光纤光栅传感器因其体积小、重量轻、抗电磁干扰能力强以及可实现远距离传感等特点,在众多领域得到广泛应用。然而,光纤光栅同时对温度和应变敏感,这导致了应变和温度的交叉敏感问题,严重影响了传感精度和可靠性。本文提出了一种基于BP神经网络的温度补偿方法,并使用Matlab进行仿真验证,旨在消除或减弱温度对应变测量的干扰。
一、光纤光栅应变传感器的交叉敏感问题
光纤光栅传感器的核心部件是光纤光栅,其工作原理是利用光纤光栅的布拉格波长随外部环境变化而变化的特性进行传感。然而,光纤光栅的布拉格波长不仅受应变影响,还受温度影响。具体的来说,当光纤光栅受到应变作用时,其布拉格波长会发生漂移;同样,当光纤光栅受到温度变化的影响时,其布拉格波长也会发生漂移。这种现象导致了应变和温度的交叉敏感问题,即当光纤光栅同时受到应变和温度变化的影响时,难以准确区分应变和温度的影响,从而导致应变测量结果出现偏差。
传统的温度补偿方法主要包括采用补偿元件、建立经验公式以及采用其他类型的传感器等。然而,这些方法往往存在一定的局限性,例如补偿元件的体积和成本问题,经验公式的精度受限以及多传感器融合的复杂性等。
二、基于BP神经网络的温度补偿方法
人工神经网络,特别是BP神经网络,以其强大的非线性映射能力,能够有效地解决复杂的非线性问题。本文提出利用BP神经网络构建一个温度补偿模型,以实现对光纤光栅应变传感器的温度补偿。该模型将光纤光栅的布拉格波长变化量作为输入,温度和应变作为输出。
模型的训练过程如下:首先,需要采集一组光纤光栅在不同温度和应变下的布拉格波长变化数据。这些数据可以通过实验获得,或者通过物理模型模拟生成。然后,利用这些数据对BP神经网络进行训练。训练的目标是使网络输出的温度和应变值与实际值之间的误差最小化。训练完成后,该BP神经网络就能够根据光纤光栅的布拉格波长变化量,准确地预测出实际的应变值,从而实现温度补偿。
网络结构的设计需要根据实际情况进行调整,例如隐含层数、神经元个数等。通常情况下,可以通过尝试不同的网络结构,并比较其性能指标,例如均方误差(MSE)和R方值,来选择最优的网络结构。
三、Matlab代码实现
以下代码段展示了基于Matlab的BP神经网络温度补偿方法的实现过程。代码中假设已经获得了一组训练数据,包含布拉格波长变化量、温度和应变。
% 假设train_data和test_data已经定义好,分别包含训练集和测试集的数据
% train_data.wavelength:训练集的布拉格波长变化量
% train_data.temperature:训练集的温度
% train_data.strain:训练集的应变
% test_data.wavelength:测试集的布拉格波长变化量
% test_data.temperature:测试集的温度
% test_data.strain:测试集的应变
% 创建BP神经网络
net = feedforwardnet([10 5]); % 两层隐含层,第一层10个神经元,第二层5个神经元
net.trainFcn = 'trainlm'; % 使用Levenberg-Marquardt算法训练
net.divideFcn = 'dividerand'; % 随机划分训练集、验证集和测试集
net.divideMode = 'sample'; % 按样本划分
net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 15/100;
net.divideParam.testRatio = 15/100;
% 训练网络
[net,tr] = train(net,train_data.wavelength',train_data.temperature');
% 测试网络
temperature_output = net(test_data.wavelength');
strain_output = net(test_data.wavelength');
% 计算误差
error_temperature = test_data.temperature - temperature_output';
error_strain = test_data.strain - strain_output';
% 计算均方误差
mse_temperature = mean(error_temperature.^2);
mse_strain = mean(error_strain.^2);
% 计算R方值
r_square_temperature = 1 - sum(error_temperature.^2) / sum((test_data.temperature - mean(test_data.temperature)).^2);
r_square_strain = 1 - sum(error_strain.^2) / sum((test_data.strain - mean(test_data.strain)).^2);
% 显示结果
disp(['MSE of temperature: ', num2str(mse_temperature)]);
disp(['MSE of strain: ', num2str(mse_strain)]);
disp(['R-square of temperature: ', num2str(r_square_temperature)]);
disp(['R-square of strain: ', num2str(r_square_strain)]);
四、结论
本文提出了一种基于BP神经网络的光纤光栅应变传感器温度补偿方法,并利用Matlab进行了仿真验证。该方法有效地利用了BP神经网络的非线性映射能力,解决了光纤光栅应变传感器中应变和温度交叉敏感的问题。通过合理的网络结构设计和训练数据选择,可以实现高精度的温度补偿。该方法为提高光纤光栅应变传感器的精度和可靠性提供了一种有效的途径。未来的研究可以关注更先进的神经网络模型,例如卷积神经网络和循环神经网络的应用,以及更大规模数据集的训练和模型优化,以进一步提高温度补偿的精度和鲁棒性。此外,实际应用中需要考虑噪声的影响以及如何进行有效的噪声抑制,以提升系统的整体性能。
参考文献
[1]王目光,李唐军,卓锋,等.光纤光栅传感器应变和温度交叉敏感问题分析[J].光通信研究, 2001(6):4.DOI:10.3969/j.issn.1005-8788.2001.06.013.