【雕爷学编程】Arduino动手做(114)---US-015高分辨超声波模块之参数性能与高分辨率测量距离

本文主要是介绍【雕爷学编程】Arduino动手做(114)---US-015高分辨超声波模块之参数性能与高分辨率测量距离,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百一十四:US-015 高分辨超声波测距模块 超声波传感器 US-020升级版

在这里插入图片描述
超声波

是一种频率高于20000赫兹的声波,它的方向性好,穿透能力强,易于获得较集中的声能,在水中传播距离远,可用于测距、测速、清洗、焊接、碎石、杀菌消毒等。在医学、军事、工业、农业上有很多的应用。超声波因其频率下限大于人的听觉上限而得名。科学家们将每秒钟振动的次数称为声音的频率,它的单位是赫兹(Hz)。我们人类耳朵能听到的声波频率为20Hz-20000Hz。因此,我们把频率高于20000赫兹的声波称为“超声波”。通常用于医学诊断的超声波频率为1兆赫兹-30兆赫兹。

在这里插入图片描述
在这里插入图片描述
拉扎罗·斯帕拉捷(Lazzaro Spallanzani,1729—1799)
在人类对自然的认识还没有达到一定高度之前,人们理所当然地认为所有的动物都是靠眼睛来识别物体的方向和位置的。后来事实证明,这种想法是错误的。首先揭开这个秘密的是拉扎罗·斯帕拉捷(Lazzaro Spallanzani,1729—1799),他是意大利著名的博物学家、生理学家和实验生理学家。他曾经做过四个关于蝙蝠的实验,揭示了蝙蝠靠耳朵而不是眼睛识别物体和捕捉猎物的事实,为超声波的研究提供了理论基础。

斯帕拉捷习惯晚饭后在附近的街道上散步,他常常看到,很多蝙蝠灵活地在空中飞来飞去,能在非常黑暗的条件下灵巧地躲过各种障碍物去捕捉飞虫,这个现象引起了他的好奇,蝙蝠凭什么特殊本领在夜空中自由自在地飞行呢,难道是因为它有一双可以在黑夜中洞悉一切的敏锐眼睛吗?

为了验证自己的猜想,他做了第一个蝙蝠实验。1793年夏季的一个夜晚,斯帕拉捷走出家门,放飞了关在笼子里做实验用的几只蝙蝠。只见蝙蝠们抖动着带有薄膜的肢翼,轻盈地飞向夜空,并发出自由自在的“吱吱”叫声。斯帕拉捷见状,不禁大叫出声,因为在放飞蝙蝠之前,他已经蒙上了蝙蝠的双眼,“蒙上眼的蝙蝠怎么能如此敏捷地飞翔呢?”他感到百思不得其解,下决心一定要解开这个谜。

斯帕拉捷想到: “既然不是靠眼睛来辨别障碍物,那么会不会是鼻子在发挥作用呢?”于是他又做了第二个实验。这一次他把蝙蝠的鼻子堵住,在夜晚放了出去,结果,蝙蝠还是照样飞得轻松自如。“既然眼睛和鼻子都完全没有对蝙蝠的飞翔产生影响,那么蝙蝠又是依靠什么来躲避障碍物和捕捉食物呢?奥秘会不会在翅膀上呢?”于是斯帕拉捷又做了第三次实验。他这次在蝙蝠的翅膀上涂了一层油漆。然而,和前两次一样,这也丝毫没有影响到它们的飞行。“眼睛、鼻子、翅膀都不是蝙蝠辨别物体的因素,那到底会是什么呢?”斯帕拉捷感到非常困惑。最后,斯帕拉捷又把蝙蝠的耳朵塞住,进行了第四次实验。这一次,飞上天的蝙蝠再也没有了之前矫健的身手,而是和一个喝醉酒的人一样,东碰西撞的,很快就跌了下来。斯帕拉捷这才恍然大悟,原来,蝙蝠是靠听觉来确定方向,捕捉目标的。

斯帕拉捷的新发现引起了人们的震动,这完全打破了人们的常规认识。从此,许多科学家进一步研究了这个课题。最后,人们终于弄清楚: 蝙蝠是利用超声波(频率高于20000Hz的声波)在夜间导航的(图3.21)。它的喉头发出一种超过人耳听阈的高频声波,这种声波沿着直线传播,一旦碰到物体就迅速返回来,它们用耳朵接收了这种返回来的超声波,使它们能够做出准确的判断,引导它们飞行。超声波的科学原理现已广泛地运用到航海探测、导航和医学中。

在这里插入图片描述
超声波测距原理
超声波测距原理是在超声波发射装置发出超声波,它的根据是接收器接到超声波时的时间差,与雷达测距原理相似。 超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。(超声波在空气中的传播速度为340m/s,根据计时器记录的时间t(秒),就可以计算出发射点距障碍物的距离(s),即:s=340t/2)

在这里插入图片描述
US-015超声波测距模块

US-015是目前市场上分辨率最高,重复测量一致性最好的超声波测距模块;US-015的分辨率高于1mm,可达0.5mm,测距精度高;重复测量一致性好,测距稳定可靠。US-015超声波测距模块可实现2cm~4m的非接触测距功能,供电电压为5V,工作电流为2.2mA,支持GPIO通信模式,工作稳定可靠。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

/*【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验一百一十四:US-015 高分辨超声波测距模块 超声波传感器 US-020升级版项目:测试距离(单位mm)原理:声波在空气中传播速度为340m/s,根据计时器记录时间t,即可算出发射点距离障碍物的距离S,即S=340m/s*t/2,这就是所谓的时间差测距法。*/unsigned int EchoPin = 2;        // connect Pin 2(Arduino digital io) to Echo at US-015unsigned int TrigPin = 3;        // connect Pin 3(Arduino digital io) to Trig at US-015unsigned long Time_Echo_us = 0;unsigned long Len_mm  = 0;void setup(){  //InitializeSerial.begin(9600);      //Serial: output result to Serial monitorpinMode(EchoPin, INPUT);  //Set EchoPin as input, to receive measure result from US-015pinMode(TrigPin, OUTPUT);  //Set TrigPin as output, used to send high pusle to trig measurement (>10us)}void loop(){digitalWrite(TrigPin, HIGH);  //begin to send a high pulse, then US-015 begin to measure the distancedelayMicroseconds(20);      //set this high pulse width as 20us (>10us)digitalWrite(TrigPin, LOW);    //end this high pulseTime_Echo_us = pulseIn(EchoPin, HIGH);          //calculate the pulse width at EchoPin,if((Time_Echo_us < 60000) && (Time_Echo_us > 1))    //a valid pulse width should be between (1, 60000).{Len_mm = (Time_Echo_us*34/100)/2;    //calculate the distance by pulse width, Len_mm = (Time_Echo_us * 0.34mm/us) / 2 (mm)Serial.print("Present Distance is: ");  //output result to Serial monitorSerial.print(Len_mm, DEC);        //output result to Serial monitorSerial.println("mm");            //output result to Serial monitor}delay(1000);                  //take a measurement every second (1000ms)}

实验串口返回情况

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

这篇关于【雕爷学编程】Arduino动手做(114)---US-015高分辨超声波模块之参数性能与高分辨率测量距离的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/435962

相关文章

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

Python如何使用seleniumwire接管Chrome查看控制台中参数

《Python如何使用seleniumwire接管Chrome查看控制台中参数》文章介绍了如何使用Python的seleniumwire库来接管Chrome浏览器,并通过控制台查看接口参数,本文给大家... 1、cmd打开控制台,启动谷歌并制定端口号,找不到文件的加环境变量chrome.exe --rem

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

Linux中Curl参数详解实践应用

《Linux中Curl参数详解实践应用》在现代网络开发和运维工作中,curl命令是一个不可或缺的工具,它是一个利用URL语法在命令行下工作的文件传输工具,支持多种协议,如HTTP、HTTPS、FTP等... 目录引言一、基础请求参数1. -X 或 --request2. -d 或 --data3. -H 或

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

详解Spring Boot接收参数的19种方式

《详解SpringBoot接收参数的19种方式》SpringBoot提供了多种注解来接收不同类型的参数,本文给大家介绍SpringBoot接收参数的19种方式,感兴趣的朋友跟随小编一起看看吧... 目录SpringBoot接受参数相关@PathVariable注解@RequestHeader注解@Reque

Java向kettle8.0传递参数的方式总结

《Java向kettle8.0传递参数的方式总结》介绍了如何在Kettle中传递参数到转换和作业中,包括设置全局properties、使用TransMeta和JobMeta的parameterValu... 目录1.传递参数到转换中2.传递参数到作业中总结1.传递参数到转换中1.1. 通过设置Trans的