- Potrebni materijali:
- Kružni dijagram:
- Kako HC-SR04 modul zapravo radi:
- Mjerenje udaljenosti između dva ultrazvučna senzora (HC-SR04):
- Program za senzor odašiljača:
- Program za prijemnik senzora:
- Radno:
- Improvizirana ideja - kalibriranje senzora na poznatoj udaljenosti:
Ultrazvučni senzor (HC-SR04) obično se koristi za određivanje udaljenosti objekta od određene točke. Bilo je prilično lako to učiniti s Arduinom, a kod je također prilično jednostavan. Ali u ovom ćemo članku isprobati nešto drugačije s ovim popularnim HC-SR04 senzorima. Pokušat ćemo izračunati udaljenost između dva ultrazvučna senzora, tj. Napravit ćemo da jedan senzor djeluje kao odašiljač, a drugi senzor da djeluje kao prijemnik. Na taj način možemo pratiti mjesto jednog odašiljača pomoću mnogih ultrazvučnih prijemnika, a to se praćenje naziva triangulacija i može se koristiti za automatsko pristajanje robota za sljedbenike prtljage i druge slične aplikacije. Pronalaženje udaljenosti između dva američka senzora mogao bi zvučati prilično jednostavan zadatak, ali suočio sam se s nekoliko izazova o kojima se govori u ovom projektu.
Tehnika o kojoj se govori u ovom članku nije prilično točna i možda neće biti korisna u bilo kojem stvarnom sustavu bez izmjena. Za vrijeme dok je trajala ova dokumentacija, nisam pronašao da je netko postigao rezultate bliže mojim, tako da sam upravo podijelio svoje mišljenje o tome kako sam to uspio raditi, tako da ljudi koji ovo pokušavaju ne moraju ponovno izmišljati kotač.
Potrebni materijali:
- Arduino (2Nos) - Bilo koji model
- Modul HCSR04 (2Nos)
Kružni dijagram:
Iako ćemo napraviti jedan američki (ultrazvučni) senzor koji će raditi kao odašiljač, a drugi kao prijamnik, obvezno je sve četiri nožice senzora povezati s Arduinom. Zašto bismo? O tome će se raspravljati kasnije, ali za sada će shema sklopova biti sljedeća

Kao što vidite, shema sklopa i za odašiljač i za prijemnik su identična. Također provjerite: sučelje ultrazvučnog senzora Arduino
Kako HC-SR04 modul zapravo radi:
Prije nego nastavimo dalje, shvatimo kako radi senzor HC-SR04. Dijagram vremena u nastavku pomoći će nam da razumijemo rad.

Senzor ima dva pina Trigger i Echo koji se koriste za mjerenje udaljenosti kao što je prikazano na vremenskom dijagramu. Prvo da započnemo mjerenje, trebali bismo poslati ultrazvučni val s odašiljača, to se može učiniti postavljanjem okidača visoko na 10 uS. Čim se to učini, pin odašiljača će poslati 8 zvučnih rafala američkih valova. Ovaj američki val udarit će u odbijeni objekt i primit će ga prijemnik.
Ovdje vremenski dijagram pokazuje da će nakon primanja vala Echo pin ići visoko tijekom vremena koje je jednako vremenu potrebnom da val pređe od američkog senzora i dosegne natrag do senzora. Čini se da ovaj vremenski dijagram nije istinit.
Prekrio sam Tx (odašiljač) dio svog senzora i provjerio je li impuls Echo povišen, i da, da li ide visoko. To znači da impuls Echo ne čeka da ga primi američki (ultrazvučni) val. Jednom kada prenese američki val ide visoko i ostaje visoko dok se val ne vrati natrag. Dakle, ispravan vremenski dijagram trebao bi biti nešto poput ovog prikazanog u nastavku (Oprostite na mojim lošim vještinama pisanja)

Osiguranje da vaš HC-SR04 radi samo kao odašiljač:
Prilično je jednostavno napraviti HC-SR04 koji će raditi samo kao odašiljač. Kao što je prikazano na vremenskom dijagramu, okidački pin morate proglasiti izlaznim i omogućiti da ostane visok 10 mikrosekundi. To će pokrenuti ultrazvučni val. Dakle, kad god želimo prenijeti val, jednostavno moramo kontrolirati okidač osovine senzora odašiljača, za koji je kod dat u nastavku.
Osiguranje da vaš HC-SR04 radi samo kao prijemnik:
Kao što je prikazano na vremenskom dijagramu, ne možemo kontrolirati uspon Echo pin-a jer je povezan s pin-om okidača. Dakle, nikako ne bismo mogli učiniti da HC-SR04 radi samo kao prijemnik. No, možemo upotrijebiti hakiranje tako što ćemo samo prekriti dio senzora odašiljačem trakom (kao što je prikazano na donjoj slici) ili poklopcem američki val ne može pobjeći izvan kućišta odašiljača i ovaj američki val neće utjecati na pin Echo.

Sada da bi se eho pin povisio, jednostavno moramo povući ovaj lažni pin okidača 10 mikrosekundi. Jednom kad ovaj prijemnik primi američki val koji odašilje senzor odašiljača, eho pin će se smanjiti.
Mjerenje udaljenosti između dva ultrazvučna senzora (HC-SR04):
Do sada smo razumjeli kako jedan senzor raditi kao odašiljač, a drugi senzor kao prijemnik. Sada moramo prenijeti ultrazvučni val sa senzora odašiljača i primiti ga sa senzorom prijemnika i provjeriti vrijeme potrebno da val pređe s odašiljača na prijemnik, zar ne? Ali nažalost !, ovdje imamo problem i ovo neće uspjeti.
Modul odašiljača i modul prijemnika su međusobno udaljeni i kad prijemni modul primi američki val od modula odašiljača, neće znati kada je odašiljač poslao taj val. Bez poznavanja vremena početka ne možemo izračunati potrebno vrijeme, a time i udaljenost. Da bi se riješio ovaj problem, mora se odzvanjati impuls modula prijamnika visoko, točno kada modul odašiljača odašilje američki val. Drugim riječima, modul odašiljača i modula prijemnika trebali bi se istovremeno aktivirati. To se može postići sljedećom metodom.

U gornjem dijagramu, Tx predstavlja senzor odašiljača, a Rx predstavlja senzor prijemnika. Kao što je prikazano, senzor odašiljača bit će napravljen za emitiranje američkih valova s povremenim poznatim kašnjenjem, to je sve što mora učiniti.
U senzoru prijemnika moramo nekako učiniti da se pin okidača podigne visoko točno tijekom kada se pin odašiljača podigne visoko. Tako u početku nasumično pokrećemo prijemnike da se aktiviraju visoko, što će i ostati visoko dok eho pin ne padne. Ovaj eho pin prigušit će se samo kad od odašiljača primi američki val. Dakle, čim se spusti, možemo pretpostaviti da se senzor odašiljača upravo aktivirao. Sada, s ovom pretpostavkom čim odjek padne, možemo pričekati poznato kašnjenje i zatim aktivirati okidač prijemnika. To bi djelomično sinkroniziralo okidač i odašiljača i prijemnika, a time možete očitati trajanje neposrednog eho impulsa pomoću pulseIn () i izračunati udaljenost.
Program za senzor odašiljača:
Kompletan program za modul odašiljača nalazi se na dnu stranice. Ne radi ništa osim što okida senzor odašiljača u periodičnom intervalu.
digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW);
Da bismo aktivirali senzor, moramo napraviti okidač da ostane visok 10 uS. Kôd za isto je prikazan gore
Program za prijemnik senzora:
U senzoru prijamnika pokrivamo ušicu odašiljača senzora kako bi bio lažan, kao što je prethodno spomenuto. Sada možemo koristiti gore spomenutu tehniku za mjerenje udaljenosti između dva senzora. Kompletni program dan je na dnu ove stranice. U nastavku je objašnjeno nekoliko važnih redaka
Okidač_US (); while (digitalRead (echoPin) == HIGH); delayMicroseconds (10); Okidač_US (); trajanje = pulsIn (echoPin, HIGH);
U početku pokrećemo američki senzor pomoću funkcije Trigger_US (), a zatim pričekajmo dok eho pin ostane visok koristeći while petlju. Jednom kad padne, čekamo unaprijed određeno trajanje, to bi trebalo biti negdje između 10 i 30 mikrosekundi što se može utvrditi korištenjem pokušaja i pogrešaka (ili možete koristiti improviziranu ideju danu u nastavku). Nakon ovog kašnjenja ponovo pokrenite SAD koristeći istu funkciju, a zatim upotrijebite funkciju pulseIn () za izračunavanje trajanja vala.
Sada pomoću istih starih formula možemo izračunati udaljenost kao dolje
udaljenost = trajanje * 0,034;
Radno:
Povežite veze kako je objašnjeno u programu. Pokrijte Tx dio osjetnika prijemnika kako je prikazano na slici. Zatim prenesite kod odašiljača i kod prijamnika koji su navedeni u nastavku na odašiljač i prijemnik Arduino. Otvorite serijski monitor modula prijemnika i trebali biste primijetiti udaljenost između dva modula koja se prikazuju, kao što je prikazano na video ispod.
Napomena: Ova metoda je samo ideologija i možda neće biti točna ili zadovoljavajuća. Međutim, možete isprobati improviziranu ideju u nastavku kako biste postigli bolje rezultate.

Improvizirana ideja - kalibriranje senzora na poznatoj udaljenosti:
Čini se da je metoda koja je do sada neobično objašnjena zadovoljavajuća, ali ipak bila je dovoljna za moj projekt. Međutim, želio bih podijeliti i nedostatke ove metode i način da ih se prevlada. Jedan od glavnih nedostataka ove metode je taj što pretpostavljamo da Echo pin prijemnika pada nisko odmah nakon što je senzor odašiljača prenio američki val, što nije istina, jer će valu trebati neko vrijeme da putuje od odašiljača do prijemnika. Stoga okidač odašiljača i okidač prijemnika neće biti u savršenoj sinkronizaciji.
Da bismo to prevladali, u početku možemo kalibrirati senzor koristeći poznatu udaljenost. Ako je udaljenost poznata, znat ćemo koliko je vremena trebalo da američki val stigne do prijemnika s odašiljača. Neka se ovo vrijeme uzima kao Del (D) kao što je prikazano u nastavku.

Sada ćemo točno znati nakon koliko vremena trebamo povećati pin okidača prijemnika kako bismo se sinkronizirali s okidačem odašiljača. To se trajanje može izračunati pomoću Poznato odgađanje (t) - Del (D). Nisam uspio testirati ovu ideju zbog vremenskih ograničenja, pa nisam siguran koliko bi točno funkcionirala. Pa ako slučajno pokušate, javite mi rezultate kroz odjeljak za komentare.
