Arduino超聲測(cè)距系統(tǒng)設(shè)計(jì)
Arduino是目前較為流行的電子互動(dòng)平臺(tái),基于嵌入式系統(tǒng)開(kāi)發(fā),具有使用簡(jiǎn)單,功能多樣,價(jià)格低廉等優(yōu)點(diǎn),廣泛應(yīng)用于電子系統(tǒng)設(shè)計(jì)和互動(dòng)產(chǎn)品開(kāi)發(fā)方面。我們采用Arduino作為主控制器,結(jié)合超聲測(cè)距模塊,1602液晶模塊,進(jìn)行了超聲波測(cè)距系統(tǒng)的軟硬件設(shè)計(jì)。
本文引用地址:http://butianyuan.cn/article/201807/384475.htm一、“電子積木”Arduino
近幾年,歐美大學(xué)皆相當(dāng)流行應(yīng)用Arduino作為基礎(chǔ)的技術(shù),在國(guó)內(nèi)使用Arduino的人也越來(lái)越多。
Arduino為什么會(huì)這樣流行?首先因?yàn)樗且粋€(gè)基于開(kāi)放源代碼的硬件項(xiàng)目平臺(tái):
1.硬件平臺(tái)是開(kāi)放的,任何人都可以在Arduino官方網(wǎng)站上下載最新的PCB設(shè)計(jì)進(jìn)行復(fù)制,硬件平臺(tái)包括基于AVR ATmega128微控制器的主控制電路板,以及大量的各式輸入/輸出電子模塊。輸入/輸出模塊包括開(kāi)關(guān)輸入模塊、溫度壓力傳感器輸入模塊、超聲測(cè)距傳感器輸入模塊、各類顯示輸出模塊、電機(jī)控制模塊等,甚至還有以太網(wǎng)接入模塊。這些模塊與主控制電路板的連接,不需焊接,只要像積木一樣拼在一起即可。因此,Arduino也被稱為“電子積木”.
2.在軟件方面,Arduino有一個(gè)屬于自己的基于Eclipse的IDE軟件開(kāi)發(fā)環(huán)境,開(kāi)發(fā)語(yǔ)言采用類C++語(yǔ)言的高級(jí)語(yǔ)言,容易被使用者掌握。有大量的庫(kù)文件可以通過(guò)互聯(lián)網(wǎng)下載免費(fèi)獲得,大大簡(jiǎn)化了程序開(kāi)發(fā)工作。
二、超聲波測(cè)距原理
由于超聲波具有指向性強(qiáng),在傳輸中能量消耗低,傳播的距離較遠(yuǎn)等優(yōu)點(diǎn)而被經(jīng)常用于工業(yè)控制、建筑測(cè)量、汽車倒車系統(tǒng)等領(lǐng)域。
超聲波測(cè)距儀是利用超聲波發(fā)射器向某一方向發(fā)射超聲波,在發(fā)射時(shí)刻開(kāi)始計(jì)時(shí),超聲波在空氣中傳播,途中碰到障礙物就立即返回來(lái),超聲波接收器收到反射波就立即停止計(jì)時(shí)。根據(jù)計(jì)時(shí)器記錄的超聲波傳播時(shí)間,以及超聲波在相應(yīng)介質(zhì)中的傳播速度就可以計(jì)算出發(fā)射點(diǎn)距障礙物的距離S=C*t/2,其中C為超聲波在空氣中的傳播速度,t為聲波往返所用的時(shí)間。
超聲波的傳播主要受空氣密度的影響,空氣的密度越高其速度就越快,而空氣的密度又與溫度有著密切的關(guān)系??諝庵械穆暡▊鞑ニ俣瓤山频乇硎緸镃=331.4+0.607*T,其中T是空氣介質(zhì)的溫度。超聲波的傳播速度式中:
C=331.4m/S為零度時(shí)的聲波速度;T為實(shí)際溫度(℃)。在測(cè)距精度不是很高的情況下,一般認(rèn)為c為常數(shù)340m/s.
三、超聲波測(cè)距儀的硬件設(shè)計(jì)
超聲波測(cè)距儀的硬件設(shè)計(jì)主要有ArduinoUNO主控制板、超聲測(cè)距模塊LCD1602液晶顯示模塊。
1.超聲波板主要技術(shù)參數(shù)的介紹:
(1)工作電壓:DC5V;
(2)靜態(tài)電流:小于2mA;
(3)電平輸出:高5V;
(4)電平輸出:底0V;
(5)感應(yīng)角度:不大于15度;
(6)感應(yīng)距離:4cm-5米;
(7)高精度:0.3cm.
板上接線如圖1所示(左數(shù)起):
(1)VCC;
(2)trig(控制端);
(3)echo(接收端);
(4)out(空腳);
5)GND.
2.Arduino與超聲測(cè)距的連接方式:
Arduino的數(shù)字6腳與超聲測(cè)距模塊的第2腳連接,Arduino的數(shù)字7腳與超聲測(cè)距模塊的第3腳連接。
3.1602液晶與Arduino板連接圖如圖2所示:
4.實(shí)物連接圖如圖3所示:
四、軟件代碼
1.在采用Arduino編程的過(guò)程中,主要用pulseIn()函數(shù),pulseIn()函數(shù)用來(lái)讀取一個(gè)引腳的脈沖(HIGH或LOW)。例如,如果value是HIGH,pulseIn()會(huì)等待引腳變?yōu)镠IGH,開(kāi)始計(jì)時(shí),再等待引腳變?yōu)長(zhǎng)OW并停止計(jì)時(shí)。返回脈沖的長(zhǎng)度,單位微秒。如果在指定的時(shí)間內(nèi)無(wú)脈沖函數(shù)返回。計(jì)時(shí)范圍從10微秒至3分鐘。
(1秒=1000毫秒=1000000微秒)語(yǔ)法:
pulseIn(pin,value)或pulseIn(pin,value,timeout)
參數(shù):
pin:你要進(jìn)行脈沖計(jì)時(shí)的引腳號(hào)(int)。
value:要讀取的脈沖類型,HIGH或LOW(int)。
Timeout(可選):指定脈沖計(jì)數(shù)的等待時(shí)間,單位為微秒,默認(rèn)值是1秒(unsigned long)超聲測(cè)距的主要代碼:
五、總結(jié)
本文以Arduino為工作處理器核心,設(shè)計(jì)了超聲測(cè)距模塊,準(zhǔn)確度達(dá)到測(cè)距模塊精度。由于Arduino是一個(gè)開(kāi)源的系統(tǒng),可以通過(guò)互聯(lián)網(wǎng)下載免費(fèi)獲得庫(kù)文件,從而大大簡(jiǎn)化了程序開(kāi)發(fā)工作。Arduino是適合電子愛(ài)好者進(jìn)行開(kāi)發(fā)產(chǎn)品的一個(gè)平臺(tái)。
評(píng)論