0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用Arduino测量距离

CDCNKA 来源:CDCNKA 作者:CDCNKA 2023-02-23 09:42 次阅读
这篇文章来源于DevicePlus.com英语网站的翻译稿。

前言

有没有想过停车传感器是如何工作的,您的车怎么知道离撞墙有多远?肯定见过机器人避开障碍物吧,想知道它们是如何发现障碍物的吗?这些问题的答案都涉及到短程测距。在这个项目中,我们将使用Arduino UNO结合ROHM测距传感器,测量15cm以内的木制目标的距离。
虽然这个项目看起来很简单,但是传感器并不能直接给出与目标之间的距离。这时,我们要用到光电晶体管,它根据与目标之间的距离输出一定的电压,需要将这个电压转换成距离。由于光电晶体管产生的电压变化与距离不呈线性关系,这个方法的复杂程度增加了。这涉及一种称为曲线拟合的方法,以从实验数据中获得尽可能最接近的方程。通过本项目可学习以下知识:

如何正确给LED供电

  • 如何从光电晶体管读取传感器输入
  • 如何收集校准数据
  • 如何使用MATLAB进行曲线拟合
  • 如何对基于Arduino的校准进行编程
  • 使用Arduino UNO测量距离

pYYBAGPy0bGAKwr0AADi5Xdo6W8910.jpg

概述

在这个DIY项目中,我们将开发一个电路,使用Arduino的数字引脚为测距传感器的LED供电。LED发出的光将从木制目标反射,并被光电晶体管接收,光电晶体管将产生电压信号,由Arduino中的模拟引脚读取。由于电压变化相对于距离变化不呈线性关系,在与目标不同距离处收集的数据将用于使用MATLAB生成控制方程。然后,将通过Arduino在代码中使用该方程来测量距离。将按照以下顺序介绍这个项目:

所需元器件:

  • 电路原理
  • 设置Arduino IDE
  • 校准编程
  • 使用MATLAB进行曲线拟合
  • 最终编程
  • 测试

所需元器件

元器件 链接/图片
ROHM测距传感器
RPR-220PC30N
https://www.digikey.com/products/en?keywords=RPR-220PC30N
请注意,我在本文中使用的是发射红光的RPR-220UC30N,而链接中是发射蓝光的替代件RPR-220PC30N,功能是相同的,后者目前更容易买到 poYBAGPy0bSARy0oAACtHGAfbwA689.jpg
Arduino UNO R3 https://www.aliexpress.com/item/32981776049.html
poYBAGPy0beAURGbAAEcUIIJXBQ831.jpg
USB B数据线
(通常随Arduino UNO R3一起提供)
poYBAGPy0bqAYXcAAAEl1UObYTQ669.jpg
56kΩ和220Ω的电阻器 pYYBAGPy0b2AKNlaAADsLL4ZNcI229.jpg
400孔无焊面包板 https://www.aliexpress.com/item/32711841420.html pYYBAGPy0cCAAlbzAADKij9owCE235.jpg
10根跳线 https://www.aliexpress.com/item/32951945552.html poYBAGPy0cKAKvQtAABLPXtbjbg299.jpg

电路原理图

所有元器件都采购齐全后,第一步是把所有东西都连接起来。这个项目不需要很多元器件;只需要通过正确的电阻器将Arduino与ROHM RPR-220传感器正确连接即可。实际上,为了使其成为便携式系统,我们使用双面胶带将Arduino贴在面包板的背面,将ROHM传感器贴在面包板的正面。ROHM传感器引脚的定义如下所示:

pYYBAGPy0cSAPR6qAACBuZRIa3Y895.jpg

连接示意图如下所示:

poYBAGPy0ciAOGbmAACc3u_n-E0228.jpg

实际接线如下所示:

pYYBAGPy0cuAMp__AAD_0guVkxo446.jpg

pYYBAGPy0b2AKNlaAADsLL4ZNcI229.jpg

设置Arduino IDE

Arduino编程需要设置Arduino IDE。Arduino IDE可在Linux和Windows上使用。对于这个DIY项目,我们将使用Windows桌面应用程序。访问以下链接下载并安装Arduino IDE:

Windows Installer,适用于Windows XP及更高版本

成功安装后,打开Arduino IDE并使用USB B数据线连接Arduino UNO R3:在Arduino IDE中,从“工具”>“端口”>“COM 3 (Arduino Genuino / UNO)”中选择适当的COM端口。这时,您已经完成设置,可以开始编程了。

校准编程

首先,开发程序,以获取目标放在不同距离时的传感器值。包含注释的代码如下所示:

完成上述代码后,编译并将其上传到Arduino。如果所有接线正确,LED将会点亮。如下所示设置用于校准的仪器(将一个目标放在15cm的距离处,标尺放在下面):

poYBAGPy0dCAUCr5AADMCjODn_U317.jpg

现在,在Arduino IDE中,打开“工具”>“串口监视器”。执行以下操作:

  • 当目标放在15cm处时,检查传感器值。
  • 当目标放在10cm处时,检查传感器值。
  • 当目标放在5cm处时,检查传感器值。
  • 当目标放在2cm处时,检查传感器值。

如上所述,由于目标的颜色、环境光和环境不同,这些值可能会有所不同。在本例中,距离为15、10、5和2cm处对应的值分别为15、30、97和487。

pYYBAGPy0dOAWeocAABUD8QY_d0360.jpg

很明显,这种关系不是线性的,我们需要一个方程来计算距离。这个方程将使用下面介绍的曲线拟合方法获得。

使用MATLAB进行曲线拟合

打开MATLAB,如下所示写入x和y坐标数据:

pYYBAGPy0deANeQBAAFI79YNSOE221.png

现在转到应用程序中的曲线拟合。

pYYBAGPy0deANeQBAAFI79YNSOE221.png

拟合类型选择幂函数。

poYBAGPy0d6AeyxOAAEe-c7zbRw952.png

记下方程和常数a和b的值。

最终编程

最终编程时,修改代码以包括从曲线拟合获得的方程,并删除打印命令,但最终距离除外,这是必需的。由于已经使用曲线拟合找到了传感器值与距离之间的关系,因此将声明一个附加变量来存储距离的大小。

测试

测试时,使用相同的校准设置。

pYYBAGPy0bGAKwr0AADi5Xdo6W8910.jpg

将最终代码上传到Arduino后,打开串口监视器。您将看到以厘米为单位的距离值。为了验证测试,将屏幕上的值与地面上的标尺进行匹配。如果数值接近正确,您就成功应用曲线拟合方法进行了逼近。现在,您的系统可以可靠地计算不同场景中相似障碍物的距离。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2534

    文章

    48614

    浏览量

    742767
  • led
    led
    +关注

    关注

    237

    文章

    22573

    浏览量

    647036
  • Arduino
    +关注

    关注

    185

    文章

    6434

    浏览量

    185326
收藏 人收藏

    评论

    相关推荐

    _46.使用Sharp IR接近传感器和Arduino测量距离- DigitSpace开箱 #硬声创作季

    网络数据库代码Arduino
    充八万
    发布于 :2023年08月08日 23:15:59

    基于Arduino实现测量距离并将结果显示在LCD1602液晶显示屏上

    Arduino实现超声波测距+LCD液晶屏实时显示1、描述利用HC-SR04超声波测距模块,基于Arduino实现测量距离,并将结果显示在LCD1602液晶显示屏上。2、所用食材一个H
    发表于 12-10 06:49

    如何解决42步进电机对Arduino测量分压电路干扰的影响?

    各位大佬好,细节是这样的。 想用Arduino驱动42步进电机做一个直线滑轨来拉伸一个应变电阻,然后再用另外一块Arduino通过分压来测量应变电阻的变化, 目前遇到的问题是步进电机上电后会给电阻
    发表于 09-26 07:59

    AD中的三种测量距离的方式

    在AD中主要有三种测量距离的方式:点到点的距离测量,菜单栏命令Reports→MeasureDistance,快捷键为“RM”或Ctrl+M。
    的头像 发表于 07-21 09:13 10.7w次阅读
    AD中的三种<b class='flag-5'>测量</b><b class='flag-5'>距离</b>的方式

    PCB技术的距离测量介绍

    距离测量大体分两种:一种是点到点距离测量,另一种是边到边距离测量(边缘间距的
    的头像 发表于 10-15 10:14 3607次阅读

    如何使用Arduino测量障碍物的距离

    引脚读取。由于电压变化相对于距离变化不呈线性关系,在与目标不同距离处收集的数据将用于使用MATLAB生成控制方程。然后,将通过Arduino在代码中使用该方程来测量
    的头像 发表于 04-03 10:22 2575次阅读
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>测量</b>障碍物的<b class='flag-5'>距离</b>

    设计基于Arduino的自动测量系统

    电子发烧友网站提供《设计基于Arduino的自动测量系统.zip》资料免费下载
    发表于 11-07 16:06 2次下载
    设计基于<b class='flag-5'>Arduino</b>的自动<b class='flag-5'>测量</b>系统

    Arduino压力测量和记录

    电子发烧友网站提供《Arduino压力测量和记录.zip》资料免费下载
    发表于 11-07 15:28 0次下载
    <b class='flag-5'>Arduino</b>压力<b class='flag-5'>测量</b>和记录

    使用超声波传感器和Arduino进行LED距离测量

    电子发烧友网站提供《使用超声波传感器和Arduino进行LED距离测量.zip》资料免费下载
    发表于 11-22 10:42 0次下载
    使用超声波传感器和<b class='flag-5'>Arduino</b>进行LED<b class='flag-5'>距离</b><b class='flag-5'>测量</b>

    使用VL53LO和Arduino进行距离测量

    该项目使用 VL53LO 和 Arduino 进行距离测量
    发表于 12-08 10:08 0次下载

    Arduino距离传感器制作小鸡赛车!(第2篇)

    第1篇:在最后一刻停下来!用Arduino距离传感器制作小鸡赛车!(第1篇) 该项目旨在介绍用Arduino让传感器工作的一个电子作品。
    的头像 发表于 02-20 10:25 681次阅读
    用<b class='flag-5'>Arduino</b>和<b class='flag-5'>距离</b>传感器制作小鸡赛车!(第2篇)

    Arduino距离通信教程–LoRaLib库

    为了控制 Arduino距离通信教程–LoRenz 开发板中构建的LoRenz开发板,我开发了LoRaLib——用于SX1278芯片的开源Arduino库。
    的头像 发表于 02-24 09:51 1277次阅读
    <b class='flag-5'>Arduino</b>长<b class='flag-5'>距离</b>通信教程–LoRaLib库

    Arduino社交距离传感器

    电子发烧友网站提供《Arduino社交距离传感器.zip》资料免费下载
    发表于 06-30 14:33 0次下载
    <b class='flag-5'>Arduino</b>社交<b class='flag-5'>距离</b>传感器

    AD CAM文件如何测量距离

    AD CAM文件是用于广告测量的一种工具和方法,帮助广告商了解广告效果和投资回报率。在AD CAM文件中,距离是一个重要的指标,可以帮助衡量广告影响力的范围和深度。本文将详细介绍AD CAM文件
    的头像 发表于 01-08 10:16 610次阅读

    如何将HC-SR04连接到Arduino并编写一个简单的程序来测量距离

    一种流行的Arduino超声波传感器是HC-SR04。它广泛用于非接触式距离测量,通常用于机器人和自动化项目。本指南将向您展示如何将HC-SR04连接到Arduino并编写一个简单的程
    的头像 发表于 02-11 10:17 1332次阅读
    如何将HC-SR04连接到<b class='flag-5'>Arduino</b>并编写一个简单的程序来<b class='flag-5'>测量</b><b class='flag-5'>距离</b>