超声波传感器

简介

这是URM09系列的一款高性能非接触式超声波测距传感器,采用Gravity标准PH2.0-3P立式接口。通过主机的I/O口输出高低电平即可触发测距,传感器会将超声波的飞行时间转换成一段高电平脉宽输出,原理及使用上与传统的超声波测距模块SR04类似,不同点在于该传感器将输入和输出信号复用在一个信号端口上,主机仅需要一个I/O口便可以很方便的驱动此传感器实现距离测量,而且传感器使用了更先进的软硬件设计,确保了传感器具有更优的测量参数和可靠性。该模块兼容Arduino、树莓派等各种3.3V或5V主控板,测试平整墙面的有效测距范围为2 – 500cm,分辨率为1cm。

本款测距模块体积小,环境适用性强,精度高,测量范围广,即插即用,方便快捷,可以广泛应用于户外环境中。是机器人自动避障行走,汽车倒车报警器、门铃、警戒报警器、地铁安全线提示、银行及取款机的一米线提示等等项目的绝佳选择。

技术规格

  • 供电电压:3.3V~5.5V DC
  • 工作电流:< 20mA
  • 工作温度范围 :-10℃~+70℃
  • 有效测距量程:2cm~500cm
  • 分辨率:1cm
  • 精度:1%
  • 声学频率: 40±2KHz
  • 测量频率:25Hz Max
  • 模块尺寸:47mm × 22 mm

探头测量角度

URM_37_V3.2_1.jpg

接口说明

接口说明
引脚 引脚说明
- 电源地
+ 电源输入(3.3V-5.5V)
D 数字IO(TRIG/ECHO时分复用,内部下拉)

使用教程

硬件连接

使用Gravity 3Pin数字传感器线可以方便的将传感器与Arduino主板连接,如图:

SEN0388接线示意图

时序图###

URM09 Ultrasonic Sensor (Gravity Trig)是一款简洁实用的超声波传感器,采用数字IO电平触发测距,触发信号与接收信号通过时分复用共用一个引脚,具体时序如图所示:



时序图


1、此时传感器端为输入模式,主机需设为输出模式,由主机端给出10us高电平触发信号,然后主机更改端口状态为输入,等待传感器返回信号。

2、传感器输出高电平时间等于超声波往返飞行时间(最长脉宽时间35000us)。

Arduino代码编程

主板输出一个约几十微秒的高电平触发传感器开始测距,传感器启动测距后便输出一个正比于超声波飞行时间的高电平脉冲,通过检测高电平时间,经过简单的计算就可以得到距离值

演示代码

SEN0388测距演示
/*!
       This example is the ultrasonic distance measurement of the module.

       Copyright   [DFRobot](http://www.dfrobot.com), 2020
       Copyright   GNU Lesser General Public License

       version  V1.0
       date  29/10/2020
*/

#define    VELOCITY_TEMP(temp)       ( ( 331.5 + 0.6 * (float)( temp ) ) * 100 / 1000000.0 ) // The ultrasonic velocity (cm/us) compensated by temperature

int16_t trigechoPin = 11;
uint16_t distance;
uint32_t pulseWidthUs;
void setup() {
  Serial.begin(9600);
  delay(100);
}
void loop() {
  int16_t  dist, temp;
  pinMode(trigechoPin,OUTPUT);
  digitalWrite(trigechoPin,LOW);

  digitalWrite(trigechoPin,HIGH);//Set the trig pin High
  delayMicroseconds(10);     //Delay of 10 microseconds
  digitalWrite(trigechoPin,LOW); //Set the trig pin Low

  pinMode(trigechoPin,INPUT);//Set the pin to input mode
  pulseWidthUs = pulseIn(trigechoPin,HIGH);//Detect the high level time on the echo pin, the output high level time represents the ultrasonic flight time (unit: us)

  distance = pulseWidthUs * VELOCITY_TEMP(20) / 2.0;//The distance can be calculated according to the flight time of ultrasonic wave,/
                                                    //and the ultrasonic sound speed can be compensated according to the actual ambient temperature
  Serial.print(distance, DEC);
  Serial.println("cm");
  delay(500);
}

Mind+ 上传模式编程

1、下载及安装软件。下载地址:http://mindplus.cc 详细教程:安装教程
2、切换到“上传模式”。 详细教程:Mind+基础wiki教程-上传模式编程流程
3、“扩展”中选择“主控板”中的“Arduino Uno”。传感器中搜索超声波加载SEN0001的库。 详细教程:Mind+基础wiki教程-加载扩展库流程
4、进行编程,程序如下图(trig和echo均选择传感器连接的同一个引脚即可):
5、菜单“连接设备”,“上传到设备”
6、程序上传完毕后,打开串口即可看到数据输出。详细教程:Mind+基础wiki教程-串口打印

Mind+ Python模式行空板编程

1、下载及安装软件。下载地址:http://mindplus.cc 详细教程:安装教程
2、切换到“Python模式”。

3、“扩展”中选择“行空板”,“PinPong”中选择“超声波测距传感器”。

4、进行编程,程序如下图(trig和echo均选择传感器连接的同一个引脚即可,引脚积木从行空板扩展库中拖出):
5、菜单“连接远程终端”,连接行空板。
6、点击运行程序 ,程序上传完毕后,终端或屏幕可看到数据输出。

注意:行空板上的PinPong版本需要是0.6.0及以上版本,否则结果一直是0。升级PinPong库方法

示例一:终端输出结果:


示例二:屏幕显示结果:


Makecode 图形化编程

1、打开makecode。网站地址:https://makecode.microbit.org

2、加载URM09_Trig的Makecode库。库链接:https://github.com/DFRobot/pxt-DFRobot_URM09_Trig

3、进行编程,程序如下图:



4、编译并将程序烧录microbit。

5、使用串口助手查看数据。

探测角度及灵敏度说明

超声波传感器的物理特性决定了其实际具有不规则的探测区域,因此超声波测距传感器的探测角度难以被准确的定义。我们分别使用了2种参考目标障碍物对多样本产品进行了测试,对应目标的参照检测区域如下图示:

更多

DFshopping_car1.png DFRobot商城购买链接

疑难解答

如果遇到技术问题,请登陆到我们的售后论坛留言,我们会尽快解答您的问题。

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖!