科学家们将每秒钟振动的次数称为声音的频率,它的单位是赫兹(Hz)。我们人类耳朵能听到的声波频率为20Hz~20000Hz。当声波的振动频率小于20Hz或大于20KHz时,我们便听不见了。因此,我们把频率高于20000赫兹的声波称为“超声波”(ultrasonic)。通常的超声波频率为1兆赫兹~5兆赫兹。因其方向性好,穿透能力强,易于获得较集中的声能,在传播距离较远,故而常被被用于测距。

超声波发射器向某一方向发射超声波,在发射的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为340 m/ s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离S ,即:S = 340t / 2。超声波指向性强,在介质中传播的距离较远,利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人的研制上也得到了广泛的应用。

超声波发生器可分为两大类:一类是用电气方式产生超声波;一类是用机械方式产生超声波。电气类包括压电型、磁致伸缩型和电动型等;机械类包括加尔统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功率和声波特性各不相同,因而用途也有所不同。目前常用的是压电式超声波发生器。

压电式超声波发生器实际上是利用压电晶体的谐振来工作的,其外观结构与内部结构分别如图所示.该传感器有两个压电晶片和一个共振板, 当其两极外加脉冲信号,且频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动产生超声波。反之,如果两电极间未外加电压,当共振板接收到超声波时,将迫使压电晶片振动,将机械能转换为电信号,这时它就成为超声波接收器了。

图 超声波测距模块内部结构简图

超声波测距传感器规格很多,测试距离也从远到近都有,价格相差也较大,一般机器人爱好者使用的都是测量范围在最小几厘米到最大几米之间,典型值是2厘米到2米,精度约5毫米。超声波测距的优点在于测量范围较大,且不是使用光学信号,所以被测物体的颜色对于测量结果没有影响。但还是常常会受到外界环境的其它因素影响,依靠声速测距,所以对于一些影响声速的因素较敏感,比如温度、风等。最大允许角度较小。在不同的室温下,声速是不同的,因而会给测距带来误差,所以一般的模块测距精度都难以小于5毫米。但很自然的会想到采用温度补偿的方式,也即额外再添加一个温度传感器,根据不同温度下的声速来计算,从而可以补偿温度变化带来的误差,有估算用的近似公式

声速 = 331 + 0.6 t (攝氏温度)

根据测得的实际温度矫正环境中的真实声速,以减小测量误差。这样的模块测距精度就可以达到1~2毫米了,而且同时能当做温度传感器来使用,但价格也会稍高。

超声波测距传感器可能是机器人中运用最为广泛的传感器之一了,它不仅便宜,拥有丰富的库,而且测量结果也较为可靠。我们都知道蝙蝠夜行时躲避障碍物的原理,下面以一款市面上最为成熟和常见的超声波测距模块HC-SR04为例来说明。

该超声波模块没有自带温度补偿,以340m/s的室温下声速作为参照基准,同个扩展库捕捉脉冲宽度获得超声波来回的时间后,通过简单的运算获得距离。

#include

#define TRIGGER_PIN 12

#define ECHO_PIN 13

Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);

void setup()

{

Serial.begin(9600);

}

void loop()

{

float cmMsec, inMsec;

long microsec = ultrasonic.timing();

cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);

//下面被注释的三句以英寸显示距离,该单位较少使用,故注释掉相关语句

//inMsec = ultrasonic.convert(microsec, Ultrasonic::IN);

Serial.print("MS: ");

Serial.print(microsec);

Serial.print(", CM: ");

Serial.print(cmMsec);

//Serial.print(", IN: ");

//Serial.println(inMsec);

delay(1000);

}

超声波测距的原理简单易懂,因为有成熟的扩展库,使用起来也很方便。所以很多机器人爱好者都会选择它来作为壁障的传感器,但是,超声波本身的性质也会导致一些问题的存在。

超声波测距其实是一种不完全感知,对于不同形状的物体它所表现的特性其实并不相同。而障碍物的形状对超声波测距的影响则是角度范围甚至是障碍物判定的正确与否。它下述两幅简图是由美国一超声波传感器制造商在用户手册中给出的关于不同形状障碍物超声波测距结果的比较,可以看出,对于不同形状的物体超声波测距的结果有很大差异,这样一来就会给壁障判断带来不利影响。

图表 1

图 超声波测距模块对圆柱障碍物的测量值分布图

图3.12 超声波测距模块对平板障碍物的测量值分布图

除上诉问题之外,国内外还有些学者还提到了超声波测距过程中可能因为幻影问题而难以穿越复杂障碍物环境并且为此提出了相应的模糊算法

图 超声波测距模块产生幻影原理示意及响应模糊算法对于复杂障碍物群的壁障轨迹

打赏

微信打赏~

支付宝打赏~

arduino超声波测距接线图详细_Arduino实践-超声波(ultrasonic)测距相关推荐

  1. arduino超声波测距接线图详细_Arduino系列之超声波测距模块代码(一)

    这里我将简单介绍超声波测距模块 SR04超声波传感器: 是利用超声波特性检测距离的传感器,其带有两个超声波探头,分别用作于发射和接收超声波.范围在3-450cm. 工作原理: 超声波发射器向某一方向发 ...

  2. arduino超声波测距接线图详细_arduino——超声波测距仪(笔记)

    脉冲宽度测量函数 pulseIn() pulse 是脉搏的意思,音标[pʌls],怕了死,脉搏停了就死了.(记忆力越来越差了,只能采用一些特殊的方法记忆) pulseIn(pin,value,time ...

  3. arduino超声波测距接线图详细_使用Arduino UNO开发板和超声波传感器测量距离

    超声波传感器不仅提供距离测量实用程序,而且没有任何物理接触,但需要我们在无噪音和光线的情况下进行测量,与基于激光的距离测量仪器不同.此外,即使在基于激光的仪器经常降低其效率的日光下,这些仪器也便宜且更 ...

  4. 测距必备,8个超声波测距方案,实时更可控

    由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现.利用超声波检测往往比较迅速.方便.计算简单.易于做到实时控制,并且 ...

  5. 超声波换能器和超声波传感器的详细区别

    超声波换能器:首先从最简单的而言,超声波换能器里没有电路,超声波是在超声波换能器之外产生的 然后带动压电片产生机械振动(压电效应转换为机械振动),然后再发射到传播介质中,在介质中产生谐振,由另一个超声 ...

  6. 超声波的四个特性_超声波传感器,超声波的特性

    超声波传感器的超声波是一种人耳无法听到的.频率一般超过20kHz的声音. 超声波的基本特性如下所述: 1. 波长与辐射 波的传播速度是用频率乘以波长来表示.电磁波的传播速度 是3×108m/s,而声波 ...

  7. Arduino ESP8266 使用LittleFS存储配置文件实践

    Arduino ESP8266 使用LittleFS存储配置文件实践 首先引用前辈的文章,了解一下esp8266 的flash 布局layout: http://idarc.cn/index.php/ ...

  8. 超声波测距 c语言程序流程图,超声波测距程序(详细C语言数码管显示)

    #include<reg52.h> //头文件 #include<intrins.h>// _nop_() 函数延时1US用 #include <stdio.h> ...

  9. 【雕爷学编程】Arduino动手做(58)---SR04超声波传感器

    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的.鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为 ...

最新文章

  1. CentOS下配置VNCServer,重启服务仍然生效
  2. syslog()的基本用法
  3. 【链表】逆序打印链表
  4. 配置 sql server linux,配置SQL Server on Linux(2)
  5. 白板推导系列Pytorch-PCA降维
  6. indesign增效工具缺失_下载了Indesign CS5,但是文件打不开,说缺少增效工具,如何处理?...
  7. J-LINK驱动下载
  8. 程序员打造影响力常犯的 3 个错
  9. 【python】案例十 字符串中的逆天函数
  10. idea 引入包报错:Unable to provision, see the following errors
  11. 类似于wps的linux软件,出了Office、WPS还有哪些好用的办公软件?
  12. 致爱丽丝用计算机怎么弹,致爱丽丝电子琴谱应该怎么弹
  13. 《深入理解计算机系统》
  14. # Java 并发编程的艺术(一)
  15. python发送邮件 SMTP socks代理
  16. 学习C语言的网站(中文的英文的都有)
  17. IOST节点搭建【私链】
  18. stata中使用xsmle命令做空间面板数据hausman检验出现3200错误的解决办法
  19. 10天精读掌握:计算机组成与设计(COAD:Patterson and Hennessy) (第1天 2018/10.24)
  20. android mtk6592 禁止拖动主界面图标

热门文章

  1. steam怎么添加idea_如何向您的Steam钱包添加任何金额
  2. 购买steam余额有风险吗?以及N种被红锁的情况
  3. 机器学习算法学习---处理聚类问题常用算法(三)
  4. 数据结构与算法(四)-双向链表(DoublyLinkedList)
  5. 正阅读微信小说分销系统-视频教程-2.渠道商-公众号配置-菜单生成
  6. 图数据结构,以及使用递归方式实现图的深度优先和广度优先遍历
  7. PR做片头:如何用PR做片头,如何用模板来制作片头?
  8. android 链接网络成功,Android之网络连接判断是否成功
  9. python 3.8.0安卓_Python 3.8.0 稳定版发布,来看看Python 3.8.0的新功能吧
  10. 索尼rx1r人脸识别_索尼A7系列微单打开人脸识别,打开人像拍摄新世界。