基于Arduino 的狭小空间三维信息测量系统设计

2022-05-06 13:32邱谈天
电子设计工程 2022年8期
关键词:激光测距感光舵机

刘 鹏,陈 明,邱谈天

(1.中国石油大学(华东)理学院,山东青岛 266580;2.河北省药品医疗器械检验研究院,河北石家庄 050200)

测量技术在工业和生活中都有着举足轻重的地位[1],随着社会的进步和科技的发展,测量方法从最开始的接触式测量,如米尺、卷尺、卡尺等,发展到现在的非接触式测量,如超声波测距、红外测距、激光测距等[2],激光测距因其抗干扰能力强、测量精度高、探测距离远等优点成为当前热门的研究领域。目前,市面上使用比较广的手持式激光测距仪由于人为等因素测量误差很大,且测量内容单一,大大限制了其使用范围。针对此问题,该文以Arduino uno R3 作为开发平台,利用激光测距技术、光电传感技术、转动设备等设计了一款测量精度高、适用范围广、经济性强的狭小空间三维信息测量系统,该系统能够实现空间的长度、面积、体积、光强度的实时精准测量。

1 系统整体结构

文中设计的狭小空间三维信息测量系统主要包含5 个模块:Arduino uno R3 中央控制模块、感光模块、转动模块、显示模块和激光测距模块,系统框图如图1 所示。转动模块由3 个舵机组成,其相互配合,完成三维转动。激光测距模块主要由TOF10120测距传感器组成,搭配1~3 个舵机,实现长度、面积、体积三维信息测量。感光模块选用普通的LDR 传感器,感知周围环境的光强,并将光信号转化成电信号。所有信息通过中控系统Arduino uno R3 实时显示在LM016L 液晶显示屏上。为方便调试,该系统采用模块化设计。

图1 系统框图

2 系统硬件设计

2.1 中央控制系统

中央控制系统采用Arduino uno R3作为系统的开发平台,完成对全部硬件的控制。Arduino控制板是由意大利人Massimo Banzi 研发的一款类似于单片机的微处理控制器,其发展到现在,衍生出了很多系列[3],系统采用以AVR 单片机ATmega 32P 作为内核的Arduino uno R3 开发板,该开发板具有14 个数字输入输出IO,6个模拟输入输出IO以及32 kB的存储空间,通过USB 实现串口直接与上位机交互系统通信[4-5]。Arduino uno R3 包含硬件和软件两部分,构建于开放原始码界面版(simple I/O),可以与各类传感器通信,用于反馈、影响环境[6],实物接口分布图如图2 所示。

图2 Arduino uno R3实物接口分布图

2.2 TOF10120测距传感模块

经过半个多世纪的发展,激光测距主要分为三大类:脉冲式激光测距法、相位式激光测距法和三角式激光测距法[7]。该系统选择TOF10120 激光测距传感器,属于脉冲法,该传感器采用夏普独立创作的低成本CMOS 工艺的SPAD(单光子雪崩二极管),在测量过程中能够实现高速、连续、自动对焦TOF time of flight,SPAD 和TOF time of flight 使得TOF10120 具有以下优点:1)测量精度高,可以控制在5%以内[8];2)抗环境干扰性能强,可工作在高红外光的环境;3)不受待测物的反射率影响,可用于障碍物检测。系统设计的测距传感模块接口示意图如图3 所示。

图3 测距传感模块接口示意图

2.3 感光模块

感光模块主要由光敏电阻LDR 和LM393 组成,其主要功能是将环境的光强度转化成电信号,并传递给Arduino uno R3。光敏电阻是对光强变化非常敏感的光电转换器件。给光敏电阻两端加载电压,无光照时,光敏电阻阻值很大,电路电流非常小,随着照射到表面的光强变大,电阻迅速减小,通过的电流增大[9]。LDR 输出的模拟电压通过LM393 后,直接与Arduino uno R3 的AD0 端口连接,将模拟信号转换成数字信号,感光模块的电路图如图4 所示。

图4 感光模块电路图

2.4 转动模块

系统的转动模块通过各个舵机实现。舵机是一种角位置伺服电机,主要由外壳、电机、减速器、电位器、控制电路组成,通过输出端的电位器检测转动角度,实现精确地角度转动控制[10-12]。根据测量的物理量,采用1~3个舵机,每个舵机的旋转范围为0°~180°,当2 个、3 个舵机同时使用,分别可以实现测距装置二维、三维信息测量。

2.5 显示模块

显示模块采用LM016L 液晶模块,该液晶模块采用HD44780 控制器,可以实现字符移动、闪烁等功能[13]。显示模块电路图如图5 所示。

图5 显示模块电路图

3 软件设计及系统仿真

狭小空间三维信息测量系统的软件设计主要有激光测距程序、光强测量程序、转动部分程序和中央控制程序。

3.1 激光测距程序

设定待测空间为一矩形,以面积测量为例,激光测距程序思路如下:将测距仪放置在空间某点,与垂直方向有一个较小的倾斜角度,程序内预设每次旋转角度ϕ=1°,旋转i、j次,系统初始化(旋转次数i=0,j=0),记录当前测量距离li,舵机带动测距传感器转动ϕ后,停止转动,测量此时的距离li+1,比较li与li+1,若li≥li+1,则i=i+1,j=j+1,li=li+1,第一个舵机继续工作,每转动ϕ后停止工作,进行测量比较,直到li

图6 矩形面积测量流程图

图7 矩形面积测量示意图

3.2 光强测量程序

该部分的程序较为简单,根据所选的光敏电阻,查阅技术参数规格书,并对其进行修正,得到光强与输出电压关系:Lum=400×(exp(-1.364×vol))。部分程序如下:

3.3 转动部分程序

转动部分的作用是携带激光测距仪,根据Arduino uno R3 预置程序,3 个舵机相互配合,完成不同方向的距离测量。以面积测量为例,2 个舵机相互配合,实现360°旋转,图7 为其测量示意图。预设转动次数i和j以及转动角度,将测距仪放置在空间某点,与垂直方向有一个较小的倾斜角度,设最开始测量距离OA,在Arduino uno R3 控制下,舵机携带激光测距仪,每次转动指定角度后,停止工作,测量一次距离,直到测得距离大于上次距离,第一次数据测量完成,之后再次转动,转动90 次后,完成第一个距离的测量,开始测量距离OC,重复上述方法,完成360°转动测量。

3.4 中央控制程序

中央控制模块是整个系统的心脏,负责对输入指令的判断,并根据判断结果,将指令传达给各个模块,同时接收各个模块回传的指令,并对此进行整合,最后把待测信息传送给显示模块。

3.5 基于Proteus的系统仿真

设计采用Proteus 进行仿真,该软件是英国实验室中心电子有限公司研制的一款实用的EDA 工具软件,由广州封彪电子科技有限公司代理[14],不仅能对模拟电路、数字电路进行设计分析,还能够对各种嵌入式处理器进行仿真设计,成为电路系统设计不可或缺的工具[15-17],Proteus 由于其卓越的性能、强大的功能在业界有着很高的评价。

对设计的狭小空间三维信息测量系统进行仿真。仿真过程中,利用Arduino uno 作为上位机,来判断、收发整个系统的指令;利用两个PWM servo motor代替舵机,实现360°旋转;显示部分用Proteus 提供的LM016L 完成,实时显示待测的物理量;感光部分采用光敏组件LDR 实现。距离、面积测量的仿真结果分别如图8、图9 所示。

图8 距离测量的仿真结果

图9 面积测量的仿真结果图

4 结束语

该文以Arduino 开发板为基础,设计了一套狭小空间三维信息测量系统,该系统能够实现空间长度、面积、体积以及光强度的实时精确测量,并利用Proteus 软件进行仿真,仿真结果表明,该系统满足设计要求。

猜你喜欢
激光测距感光舵机
感光食物,吃了会变黑?
中国感光学会2019年活动计划表
基于dsPIC单片机的飞艇舵机控制实现
基于回波强度的激光测距误差补偿算法研究
超音速舵机保护器
基于激光测距的汽车防撞警示系统设计
感光器件尺寸:同样重要
菜鸟看模型
激光测厚技术专利申请分析
低功耗窄脉冲编码激光器驱动设计探讨