資料下載地址:http://pan.baidu.com/s/1c08JuBQ
說明:
US-016是市場模擬量輸出的超聲波測距模塊,輸出的模擬電壓和距離值成正比,可以方便的和其他系統相連,
US-016工作穩定可靠。
US-016超聲波測距模塊
1. 概述
US-016超聲波測距模塊可實現2cm~3m的非接觸測距功能,供電電壓為5V,工作電流為3.8mA,支持模
擬電壓輸出,工作穩定可靠。本模塊根據不同應用場景可設置成不同的量程(最大測量距離分別為1m和3m)
當Range管腳懸空時,量程為3m。
US-016能將測量距離轉化為模擬電壓輸出,輸出電壓值與測量距離成正比。
2. 主要技術參數
電氣參數 |
US-016超聲波測距模塊 |
工作電壓 |
DC 5V |
工作電流 |
3.8mA |
工作溫度 |
0~+70度 |
輸出方式 |
模擬電壓(0~Vcc) |
感應角度 |
小於15度 |
探測距離 |
2cm-300cm |
探測精度 |
0.3cm+1百 |
分辨率 |
1mm |
3. 本模塊實物圖及尺寸
本模塊如圖3.1和圖3.2所示:
圖3.1: US-016正面圖
圖3.2:US-016背面圖
本模塊的尺寸:45mm*20mm*1.2mm。板上有兩個半徑為1mm的機械孔,如圖3.3所示:
圖3.3:US-015尺寸圖
4. 接口說明
本模塊有一個接口:4 Pin供電及通信接口。
4 Pin接口為2.54mm間距的彎排針,如圖4.1所示:
圖4.1:4 Pin接口
從左到右依次編號1,2,3,4。它們的定義如下:
l 1號Pin:接VCC電源(直流5V)。
l 2號Pin:量程設置引腳(Range),當模塊上電時此引腳為高電平時,量程為3m。當模塊上電時此引腳為低電平時,量程為1m。
此引腳內帶上拉電阻,當Range引腳懸空時,量程為3m。
l 3號Pin:模擬電壓輸出引腳(Out),模擬電壓與測量距離成正比,輸出範圍為0~Vcc。
l 4號Pin:接外部電路的地。
5. 測距工作原理
模塊上電後,系統首先判斷Range引腳的輸入電平,根據輸入電平狀態來設置不同的量程。當Range引腳為高電平時,量程為3m,
當Range管腳為低電平時,量程為1m。
然後,系統開始連續測距,同時將測距結果通過模擬電壓在Out管腳輸出。當距離變化時,模擬電壓也會隨之進行變化。
模擬電壓與測量距離成正比,模擬電壓的輸出範圍是0~Vcc。
當系統量程為1m時,測量距離為:L = 1024*Vout/Vcc(mm)。當輸出電壓為0V對應距離為0m,輸出Vcc對應為1.024m。
當系統量程為3m時,測量距離為:L = 3096*Vout/Vcc(mm)。當輸出電壓為0V對應距離為0m,輸出Vcc對應為3.072m。
測量距離與輸出電壓的關係如圖5.1所示:
圖5.1 測量距離和輸出電壓的關係
6. 量程為1m時編程建議
注意:上電時,需要將Range管腳設置為低電平。
測量時,可採用ADC對Out管腳的輸出電壓進行採樣,根據ADC值換算出測量距離,可用如下公式計算:
L = (A*1024/2^n)*(Vref/Vcc),其中A為ADC的值,n為ADC的位數,Vref為ADC的參考電壓,Vcc為US-016的電源電壓。
比如採用10位ADC進行採樣,且ADC的參考電壓為VCC時,測量距離可用ADC的值來表示。
舉例:當ADC採樣值為345時,測量距離為345mm。
量程為1m時,Arduino測距例程:
unsigned int ADCValue;
void setup()
{
Serial.begin(9600);
}
void loop()
{
ADCValue = analogRead(0);
Serial.print("Present Length is: ");
Serial.print(ADCValue, DEC);
Serial.println("mm");
delay(1000);//delay 1S
}
7. 量程為3m時編程建議
注意:上電時,需要將Range管腳懸空或設置為高電平。
測量時,可採用ADC對Out管腳的輸出電壓進行採樣,根據ADC值換算出測量距離,可用如下公式計算:
L = (A*3072/2^n)*(Vref/Vcc),其中A為ADC的值,n為ADC的位數,Vref為ADC的參考電壓,Vcc為US-016的電源電壓。
比如採用10位ADC進行採樣,且ADC的參考電壓為VCC時,測量距離可用3*ADC的值來表示。舉例:當10位ADC採樣值為400時,測量距離為3*400 = 1200mm。
量程為3m時,Arduino測距例程:
unsigned int ADCValue;
void setup()
{
Serial.begin(9600);
}
void loop()
{
ADCValue = analogRead(0);
ADCValue *= 3;
Serial.print("Present Length is: ");
Serial.print(ADCValue, DEC);
Serial.println("mm");
delay(1000);//delay 1S
}