“(SKU:RB-02S001A)RB URF02超聲波傳感器”的版本間的差異
(→?雙線模式例子程序) |
|||
(未顯示1個用戶的12個中間版本) | |||
第13行: | 第13行: | ||
# 接口類型:TTL(單線模式和雙線模式可切換) | # 接口類型:TTL(單線模式和雙線模式可切換) | ||
# 方向性偵測范圍:定向式(水平/垂直)65度圓錐 | # 方向性偵測范圍:定向式(水平/垂直)65度圓錐 | ||
? | # 尺寸大小: | + | # 尺寸大小: 46.7mm × 25.7mm × 19mm |
# 重量大?。?g | # 重量大?。?g | ||
? | ==工作原理== | + | |
? | 超聲波是指頻率高于20KHz的機械波,超聲波測距的原理是通過測量聲波在發(fā)射后遇到障礙物反射回來的時間差計算出發(fā)射點到障礙物的實距離。 | + | ==接口定義== |
? | 測距公式為:L = V * (T2-T1)/2 | + | 超聲波傳感器的引腳定義: |
? | 公式說明: | + | * OUTPUT:響應(yīng)信號輸入 |
+ | * INPUT:觸發(fā)控制信號輸入 | ||
+ | * +:電源(VCC) | ||
+ | * -:地(GND) | ||
+ | [[文件:02S001A03.png|500px|有框|居中]] | ||
+ | ==使用方法== | ||
+ | ===工作原理=== | ||
+ | 超聲波是指頻率高于20KHz的機械波,超聲波測距的原理是通過測量聲波在發(fā)射后遇到障礙物反射回來的時間差計算出發(fā)射點到障礙物的實距離。<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超聲波傳感器雙線時,首先拉低觸發(fā)控制信號輸入(input)端口,然后至少給10us的高電平信號來觸發(fā)模塊,在觸發(fā)后,模塊會自動發(fā)射8個40KHz的方波,并自動檢測是否有信號返回;如果有信號返回,通過響應(yīng)信號輸出(output)一個高電平,高電平持續(xù)的時間便是超聲波從發(fā)射到接收的時間,該模塊工作時序圖如下,所以測試距離的計算公式為:測試距離 = 高電平持續(xù)時間 * 340(m/s)*0.5<br/> | 使用RB URF02超聲波傳感器雙線時,首先拉低觸發(fā)控制信號輸入(input)端口,然后至少給10us的高電平信號來觸發(fā)模塊,在觸發(fā)后,模塊會自動發(fā)射8個40KHz的方波,并自動檢測是否有信號返回;如果有信號返回,通過響應(yīng)信號輸出(output)一個高電平,高電平持續(xù)的時間便是超聲波從發(fā)射到接收的時間,該模塊工作時序圖如下,所以測試距離的計算公式為:測試距離 = 高電平持續(xù)時間 * 340(m/s)*0.5<br/> | ||
使用RB URF02超聲波傳感器單線時,原理同雙線模式,只是通過一個觸發(fā)控制信號輸入(input)端口進行超聲波控制器的信號收發(fā)。<br/> | 使用RB URF02超聲波傳感器單線時,原理同雙線模式,只是通過一個觸發(fā)控制信號輸入(input)端口進行超聲波控制器的信號收發(fā)。<br/> | ||
? | [[文件: | + | [[文件:p-2.jpg|500px|有框|居中]] |
===雙線模式接線圖=== | ===雙線模式接線圖=== | ||
* INPUT、OUTPUT端口如圖所示接到控制器的I/O口。5V 和GND分別接到電源的+5V和GND。 | * INPUT、OUTPUT端口如圖所示接到控制器的I/O口。5V 和GND分別接到電源的+5V和GND。 | ||
注:在使用雙線模式時模式選擇開關(guān)(Mode)撥到數(shù)字2側(cè)。 | 注:在使用雙線模式時模式選擇開關(guān)(Mode)撥到數(shù)字2側(cè)。 | ||
? | [[文件: | + | [[文件:02S001A04.png|700px|有框|居中]] |
===雙線模式例子程序=== | ===雙線模式例子程序=== | ||
硬件連接如圖所示,數(shù)字口4 接超聲波的OUTPUT 、數(shù)字口5 接超聲波INPUT ,將開關(guān)撥到數(shù)字2 一側(cè)超聲波進入雙線模式。 | 硬件連接如圖所示,數(shù)字口4 接超聲波的OUTPUT 、數(shù)字口5 接超聲波INPUT ,將開關(guān)撥到數(shù)字2 一側(cè)超聲波進入雙線模式。 | ||
第74行: | 第75行: | ||
===單線模式接線圖=== | ===單線模式接線圖=== | ||
? | [[文件: | + | [[文件:02S001A05.png|700px|有框|居中]] |
* INPUT端口如圖所示接到控制器的I/O口。5V 和GND分別接到電源的+5V和GND。 | * INPUT端口如圖所示接到控制器的I/O口。5V 和GND分別接到電源的+5V和GND。 | ||
注:在使用單線模式時模式選擇開關(guān)(Mode)撥到數(shù)字1側(cè)。 | 注:在使用單線模式時模式選擇開關(guān)(Mode)撥到數(shù)字1側(cè)。 | ||
第102行: | 第103行: | ||
} </pre> | } </pre> | ||
===程序效果=== | ===程序效果=== | ||
? | + | * 打開串口助手可以觀察到輸出的距離值,如下圖所示,如果距離小于 50厘米數(shù)字口13的LED 小燈熄滅,距離大于50厘米數(shù)字口13的LED 小燈亮起同時串口打印處距離數(shù)據(jù)。 | |
? | + | [[文件:02S001A02.png|500px|有框|居中]] | |
? | + | ===兩個超聲波聯(lián)調(diào)實驗=== | |
+ | 為了方便電子愛好者使用多個超聲波傳感器,現(xiàn)將兩個傳感器的聯(lián)調(diào)實驗方法寫下,供電子愛好者參考。 | ||
+ | ===連接圖示=== | ||
+ | 兩個超聲波的INPUT引腳接在D5,OUTPUT分別接D3、D4,如下圖: | ||
+ | [[文件:csb2.png|700px|縮略圖|居中]] | ||
+ | ===例子程序=== | ||
+ | 依照程序連接兩個超聲波傳感器與UNO,測試實際檢測的距離。 | ||
+ | <pre style='color:blue'>const int pingPin = 11; | ||
+ | int inputPin1=4; // 接超聲波的 output 引腳到數(shù)字D4腳 | ||
+ | int outputPin=5; // 接超聲波的 input 引腳到數(shù)字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); //使發(fā)出發(fā)出超聲波信號接口低電平2 μs | ||
+ | delayMicroseconds(2); | ||
+ | digitalWrite(outputPin, HIGH); //使發(fā)出發(fā)出超聲波信號接口高電平10μs ,這里是至少10μs | ||
+ | delayMicroseconds(10); | ||
+ | digitalWrite(outputPin, LOW); // 保持發(fā)出超聲波信號接口低電平 | ||
+ | float distance1 = pulseIn(inputPin1, HIGH); // 讀出接收脈沖的時間 | ||
+ | distance1= distance1/58; // 將脈沖時間轉(zhuǎn)化為距離(單位:厘米) | ||
+ | x1 = distance1 * 100.0; | ||
+ | distance1 = x1 / 100.0; //保留兩位小數(shù) | ||
+ | Serial.print("x1 = "); | ||
+ | Serial.println(distance1); // 輸出距離值 | ||
+ | delay(150); | ||
+ | |||
+ | digitalWrite(outputPin, LOW); //使發(fā)出發(fā)出超聲波信號接口低電平2 μs | ||
+ | delayMicroseconds(2); | ||
+ | digitalWrite(outputPin, HIGH); //使發(fā)出發(fā)出超聲波信號接口高電平10μs ,這里是至少10μs | ||
+ | delayMicroseconds(10); | ||
+ | digitalWrite(outputPin, LOW); // 保持發(fā)出超聲波信號接口低電平 | ||
+ | float distance2 = pulseIn(inputPin2, HIGH); // 讀出接收脈沖的時間 | ||
+ | distance2 = distance2/58; // 將脈沖時間轉(zhuǎn)化為距離(單位:厘米) | ||
+ | x2 = distance2 * 100.0; | ||
+ | distance2 = x2 / 100.0; //保留兩位小數(shù) | ||
+ | Serial.print("x2 = "); | ||
+ | Serial.println(distance2); // 輸出距離值 | ||
+ | delay(150); | ||
+ | |||
+ | } | ||
+ | </pre> | ||
+ | ===程序效果=== | ||
+ | 打開串口監(jiān)視器可以觀察到輸出的距離值為當前超聲波距前方障礙物的實際距離。 | ||
+ | [[文件: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的最后版本
目錄 |
產(chǎn)品概述
最新推出的RB URF02超聲波傳感器是RB URF v1.1超聲波傳感器的升級產(chǎn)品,在保留原有功能的基礎(chǔ)上,使用防插反接頭并新增加模式選擇功能,有兩種模式可選擇:單線模式只需要一根信號線,大大減少IO口資源;雙線模式與原有功能一樣,需要一根輸入和輸出信號線。偵測距離和精度也有較大提高,可達1cm到500cm,其在有效探測范圍內(nèi)自動標定,無需任何人工調(diào)整就可以獲得障礙物準確的距離。令你的機器人像蝙蝠一樣通過聲納來感知周圍的環(huán)境,你只需要在單片機、Arduino微控制器中編寫一小段程序,就可以根據(jù)障礙物的距離精確的控制機器人的電機運行,從而使你的機器人輕松地避開障礙物,因此其是機器人領(lǐng)域最常用的測距避障模塊。
規(guī)格參數(shù)
- 工作電壓 :+5v
- 工作電流 :<20mA
- 工作頻率 :40KHz
- 工作溫度范圍:-10℃~+70℃
- 探測有效距離:1cm~500cm
- 探測分辨率:0.5cm
- 探測誤差:±0.5%
- 靈敏度:大于1.8m外可以探測到直徑2cm物體
- 接口類型:TTL(單線模式和雙線模式可切換)
- 方向性偵測范圍:定向式(水平/垂直)65度圓錐
- 尺寸大小: 46.7mm × 25.7mm × 19mm
- 重量大?。?g
接口定義
超聲波傳感器的引腳定義:
- OUTPUT:響應(yīng)信號輸入
- INPUT:觸發(fā)控制信號輸入
- +:電源(VCC)
- -:地(GND)
使用方法
工作原理
超聲波是指頻率高于20KHz的機械波,超聲波測距的原理是通過測量聲波在發(fā)射后遇到障礙物反射回來的時間差計算出發(fā)射點到障礙物的實距離。
測距公式為:L = V * (T2-T1)/2
公式說明:
- L 為測量的距離長度
- V 為超聲波在空氣中的傳播速度(在20℃時為344m/s)
- t1 為測量距離的起始時間
- t2 為收到回波的時間
速度乘以時間差等于來回的距離,除以2可以得到實際的距離。
編程原理
使用RB URF02超聲波傳感器雙線時,首先拉低觸發(fā)控制信號輸入(input)端口,然后至少給10us的高電平信號來觸發(fā)模塊,在觸發(fā)后,模塊會自動發(fā)射8個40KHz的方波,并自動檢測是否有信號返回;如果有信號返回,通過響應(yīng)信號輸出(output)一個高電平,高電平持續(xù)的時間便是超聲波從發(fā)射到接收的時間,該模塊工作時序圖如下,所以測試距離的計算公式為:測試距離 = 高電平持續(xù)時間 * 340(m/s)*0.5
使用RB URF02超聲波傳感器單線時,原理同雙線模式,只是通過一個觸發(fā)控制信號輸入(input)端口進行超聲波控制器的信號收發(fā)。
雙線模式接線圖
- INPUT、OUTPUT端口如圖所示接到控制器的I/O口。5V 和GND分別接到電源的+5V和GND。
注:在使用雙線模式時模式選擇開關(guān)(Mode)撥到數(shù)字2側(cè)。
雙線模式例子程序
硬件連接如圖所示,數(shù)字口4 接超聲波的OUTPUT 、數(shù)字口5 接超聲波INPUT ,將開關(guān)撥到數(shù)字2 一側(cè)超聲波進入雙線模式。
int inputPin=4; // 接超聲波的 output 引腳到數(shù)字D4腳 int outputPin=5; // 接超聲波的 input 引腳到數(shù)字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); //使發(fā)出發(fā)出超聲波信號接口低電平2 μs delayMicroseconds(2); digitalWrite(outputPin, HIGH); //使發(fā)出發(fā)出超聲波信號接口高電平10μs ,這里是至少10μs delayMicroseconds(10); digitalWrite(outputPin, LOW); // 保持發(fā)出超聲波信號接口低電平 float distance = pulseIn(inputPin, HIGH); // 讀出接收脈沖的時間 distance= distance/58; // 將脈沖時間轉(zhuǎn)化為距離(單位:厘米) distance = (int(distance * 100.0)) / 100.0; //保留兩位小數(shù) Serial.println(distance); // 輸出距離值 delay(50); if (distance >=50) { digitalWrite(ledpin,HIGH); //如果距離大于50厘米小燈亮起 } else digitalWrite(ledpin,LOW); //如果距離小于50厘米小燈熄滅 }
單線模式接線圖
- INPUT端口如圖所示接到控制器的I/O口。5V 和GND分別接到電源的+5V和GND。
注:在使用單線模式時模式選擇開關(guān)(Mode)撥到數(shù)字1側(cè)。
單線模式例子程序
硬件連接如圖所示,數(shù)字口2 接超聲波的INPUT ,將開關(guān)撥到數(shù)字1 一側(cè)超聲波進入單線模式。
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; // 將脈沖時間轉(zhuǎn)化為距離(單位:厘米) Serial.println(distance); // 輸出距離值 delay(50); }
程序效果
- 打開串口助手可以觀察到輸出的距離值,如下圖所示,如果距離小于 50厘米數(shù)字口13的LED 小燈熄滅,距離大于50厘米數(shù)字口13的LED 小燈亮起同時串口打印處距離數(shù)據(jù)。
兩個超聲波聯(lián)調(diào)實驗
為了方便電子愛好者使用多個超聲波傳感器,現(xiàn)將兩個傳感器的聯(lián)調(diào)實驗方法寫下,供電子愛好者參考。
連接圖示
兩個超聲波的INPUT引腳接在D5,OUTPUT分別接D3、D4,如下圖:
例子程序
依照程序連接兩個超聲波傳感器與UNO,測試實際檢測的距離。
const int pingPin = 11; int inputPin1=4; // 接超聲波的 output 引腳到數(shù)字D4腳 int outputPin=5; // 接超聲波的 input 引腳到數(shù)字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); //使發(fā)出發(fā)出超聲波信號接口低電平2 μs delayMicroseconds(2); digitalWrite(outputPin, HIGH); //使發(fā)出發(fā)出超聲波信號接口高電平10μs ,這里是至少10μs delayMicroseconds(10); digitalWrite(outputPin, LOW); // 保持發(fā)出超聲波信號接口低電平 float distance1 = pulseIn(inputPin1, HIGH); // 讀出接收脈沖的時間 distance1= distance1/58; // 將脈沖時間轉(zhuǎn)化為距離(單位:厘米) x1 = distance1 * 100.0; distance1 = x1 / 100.0; //保留兩位小數(shù) Serial.print("x1 = "); Serial.println(distance1); // 輸出距離值 delay(150); digitalWrite(outputPin, LOW); //使發(fā)出發(fā)出超聲波信號接口低電平2 μs delayMicroseconds(2); digitalWrite(outputPin, HIGH); //使發(fā)出發(fā)出超聲波信號接口高電平10μs ,這里是至少10μs delayMicroseconds(10); digitalWrite(outputPin, LOW); // 保持發(fā)出超聲波信號接口低電平 float distance2 = pulseIn(inputPin2, HIGH); // 讀出接收脈沖的時間 distance2 = distance2/58; // 將脈沖時間轉(zhuǎn)化為距離(單位:厘米) x2 = distance2 * 100.0; distance2 = x2 / 100.0; //保留兩位小數(shù) Serial.print("x2 = "); Serial.println(distance2); // 輸出距離值 delay(150); }
程序效果
打開串口監(jiān)視器可以觀察到輸出的距離值為當前超聲波距前方障礙物的實際距離。
視頻演示
產(chǎn)品相關(guān)推薦
產(chǎn)品購買地址
周邊產(chǎn)品推薦
相關(guān)問題解答
相關(guān)學習資料
視頻:Arduino-2WD輕量型移動機器人超聲波旋轉(zhuǎn)偵測演示
超聲波測距LED輸出小裝置制作
Arduino學習筆記- Arduino連接超聲波傳感器測距
奧松機器人技術(shù)論壇