基于Arduino的狭小空间三维信息测量装置及方法
文献发布时间:2023-06-19 12:04:09
技术领域
本发明涉及信息测量技术领域,具体为基于Arduino的狭小空间三维信息测量装置及方法。
背景技术
测量技术在工业和生活中都占着举足轻重的地位,随着社会的进步科技的发展,测量方法从最开始的接触式测量,如米尺、卷尺、卡尺等,发展到现在非接触式测量,如超声波测距、红外测距、激光测距等,激光测距因其抗干扰能力强、测量精度高、探测距离远等优点成为当前热门的研究领域。
目前市面上使用比较广的手持式激光测距仪由于人为等因素测量误差很大,且测量内容单一,大大限制其使用范围,针对此问题,我们提出了基于Arduino的狭小空间三维信息测量装置。
发明内容
(一)发明目的
为解决背景技术中存在的技术问题,本发明提出基于Arduino的狭小空间三维信息测量装置,具有测量精度高、适用范围广、经济性强的特点。
(二)技术方案
为解决上述技术问题,本发明提供了一种基于Arduino的狭小空间三维信息测量装置,包括:
感光模块,所述感光模块包括LDR传感器和LM393,用于感知周围环境的光强并将光信号转化成电信号;
转动模块,所述转动模块包括3个舵机,相互配合,用于驱动整个装置三维转动;
激光测距模块,所述激光测距模块由TOF10120测距传感器组成;
显示模块,所述显示模块用于对系统信息进行展示;
中央控制模块,所述中央控制模块负责对输入指令的判断,并根据判断结果,将指令传达给并各个模块,同时接收各个模块回传的指令,并对此进行整合,最后把待测信息传送给显示模块。
优选的,所述舵机通过输出端的电位器检测转动角度,实现角度转动控制,且每个舵机的旋转范围为0°-180°。
优选的,所述LDR传感器输出的模拟电压通过LM393后,直接与中央控制模块的AD0端口连接,将模拟信号转成数字信号。
优选的,所述中央控制模块以Arduino uno R3作为开发平台,得出Arduino unoR3中央控制程序,完成对全部硬件的控制。
优选的,所述显示模块采用LM016L液晶模块,LM016L液晶模块采用HD44780控制器,可实现字符移动及闪烁功能。
一种基于Arduino的狭小空间三维信息测量装置测量垂直距离的方法,包括如下步骤:
a.把激光测距模块大致对准墙面;
b.中央控制模块控制舵机驱动激光测距模块后向左偏转一个小于90°的角度;
c.中央控制模块驱动激光测距模块测量目前角度下距墙面的距离l
d.中央控制模块控制舵机驱动激光测距模块后向右偏转90°,并测量目前角度下距墙面的距离l
e.用l
7.一种基于Arduino的狭小空间三维信息测量装置测量矩形房间面积的方法,包括如下步骤:
a.两组舵机配合转动,实现激光测距模块360°范围的测距;
b.通过外部指令给舵机设置一个固定转动角度α和转动间隔延迟时间t;
c.将该装置放入房间内,舵机每转动α后停止t时间,舵机每转动一次后激光测距模块进行一次测距并传输给中央控制模块;
d.当中央控制模块检测到前测量的数据大于上一组数据,且上一组数据小于上上一组数据,则将上组数据存入数组a;
e.激光测距模块完成360°转动测距后,数组a中得到四个数据,第一个和第三个数据的和为矩形房间的长,第二个和第四个数据的和为矩形房间的宽,根据长和宽即可算得矩形房间的面积。
本发明的上述技术方案具有如下有益的技术效果:
本发明通过系统硬件设计内的感光模块、转动模块、激光测距模块、显示模块及中央控制模块,软件设计及系统仿真内的激光测距程序、光强测量程序、转动部分程序、中央控制程序,利用激光测距技术、光电传感技术、转动设备等得出一款测量精度高、适用范围广、经济性强的狭小空间三维信息测量系统,该系统能够实现空间的长度、面积、体积、光强度的实时精准测量,便于推广使用。
附图说明
图1为本发明系统示意图;
图2为本发明感光模块电路示意图;
图3为本发明测距传感模块电路示意图;
图4为本发明显示模块电路示意图;
图5为本发明矩形面积测量流程示意图;
图6为本发明矩形面积测量示意图。
图7为本发明面积测量仿真示意图;
图8为本发明测距模块参数和数据寄存器地址示意图;
图9为本发明激光测距模块的启停时序意图;
图10为本发明激光测距模块的输入读取时序示意图。
具体实施方式
本发明提出的基于Arduino的狭小空间三维信息测量装置,包括:
感光模块,所述感光模块包括LDR传感器和LM393,用于感知周围环境的光强并将光信号转化成电信号;
主要功能是接受外界光照射后,利用光敏元件对光照强度进行分析,得到室内的光强值,目前主要的光敏元件有光敏电阻,光电二极管和光电三极管,感光模块主要由光敏电阻LDR和LM393组成,其主要功能是将环境的光强度转化成电信号,并传递给Arduino unoR3,光敏电阻是对光强变化非常敏感的光电转换器件,给光敏电阻两端加载电压,无光照时,光敏电阻阻值很大,电路电流非常小,随着照射到表面的光强变大,电阻迅速减小,通过的电流增大,LDR输出的模拟电压通过LM393后,直接与Arduino uno R3的AD0端口连接,将模拟信号转成数字信号,感光模块的电路图如图2所示。
为了实现光强检测功能,选用LDR(光敏电阻)传感器,LDR是一种特殊类型的电阻器,有高强度的光较高的电压通过(低电阻),在黑暗中低电压通过(高电阻),该系统通过感应环境中的光强来工作,当连接到五伏工作电压时,LDR输出一个模拟电压,电压的大小与照射的光强成正比。光强度越大,来自LDR的电压就越大。由于该元件发射模拟电压,它会被连在输入引脚上来用于下一步的arduino模拟。
使用arduino时,分别填写arduino的A0-A5端口对应的0-5,其返回值为模拟信号转换的数字值,占用10位,即模数转换的最大值为1023(2的十次方减1),代表5V,最小值为0,代表0V。Arduino的模数转换可能不灵敏或不准确,使用I2C通信接口来编写AD芯片ADXL345,它与Arduino相结合,可以提供更精确、更灵敏的模数转换,使用Arduino库函数进行模数转换,转换器会把电压信号转变为设定范围内的数字值,当光照足够时,Arduino从LDR读取的数字数据将在800-1023之间,图2是光敏部分的电路连接。
转动模块,所述转动模块包括3个舵机,相互配合,用于驱动整个装置三维转动;
系统的转动模块通过各个舵机实现,根据测量的物理量,采用1个、2个或者3个舵机,每个舵机的旋转范围为0°-180°,当两个、三个舵机同时使用,分别可以实现测距装置二维、三维信息测量。
激光测距模块,所述激光测距模块由TOF10120测距传感器组成,搭配1个、2个、3个舵机,用于长度、面积、体积三维信息测量;
模块电路图如图3所示。
显示模块,所述显示模块用于对系统信息进行展示;
显示模块的电路图如图4所示。
中央控制模块,所述中央控制模块负责对输入指令的判断,并根据判断结果,将指令传达给并各个模块,同时接收各个模块回传的指令,并对此进行整合,最后把待测信息传送给显示模块;
所述激光测距模块中TOF10120激光测距传感器属于脉冲法。
软件设计及系统仿真,包括:
激光测距程序、光强测量程序、转动部分程序和中央控制程序,用于配合各类模块实现系统的仿真测量,并基于Proteus系统进行仿真。
基于Arduino的狭小空间三维信息测量装置的软件设计主要有激光测距程序、光强测量程序、转动部分程序和中央控制程序。
其中,激光测距程序:
如图5所示,设定待测空间为一矩形,以面积测量为例,激光测距程序流程如下:将测距仪放置在空间某点,与垂直方向有一个较小的倾斜角度,程序内预设每次旋转角度φ=10,旋转次数i、j次,系统初始化(旋转次数i=0,j=0),记录当前测量距离l
在测量体积时,可采用三组舵机驱动整个装置三维转动来实现,其中两组用来测量底面积,一组用来测量高,根据底面积和高即可得到空间体积。
本发明所选择的测距模块,单次测量速度快,精度较高,可以短时间内快速测量。所以根据此特性,在每次转动系统停止,开始一次测量时,可以在较短时间内完成多次测量,然后筛选出最大值与最小值,如果最大值与最小值之间差距较大,则这两个数据全部弃用,用剩下的数据求平均以获得最为稳定可靠的单次测量值。测量的数据可以直接从测距模块预设好的数据地址进行读取,这里实时距离的地址为0x00-0x01,滤波距离地址为0x04-0x05,如图8所示。
输出数据时,由于数据位数无法确定,所以采用字符串进行输出,读取数据后进行位数判断,完成后依次存入字符串,最后两位是距离单位毫米(mm),每次引用数据时需要添加0x30,使得数据可显示为数字字符,如图9-10所示。
光强测量程序:该部分的程序较为简单,根据所选的光敏电阻,查阅技术参数规格书,并对其进行修正,得到光强与输出电压关系Lum=400*(exp(-1.364*vol)),其中其中vol为测得的电压强度,lum即为测得的光强(cd),部分程序如下:
//采集光照度ADC值,并转换成光照
Void Lum_Get_Vol(void)
{
Int n=analogRead(A0);//读取A0的电压值
Double vol=(n^(15/1024.0));//电压值大小v
Lum=400^(exp(-1.364^vol));
//设置光标定位到第0列,第1行(从0开始)
LCD.setCursor(10,1);
//打印重置后的秒数
LCD.print(Lum);
}
其中,转动部分程序:
如图6所示,转动部分的作用是驱动整个装置三维转动,根据Arduino uno R3预置程序,三个舵机相互配合,完成不同方向的距离测量,以面积测量为例,两个舵机相互配合,实现360°的旋转,预设转动次数i和j以及转动角度,将测距仪放置在空间某点,与垂直方向有一个较小的倾斜角度,设最开始测量OA距离,在Arduino uno R3控制下,舵机携带激光测距传感器,每次转动指定角度后,停止工作,测量一次距离,直到测得距离大于上次距离,第一次数据测量完成,之后再次转动,转动90次后,完成第一个距离测量,开始测量OC距离,重复上述方法,完成360°转动测量。
其中,基于Proteus的系统仿真:
设计采用Proteus进行仿真
以面积测量为例,在狭小空间三维信息测量系统仿真过程中,利用Arduino UNO作为上位机,用于判断、收发整个系统的指令;利用两个PWM servo motor代替舵机,实现3600旋转;显示部分用Proteus提供的LM016L完成,实时显示待测的物理量;感光部分采用光敏组件LDR实现,仿真结果如图7所示。
激光测距模块选用以脉冲激光测距技术为基础的激光测距模块,需要能够进行连续测量并及时回传测量结果,在转动结构中,为了实现按照一定的角度进行旋转,或者根据设定进行固定偏移量的连续旋转,选用可以控制旋转角度的步进舵机,考虑到可选元件的性能,为实现水平360°旋转,则需要两个舵机;如需要实现三位方向的测量,测需要三哥舵机进行构建,在工作时,可以根据中央控制系统提出的需要,对任意方向进行距离测量,并可记录旋转角度,在已知角度和直线距离的情况下,如果被测墙面为平整墙面,即可通过中央控制系统中预存的算法得出需要的距离或者面积信息,中央控制系统还可以向感光模块发送指令,使其开始对目前环境的光照强度进行测量,并将光信息转变成电信息回传分析,室内三维光学测量分析仪的结构框图如图1所示,测距模块使用脉冲激光测距仪,转动系统使用多个步进电机构成,感光系统则是,以光敏电阻为核心,并附带放大电路以保证信号稳定,中控系统选用Arduino开发板,用来实现功能选择,数据处理和结果的输出。
- 基于Arduino的狭小空间三维信息测量装置及方法
- 基于等高信息稀疏测量的三维成像装置及方法