- Szükséges anyagok:
- Kördiagramm:
- Hogyan működik a HC-SR04 modul:
- Két ultrahangos érzékelő közötti távolság mérése (HC-SR04):
- Program az adó érzékelőhöz:
- Program a vevő érzékelőhöz:
- Dolgozó:
- Improvizált ötlet - az érzékelő kalibrálása ismert távolság használatával:
Az ultrahangos érzékelőt (HC-SR04) általában arra használják, hogy megtalálják a tárgy távolságát egy adott ponttól. Ezt meglehetősen egyszerű megtenni az Arduino-val, és a kód is nagyon egyszerű. De ebben a cikkben valami mást próbálunk ki ezekkel a népszerű HC-SR04 érzékelőkkel. Megpróbáljuk kiszámítani a távolságot két ultrahangos érzékelő között, vagyis az egyik érzékelőt adónak, a másikat érzékelőnek vevőként működtetjük. Ezzel sok ultrahangos vevő segítségével nyomon követhetjük egy adó helyét, ezt a nyomkövetést háromszögelésnek hívják, és fel lehet használni automatikus robotrögzítő poggyászkövetőkhöz és más hasonló alkalmazásokhoz. Megtaláljuk a távolság két amerikai érzékelők meglehetősen egyszerű feladatnak tűnhet, de kevés kihívással szembesültem, amelyeket ebben a projektben tárgyalunk.
Az ebben a cikkben tárgyalt technika nem meglehetősen pontos, és lehet, hogy módosítások nélkül nem használható semmilyen valós rendszerben. A dokumentáció ideje alatt senkit sem találtam olyan közel eredményeket, mint az enyém, ezért csak megosztottam véleményemet arról, hogy miként működtem úgy, hogy az ezt próbálkozó embereknek ne kelljen újra feltalálniuk a kereket.
Szükséges anyagok:
- Arduino (2Nos) - Bármilyen modell
- HCSR04 modul (2Nos)
Kördiagramm:
Annak ellenére, hogy az egyik amerikai (ultrahangos) érzékelőt adóként, a másikat vevőként működtetjük, kötelező az érzékelők mind a négy érintkezőjét összekötni az Arduinóval. Miért kellene? Többet erről később tárgyalunk, de egyelőre a kapcsolási rajz a következő lesz
Amint láthatja, az adó és a vevő kapcsolási rajza egyaránt megegyezik. Ellenőrizze még: Arduino ultrahangos érzékelő összekapcsolása
Hogyan működik a HC-SR04 modul:
Mielőtt tovább folytatnánk, értsük meg, hogyan működik a HC-SR04 érzékelő. Az alábbi időzítési ábra segít megérteni a munkát.
Az érzékelőnek két érintkezője van: Trigger és Echo, amelyek a távolság mérésére szolgálnak, az időzítési diagram szerint. Először a mérés megkezdéséhez ultrahangos hullámot kell küldenünk az adóból, ezt úgy tehetjük meg, hogy a kioldó csapot magasra állítjuk 10uS-ra. Amint ez megtörtént, az adó csapja 8 hanghullámot küld az amerikai hullámokból. Ez az amerikai hullám visszapattan egy tárgyat, és a vevő fogadja.
Itt az időzítési diagram azt mutatja, hogy amint a vevő megkapja a hullámot, az Echo tű magasra kerül egy olyan időtartamra, amely megegyezik azzal az idővel, amely alatt a hullám az amerikai érzékelőtől halad és visszanyúl az érzékelőhöz. Ez az időzítési diagram nem tűnik igaznak.
Letakartam az érzékelőm Tx (adó) részét, és megnéztem, hogy az Echo impulzus magas lett-e, és igen, igen. Ez azt jelenti, hogy az Echo impulzus nem várja meg, amíg az amerikai (ultrahangos) hullámot befogadja. Amint továbbítja az amerikai hullámot, magasra megy, és magasan marad, amíg a hullám vissza nem tér. Tehát a helyes időzítési diagramnak valami ilyennek kell lennie, az alábbiakban látható (elnézést a gyenge írási képességem miatt)
A HC-SR04 működtetése csak adóként:
Nagyjából egyenesen elő lehet állítani, hogy a HC-SR04 csak adóként működjön. Amint az időzítési ábrán látható, deklarálnod kell a kiváltó csapot kimeneti tűként, és 10 mikroszekundumig magasan kell tartani. Ez elindítja az ultrahangos hullámkitörést. Tehát, amikor át akarjuk adni a hullámot, csak ellenőriznünk kell az adó érzékelő kioldócsapját, amelyhez a kódot alább adjuk meg.
A HC-SR04 működtetése csak vevőként:
Amint az időzítési diagram mutatja, nem tudjuk ellenőrizni az Echo csap emelkedését, mivel ez összefügg a ravasztüskével. Tehát semmiképpen sem tehetnénk rá, hogy a HC-SR04 csak vevőként működjön. De használhatunk feltörést is, ha csak az érzékelő adó részét ragasztószalaggal fedjük le (amint az az alábbi képen látható) vagy sapkával, az amerikai hullám nem tud kijutni az adó házán kívül, és az Echo csapot nem fogja befolyásolni ez az amerikai hullám.
Ahhoz, hogy a visszhangcsap magasra kerüljön, csak 10 mikroszekundumig kell magasra húznunk ezt a dummy ravaszt. Amint ez a vevő érzékelő megkapja az adó érzékelő által továbbított amerikai hullámot, a visszhangcsap alacsony lesz.
Két ultrahangos érzékelő közötti távolság mérése (HC-SR04):
Eddig megértettük, hogyan lehet az egyik érzékelőt adóként működtetni, a másik érzékelőt pedig vevőként működni. Most át kell adnunk az ultrahangos hullámot az adó érzékelőjéről, és be kell vennünk a vevő érzékelőjével, és ellenőriznünk kell, hogy a hullám mennyi ideig tart az adóról a vevőre. De sajnos !, itt van egy problémánk, és ez nem fog működni.
Az adó modul és a vevő modul messze vannak egymástól, és amikor a vevő modul megkapja az amerikai hullámot az adó modultól, nem fogja tudni, hogy az adó mikor küldte ezt a hullámot. A kezdési idő ismerete nélkül nem tudjuk kiszámítani a megtett időt és így a távolságot. A probléma megoldásához a vevőegység visszhang impulzusát pontosan akkor kell elérni, amikor az adómodul továbbította az amerikai hullámot. Más szavakkal, az adó modulnak és a vevő modulnak egyszerre kell aktiválódnia. Ez a következő módszerrel érhető el.
A fenti ábrán a Tx az adó érzékelőt, az Rx pedig a vevő érzékelőt jelöli. Amint az látható, az adó érzékelőt arra tervezzük, hogy az amerikai hullámokat periodikusan ismert késéssel továbbítsa, csak ezt kell tennie.
A vevő érzékelőben valahogy meg kell tennünk, hogy a kioldó csap pontosan akkor menjen magasra, amikor az adó tűje magasra megy. Tehát eleinte véletlenszerűen állítjuk be a vevőkészüléket, hogy magasra emelkedjen, és magasan maradjon, amíg az echo csap alacsonyra nem megy. Ez a visszhangcsúcs csak akkor fog lemerülni, ha az adóból amerikai hullámot kap. Tehát amint lemerül, feltételezhetjük, hogy a jeladó érzékelője éppen elindult. Ezzel a feltevéssel, amint a visszhang alacsony lesz, megvárhatjuk az ismert késleltetést, majd kiválthatjuk a vevőkészüléket. Ez részben szinkronizálja mind az adó, mind a vevő triggerjét, így a pulseIn () segítségével leolvashatja az azonnali visszhang impulzus időtartamát, és kiszámíthatja a távolságot.
Program az adó érzékelőhöz:
Az adó modul teljes programja az oldal alján található. Nem tesz mást, csak periodikusan aktiválja az adó érzékelőjét.
digitalWrite (trigPin, HIGH); késleltetés mikroszekundum (10); digitalWrite (trigPin, LOW);
Az érzékelő beindításához meg kell tennünk a ravaszt, hogy 10uS-ig magasan maradjon. Az ehhez hasonló kód fent látható
Program a vevő érzékelőhöz:
A vevőkészülék érzékelőjében lefedjük az érzékelő adószemét, hogy az már korábban megbeszélt módon dummy legyen. Most a fent említett technikát használhatjuk két érzékelő közötti távolság mérésére. A teljes program az oldal alján található. Néhány fontos sort elmagyarázunk az alábbiakban
Trigger_US (); while (digitalRead (echoPin) == HIGH); késleltetés mikroszekundum (10); Trigger_US (); időtartam = pulseIn (echoPin, HIGH);
Kezdetben a Trigger_US () funkció használatával aktiváljuk az amerikai érzékelőt, majd egy darab hurok segítségével megvárjuk, amíg az echo pin magas marad. Amint alacsony lesz, várjuk az előre meghatározott időtartamot, ennek az időtartamnak 10-30 mikroszekundum között kell lennie, amelyet próba-hiba módszerrel lehet meghatározni (vagy használhatja az alábbiakban megadott rögtönzött ötletet). Ezen késleltetés után indítsa újra az USA-t ugyanazzal a funkcióval, majd használja a pulseIn () függvényt a hullám időtartamának kiszámításához.
Most ugyanazokkal a régi képletekkel kiszámíthatjuk a távolságot az alábbiak szerint
távolság = időtartam * 0,034;
Dolgozó:
Hozza létre a kapcsolatokat a programban leírtak szerint. Fedje le a vevőérzékelő Tx részét a képen látható módon. Ezután töltse fel az adó kódot és a vevő kódot, amelyek az alábbiakban szerepelnek, az Arduino adóhoz és vevőhöz. Nyissa meg a vevőmodul soros monitorját, és észre kell vennie a megjelenített két modul közötti távolságot az alábbi videó szerint.
Megjegyzés: Ez a módszer csak ideológia, és nem biztos, hogy pontos vagy kielégítő. A jobb eredmények érdekében azonban kipróbálhatja az alábbi rögtönzött ötletet.
Improvizált ötlet - az érzékelő kalibrálása ismert távolság használatával:
Az eddig furcsán magyarázott módszer kielégítőnek tűnik, mégis elegendő volt a projektemhez. Szeretném azonban megosztani ennek a módszernek a hátrányait és a legyőzésük módját. Ennek a módszernek az egyik fő hátránya, hogy feltételezzük, hogy a vevő visszhangtűje azonnal alacsonyra süllyed, miután az adó-érzékelő továbbította az amerikai hullámot, ami nem igaz, mivel a hullámnak egy kis időbe telik eljutni az adó-vevőtől a vevőig. Ezért az adó kiváltója és a vevő ravasztja nem lesz tökéletes szinkronban.
Ennek leküzdésére az érzékelőt kalibrálhatjuk kezdetben egy ismert távolság használatával. Ha a távolság ismeretes, akkor tudjuk, mennyi idő alatt az amerikai hullám eljut a vevőig az adóból. Tartsuk ezt az időt Del (D) néven, az alábbiak szerint.
Most pontosan megtudjuk, mennyi idő után kell magasra állítanunk a vevő indítócsapját, hogy szinkronba kerüljünk az adó kiváltójával. Ezt az időtartamot az ismert késleltetés (t) - Del (D) segítségével lehet kiszámítani. Időkorlátok miatt nem tudtam kipróbálni ezt az ötletet, így nem vagyok biztos benne, hogy mennyire pontos működne. Tehát, ha esetleg kipróbálnád, tudasd velem az eredményeket a megjegyzés részben.