700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > arduino UNO 与 超声波测距模块 实验详情

arduino UNO 与 超声波测距模块 实验详情

时间:2024-04-12 14:16:46

相关推荐

arduino UNO 与 超声波测距模块 实验详情

US-015 超声波测距模块 超声波传感器 US-020升级版 送全套资料

资料下载地址:/s/1c0AfkIG

US-015超声波测距模块

1. 概述

US-015是目前市场上分辨率最高,重复测量一致性最好的超声波测距模块;US-015的分辨率高于1mm,可达0.5mm,测距精度高;重复测量一致性好,测距稳定可靠。

US-015超声波测距模块可实现2cm~4m的非接触测距功能,供电电压为5V,工作电流为2.2mA,支持GPIO通信模式,工作稳定可靠。

2.分辨率及可重复性测试截图

图2.1为手拿US-015进行测量,手有微小抖动时的测量截图,可见小于1mm的抖动都能测量出来;显示分辨率为0.01mm。

图2.1:手持US-015微小抖动测量截图

图2.2为将US-015固定后,经过一段时间测量后的截图,可见重复测量一致性好。显示分辨率为0.01mm

图2.2:重复测量截图

图2.1及图2.2所用例程请参考后文附录。

3. 主要技术参数

4. 本模块实物图及尺寸

本模块如图4.1和图4.2所示:

图4.1:US-015正面图 图4.2:US-015背面图

本模块的尺寸:45mm*20mm*1.2mm。板上有两个半径为1mm的机械孔,如图4.3所示:

图4.3:US-015尺寸图

5. 接口说明

本模块有一个接口:4 Pin供电及通信接口。

4 Pin接口为2.54mm间距的弯排针,如图5.1所示:

图5.1:4 Pin接口

从左到右依次编号1,2,3,4。它们的定义如下:

1号Pin:接VCC电源(直流5V)。

2号Pin:接外部电路的Trig端,向此管脚输入一个10uS以上的高电平,可触发模块测距。

3号Pin:接外部电路的Echo端,当测距结束时,此管脚会输出一个高电平,电平宽度为超声波往返时间之和。

4号Pin:接外部电路的地。

6. 测距工作原理

模块测距的时序如图6.1所示:

6.1:US-015测距时序图

图6.1表明:只需要在Trig管脚输入一个10US以上的高电平,系统便可发出8个40KHZ的超声波脉冲,然后检测回波信号。当检测到回波信后,通过Echo管脚输出。

根据Echo管脚输出高电平的持续时间可以计算距离值。即距离值为:(高电平时间*340m/s)/2。

7.过测量范围时返回值及测量周期

当测量距离超过US-015的测量范围时,US-015仍会通过Echo管脚输出高电平的信号,高电平的宽度约为80ms。如图7.1所示:

图7.1:超出测量范围返回值

测量周期:当接收到US-015通过Echo管脚输出的高电平脉冲后,便可进行下一次测量,所以测量周期取决于测量距离,当US-015距离被测物体很近时,Echo返回的脉冲宽度较窄,测量周期就很短;当US-015距离被测物体比较远时,Echo返回的脉冲宽度较宽,测量周期也就相应的变长。

最坏情况下,被测物体超出US-015的测量范围,此时返回的脉冲宽度最长,约为80ms,所以最坏情况下的测量周期稍大于80ms即可(取85ms足够)。

US-015高精度测距例程,(Arduino例程):

unsigned int EchoPin = 2;unsigned int TrigPin = 3;unsigned long Time_Echo_us = 0;//Len_mm_X100 = length*100unsigned long Len_mm_X100 = 0;unsigned long Len_Integer = 0; //unsigned int Len_Fraction = 0;void setup(){Serial.begin(9600);pinMode(EchoPin, INPUT);pinMode(TrigPin, OUTPUT);}void loop(){digitalWrite(TrigPin, HIGH);delayMicroseconds(50);digitalWrite(TrigPin, LOW);Time_Echo_us = pulseIn(EchoPin, HIGH);if((Time_Echo_us < 60000) && (Time_Echo_us > 1)){Len_mm_X100 = (Time_Echo_us*34)/2;Len_Integer = Len_mm_X100/100;Len_Fraction = Len_mm_X100%100;Serial.print("Present Length is: ");Serial.print(Len_Integer, DEC);Serial.print(".");if(Len_Fraction < 10) Serial.print("0");Serial.print(Len_Fraction, DEC);Serial.println("mm");}delay(1000);}

HC-SR04超声波模块 HC-SR04 超声波 支持Arduino/51/STM32

超声波固定架链接 /item.htm?id=37687769017

资料下载;/s/1sjHKDI1

1、本模块性能稳定,测度距离精确。能和国外的SRF05,SRF02等超声波测距模块相媲美。模块高精度,盲区(2cm)超近,稳定的测距是此产品成功走向市场的有力根据!此模块完全谦容GH-311防盗模块

2 主要技术参数:

1:使用电压:DC5V2:静态电流:小于2mA

3:电平输出:高5V4:电平输出:底0V

5:感应角度:不大于15度6:探测距离:2cm-450cm

7:高精度:可达0.3cm

板上接线方式,VCC、trig(控制端)、 echo(接收端)、 out(空脚)、 GND

注:TRIP引脚是内部上拉10K的电阻,用单片机的IO口拉低TRIP引脚,然后给一个10us以上的脉冲信号。

OUT脚为此模块作为防盗模块时的开关量输出脚,测距模块不用此脚!

注意:模块应先插好在电路板上再通电,避免产生高电平的误动作,如果产生了,重新通电方可解决。

本模块可提供测距程序:C51,PIC18F877,义龙单片机,三种MCU的测试参考。

3、URF04模块工作原理:

(1)采用IO触发测距,给至少10us的高电平信号;

(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;

(3)有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间.

测试距离=(高电平时间*声速(340M/S))/2;

本产品使用方法简单,一个控制口发一个10US以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,就可以达到你移动测量的值了~~

模块工作原理:

(1)采用IO触发测距,给至少10us的高电平信号;

(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;

(3)有信号返回,通过IO输出一高电平,高电平持续的时间就是

超声波从发射到返回的时间.测试距离=(高电平时间*声速(340M/S))/2;

本模块可提供全套测距程序:C51,PIC18F877,超声波LCD1602显示,超声波LCD12864显示,数码管显示,串口显示等,测距参考程序

供以下全套资料

HC-SR04P超声波测距模块 测距传感器模块 3-5.5V宽电压 YS-51

具体实验:

材料:

Arduino UNO 板子*1,

超声波模块 HC-SRO4*1 ;US-015*1;HC-SRO4P*1

面包板 *1

杜邦线公对母 *4

采用IO触发测距,给至少10us的高电平信号;模块自动发送8个40KHz的方波,自动检测是否有信号返回;

有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间;

测试距离=(高电平时间*声速(340m/s))/2。

接线图:

测试代码:

const int TrigPin = 2; //发出超声波const int EchoPin = 3; //收到反射回来的超声波float cm; //因为测得的距离是浮点型的void setup() { Serial.begin(9600); //设置波特率pinMode(TrigPin, OUTPUT); pinMode(EchoPin, INPUT); } void loop() { digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin delayMicroseconds(2); //delayMicroseconds在更小的时间内延时准确digitalWrite(TrigPin, HIGH); delayMicroseconds(10); digitalWrite(TrigPin, LOW); //通过这里控制超声波的发射cm = pulseIn(EchoPin, HIGH) / 58.0; //将回波时间换算成cm cm = (int(cm * 100.0)) / 100.0; //保留两位小数 Serial.print("Distance:"); Serial.print(cm); Serial.print("cm"); Serial.println(); delay(1000); }

pulseIn函数用于读取引脚脉冲的时间长度,脉冲可以是HIGH或LOW。如果是HIGH,函数将先等引脚变为高电平,然后开始计时,一直到变为低电平为止。

返回脉冲持续的时间长短, 单位为ms。如果超时还没有读到的话, 将返回0。pulseIn()单位为微秒,声速344m/s,所以距离cm=344*100/1000000*pulseIn()/2约等于pulseIn()/58.0

实物接线图:

HC-SR04P实验结果:

HC-SR04P:

盲区,在3cm左右,小于3cm就是出现反弹不准;超过3米多就不准了

HC-SR04实验结果:

HC-SR04:

盲区,在3cm左右,小于3cm就是出现反弹不准;能测到3.2米远;

近距离HC-SR04P稳准一些,HC-SR04不够稳准,但能测得比HC-SR04P远一些;

US-015实验结果:

US-015性能在3个当中表现最好,无论近距离,还是远距离都比较稳准,数值波动非常小,测距也最远;

但都很难测得标称的2cm-4m的范围;都在3cm-3.2M范围内,可能是空间所限,暂时没拿到最远距离测量数据;

参考链接:

arduino-超声波测距

/mcuwangzai/article/details/77411420

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。