“(SKU:RB-02S001A)RB URF02超声波传感器”的版本间的差异
(未显示1个用户的13个中间版本) | |||
第13行: | 第13行: | ||
# 接口类型:TTL(单线模式和双线模式可切换) | # 接口类型:TTL(单线模式和双线模式可切换) | ||
# 方向性侦测范围:定向式(水平/垂直)65度圆锥 | # 方向性侦测范围:定向式(水平/垂直)65度圆锥 | ||
− | # 尺寸大小: | + | # 尺寸大小: 46.7mm × 25.7mm × 19mm |
# 重量大小:7g | # 重量大小:7g | ||
− | ==工作原理== | + | |
− | 超声波是指频率高于20KHz的机械波,超声波测距的原理是通过测量声波在发射后遇到障碍物反射回来的时间差计算出发射点到障碍物的实距离。 | + | ==接口定义== |
− | 测距公式为:L = V * (T2-T1)/2 | + | 超声波传感器的引脚定义: |
− | 公式说明: | + | * OUTPUT:响应信号输入 |
+ | * INPUT:触发控制信号输入 | ||
+ | * +:电源(VCC) | ||
+ | * -:地(GND) | ||
+ | [[文件:02S001A03.png|500px|有框|居中]] | ||
+ | ==使用方法== | ||
+ | ===工作原理=== | ||
+ | 超声波是指频率高于20KHz的机械波,超声波测距的原理是通过测量声波在发射后遇到障碍物反射回来的时间差计算出发射点到障碍物的实距离。<br/> | ||
+ | 测距公式为:L = V * (T2-T1)/2<br/> | ||
+ | 公式说明:<br/> | ||
* L 为测量的距离长度 | * L 为测量的距离长度 | ||
* V 为超声波在空气中的传播速度(在20℃时为344m/s) | * V 为超声波在空气中的传播速度(在20℃时为344m/s) | ||
第24行: | 第33行: | ||
* t2 为收到回波的时间 | * t2 为收到回波的时间 | ||
速度乘以时间差等于来回的距离,除以2可以得到实际的距离。 | 速度乘以时间差等于来回的距离,除以2可以得到实际的距离。 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
===编程原理=== | ===编程原理=== | ||
使用RB URF02超声波传感器双线时,首先拉低触发控制信号输入(input)端口,然后至少给10us的高电平信号来触发模块,在触发后,模块会自动发射8个40KHz的方波,并自动检测是否有信号返回;如果有信号返回,通过响应信号输出(output)一个高电平,高电平持续的时间便是超声波从发射到接收的时间,该模块工作时序图如下,所以测试距离的计算公式为:测试距离 = 高电平持续时间 * 340(m/s)*0.5<br/> | 使用RB URF02超声波传感器双线时,首先拉低触发控制信号输入(input)端口,然后至少给10us的高电平信号来触发模块,在触发后,模块会自动发射8个40KHz的方波,并自动检测是否有信号返回;如果有信号返回,通过响应信号输出(output)一个高电平,高电平持续的时间便是超声波从发射到接收的时间,该模块工作时序图如下,所以测试距离的计算公式为:测试距离 = 高电平持续时间 * 340(m/s)*0.5<br/> | ||
使用RB URF02超声波传感器单线时,原理同双线模式,只是通过一个触发控制信号输入(input)端口进行超声波控制器的信号收发。<br/> | 使用RB URF02超声波传感器单线时,原理同双线模式,只是通过一个触发控制信号输入(input)端口进行超声波控制器的信号收发。<br/> | ||
− | [[文件: | + | [[文件:p-2.jpg|500px|有框|居中]] |
===双线模式接线图=== | ===双线模式接线图=== | ||
* INPUT、OUTPUT端口如图所示接到控制器的I/O口。5V 和GND分别接到电源的+5V和GND。 | * INPUT、OUTPUT端口如图所示接到控制器的I/O口。5V 和GND分别接到电源的+5V和GND。 | ||
注:在使用双线模式时模式选择开关(Mode)拨到数字2侧。 | 注:在使用双线模式时模式选择开关(Mode)拨到数字2侧。 | ||
− | [[文件: | + | [[文件:02S001A04.png|700px|有框|居中]] |
===双线模式例子程序=== | ===双线模式例子程序=== | ||
硬件连接如图所示,数字口4 接超声波的OUTPUT 、数字口5 接超声波INPUT ,将开关拨到数字2 一侧超声波进入双线模式。 | 硬件连接如图所示,数字口4 接超声波的OUTPUT 、数字口5 接超声波INPUT ,将开关拨到数字2 一侧超声波进入双线模式。 | ||
第60行: | 第61行: | ||
delayMicroseconds(10); | delayMicroseconds(10); | ||
digitalWrite(outputPin, LOW); // 保持发出超声波信号接口低电平 | digitalWrite(outputPin, LOW); // 保持发出超声波信号接口低电平 | ||
− | + | float distance = pulseIn(inputPin, HIGH); // 读出接收脉冲的时间 | |
distance= distance/58; // 将脉冲时间转化为距离(单位:厘米) | distance= distance/58; // 将脉冲时间转化为距离(单位:厘米) | ||
+ | distance = (int(distance * 100.0)) / 100.0; //保留两位小数 | ||
Serial.println(distance); // 输出距离值 | Serial.println(distance); // 输出距离值 | ||
delay(50); | delay(50); | ||
第71行: | 第73行: | ||
digitalWrite(ledpin,LOW); //如果距离小于50厘米小灯熄灭 | digitalWrite(ledpin,LOW); //如果距离小于50厘米小灯熄灭 | ||
} </pre> | } </pre> | ||
+ | |||
===单线模式接线图=== | ===单线模式接线图=== | ||
− | [[文件: | + | [[文件:02S001A05.png|700px|有框|居中]] |
* INPUT端口如图所示接到控制器的I/O口。5V 和GND分别接到电源的+5V和GND。 | * INPUT端口如图所示接到控制器的I/O口。5V 和GND分别接到电源的+5V和GND。 | ||
注:在使用单线模式时模式选择开关(Mode)拨到数字1侧。 | 注:在使用单线模式时模式选择开关(Mode)拨到数字1侧。 | ||
第100行: | 第103行: | ||
} </pre> | } </pre> | ||
===程序效果=== | ===程序效果=== | ||
− | + | * 打开串口助手可以观察到输出的距离值,如下图所示,如果距离小于 50厘米数字口13的LED 小灯熄灭,距离大于50厘米数字口13的LED 小灯亮起同时串口打印处距离数据。 | |
− | + | [[文件:02S001A02.png|500px|有框|居中]] | |
− | + | ===两个超声波联调实验=== | |
+ | 为了方便电子爱好者使用多个超声波传感器,现将两个传感器的联调实验方法写下,供电子爱好者参考。 | ||
+ | ===连接图示=== | ||
+ | 两个超声波的INPUT引脚接在D5,OUTPUT分别接D3、D4,如下图: | ||
+ | [[文件:csb2.png|700px|缩略图|居中]] | ||
+ | ===例子程序=== | ||
+ | 依照程序连接两个超声波传感器与UNO,测试实际检测的距离。 | ||
+ | <pre style='color:blue'>const int pingPin = 11; | ||
+ | int inputPin1=4; // 接超声波的 output 引脚到数字D4脚 | ||
+ | int outputPin=5; // 接超声波的 input 引脚到数字D5脚 | ||
+ | int inputPin2=3; | ||
+ | int ledpin=13; // 定义 ledPin 引脚为D13脚 | ||
+ | void setup() | ||
+ | { //初始化串口及引脚的输入、输出模式 | ||
+ | Serial.begin(9600); | ||
+ | pinMode(ledpin,OUTPUT); | ||
+ | pinMode(inputPin1, INPUT); | ||
+ | pinMode(outputPin, OUTPUT); | ||
+ | pinMode(inputPin2, INPUT); | ||
+ | } | ||
+ | void loop() | ||
+ | { | ||
+ | unsigned int x1,x2; | ||
+ | digitalWrite(outputPin, LOW); //使发出发出超声波信号接口低电平2 μs | ||
+ | delayMicroseconds(2); | ||
+ | digitalWrite(outputPin, HIGH); //使发出发出超声波信号接口高电平10μs ,这里是至少10μs | ||
+ | delayMicroseconds(10); | ||
+ | digitalWrite(outputPin, LOW); // 保持发出超声波信号接口低电平 | ||
+ | float distance1 = pulseIn(inputPin1, HIGH); // 读出接收脉冲的时间 | ||
+ | distance1= distance1/58; // 将脉冲时间转化为距离(单位:厘米) | ||
+ | x1 = distance1 * 100.0; | ||
+ | distance1 = x1 / 100.0; //保留两位小数 | ||
+ | Serial.print("x1 = "); | ||
+ | Serial.println(distance1); // 输出距离值 | ||
+ | delay(150); | ||
+ | |||
+ | digitalWrite(outputPin, LOW); //使发出发出超声波信号接口低电平2 μs | ||
+ | delayMicroseconds(2); | ||
+ | digitalWrite(outputPin, HIGH); //使发出发出超声波信号接口高电平10μs ,这里是至少10μs | ||
+ | delayMicroseconds(10); | ||
+ | digitalWrite(outputPin, LOW); // 保持发出超声波信号接口低电平 | ||
+ | float distance2 = pulseIn(inputPin2, HIGH); // 读出接收脉冲的时间 | ||
+ | distance2 = distance2/58; // 将脉冲时间转化为距离(单位:厘米) | ||
+ | x2 = distance2 * 100.0; | ||
+ | distance2 = x2 / 100.0; //保留两位小数 | ||
+ | Serial.print("x2 = "); | ||
+ | Serial.println(distance2); // 输出距离值 | ||
+ | delay(150); | ||
+ | |||
+ | } | ||
+ | </pre> | ||
+ | ===程序效果=== | ||
+ | 打开串口监视器可以观察到输出的距离值为当前超声波距前方障碍物的实际距离。 | ||
+ | [[文件:dcsb.png|700px|缩略图|居中]] | ||
==视频演示== | ==视频演示== | ||
[[File:chao sheng bo 01.png|400px|左|link=http://v.youku.com/v_show/id_XMTcwNTA2NjY0.html?from=y1.7-2]] | [[File:chao sheng bo 01.png|400px|左|link=http://v.youku.com/v_show/id_XMTcwNTA2NjY0.html?from=y1.7-2]] |
2016年4月20日 (三) 10:37的最后版本
目录 |
产品概述
最新推出的RB URF02超声波传感器是RB URF v1.1超声波传感器的升级产品,在保留原有功能的基础上,使用防插反接头并新增加模式选择功能,有两种模式可选择:单线模式只需要一根信号线,大大减少IO口资源;双线模式与原有功能一样,需要一根输入和输出信号线。侦测距离和精度也有较大提高,可达1cm到500cm,其在有效探测范围内自动标定,无需任何人工调整就可以获得障碍物准确的距离。令你的机器人像蝙蝠一样通过声纳来感知周围的环境,你只需要在单片机、Arduino微控制器中编写一小段程序,就可以根据障碍物的距离精确的控制机器人的电机运行,从而使你的机器人轻松地避开障碍物,因此其是机器人领域最常用的测距避障模块。
规格参数
- 工作电压 :+5v
- 工作电流 :<20mA
- 工作频率 :40KHz
- 工作温度范围:-10℃~+70℃
- 探测有效距离:1cm~500cm
- 探测分辨率:0.5cm
- 探测误差:±0.5%
- 灵敏度:大于1.8m外可以探测到直径2cm物体
- 接口类型:TTL(单线模式和双线模式可切换)
- 方向性侦测范围:定向式(水平/垂直)65度圆锥
- 尺寸大小: 46.7mm × 25.7mm × 19mm
- 重量大小:7g
接口定义
超声波传感器的引脚定义:
- OUTPUT:响应信号输入
- INPUT:触发控制信号输入
- +:电源(VCC)
- -:地(GND)
使用方法
工作原理
超声波是指频率高于20KHz的机械波,超声波测距的原理是通过测量声波在发射后遇到障碍物反射回来的时间差计算出发射点到障碍物的实距离。
测距公式为:L = V * (T2-T1)/2
公式说明:
- L 为测量的距离长度
- V 为超声波在空气中的传播速度(在20℃时为344m/s)
- t1 为测量距离的起始时间
- t2 为收到回波的时间
速度乘以时间差等于来回的距离,除以2可以得到实际的距离。
编程原理
使用RB URF02超声波传感器双线时,首先拉低触发控制信号输入(input)端口,然后至少给10us的高电平信号来触发模块,在触发后,模块会自动发射8个40KHz的方波,并自动检测是否有信号返回;如果有信号返回,通过响应信号输出(output)一个高电平,高电平持续的时间便是超声波从发射到接收的时间,该模块工作时序图如下,所以测试距离的计算公式为:测试距离 = 高电平持续时间 * 340(m/s)*0.5
使用RB URF02超声波传感器单线时,原理同双线模式,只是通过一个触发控制信号输入(input)端口进行超声波控制器的信号收发。
双线模式接线图
- INPUT、OUTPUT端口如图所示接到控制器的I/O口。5V 和GND分别接到电源的+5V和GND。
注:在使用双线模式时模式选择开关(Mode)拨到数字2侧。
双线模式例子程序
硬件连接如图所示,数字口4 接超声波的OUTPUT 、数字口5 接超声波INPUT ,将开关拨到数字2 一侧超声波进入双线模式。
int inputPin=4; // 接超声波的 output 引脚到数字D4脚 int outputPin=5; // 接超声波的 input 引脚到数字D5脚 int ledpin=13; // 定义 ledPin 引脚为D13脚 void setup() { //初始化串口及引脚的输入、输出模式 Serial.begin(9600); pinMode(ledpin,OUTPUT); pinMode(inputPin, INPUT); pinMode(outputPin, OUTPUT); } void loop() { digitalWrite(outputPin, LOW); //使发出发出超声波信号接口低电平2 μs delayMicroseconds(2); digitalWrite(outputPin, HIGH); //使发出发出超声波信号接口高电平10μs ,这里是至少10μs delayMicroseconds(10); digitalWrite(outputPin, LOW); // 保持发出超声波信号接口低电平 float distance = pulseIn(inputPin, HIGH); // 读出接收脉冲的时间 distance= distance/58; // 将脉冲时间转化为距离(单位:厘米) distance = (int(distance * 100.0)) / 100.0; //保留两位小数 Serial.println(distance); // 输出距离值 delay(50); if (distance >=50) { digitalWrite(ledpin,HIGH); //如果距离大于50厘米小灯亮起 } else digitalWrite(ledpin,LOW); //如果距离小于50厘米小灯熄灭 }
单线模式接线图
- INPUT端口如图所示接到控制器的I/O口。5V 和GND分别接到电源的+5V和GND。
注:在使用单线模式时模式选择开关(Mode)拨到数字1侧。
单线模式例子程序
硬件连接如图所示,数字口2 接超声波的INPUT ,将开关拨到数字1 一侧超声波进入单线模式。
int duration; //变量duration 用来存储脉冲时间 int distance; //变量distance 用来存储距离 int srfPin = 2; //定义srfPin 引脚为 2 void setup() { Serial.begin(9600); } void loop() { pinMode(srfPin, OUTPUT); digitalWrite(srfPin, LOW); delayMicroseconds(2); digitalWrite(srfPin, HIGH); delayMicroseconds(10); digitalWrite(srfPin, LOW); pinMode(srfPin, INPUT); duration = pulseIn(srfPin, HIGH); distance = duration/58; // 将脉冲时间转化为距离(单位:厘米) Serial.println(distance); // 输出距离值 delay(50); }
程序效果
- 打开串口助手可以观察到输出的距离值,如下图所示,如果距离小于 50厘米数字口13的LED 小灯熄灭,距离大于50厘米数字口13的LED 小灯亮起同时串口打印处距离数据。
两个超声波联调实验
为了方便电子爱好者使用多个超声波传感器,现将两个传感器的联调实验方法写下,供电子爱好者参考。
连接图示
两个超声波的INPUT引脚接在D5,OUTPUT分别接D3、D4,如下图:
例子程序
依照程序连接两个超声波传感器与UNO,测试实际检测的距离。
const int pingPin = 11; int inputPin1=4; // 接超声波的 output 引脚到数字D4脚 int outputPin=5; // 接超声波的 input 引脚到数字D5脚 int inputPin2=3; int ledpin=13; // 定义 ledPin 引脚为D13脚 void setup() { //初始化串口及引脚的输入、输出模式 Serial.begin(9600); pinMode(ledpin,OUTPUT); pinMode(inputPin1, INPUT); pinMode(outputPin, OUTPUT); pinMode(inputPin2, INPUT); } void loop() { unsigned int x1,x2; digitalWrite(outputPin, LOW); //使发出发出超声波信号接口低电平2 μs delayMicroseconds(2); digitalWrite(outputPin, HIGH); //使发出发出超声波信号接口高电平10μs ,这里是至少10μs delayMicroseconds(10); digitalWrite(outputPin, LOW); // 保持发出超声波信号接口低电平 float distance1 = pulseIn(inputPin1, HIGH); // 读出接收脉冲的时间 distance1= distance1/58; // 将脉冲时间转化为距离(单位:厘米) x1 = distance1 * 100.0; distance1 = x1 / 100.0; //保留两位小数 Serial.print("x1 = "); Serial.println(distance1); // 输出距离值 delay(150); digitalWrite(outputPin, LOW); //使发出发出超声波信号接口低电平2 μs delayMicroseconds(2); digitalWrite(outputPin, HIGH); //使发出发出超声波信号接口高电平10μs ,这里是至少10μs delayMicroseconds(10); digitalWrite(outputPin, LOW); // 保持发出超声波信号接口低电平 float distance2 = pulseIn(inputPin2, HIGH); // 读出接收脉冲的时间 distance2 = distance2/58; // 将脉冲时间转化为距离(单位:厘米) x2 = distance2 * 100.0; distance2 = x2 / 100.0; //保留两位小数 Serial.print("x2 = "); Serial.println(distance2); // 输出距离值 delay(150); }
程序效果
打开串口监视器可以观察到输出的距离值为当前超声波距前方障碍物的实际距离。
视频演示
产品相关推荐
产品购买地址
周边产品推荐
相关问题解答
相关学习资料
视频:Arduino-2WD轻量型移动机器人超声波旋转侦测演示
超声波测距LED输出小装置制作
Arduino学习笔记- Arduino连接超声波传感器测距
奥松机器人技术论坛