做一个激光测距测高仪

2015-06-05 01:37谢作如郑一粟
中国信息技术教育 2015年5期
关键词:显示屏仪器激光

谢作如 郑一粟

笔者做激光测距测高仪的想法源自一款用摄像头作为测量工具的APP。这类APP的测量原理是根据手机、平板的摄像头成像的比例关系,计算出测量距离和物体高度。例如,iPhone有款软件叫“光学测距仪”,运行界面如图1所示。

在使用过程中,笔者发现这类APP的操作其实还是比较麻烦的,因为需要参照物。如果要测量某头顶某条梁的长度,或者屋顶离地面的高度,基于摄像头的测量软件几乎是无能为力了。那么,有没有其他的解决方案呢?于是,笔者与学生一起进行研究,最终基于激光的测距测高仪就这样产生了。

● 原理

笔者准备使用激光作为测量工具,并非使用反射时间来计算。接下来要用到数学知识了。如果要测量物体P到物体T的距离,可以用这样的办法:如图2所示,在物体P处找两个点,如A、B,分别连接物体T的C点。这时,只要知道∠BAC(θ1)和∠ABC(θ2)的角度,以及AB线段的长度,就可以算出C点到AB的垂直距离L。

计算公式为:

只要能得到这两个夹角的准确角度,就可以计算出物体离测量仪器的距离了。然后,是否还可以利用这样的原理继续得到物体的高度或者长度呢?(参见图3)

如果在测量仪器上设置3个点。其中点1连接被测物体的一端A,点2和点3分别连接被测物体的另一段B。只要得到线段ab的长度及角度θ1、θ2和θ3的大小,便可以求出被测物的高度h以及测距仪器与被测物的水平距离x。

那么,连接测量仪器和被测物体的直线用什么来实现?毫无疑问,激光是最好的方案。因为激光具有定向发光、亮度极高的特点。只要把3个激光发射头安装在测量仪器上,手动调整其中两束激光在被测物体的一个端点上重叠,另一束激光则发射在物体的另一端点。只要能确保测量仪器和被测物体之间是平行的,就能计算出距离和高度。

● 材料

根据上面的原理,要制作一个这样的激光测距测高仪,大致需要如下材料。

1.微控制器

因为涉及计算,就需要用到一个小型的中央处理器。由于笔者仅是为了做出一个模型,所以就选择了常见的Arduino。如果在意计算的精度,可以选择树莓派或者pcDuino之类的迷你电脑。

2.角度传感器

角度传感器的选择是最重要的,因为要获取精确的角度进行计算。牵一发而动全身,一点点的误差,经过计算放大后,误差就很可怕了。在淘宝上常见的角度传感器如图4所示。

这种传感器的旋转角度最多只有300度,将5V电压均分到每1度后,精度是相当低的。后来笔者又在淘宝上找到了多圈的精密角度传感器(如图5),才算初步解决了误差的问题。

3.液晶显示器

计算结果如果需要实时显示,那么仪器上就需要液晶显示屏,或称LCD。因为仪器上仅仅需要显示几行字符,所以笔者选择了标准1602液晶显示屏(如图6),两行,每行显示16个字符。

4.激光头

激光头利用的是低功率的可视激光,常见的激光指示器有红光(655/635nm)、黄光(589/593nm)、绿光(532nm)、蓝光(473/445nm)和蓝紫光(405nm)等。起初,笔者把手头的电子教鞭拆了,后来发现淘宝上有现成的激光头卖(如图7),笔者选择了一款5V的,直接使用Arduino输出的5V电流。需要注意的是,激光头很危险,绝对不能用肉眼去看,建议调试的时候先不要给激光头供电。

● 接线

1.角度传感器的接线

角度传感器接在Arduino的模拟口(如图8),如果3个角度传感器分别用跳线接入Arduino控制板会显得很乱,于是笔者使用了一块扩展板。

2.激光头的接线

激光头的电源直接从Arduino的5V和Gnd上接出。

3.显示屏的接线

笔者使用的LCD是IIC/TWI接口的,用4根线连接到Arduino扩展板的专用接口即可(如图9)。

● 编程

Arduino的代码比笔者想象中简单,其核心代码如下页表所示。

最终的测试效果如下页图10所示,显示屏上第一行数据是传感器的参考值,第二行数据分别是距离和高度,用“|”分开。例如,想要测量一堵墙的高度,笔者先要将测量仪器保持垂直,一束激光束(激光点一)射向墙的一端,另外两束射向墙的另一端,按下按钮,Arduino就可以实时计算,便可得到树的高度和人与树之间的距离了。

● 包装

为了看起来像个作品,笔者使用雕刻机制作了激光头和角度传感器的连接件(如图11)。当然,用3D打印机打印也是可以的,只是当时笔者的创客空间还没有买3D打印机。

再用雕刻机做一个底板,固定这些仪器。3个激光头排列在一起,看起来是不是很酷?旁边一条四线的接口是预留给接LCD用的,图12为整体效果。

再看看另一面的效果,虽然线有点多,但是并不是很乱(如图13)。

这款仪器的使用步骤如下:①连接电池,保持仪器呈垂直状态;②打开电源,显示屏若未正常显示数字,请按下Arduino主板上的reset按钮;③调节“下、中”激光,同时对准被测物体下端;④调节“上”激光,对准被测物体上端;⑤在显示屏上将显示X(测距仪与被测物之间的水平距离)与Y(被测物两个端点之间的距离)。

● 优化

正如一开始担心的那样,因为角度传感器的精度问题,测量距离稍微远一点的物体,误差就很大了。因为如果距离一远,角度传感器上的1度,对应的就是一两米的距离。要解决这个问题,找精度很高的角度传感器也无济于事,因为调节激光头给角度传感器带来的旋转角度实在太小了。除非如图14一样,用齿轮组将激光头的旋转角度放大,然后给角度传感器。

因为自己动手做齿轮组,误差还是挺大,因此笔者还试着拆了一个塑料的直流电机变速箱。但是这样一来,整个仪器的体积就要大很多,看来如果要实现做工精细并不是一件容易的事(如图15)。

笔者还为这款仪器设计了一个外壳,如图16所示。黑色是激光调节旋钮,红色按钮是开关。仅仅是设计,但并没有真正生产。

当然,如果仅仅考虑演示用激光进行测距、测高的原理,笔者也已经达到了探究的目的。其实这个作品原理还可以用于课堂教学。如果将角度传感器的数据接入电脑,使用S4A或者Scratch2.0之类的软件,教师可以直接使用这些数据进行教学或者验证一些数学原理,如三角函数、相似三角形等知识,定然会有助于学生的学习。

如果对相关内容感兴趣,请关注主持人博客。

猜你喜欢
显示屏仪器激光
2018年智能手表显示屏出货量同比增长42%
苍蝇迷恋显示屏
事出有因
LG申请欧盟商标 或布局MicroLED显示屏
发明
激光3D长绳
不可忽视的化学仪器的创新使用
神奇的激光
电子书 等
仪器工作原理决定了仪器的读数规则