激光测距传感器FT55-RLAM-800
注:这里针对我们所使用的激光测距传感器FT 55-RLAM-800,不同测距传感器处理方式不完全相同。
问: 怎么从激光测距传感器得到数据并对其测量数据进行处理,进而得到它的测量真实数据呢?(单位mm)
答: 步骤如下。
激光测距传感器的数据处理步骤为:
1.得到传感器的测量数据
打开友善串口调试助手,设置选项为上图所示。选择好端口号,波特率和数据位设置正确后,自行设置合适的采样频率,点击播放按钮,然后在下面的白框中输入神秘指令 81 04 41 44,准备好后,点击发送,在上面的白框中即可出现十六进制的数据。
2.处理测量数据中没有换行的问题
测完数据后,复制所有的数据到word中,ctrl + F 查找数据,将错误的没有换行的空格81替换为 ^p81 ,确保替换一次后没有问题,全部替换,再将替换后的数据粘贴回txt文本中。
3.将正确换行的数据导入到excel中
打开Excel,点击数据 – 自文本导入 – 分隔符号选择为空格 – 下一步 – 完成。如果出现导入数据只有一列,则点击数据 – 分列 – 分隔符号为空格 – 完成。
4.将十六进制数据转换为8位二进制
在第一行的数据后边输入 =HEX2BIN(D2,8) 与 =HEX2BIN(E2,8),即可出现D2列与E2列对应的8位二进制位,再将这两列数据粘贴回.txt文本中。
5.处理二进制位的txt数据
在matlab中处理数据,matlab导入上一步的txt文本,导入数据格式为文本字符串形式,再根据以下程序来对数据进行处理。
%以下程序为激光测距传感器的数据处理
%导入二进制数据时,导入形式为文本字符串形式,而非数值形式
left = char(VarName1);
right = char(VarName2);
%前八位数据的截取--舍弃高两位
for i=1:length(left)
temp = left(i,:);
interupt_left(i,:) = temp(3:8);
end
%后八位数据的截取--舍弃高两位
for i=1:length(right)
temp = right(i,:);
interupt_right(i,:) = temp(3:8);
end
%前后二进制数据的拼接
for i=1:length(right)
Splice(i,:) = [interupt_left(i,:),interupt_right(i,:)] ;
%将拼接好的数据转化为十进制
temp_distance(i,:) = bin2dec(Splice(i,:));
end
%数据转换
distance = temp_distance/4096 * 800 + 200;
%数据的预处理
for i=1:length(distance)-1
if(abs(distance(i+1) - distance(i)) > 2 )
distance(i+1) = distance(i);
end
end
%画出曲线图
figure
plot(distance)
即可得出数据曲线图。