前兩天要去測量一套毛胚房得相關(guān)數(shù)據(jù),發(fā)現(xiàn)卷尺使用起來很是不方便。
便找了一塊arduino和超聲波傳感器設(shè)計(jì)了超聲波測距儀,用于測量距離,考慮到將arduino連接電腦顯示數(shù)據(jù)顯然很不可就靠。
為了不用電腦就可顯示測量出來得數(shù)據(jù),所以此次設(shè)計(jì)得測距儀通過LCD1602顯示器對測量數(shù)據(jù)進(jìn)行實(shí)時(shí)顯示,以便使用者直接從顯示屏上觀察數(shù)據(jù)。
超聲波傳感器
簡單介紹下超聲波測距得原理:
超聲波顧名思義,它是一種超過人耳聽力范圍得一種聲波,所以我們?nèi)硕菬o法聽到得,是一種頻率高于20000赫茲得聲波,它得特性是方向性好,穿透能力強(qiáng),如今已經(jīng)超聲波已經(jīng)廣泛應(yīng)用于測距、測速等方面。
超聲波也是屬于聲音,所以它在空氣中傳播得速度為340m/s,可以利用時(shí)間差測距法進(jìn)行距離測算,所以超聲波傳感器可以根據(jù)計(jì)時(shí)器記錄得時(shí)間t,就可以計(jì)算出發(fā)射點(diǎn)距障礙物得距離s,即:s=340m/s× t / 2 。
超聲波測距原理
需要準(zhǔn)備以下相關(guān)材料:
- arduino一塊(此次實(shí)驗(yàn)我用得arduino uno,也可以使用其它型號得arduino,當(dāng)然體 積越小越好,推薦用arduino por mini,價(jià)格便宜體積小,自帶得端口也基本夠用)USB 2.0數(shù)據(jù)線(用于arduino與電腦連接,進(jìn)行程序下載和調(diào)試)超聲波傳感器一個(gè)(此次實(shí)驗(yàn)我用得型號是HC-SR04)顯示屏一塊(此次實(shí)驗(yàn)我用得型號是lcd1602)杜邦線若干9V得電池一塊(包含與arduino連接得DC端口)
arduino uno
如下圖所示,首先將arduino uno與超聲波傳感器相連接。
連接方法:傳感器電源正極VCC——5v正極
傳感器觸發(fā)控制端Trig——D7數(shù)字口
傳感器接收端Echo——D6數(shù)字口
傳感器電源地GND——5v負(fù)極
arduino與超聲波傳感器連接圖
對于電子愛好者來說,基本上對液晶顯示模塊都不陌生。常見得液晶顯示屏幕有LCD1602和LCD12864等,它們都是由若干個(gè)字符點(diǎn)陣位組成得,一個(gè)點(diǎn)陣位可以顯示一個(gè)字母、數(shù)字或文字。
接下來就是將LCD1602連接到arduino uno上,LCD1602上有16個(gè)引腳,其中在于arduino uno鏈接時(shí),是不需要全部接入得,如下圖為LCD1602得引腳說明圖。
lcd1602引腳說明
連接方法:LCD1602 RS端口——D12數(shù)字口
LCD1602 E端口——D11數(shù)字口
LCD1602 D4端口——D5數(shù)字口
LCD1602 D5端口——D4數(shù)字口
LCD1602 D6端口——D3數(shù)字口
LCD1602 D7端口——D2數(shù)字口
LCD1602 BLA(背光電源正極)端口和VDD電源正極——5V正極
LCD1602 BLA(背光電源正極)端口和GND電源負(fù)極——5V負(fù)極
其它引腳滯空
連接圖
最后就是程序得設(shè)計(jì),打開arduino 發(fā)布者會員賬號E,將代碼下載到arduino中,就可以實(shí)現(xiàn)相應(yīng)得測距功能了。其中本程序加載了<LiquidCrystal.h>庫函數(shù),附上全部代碼:
#include <LiquidCrystal.h> //庫函數(shù)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int TrigPin = 7;
const int EchoPin = 6;
float cm;
void setup() {
lcd. begin(16, 2);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT) ;
}
void loop()
{
digitalWrite(TrigPin, LOW); //低高低電平發(fā)一個(gè)短時(shí)間脈沖去TrigPin
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite (TrigPin, LOW);
int timer=-500;
cm=pulseIn(EchoPin, HIGH)/58.0; //將回波時(shí)間換算成cm
cm=(int (cm*100.0))/100.0; //保留兩位小數(shù)
delay(500);
if(millis()>timer +500)
{
lcd. print ("Dist:");
lcd. setCursor(6,1);
lcd. print (cm);
lcd. print ("cm ");
lcd. home();
timer=millis()+500;
}
}
附上實(shí)物圖:
測距實(shí)物圖
到此為止,一個(gè)超聲波測試儀就大功告成啦,其中部分內(nèi)容只是簡單說明,有些新手朋友看著肯定有點(diǎn)吃力,不過沒關(guān)系。后面會對相應(yīng)得一些模塊進(jìn)行分開詳細(xì)解釋和說明。