距离传感器实验
一、前言
第二次传感器实验课做的是距离传感器的实现
二、实验目的
- 了解距离传感器的工作原理。
- 通过对距离传感器信号的检测,了解其在电子产品中的实际应用。
三、实验原理
本实验通过距离传感器 GP2D12 获取传感器与阻挡物之间的距离,并将采集到的距离值通过串口输出到上位机程序。
1)GP2D12 参数:
1、测量范围:10-80cm 2、最大允许角度:>40度 3、电源电压:4.5-5.5V 4、平均功耗:35mA 5、峰值功耗:约200mA 6、更新频率/周期:25Hz/40ms 7、模拟输出噪声:<200mV 8、测量距离与输出模拟电压关系:2.4V-0.4V 模拟信号对应 10cm-80cm,输出与距离成反比例非线性关系。
2)距离和电压曲线
从图中可以看出(我是没看出来),当被探测物体的距离小于 10cm 的时候,输出电压急剧下降,也就是说从电压读数来看,物体的距离应该是越来越远了。因此小于 10cm 时测量值不能被采用。
三、实验过程
\1. 在串口中直接打印出 value 值,通过卷尺测量传感器与障碍物的距离,在 Excel 中记录距离与 value 值
\2. 在 Excel 中对数据进行分析,因为 value 与距离并不是线性关系的,所以需要对函数进行分段处理,并拟合出斜率和纵截距 下面举个栗子,如果需要更高精度的结果,可以适当缩小测量间隔
\3. 通过在 Excel 中搞到的数据,我们可以用来完成 stadiometry.c 中 get_stadiometry_data() 函数的代码
|
|
在上述代码中,我们运用C语言数组与循环体的特性,将拟合好的斜率和截距以及区间的端点值直接写入数组中,通过循环并用函数判断 value 值是否落在某个相邻两点的区间内,极大的减少了代码的重复性,提高了编码与实验的效率。(说人话就是不用写一堆if elseif 了)
\4. 为了提高测量精度,我们还可以通过多次获取距离来计算平均值的方式得到误差更小的距离
|
|
串口输出
四、实验结论或体会
在本次实验前,我提前预习了这次实验的内容,提前标记好需要用到的传感器,以及了解了get_stadiometry_data()函数需要实现的要求,在课上我们迅速测量出20组距离与value的数据,并通过 Excel 计算出分段函数的斜率和纵截距,使用函数与循环的方法优雅的实现了多段函数的返回值,本来我们应该将工作重心放在打磨数据、进一步校准距离传感器上面的,但因为没听到实验要求,把附加题也做了,然后花费了很多时间在调试扩展实验的延迟数值上,导致距离传感器在测量较大距离时误差相对较大,最后我们通过增加取传感器返回值平均数的方法,减少了误差。