Skatījumi: 164 Autors: Grace Publicēšanas laiks: 2021-07-26 Izcelsme: Vietne
The HC-SR04 ultraskaņas sensors ir viens no populārākajiem attāluma mērīšanas moduļiem Arduino projektiem. To plaši izmanto šķēršļu izvairīšanās robotos, parkošanās sensoros, līmeņa noteikšanā, viedajās atkritumu tvertnēs, attāluma mērītājos un citās bezkontakta sensoros.
Modulis caur raidītāju izstaro 40kHz ultraskaņas viļņus. Kad skaņas vilnis satiekas ar objektu, tas atstarojas atpakaļ uztvērējā. Mērot atbalss laiku un izmantojot skaņas ātrumu, Arduino var aprēķināt attālumu starp sensoru un objektu.
| Parametrs | Vērtība |
| Tipisks darba spriegums | 5V DC |
| Statiskā darba strāva | Dažās moduļu versijās mazāk nekā 5 mA |
| Darbības biežums | 40 kHz ultraskaņas vilnis |
| Atklāšanas attālums | Kopējais diapazons: 2cm līdz 400cm; dažas versijas ar regulētu pastiprinājumu var atbalstīt lielāku diapazonu. |
| Atklāšanas leņķis | Parasti 15 grādu robežās; dažas versijas ar lielāku pastiprinājumu var sasniegt aptuveni 30 grādus. |
| Precizitāte | Piemērotos testa apstākļos līdz aptuveni 0,3 cm |
| Aklā zona | Apmēram 2 cm minimālais mērīšanas attālums |
Ultraskaņas modulim HC-SR04 ir četras tapas: VCC, TRIG, ECHO un GND. Arduino nosūta īsu sprūda impulsu uz TRIG tapu, pēc tam nolasa atgriešanās impulsu no ECHO tapas.
| HC-SR04 tapa | Arduino savienojums | Funkcija |
| VCC | 5V | Barošanas avots ultraskaņas modulim. |
| TRIG | Digitālā tapa 9 | Trigera ievade. Arduino izmanto 10 us impulsu, lai sāktu diapazonu. |
| ECHO | Digitālā tapa 10 | Atbalss izvade. Arduino nolasa impulsa platumu, lai aprēķinātu attālumu. |
| GND | GND | Zemējuma savienojums. |
HC-SR04 darbojas, mērot lidojuma laiku. Arduino uz TRIG tapu nosūta augsta līmeņa sprūda signālu, kas ir vismaz 10 mikrosekundes. Pēc tam modulis automātiski nosūta astoņus 40 kHz ultraskaņas impulsus un gaida atstaroto atbalsi.
Kad tiek atklāts atstarots ultraskaņas signāls, ECHO tapa izvada augsta līmeņa impulsu. Šī impulsa ilgums ir ultraskaņas viļņa ceļojuma laiks turp un atpakaļ.
Attālums = Atbalss augsta līmeņa laiks × Skaņas ātrums / 2
Arduino kodā izplatītā vienkāršotā formula ir:
Attālums cm = ilgums × 0,0343 / 2
Laika noteikšanas process ir vienkāršs: Arduino īslaicīgi uztur zemu TRIG, nosūta 10 us augstu impulsu, pēc tam atgriež TRIG uz zemu. HC-SR04 nosūta ultraskaņas sēriju un iestata augstu ECHO, līdz atgriežas atspoguļotais signāls vai beidzas mērījuma noildze.
Lai izvairītos no nestabiliem rādījumiem, atstājiet nelielu aizkavi starp mērījumiem. Parasti tiek izmantots aptuveni 60 ms ilgs mērījumu cikls, tāpēc iepriekšējai ultraskaņas atbalss pazūd pirms nākamā sprūda.
Arduino pulseIn() funkcija tiek izmantota, lai izmērītu, cik ilgi digitālā tapa paliek HIGH vai LOW. HC-SR04 gadījumā Arduino izmanto pulseIn (echoPin, HIGH) , lai nolasītu augsta līmeņa impulsa platumu no ECHO tapas.
| Sintakse | Nozīme |
| pulseIn(pin, vērtība) | Nolasa HIGH vai LOW impulsa ilgumu. |
| pulseIn(pin, vērtība, taimauts) | Nolasa impulsu ar taimauta vērtību mikrosekundēs. |
Ieteicams izmantot taimautu. Ja atbalss netiek atgriezta, funkcija var pārtraukt gaidīšanu un atgriezt 0, nevis bloķēt programmu pārāk ilgi.
Elektroinstalācija ir vienkārša. Savienojiet VCC ar 5 V, GND ar GND, TRIG ar Arduino digitālās izvades tapu un ECHO ar Arduino digitālās ievades tapu. Nākamajā piemērā tiek izmantots Arduino Uno, TRIG 9. tapā un ECHO 10. tapā.
Šāda tipiskā Arduino programma nosūta 10 us sprūda impulsu, nolasa ECHO impulsa platumu, aprēķina attālumu centimetros un izdrukā rezultātu seriālajā monitorā.
const int trigPin = 9; const int echoPin = 10; ilgs ilgums; pludiņa attālumsCm; void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(9600); } void loop() { digitalWrite(trigPin, LOW); kavēšanāsMikrosekundes(2); digitalWrite(trigPin, HIGH); kavēšanāsMikrosekundes(10); digitalWrite(trigPin, LOW); ilgums = pulseIn(echoPin, HIGH, 30000); if (ilgums == 0) { Serial.println('Ārpus diapazona'); } else { distanceCm = ilgums * 0,0343 / 2; Serial.print('Attālums: '); Serial.print(attālumsCm); Serial.println(' cm'); } aizkave(60); }
Ja seriālajā monitorā redzat attāluma vērtības, ultraskaņas sensors HC-SR04 un Arduino vadi darbojas pareizi. Pēc tam attāluma datus varat izmantot šķēršļu noteikšanai, robotu kustības kontrolei, automātiskajām durvīm, atgādinājumiem par novietošanu stāvvietā vai šķidruma līmeņa projektiem.
Turiet izmērīto objektu ieteicamā attāluma diapazonā un ārpus 2 cm aklās zonas.
Izmantojiet plakanu un cietu mērķa virsmu, lai nodrošinātu labāku ultraskaņas atstarošanu.
Izvairieties no mīkstu, leņķu, porainu vai skaņu absorbējošu materiālu mērīšanas.
Izmantojiet stabilu 5 V barošanas avotu un saglabājiet vadu īsu un drošu.
Pievienojiet taimautu elementam pulseIn(), lai novērstu ilgstošu bloķēšanu, kad atbalss neatgriežas.
Vidēji vai vidēji filtrējiet vairākus rādījumus, lai samazinātu troksni.
Lai iegūtu lielāku precizitāti, kompensējiet temperatūru, jo skaņas ātrums mainās līdz ar gaisa temperatūru.
| Pieteikums | Kā tiek izmantots HC-SR04 |
| Robots, kas izvairās no šķēršļiem | Atklāj tuvumā esošos objektus un palīdz robotam mainīt virzienu. |
| Parkošanās distances sensors | Mēra attālumu starp transportlīdzekli un šķērsli. |
| Šķidruma līmeņa noteikšana | Mēra attālumu no sensora līdz šķidruma virsmai bez kontakta. |
| Viedā atkritumu tvertne | Atklāj tuvumā esošu roku vai priekšmetu un iedarbina automātisku vāka atvēršanu. |
Lai izmantotu HC-SR04 ultraskaņas sensoru ar Arduino, pievienojiet VCC pie 5 V, GND ar GND, TRIG ar digitālās izejas tapu un ECHO ar digitālās ievades tapu. Nosūtiet 10 us trigera impulsu, nolasiet atbalss ilgumu ar pulseIn() un aprēķiniet attālumu, izmantojot lidojuma laika formulu.
HC-SR04 ir lēts, viegli lietojams un piemērots daudziem Arduino attāluma mērīšanas projektiem. Lai iegūtu labākos rezultātus, pievērsiet uzmanību mērķa virsmai, mērīšanas leņķim, aklajai zonai, stabilai jaudai, taimauta apstrādei un temperatūras efektiem.
Arduino nosūta 10us impulsu uz TRIG tapu. HC-SR04 izstaro astoņus 40 kHz ultraskaņas impulsus un iestata ECHO tapu augstu, līdz atgriežas atstarotā skaņa. Arduino mēra šo impulsa laiku un aprēķina attālumu.
Formula ir attālums = ilgums × skaņas ātrums / 2. Centimetros izplatīta Arduino formula ir distanceCm = ilgums × 0,0343 / 2, kur ilgums tiek mērīts mikrosekundēs.
Izmērītais atbalss laiks ir laiks turp un atpakaļ no sensora līdz objektam un atpakaļ uz sensoru. Dalot ar 2, tiek iegūts vienvirziena attālums starp sensoru un objektu.
Varat izmantot lielāko daļu Arduino digitālo tapu. Daudzos piemēros TRIG ir savienots ar digitālo kontaktu 9 un ECHO ir pievienots digitālajam kontaktam 10. Kodam ir jāatbilst jūsu elektroinstalācijā izmantotajām tapām.
Bieži sastopami iemesli ir vadu trūkums, nestabila 5 V jauda, nepareizi TRIG vai ECHO kontaktu numuri, neviena objekta diapazonā, leņķiskās mērķa virsmas, mīksti materiāli, bloķētas sensoru galviņas vai pulseIn() funkcijas taimauta neesamība.
Aklā zona ir minimālais attālums, kurā modulis nevar droši izmērīt. HC-SR04 aklā zona parasti ir aptuveni 2 cm. Objekti, kas atrodas tuvāk par šo, var radīt nestabilus rādījumus.
Jā, HC-SR04 var izmantot vienkāršiem bezkontakta ūdens līmeņa projektiem, ja sensors ir aizsargāts no mitruma un uzstādīts virs šķidruma virsmas. Mitrām, āra vai rūpnieciskām tvertnēm ieteicams izmantot ūdensizturīgu ultraskaņas sensoru.
Izmantojiet stabilu barošanas avotu, turiet sensoru perpendikulāri mērķim, izvairieties no mīkstām vai leņķiskām virsmām, pievienojiet pulseIn taimautu, veiciet vairākus rādījumus, izmantojiet vidējo filtrēšanu un starp mērījumiem atstājiet apmēram 60 ms.