Shikimet: 164 Autori: Grace Koha e publikimit: 2021-07-26 Origjina: Faqe
Të Sensori tejzanor HC-SR04 është një nga modulet më të njohura të matjes së distancës për projektet Arduino. Përdoret gjerësisht në robotët për shmangien e pengesave, sensorët e parkimit, zbulimin e nivelit, koshin inteligjentë të plehrave, matësat e distancës dhe aplikacione të tjera ndijuese pa kontakt.
Moduli lëshon valë tejzanor 40 kHz përmes një transmetuesi. Kur vala e zërit takon një objekt, ajo reflektohet përsëri te marrësi. Duke matur kohën e jehonës dhe duke përdorur shpejtësinë e zërit, Arduino mund të llogarisë distancën midis sensorit dhe objektit.
| Parametri | Vlera |
| Tensioni tipik i punës | 5 V DC |
| Rryma statike e punës | Më pak se 5 mA në disa versione të modulit |
| Frekuenca e funksionimit | Vala ultrasonike 40 kHz |
| Distanca e zbulimit | Gama e zakonshme: 2 cm deri në 400 cm; disa versione të rregulluara me fitim mund të mbështesin diapazon më të gjatë. |
| Këndi i zbulimit | Zakonisht brenda 15 gradë; disa versione me fitim më të lartë mund të arrijnë rreth 30 gradë. |
| Preciziteti | Deri në rreth 0,3 cm në kushte të përshtatshme testimi |
| Zonë e verbër | Distanca minimale e matjes është rreth 2 cm |
Moduli ultrasonik HC-SR04 ka katër kunja: VCC, TRIG, ECHO dhe GND. Arduino dërgon një puls të shkurtër të shkasit te kunja TRIG, më pas lexon pulsin e kthimit nga kunja ECHO.
| Pini HC-SR04 | Lidhja Arduino | Funksioni |
| KQV | 5 V | Furnizimi me energji elektrike për modulin tejzanor. |
| TRIG | Kunja dixhitale 9 | Hyrja e këmbëzës. Arduino aplikon një puls 10us për të filluar rangun. |
| ECHO | Pini dixhital 10 | Dalja e jehonës. Arduino lexon gjerësinë e pulsit për të llogaritur distancën. |
| GND | GND | Lidhja në tokë. |
HC-SR04 funksionon me matjen e kohës së fluturimit. Arduino dërgon një sinjal nxitës të nivelit të lartë prej të paktën 10 mikrosekonda në pinin TRIG. Moduli më pas dërgon automatikisht tetë impulse tejzanor 40 kHz dhe pret jehonën e reflektuar.
Kur zbulohet sinjali ultrasonik i reflektuar, kunja ECHO nxjerr një puls të nivelit të lartë. Kohëzgjatja e këtij pulsi është koha e udhëtimit vajtje-ardhje e valës tejzanor.
Distanca = Koha e nivelit të lartë të jehonës × Shpejtësia e zërit / 2
Në kodin Arduino, formula e thjeshtë e zakonshme është:
Distanca në cm = kohëzgjatja × 0,0343 / 2
Procesi i kohës është i thjeshtë: Arduino e mban TRIG të ulët për një kohë të shkurtër, dërgon një puls të lartë prej 10 us, më pas e kthen TRIG në të ulët. HC-SR04 dërgon një shpërthim tejzanor dhe e vendos ECHO lart derisa sinjali i reflektuar të kthehet ose koha e matjes të përfundojë.
Për të shmangur leximet e paqëndrueshme, lini një vonesë të shkurtër midis matjeve. Zakonisht përdoret një cikël matjeje prej rreth 60 ms, në mënyrë që jehona e mëparshme ultrasonike të ketë kohë të zhduket përpara shkasit tjetër.
Funksioni Arduino pulseIn() përdoret për të matur se sa kohë një pin dixhital qëndron LARTË ose ULËT. Për HC-SR04, Arduino përdor pulseIn(echoPin, HIGH) për të lexuar gjerësinë e pulsit të nivelit të lartë nga kunja ECHO.
| Sintaksë | Kuptimi |
| pulseIn (pin, vlerë) | Lexon kohëzgjatjen e një impulsi të lartë ose të ulët. |
| pulseIn (pin, vlerë, kohëzgjatje) | Lexon pulsin me një vlerë kohore në mikrosekonda. |
Rekomandohet përdorimi i një afati kohor. Nëse nuk kthehet asnjë jehonë, funksioni mund të ndalojë së prituri dhe të kthejë 0 në vend që të bllokojë programin për një kohë të gjatë.
Lidhja elektrike është e drejtpërdrejtë. Lidheni VCC në 5V, GND në GND, TRIG në një kunj dalëse dixhitale Arduino dhe ECHO me një kunj hyrëse dixhitale Arduino. Shembulli i mëposhtëm përdor Arduino Uno, TRIG në pinin 9 dhe ECHO në pinin 10.
Programi i mëposhtëm tipik Arduino dërgon një puls 10us, lexon gjerësinë e pulsit ECHO, llogarit distancën në centimetra dhe printon rezultatin në Monitorin Serial.
const int trigPin = 9; konst int echoPin = 10; kohëzgjatje e gjatë; distanca notueseCm; void setup() { pinMode(trigPin, OUTPUT); pinMode (echoPin, INPUT); Seriali.fillim(9600); } void loop() { digitalWrite(trigPin, LOW); vonesaMikrosekonda (2); digitalWrite (trigPin, LARTË); vonesaMikrosekonda (10); digitalWrite (trigPin, LOW); kohëzgjatja = pulseIn (echoPin, LARTË, 30000); if (kohëzgjatja == 0) { Serial.println('Jashtë diapazonit'); } else { distanceCm = kohëzgjatja * 0,0343 / 2; Serial.print('Distanca: '); Serial.print(distanceCm); Serial.println(' cm'); } vonesë (60); }
Nëse shihni vlerat e distancës në Monitorin Serial, sensori ultrasonik HC-SR04 dhe instalimet elektrike Arduino po funksionojnë siç duhet. Më pas mund të përdorni të dhënat e distancës për zbulimin e pengesave, kontrollin e lëvizjes së robotit, dyert automatike, përkujtuesit e parkimit ose projektet e nivelit të lëngjeve.
Mbajeni objektin e matur brenda distancës së rekomanduar dhe jashtë zonës së verbër prej 2 cm.
Përdorni një sipërfaqe objektivi të sheshtë dhe të fortë për reflektim më të mirë tejzanor.
Shmangni matjen e materialeve të buta, me kënd, poroze ose që thithin zërin.
Përdorni një furnizim të qëndrueshëm me energji 5V dhe mbajini instalimet elektrike të shkurtra dhe të sigurta.
Shtoni një afat në pulseIn() për të parandaluar bllokimin e gjatë kur nuk kthehet jehona.
Mesatare ose mesatare-filtro disa lexime për të reduktuar zhurmën.
Për saktësi më të lartë, kompensoni temperaturën sepse shpejtësia e zërit ndryshon me temperaturën e ajrit.
| Aplikimi | Si përdoret HC-SR04 |
| Robot për shmangien e pengesave | Zbulon objektet pranë dhe ndihmon robotin të ndryshojë drejtimin. |
| Sensori i distancës së parkimit | Mat distancën ndërmjet mjetit dhe një pengese. |
| Zbulimi i nivelit të lëngjeve | Mat distancën nga sensori në sipërfaqen e lëngshme pa kontakt. |
| Kosh inteligjent plehrash | Zbulon një dorë ose objekt afër dhe aktivizon hapjen automatike të kapakut. |
Për të përdorur një sensor tejzanor HC-SR04 me Arduino, lidhni VCC në 5V, GND në GND, TRIG në një kunj dalëse dixhitale dhe ECHO me një kunj të hyrjes dixhitale. Dërgoni një puls nxitës 10us, lexoni kohëzgjatjen e jehonës me pulseIn() dhe llogaritni distancën me formulën e kohës së fluturimit.
HC-SR04 është i lirë, i lehtë për t'u përdorur dhe i përshtatshëm për shumë projekte të matjes së distancës Arduino. Për rezultate më të mira, kushtojini vëmendje sipërfaqes së synuar, këndit të matjes, zonës së verbër, fuqisë së qëndrueshme, trajtimit të kohëzgjatjes dhe efekteve të temperaturës.
Arduino dërgon një puls 10us në pinin TRIG. HC-SR04 lëshon tetë impulse tejzanor 40 kHz dhe e vendos kunjin ECHO lart derisa tingulli i reflektuar të kthehet. Arduino mat këtë kohë pulsi dhe llogarit distancën.
Formula është distanca = kohëzgjatja × shpejtësia e zërit / 2. Në centimetra, një formulë e zakonshme Arduino është distancaCm = kohëzgjatja × 0,0343 / 2, ku kohëzgjatja matet në mikrosekonda.
Koha e matur e jehonës është koha e udhëtimit vajtje-ardhje nga sensori në objekt dhe kthimi në sensor. Pjestimi me 2 jep distancën e njëanshme midis sensorit dhe objektit.
Ju mund të përdorni shumicën e kunjave dixhitale Arduino. Në shumë shembuj, TRIG është i lidhur me pinin dixhital 9 dhe ECHO është i lidhur me pinin dixhital 10. Kodi duhet të përputhet me kunjat e përdorura në instalimet elektrike.
Shkaqet e zakonshme përfshijnë lidhjen e lirshme, fuqinë e paqëndrueshme 5V, numrat e gabuar të pineve TRIG ose ECHO, mungesën e objektit në rreze, sipërfaqet e synuara me kënd, materialet e buta, kokat e bllokuara të sensorëve ose mungesën e kohës në funksionin pulseIn().
Zona e verbër është distanca minimale ku moduli nuk mund të matet në mënyrë të besueshme. Për HC-SR04, zona e verbër është zakonisht rreth 2 cm. Objektet më afër se kjo mund të prodhojnë lexime të paqëndrueshme.
Po, HC-SR04 mund të përdoret për projekte të thjeshta të nivelit të ujit pa kontakt, nëse sensori është i mbrojtur nga lagështia dhe i montuar mbi sipërfaqen e lëngshme. Për rezervuarët e lagësht, të jashtëm ose industrial, rekomandohet një sensor ultrasonik i papërshkueshëm nga uji.
Përdorni një furnizim të qëndrueshëm me energji elektrike, mbajeni sensorin pingul me objektivin, shmangni sipërfaqet e buta ose me kënd, shtoni kohëzgjatje pulseIn, merrni lexime të shumta, përdorni filtrimin mesatar dhe lejoni rreth 60 ms midis matjeve.