Pregleda: 164 Autor: Grace Vrijeme objave: 26. srpnja 2021. Podrijetlo: stranica
The Ultrazvučni senzor HC-SR04 jedan je od najpopularnijih modula za mjerenje udaljenosti za Arduino projekte. Naširoko se koristi u robotima za izbjegavanje prepreka, senzorima za parkiranje, otkrivanju razine, pametnim kantama za smeće, mjeračima udaljenosti i drugim aplikacijama za beskontaktno otkrivanje.
Modul emitira ultrazvučne valove od 40 kHz putem odašiljača. Kada se zvučni val susretne s objektom, reflektira se natrag do prijemnika. Mjerenjem vremena odjeka i korištenjem brzine zvuka, Arduino može izračunati udaljenost između senzora i objekta.
| Parametar | Vrijednost |
| Tipični radni napon | 5V DC |
| Statička radna struja | Manje od 5mA na nekim verzijama modula |
| Radna frekvencija | Ultrazvučni val od 40 kHz |
| Udaljenost detekcije | Uobičajeni raspon: 2 cm do 400 cm; neke verzije s podešavanjem pojačanja mogu podržavati veći domet. |
| Kut detekcije | Obično unutar 15 stupnjeva; neke verzije s većim pojačanjem mogu doseći oko 30 stupnjeva. |
| Preciznost | Do otprilike 0,3 cm pod odgovarajućim uvjetima ispitivanja |
| Slijepa zona | Oko 2 cm minimalne mjerne udaljenosti |
Ultrazvučni modul HC-SR04 ima četiri pina: VCC, TRIG, ECHO i GND. Arduino šalje kratki okidački impuls na TRIG pin, zatim čita povratni impuls s ECHO pin-a.
| HC-SR04 Pin | Arduino veza | Funkcija |
| VCC | 5V | Napajanje za ultrazvučni modul. |
| TRIG | Digitalni pin 9 | Unos okidača. Arduino primjenjuje impuls od 10us za početak mjerenja. |
| ODJEK | Digitalni pin 10 | Eho izlaz. Arduino očitava širinu impulsa kako bi izračunao udaljenost. |
| GND | GND | Priključak na uzemljenje. |
HC-SR04 radi na temelju mjerenja vremena leta. Arduino šalje okidački signal visoke razine od najmanje 10 mikrosekundi na TRIG pin. Modul zatim automatski šalje osam ultrazvučnih impulsa od 40 kHz i čeka reflektirani eho.
Kada se detektira reflektirani ultrazvučni signal, ECHO pin emitira puls visoke razine. Trajanje ovog impulsa je vrijeme povratnog putovanja ultrazvučnog vala.
Udaljenost = vrijeme visoke razine odjeka × brzina zvuka / 2
U Arduino kodu, uobičajena pojednostavljena formula je:
Udaljenost u cm = trajanje × 0,0343 / 2
Proces mjerenja vremena je jednostavan: Arduino kratko drži TRIG na niskom nivou, šalje visoki puls od 10us, zatim vraća TRIG na niski. HC-SR04 šalje ultrazvučni prasak i postavlja ECHO visoko dok se reflektirani signal ne vrati ili dok mjerenje ne istekne.
Kako biste izbjegli nestabilna očitanja, ostavite kratku pauzu između mjerenja. Obično se koristi ciklus mjerenja od oko 60 ms kako bi prethodni ultrazvučni odjek imao vremena nestati prije sljedećeg okidača.
Funkcija Arduino pulseIn() koristi se za mjerenje koliko dugo digitalni pin ostaje HIGH ili LOW. Za HC-SR04, Arduino koristi pulseIn(echoPin, HIGH) za očitavanje širine pulsa visoke razine s ECHO pina.
| Sintaksa | Značenje |
| pulseIn(pin, vrijednost) | Očitava trajanje VISOKOG ili NISKOG pulsa. |
| pulseIn(pin, vrijednost, vrijeme čekanja) | Očitava puls s vrijednošću vremenskog ograničenja u mikrosekundama. |
Preporuča se korištenje vremenskog ograničenja. Ako se ne vrati odjek, funkcija može prestati čekati i vratiti 0 umjesto predugog blokiranja programa.
Ožičenje je jednostavno. Spojite VCC na 5V, GND na GND, TRIG na Arduino digitalni izlazni pin, a ECHO na Arduino digitalni ulazni pin. Sljedeći primjer koristi Arduino Uno, TRIG na pinu 9 i ECHO na pinu 10.
Sljedeći tipični Arduino program šalje okidački impuls od 10us, očitava širinu ECHO impulsa, izračunava udaljenost u centimetrima i ispisuje rezultat u serijskom monitoru.
const int trigPin = 9; const int echoPin = 10; dugo trajanje; float distanceCm; void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(9600); } void petlja() { digitalWrite(trigPin, LOW); kašnjenje mikrosekundi(2); digitalWrite(trigPin, HIGH); kašnjenje u mikrosekundama (10); digitalWrite(trigPin, LOW); trajanje = pulseIn(echoPin, HIGH, 30000); if (duration == 0) { Serial.println('Izvan raspona'); } else { udaljenostCm = trajanje * 0,0343 / 2; Serial.print('Udaljenost: '); Serial.print(distanceCm); Serial.println(' cm'); } kašnjenje(60); }
Ako vidite vrijednosti udaljenosti u serijskom monitoru, ultrazvučni senzor HC-SR04 i Arduino ožičenje rade ispravno. Zatim možete koristiti podatke o udaljenosti za otkrivanje prepreka, kontrolu kretanja robota, automatska vrata, podsjetnike za parkiranje ili projekte razine tekućine.
Držite mjereni objekt unutar preporučenog raspona udaljenosti i izvan slijepe zone od 2 cm.
Koristite ravnu i čvrstu ciljnu površinu za bolju ultrazvučnu refleksiju.
Izbjegavajte mjerenje mekih, pod kutom, poroznih materijala ili materijala koji apsorbiraju zvuk.
Koristite stabilno napajanje od 5 V, a ožičenje neka bude kratko i sigurno.
Dodajte vremensko ograničenje za pulseIn() kako biste spriječili dugo blokiranje kada se ne vrati eho.
Prosjek ili medijan-filtrirajte nekoliko očitanja kako biste smanjili šum.
Za veću točnost, kompenzirajte temperaturu jer se brzina zvuka mijenja s temperaturom zraka.
| Primjena | Kako se koristi HC-SR04 |
| Robot za izbjegavanje prepreka | Otkriva objekte u blizini i pomaže robotu promijeniti smjer. |
| Parkirni senzor | Mjeri udaljenost između vozila i prepreke. |
| Detekcija razine tekućine | Mjeri udaljenost od senzora do površine tekućine bez kontakta. |
| Pametna kanta za smeće | Otkriva ruku ili predmet u blizini i pokreće automatsko otvaranje poklopca. |
Za korištenje ultrazvučnog senzora HC-SR04 s Arduinom, spojite VCC na 5V, GND na GND, TRIG na digitalni izlazni pin i ECHO na digitalni ulazni pin. Pošaljite okidački impuls od 10us, očitajte trajanje jeke pomoću pulseIn() i izračunajte udaljenost pomoću formule za vrijeme leta.
HC-SR04 je jeftin, jednostavan za korištenje i prikladan za mnoge Arduino projekte mjerenja udaljenosti. Za najbolje rezultate obratite pozornost na ciljnu površinu, mjerni kut, slijepu zonu, stabilnu snagu, rukovanje vremenskim ograničenjima i temperaturne učinke.
Arduino šalje 10us impuls na TRIG pin. HC-SR04 emitira osam ultrazvučnih impulsa od 40 kHz i postavlja ECHO pin visoko dok se reflektirani zvuk ne vrati. Arduino mjeri ovo vrijeme pulsa i izračunava udaljenost.
Formula je udaljenost = trajanje × brzina zvuka / 2. U centimetrima, uobičajena Arduino formula je udaljenost Cm = trajanje × 0,0343 / 2, gdje se trajanje mjeri u mikrosekundama.
Izmjereno vrijeme odjeka je vrijeme povratnog putovanja od senzora do objekta i natrag do senzora. Dijeljenje s 2 daje jednosmjernu udaljenost između senzora i objekta.
Možete koristiti većinu Arduino digitalnih pinova. U mnogim primjerima, TRIG je spojen na digitalni pin 9, a ECHO je spojen na digitalni pin 10. Kod mora odgovarati pinovima koji se koriste u vašem ožičenju.
Uobičajeni uzroci uključuju labavo ožičenje, nestabilno napajanje od 5 V, pogrešne brojeve pinova TRIG ili ECHO, nema predmeta u dometu, ciljne površine pod kutom, mekane materijale, blokirane glave senzora ili nedostatak vremenskog ograničenja u funkciji pulseIn().
Slijepa zona je minimalna udaljenost na kojoj modul ne može pouzdano mjeriti. Za HC-SR04, slijepa zona je obično oko 2 cm. Objekti bliže od ovoga mogu dati nestabilna očitanja.
Da, HC-SR04 se može koristiti za jednostavne beskontaktne projekte razine vode ako je senzor zaštićen od vlage i montiran iznad površine tekućine. Za vlažne, vanjske ili industrijske spremnike preporučuje se vodootporni ultrazvučni senzor.
Koristite stabilno napajanje, držite senzor okomito na cilj, izbjegavajte meke ili nagnute površine, dodajte pulseIn timeout, uzmite više očitanja, koristite srednje filtriranje i ostavite oko 60 ms između mjerenja.