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

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

资料下载地址:http://pan.baidu.com/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. 主要技术参数

 

 

 

电气参数

US-015超声波测距模块

工作电压

DC 5V

工作电流

2.2mA

工作温度

0~+70度

输出方式

GPIO

感应角度

小于15度

探测距离

2cm-400cm

探测精度

0.1cm+1%

分辨率

高于1mm(可达0.5mm)

  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*100

unsigned 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

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

资料下载;http://pan.baidu.com/s/1sjHKDI1

 

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

2 主要技术参数:
        1:使用电压:DC5V         2:静态电流:小于2mA
        3:电平输出:高5V           4:电平输出:底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-超声波测距

https://blog.csdn.net/mcuwangzai/article/details/77411420

猜你喜欢

转载自blog.csdn.net/jacka654321/article/details/81905593
今日推荐