Kyke: 164 Skrywer: Grace Publiseer Tyd: 2021-07-26 Oorsprong: Werf
Die HC-SR04 ultrasoniese sensor is een van die gewildste afstandmetingsmodules vir Arduino-projekte. Dit word wyd gebruik in hindernisvermydingsrobotte, parkeersensors, vlakdetectie, slim asblikke, afstandmeters en ander nie-kontakwaarnemingstoepassings.
Die module straal 40kHz ultrasoniese golwe deur 'n sender uit. Wanneer die klankgolf 'n voorwerp ontmoet, reflekteer dit terug na die ontvanger. Deur die eggo-tyd te meet en die spoed van klank te gebruik, kan Arduino die afstand tussen die sensor en die voorwerp bereken.
| Parameter | Waarde |
| Tipiese werkspanning | 5V GS |
| Statiese werkstroom | Minder as 5mA op sommige module weergawes |
| Bedryfsfrekwensie | 40kHz ultrasoniese golf |
| Bespeuringsafstand | Algemene omvang: 2cm tot 400cm; sommige aanwins-aangepaste weergawes kan langer reeks ondersteun. |
| Opsporingshoek | Gewoonlik binne 15 grade; sommige weergawes met hoër wins kan ongeveer 30 grade bereik. |
| Presisie | Tot ongeveer 0,3 cm onder geskikte toetstoestande |
| Blinde sone | Ongeveer 2 cm minimum meetafstand |
Die HC-SR04 ultrasoniese module het vier penne: VCC, TRIG, ECHO en GND. Arduino stuur 'n kort sneller-puls na die TRIG-pen, lees dan die terugkeer-puls van die ECHO-pen.
| HC-SR04 Pen | Arduino-verbinding | Funksie |
| VCC | 5V | Kragtoevoer vir die ultrasoniese module. |
| TRIG | Digitale pen 9 | Sneller insette. Arduino pas 'n 10us-puls toe om te begin wissel. |
| ECHO | Digitale pen 10 | Echo uitset. Arduino lees polswydte om afstand te bereken. |
| GND | GND | Grondverbinding. |
Die HC-SR04 werk volgens tyd-van-vlug meting. Arduino stuur 'n hoëvlak-snellersein van ten minste 10 mikrosekondes na die TRIG-pen. Die module stuur dan outomaties agt 40kHz ultrasoniese pulse en wag vir die gereflekteerde eggo.
Wanneer die gereflekteerde ultrasoniese sein opgespoor word, lewer die ECHO-pen 'n hoëvlak-puls uit. Die duur van hierdie pols is die heen-en-weer reistyd van die ultrasoniese golf.
Afstand = Echo hoëvlaktyd × Klankspoed / 2
In Arduino-kode is die algemene vereenvoudigde formule:
Afstand in cm = duur × 0,0343 / 2
Die tydsberekeningsproses is eenvoudig: Arduino hou TRIG kortliks laag, stuur 'n 10us hoë pols, en keer dan TRIG terug na laag. Die HC-SR04 stuur 'n ultrasoniese uitbarsting en stel ECHO hoog totdat die gereflekteerde sein terugkeer of die meting verval.
Om onstabiele lesings te vermy, laat 'n kort vertraging tussen metings. 'n Meetsiklus van ongeveer 60ms word algemeen gebruik sodat die vorige ultrasoniese eggo tyd het om te verdwyn voor die volgende sneller.
Die Arduino pulseIn()- funksie word gebruik om te meet hoe lank 'n digitale pen HOOG of LAAG bly. Vir HC-SR04 gebruik Arduino pulseIn(echoPin, HIGH) om die hoëvlak-pulswydte vanaf die ECHO-pen te lees.
| Sintaksis | Betekenis |
| pulseIn(pen, waarde) | Lees die duur van 'n HOË of LAAG pols. |
| pulseIn(pen, waarde, uitteltyd) | Lees die pols met 'n uittelwaarde in mikrosekondes. |
Dit word aanbeveel om 'n time-out te gebruik. As geen eggo teruggestuur word nie, kan die funksie ophou wag en 0 gee in plaas daarvan om die program te lank te blokkeer.
Die bedrading is eenvoudig. Koppel VCC aan 5V, GND aan GND, TRIG aan 'n Arduino digitale uitsetpen, en ECHO aan 'n Arduino digitale insetpen. Die volgende voorbeeld gebruik Arduino Uno, TRIG op pen 9, en ECHO op pen 10.
Die volgende tipiese Arduino-program stuur 'n 10us-snellerpuls, lees die ECHO-pulswydte, bereken afstand in sentimeter en druk die resultaat in die Serial Monitor.
const int trigPin = 9; const int echoPin = 10; lang duur; dryfafstandCm; void setup() { pinMode(trigPin, UITSET); pinMode(echoPin, INPUT); Serial.begin(9600); } void lus() { digitalWrite(trigPin, LOW); vertragingMikrosekondes(2); digitalWrite(trigPin, HIGH); vertragingMikrosekondes(10); digitalWrite(trigPin, LOW); duur = pulseIn(echoPin, HIGH, 30000); if (duur == 0) { Serial.println('Buite van omvang'); } anders {afstandCm = duur * 0,0343 / 2; Serial.print('Afstand: '); Serial.print(afstandCm); Serial.println(' cm'); } vertraging(60); }
As jy afstandwaardes in die Serial Monitor sien, werk die HC-SR04 ultrasoniese sensor en Arduino-bedrading korrek. Jy kan dan die afstanddata gebruik vir hindernisopsporing, robotbewegingsbeheer, outomatiese deure, parkeerherinneringe of vloeistofvlakprojekte.
Hou die gemete voorwerp binne die aanbevole afstandsbereik en buite die 2 cm blinde sone.
Gebruik 'n plat en soliede teikenoppervlak vir beter ultrasoniese refleksie.
Vermy die meet van sagte, hoekige, poreuse of klankabsorberende materiale.
Gebruik 'n stabiele 5V-kragbron en hou bedrading kort en veilig.
Voeg 'n time-out by pulseIn() om lang blokkering te voorkom wanneer geen eggo terugkeer nie.
Gemiddeld of mediaan-filtreer verskeie lesings om geraas te verminder.
Vir hoër akkuraatheid, kompenseer vir temperatuur omdat klankspoed met lugtemperatuur verander.
| Toepassing | Hoe HC-SR04 gebruik word |
| Hindernis vermyding robot | Bespeur nabygeleë voorwerpe en help die robot om van rigting te verander. |
| Parkeerafstandsensor | Meet afstand tussen die voertuig en 'n hindernis. |
| Vloeistofvlak opsporing | Meet die afstand van die sensor na die vloeistofoppervlak sonder kontak. |
| Slim asblik | Bespeur 'n nabygeleë hand of voorwerp en aktiveer outomatiese dekselopening. |
Om 'n HC-SR04 ultrasoniese sensor met Arduino te gebruik, koppel VCC aan 5V, GND aan GND, TRIG aan 'n digitale uitsetpen, en ECHO aan 'n digitale insetpen. Stuur 'n 10us sneller puls, lees die eggo duur met pulseIn(), en bereken afstand met die tyd-van-vlug formule.
Die HC-SR04 is goedkoop, maklik om te gebruik en geskik vir baie Arduino-afstandmetingsprojekte. Vir die beste resultate, let op teikenoppervlak, meethoek, blinde sone, stabiele krag, time-out-hantering en temperatuur-effekte.
Arduino stuur 'n 10us-puls na die TRIG-pen. Die HC-SR04 gee agt 40kHz ultrasoniese pulse uit en stel die ECHO-pen hoog totdat die weerkaatste klank terugkeer. Arduino meet hierdie polstyd en bereken afstand.
Die formule is afstand = duur × spoed van klank / 2. In sentimeter is 'n algemene Arduino-formule afstandCm = duur × 0,0343 / 2, waar tydsduur in mikrosekondes gemeet word.
Die gemete eggo-tyd is die retoer-tyd van die sensor na die voorwerp en terug na die sensor. Deur deur 2 te deel, gee die eenrigtingafstand tussen die sensor en die voorwerp.
Jy kan die meeste Arduino digitale penne gebruik. In baie voorbeelde is TRIG gekoppel aan digitale pen 9 en ECHO is gekoppel aan digitale pen 10. Die kode moet ooreenstem met die penne wat in jou bedrading gebruik word.
Algemene oorsake sluit in los bedrading, onstabiele 5V-krag, verkeerde TRIG- of ECHO-pennommers, geen voorwerp binne bereik nie, hoekige teikenoppervlaktes, sagte materiale, geblokkeerde sensorkoppe, of geen uitteltyd in die pulseIn()-funksie.
Die blinde sone is die minimum afstand waar die module nie betroubaar kan meet nie. Vir HC-SR04 is die blinde sone gewoonlik ongeveer 2 cm. Voorwerpe nader as dit kan onstabiele lesings produseer.
Ja, HC-SR04 kan gebruik word vir eenvoudige nie-kontak watervlakprojekte as die sensor teen vog beskerm word en bo die vloeistofoppervlak gemonteer word. Vir vogtige, buitelug- of industriële tenks word 'n waterdigte ultrasoniese sensor aanbeveel.
Gebruik 'n stabiele kragtoevoer, hou die sensor loodreg op die teiken, vermy sagte of hoekige oppervlaktes, voeg pulseIn time-out by, neem veelvuldige lesings, gebruik mediaanfiltrering en laat ongeveer 60ms toe tussen metings.