[项目]多功能测量仪 精华

查看: 313|回复: 5

[项目] 多功能测量仪

[复制链接]

0.jpg

视频演示


       在现实生活中,我们经常要测量一些物体的长度,平面的面积等等,常用的测量工具有水平仪、卷尺、量角器等,测量不同的内容要用到不同的测量工具,有时要测量的内容很多,要带上多种工具,而且测量后还要根据测量到的数据进行计算,数值比较复杂的还容易算错。于是就有了做一个多功能测量仪的想法,我们只管测量相应的长度或角度等,测量仪会把测量到的结果在显示屏上显示出来,方便我们查看,碰到要计算的交给程序去计算,这样就为我们的测量、计算提供了极大的便利。

功能描述

       这个多功能测量仪目前集成了水平仪、长度测量、面积测量、体积测量、角度测量等12项功能,通过按掌控板上的B键进行测量模式的切换,按掌控板上的A键进行确认测量结果,在测量时激光二极管会发射出红色的激光,指示测量的位置,程序会自动计算相应的结果。通过触摸掌控板上的P键重新测量,触摸掌控板上的N键回到首页。功能及效果图如下:

111.png

【硬件清单】

       掌控板                            1
       百灵鸽掌控扩展板           1
       超声波传感器                  1
       激光发射模块                  1
       杜邦线
       激光切割件

【结构设计与搭建】

       1、激光切割件设计
       我们先利用软件在电脑中设计出其外壳,并用激光切割机切割亚克力外壳。
设计图.jpg


       2、剪掉激光发射模块上的三根针脚,把三根杜邦线分别焊接在激光发射模块的正极、负极和信号端上,并用热熔胶加以固定,这样可以避免接触的不良情况发生。如下图:
1.JPG


       3、同样道理把四根杜邦线焊接到超声波传感器上的正极、负极、TRIG和ECHO接口上,也用热熔胶加以固定。如下图:  
2.JPG


       4、把超声波传感器和激光发射模块安装到亚克力外壳的前面板上,也用热熔胶加以固定。如下图所示。
3.JPG

4.JPG

5.JPG
  

       5、再把亚克力外壳的侧面板和底部面板围起来,用热熔胶或502胶水固定。如下图:
6.JPG

7.JPG



       6、把掌控板、百灵鸽扩展板和亚克力顶部面板用三颗螺丝固定在一起。如下图:
8.JPG

9.JPG



       7、把超声波和激光发射模块上的杜邦线插到百灵鸽扩展板相对应的引脚上,正极插到扩展板V的引脚上,负极插到扩展板G的引脚上,超声波上的TRIG引脚线插到扩展板的P14针脚上,ECHO引脚线插到扩展板P13针脚上,把激光发射模块上的S引脚线插到扩展板的P16针脚上。如下图:
10.JPG



       8、最后把顶部面板合起来加以固定,这样多功能测量仪就组装好了。如下图:
12.JPG



【电路连接图】

接线图.jpg


【程序编写】
       1、程序的编写软件是mPython,打开mPython软件,连接好相应设备。
20.png


       2、我们先定义一个“初始化变量”的自定义函数,并在函数中定义一系列的变量。程序如下:
13.jpg


       这些变量主要存放超声波传感器测量到的值和计算出的结果。变量说明:M—测量模式、a—长度、b—宽度、h—高度、n—确定次数、r—半径、X—X轴倾斜角、Y—Y轴倾斜角。
       3、编写掌控板上A、B两个按键的程序。程序如下:
14.jpg


       A按键主要更改确定次数变量“n”的值,每按一下A键n的值就加1,这个n的值在各测量模式中使用,主要是通过n的值来告诉程序接下来要把测量到的数值赋值给哪个变量。
       B按键主要更改测量模式变量“M”的值,不同的M值切换到不同的测量模式,按一下B键M值就加1,直到M值为12时再按B键M值就设定为0,因为这个多功能测量仪共设置了12个测量功能,所以M值的范围为0—12。最后的OLED清空指令是为了按B键后清空所有显示内容,然后根据不同的函数显示相应的内容。
       4、编写掌控板上P、N两个触摸键的程序。程序如下:
15.jpg


       P触摸键是把确定次数变量“n”的值变为0,表示从当前测量模式重新开始测量,OLED清空指令同样是为了清空所有显示内容,然后根据不同的函数显示相应的内容。N触摸键是把测量模式变量“M”的值变为0,从而返回到首页。
       5、自定义函数“首页”的程序编写。程序如下:
17.jpg


       这个“首页”自定义函数程序主要就是在显示屏上显示两行文字,在显示前先清空原来的显示内容,再显示“首页”的相应内容,最后设置引脚P16为低就是让激光发射模块关闭。
       6、自定义函数“长度测量”的程序编写。程序如下:
18.jpg


       因为切换到长度测量这个测量模式进,n的值是为0的,这时显示屏上就会显示相关的文字信息,并让引脚P16的激光发射模块打开。在第二行“长度:”文字后面显示测量的实时长度,这里的长度会实时进行变化,为什么要在超声波传感器检测到的数值后面加6,这是因为超声波检测到的长度是从超声波中部到检测物体的距离,而在实际测量的时候我们还要加上超声波到到后面面板上的距离,如下图:
21.jpg


       测量后当我们按了A键后n的值就为1了,所以否则当中的程序,关闭激光发射模块,这时长度的数值就是按A健前最后检测到的数值,这个值不要发生变化了。
       7、自定义函数“矩形面积”的程序编写。程序如下:
19.jpg


       同样道理,切换到矩形面积测量模式时,n的值也是为0,程序执行n为0的积木块,先开启激光发射模块,然后显示屏显示相关内容,这里把测量到的长度赋值成变量a,这时变量a会要根据测量到的值实时发生变化,当按了A键后,n的值变为1,变量a的值就固定下来了,同理,再测量宽度的值,并把它赋值给变量b,当再次按A键后,n的值为2,这时b的值也固定下来了,程序计算a×b的值并显示出来,再次关闭激光发射模块,完成矩形面积的测量和计算。
       8、主程序编写。程序如下:
16.jpg




       一开始先对超声波进行初始化,这里的引脚选择要与超声波模块与扩展板连接的引脚对应起来。把M变量设为0是为了一开机显示去执行自定义函数“首页”的程序,并执行初始化变量函数,把所有变量都设为0。
       在一直重复执行中通过如果……否则如果……否则条件来判断变量M的值,不同的值去执行不同的函数的程序,因为共设置了12个测量模式,所以当M的值为1—12时就分别执行相应的程序,如果M的值为0时就执行首页的自定义函数。
       9、由于程序比较长,这里只展示了部分图形化的程序:
部分代码.jpg


改进与拓展
       这个多功能测量仪是采用超声波进行测量的,所使用超声波模块进行测量的主要有以下两缺点:一是测量时有一定的角度范围,一般小于15度,这样测量容易造成误差,特别是测量范围内有其它物体,测量到的值会是离超声波最近的物体的距离;二是测量的距离有限制,不能测量超过4米的长度。以上问题的解决方法是采用支持远距离的激光测距模块,采用激光测量基本上能做到点对点的测量,而且精度比较准确。
       除上目前设置的一些测量功能外,我们还可以添加其它一些测量功能,只要是能通过长度和角度等计算出结果的,一般来说都可以实现。



  作者其它帖子  

  ◆ 防近视笔筒
  ◆ 百变乐器
  ◆ 留言机  
  ◆ 智能储蓄罐   
  ◆ 看得见的心跳  
  ◆ 保险箱  
  ◆ 激光打靶器  
  ◆ DIY留声机  
  ◆ 智能马桶  
  ◆ 坐姿矫正仪  
  ◆ 龙舟
  ◆ 多脚怪

hnyzcj  版主

发表于 2020-9-21 11:44:48

我觉得前几个靠谱点,后面的觉得意义不大。
回复

使用道具 举报

 初级技匠
 楼主|

发表于 2020-9-21 12:37:55

hnyzcj 发表于 2020-9-21 11:44
我觉得前几个靠谱点,后面的觉得意义不大。

是的,只是把能实现的功能罗列出来。
回复

使用道具 举报

hnyzcj  版主

发表于 2020-9-21 14:09:43

章 发表于 2020-9-21 12:37
是的,只是把能实现的功能罗列出来。

回复

使用道具 举报

rzyzzxw  版主

发表于 2020-9-22 11:42:33

厉害厉害
回复

使用道具 举报

gada888  版主

发表于 2020-9-22 12:17:09

支持
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2020 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail