Ogledi: 164 Avtor: Grace Čas objave: 26.7.2021 Izvor: Spletno mesto
The Ultrazvočni senzor HC-SR04 je eden najbolj priljubljenih modulov za merjenje razdalje za projekte Arduino. Široko se uporablja v robotih za izogibanje oviram, parkirnih senzorjih, zaznavanju nivoja, pametnih smetnjakih, merilnikih razdalje in drugih aplikacijah za brezkontaktno zaznavanje.
Modul preko oddajnika oddaja ultrazvočne valove frekvence 40kHz. Ko zvočni val naleti na predmet, se odbije nazaj do sprejemnika. Z merjenjem časa odmeva in uporabo hitrosti zvoka lahko Arduino izračuna razdaljo med senzorjem in predmetom.
| Parameter | Vrednost |
| Tipična delovna napetost | 5V DC |
| Statični delovni tok | Manj kot 5 mA pri nekaterih različicah modula |
| Delovna frekvenca | 40kHz ultrazvočni val |
| Razdalja zaznavanja | Običajno območje: 2 cm do 400 cm; nekatere različice s prilagojenim ojačanjem morda podpirajo daljši doseg. |
| Kot zaznavanja | Običajno znotraj 15 stopinj; nekatere različice z večjim ojačanjem lahko dosežejo približno 30 stopinj. |
| Natančnost | Do približno 0,3 cm pod ustreznimi preskusnimi pogoji |
| Slepa cona | Približno 2 cm minimalne merilne razdalje |
Ultrazvočni modul HC-SR04 ima štiri nožice: VCC, TRIG, ECHO in GND. Arduino pošlje kratek sprožilni impulz na zatič TRIG, nato prebere povratni impulz iz zatiča ECHO.
| HC-SR04 Pin | Povezava Arduino | funkcija |
| VCC | 5V | Napajalnik za ultrazvočni modul. |
| TRIG | Digitalni pin 9 | Sprožilni vnos. Arduino uporabi impulz 10us za začetek določanja razdalje. |
| ODMEV | Digitalni pin 10 | Echo izhod. Arduino bere širino impulza za izračun razdalje. |
| GND | GND | Ozemljitev. |
HC-SR04 deluje z merjenjem časa leta. Arduino pošlje prožilni signal na visoki ravni vsaj 10 mikrosekund na zatič TRIG. Modul nato samodejno pošlje osem 40kHz ultrazvočnih impulzov in čaka na odbiti odmev.
Ko je zaznan odbiti ultrazvočni signal, zatič ECHO odda impulz visoke ravni. Trajanje tega impulza je čas povratnega potovanja ultrazvočnega vala.
Razdalja = čas visoke ravni odmeva × hitrost zvoka / 2
V kodi Arduino je pogosta poenostavljena formula:
Razdalja v cm = trajanje × 0,0343 / 2
Postopek merjenja časa je preprost: Arduino za kratek čas obdrži TRIG nizko, pošlje 10us visok impulz, nato vrne TRIG na nizko. HC-SR04 pošlje ultrazvočni izbruh in nastavi ECHO visoko, dokler se odbiti signal ne vrne ali se meritev izteče.
Da se izognete nestabilnim odčitkom, med meritvami pustite kratek zamik. Običajno se uporablja merilni cikel približno 60 ms, tako da ima prejšnji ultrazvočni odmev čas, da izgine pred naslednjim sprožilcem.
Funkcija Arduino pulseIn() se uporablja za merjenje, kako dolgo digitalni pin ostane VISOK ali NIZEK. Za HC-SR04 Arduino uporablja pulseIn(echoPin, HIGH) za branje širine impulza na visoki ravni iz zatiča ECHO.
| Sintaksa | Pomen |
| pulseIn(pin, vrednost) | Odčita trajanje VISOKEGA ali NIZKEGA impulza. |
| pulseIn(pin, vrednost, časovna omejitev) | Prebere impulz z vrednostjo časovne omejitve v mikrosekundah. |
Priporočljiva je uporaba časovne omejitve. Če ni vrnjenega odmeva, lahko funkcija preneha čakati in vrne 0, namesto da predolgo blokira program.
Ožičenje je preprosto. Priključite VCC na 5 V, GND na GND, TRIG na digitalni izhodni zatič Arduino in ECHO na digitalni vhodni zatič Arduino. Naslednji primer uporablja Arduino Uno, TRIG na nožici 9 in ECHO na nožici 10.
Naslednji tipični program Arduino pošlje sprožilni impulz 10us, prebere širino impulza ECHO, izračuna razdaljo v centimetrih in natisne rezultat v serijski monitor.
const int trigPin = 9; const int echoPin = 10; dolgo trajanje; plovna razdaljaCm; void setup() { pinMode(trigPin, IZHOD); pinMode(echoPin, INPUT); Serial.begin(9600); } void loop() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); trajanje = pulseIn(echoPin, HIGH, 30000); if (trajanje == 0) { Serial.println('Izven obsega'); } else { distanceCm = trajanje * 0,0343 / 2; Serial.print('Razdalja: '); Serial.print(distanceCm); Serial.println('cm'); } zamuda (60); }
Če vidite vrednosti razdalje v serijskem monitorju, ultrazvočni senzor HC-SR04 in ožičenje Arduino delujeta pravilno. Nato lahko podatke o razdalji uporabite za zaznavanje ovir, nadzor gibanja robota, avtomatska vrata, opomnike za parkiranje ali projekte nivoja tekočine.
Izmerjeni predmet naj bo znotraj priporočenega razpona razdalje in zunaj 2 cm slepega območja.
Za boljši ultrazvočni odboj uporabite ravno in trdno ciljno površino.
Izogibajte se merjenju mehkih, pod kotom, poroznih materialov ali materialov, ki absorbirajo zvok.
Uporabite stabilen napajalnik 5 V, napeljave pa naj bodo kratke in varne.
PulseIn() dodajte časovno omejitev, da preprečite dolgo blokiranje, ko se odmev ne vrne.
Povprečite ali filtrirajte mediano več odčitkov, da zmanjšate hrup.
Za večjo natančnost kompenzirajte temperaturo, ker se hitrost zvoka spreminja s temperaturo zraka.
| Aplikacija | Kako se uporablja HC-SR04 |
| Robot za izogibanje oviram | Zazna predmete v bližini in pomaga robotu spremeniti smer. |
| Senzor parkirne razdalje | Meri razdaljo med vozilom in oviro. |
| Zaznavanje nivoja tekočine | Brezkontaktno meri razdaljo od senzorja do površine tekočine. |
| Pametni koš za smeti | Zazna roko ali predmet v bližini in sproži samodejno odpiranje pokrova. |
Za uporabo ultrazvočnega senzorja HC-SR04 z Arduinom povežite VCC na 5 V, GND na GND, TRIG na digitalni izhodni pin in ECHO na digitalni vhodni pin. Pošljite sprožilni impulz 10us, preberite trajanje odmeva s funkcijo pulseIn() in izračunajte razdaljo s formulo za čas leta.
HC-SR04 je poceni, enostaven za uporabo in primeren za številne projekte merjenja razdalje Arduino. Za najboljše rezultate bodite pozorni na ciljno površino, merilni kot, slepo območje, stabilno moč, rokovanje s časovno omejitvijo in temperaturne učinke.
Arduino pošlje impulz 10us na zatič TRIG. HC-SR04 oddaja osem ultrazvočnih impulzov frekvence 40 kHz in nastavi ECHO pin visoko, dokler se odbiti zvok ne vrne. Arduino meri ta čas impulza in izračuna razdaljo.
Formula je razdalja = trajanje × hitrost zvoka / 2. V centimetrih je običajna formula Arduino razdalja Cm = trajanje × 0,0343 / 2, kjer se trajanje meri v mikrosekundah.
Izmerjeni čas odmeva je čas povratnega potovanja od senzorja do predmeta in nazaj do senzorja. Če delimo z 2, dobimo enosmerno razdaljo med senzorjem in predmetom.
Uporabite lahko večino digitalnih zatičev Arduino. V mnogih primerih je TRIG povezan z digitalnim zatičem 9, ECHO pa z digitalnim zatičem 10. Koda se mora ujemati z zatiči, uporabljenimi v vašem ožičenju.
Pogosti vzroki vključujejo ohlapno ožičenje, nestabilno napajanje 5 V, napačne številke pinov TRIG ali ECHO, noben predmet v dosegu, nagnjene ciljne površine, mehke materiale, blokirane glave senzorjev ali pomanjkanje časovne omejitve v funkciji pulseIn().
Slepo območje je najmanjša razdalja, kjer modul ne more zanesljivo meriti. Za HC-SR04 je slepo območje običajno približno 2 cm. Predmeti bližje od tega lahko povzročijo nestabilne odčitke.
Da, HC-SR04 se lahko uporablja za preproste brezkontaktne projekte nivoja vode, če je senzor zaščiten pred vlago in nameščen nad površino tekočine. Za vlažne, zunanje ali industrijske rezervoarje je priporočljiv vodotesen ultrazvočni senzor.
Uporabite stabilno napajanje, senzor naj bo pravokoten na tarčo, izogibajte se mehkim ali nagnjenim površinam, dodajte časovno omejitev pulseIn, opravite več odčitkov, uporabite filtriranje mediane in med meritvami pustite približno 60 ms.