Views: 164 Author: Grace Publish Time: 2021-07-26 Pinagmulan: Site
Ang Ang HC-SR04 ultrasonic sensor ay isa sa pinakasikat na mga module ng pagsukat ng distansya para sa mga proyekto ng Arduino. Ito ay malawakang ginagamit sa mga robot sa pag-iwas sa balakid, mga sensor ng paradahan, pag-detect ng antas, mga smart trash bin, mga metro ng distansya, at iba pang mga application ng non-contact sensing.
Ang module ay nagpapalabas ng 40kHz ultrasonic waves sa pamamagitan ng isang transmitter. Kapag ang sound wave ay nakakatugon sa isang bagay, ito ay sumasalamin pabalik sa receiver. Sa pamamagitan ng pagsukat ng oras ng echo at paggamit ng bilis ng tunog, maaaring kalkulahin ng Arduino ang distansya sa pagitan ng sensor at ng bagay.
| Parameter | Halaga |
| Karaniwang nagtatrabaho boltahe | 5V DC |
| Static na kasalukuyang gumagana | Mas mababa sa 5mA sa ilang bersyon ng module |
| Dalas ng pagpapatakbo | 40kHz ultrasonic wave |
| Distansya ng pagtuklas | Karaniwang saklaw: 2cm hanggang 400cm; maaaring suportahan ng ilang mga bersyon na nababagay sa pakinabang ang mas mahabang hanay. |
| Anggulo ng pagtuklas | Karaniwan sa loob ng 15 degrees; ang ilang mga bersyon na may mas mataas na pakinabang ay maaaring umabot ng humigit-kumulang 30 degrees. |
| Katumpakan | Hanggang sa humigit-kumulang 0.3cm sa ilalim ng angkop na mga kondisyon ng pagsubok |
| Blind zone | Humigit-kumulang 2cm na pinakamababang distansya ng pagsukat |
Ang HC-SR04 ultrasonic module ay may apat na pin: VCC, TRIG, ECHO, at GND. Nagpapadala ang Arduino ng maikling trigger pulse sa TRIG pin, pagkatapos ay binabasa ang return pulse mula sa ECHO pin.
| HC-SR04 Pin | Koneksyon ng Arduino | Function |
| VCC | 5V | Power supply para sa ultrasonic module. |
| TRIG | Digital na pin 9 | Pag-input ng trigger. Ang Arduino ay nag-aaplay ng 10us pulse upang magsimulang mag-ranging. |
| ECHO | Digital pin 10 | Echo output. Binabasa ng Arduino ang lapad ng pulso upang makalkula ang distansya. |
| GND | GND | Koneksyon sa lupa. |
Gumagana ang HC-SR04 sa pamamagitan ng pagsukat sa oras ng paglipad. Nagpapadala ang Arduino ng high-level trigger signal na hindi bababa sa 10 microseconds sa TRIG pin. Ang module pagkatapos ay awtomatikong nagpapadala ng walong 40kHz ultrasonic pulses at naghihintay para sa reflected echo.
Kapag nakita ang sinasalamin na ultrasonic signal, ang ECHO pin ay naglalabas ng mataas na antas ng pulso. Ang tagal ng pulso na ito ay ang round-trip na oras ng paglalakbay ng ultrasonic wave.
Distansya = Echo high-level na oras × Bilis ng tunog / 2
Sa Arduino code, ang karaniwang pinasimple na formula ay:
Distansya sa cm = tagal × 0.0343 / 2
Ang proseso ng timing ay simple: pinapanatili ng Arduino na mababa ang TRIG sa madaling sabi, nagpapadala ng 10us na mataas na pulso, pagkatapos ay ibinalik ang TRIG sa mababang. Ang HC-SR04 ay nagpapadala ng ultrasonic burst at nagtatakda ng mataas na ECHO hanggang sa bumalik ang nakalarawang signal o ang oras ng pagsukat.
Upang maiwasan ang mga hindi matatag na pagbabasa, mag-iwan ng maikling pagkaantala sa pagitan ng mga sukat. Karaniwang ginagamit ang cycle ng pagsukat na humigit-kumulang 60ms kaya may oras na mawala ang nakaraang ultrasonic echo bago ang susunod na trigger.
Ang Arduino pulseIn() function ay ginagamit upang sukatin kung gaano katagal nananatiling HIGH o LOW ang isang digital pin. Para sa HC-SR04, ang Arduino ay gumagamit ng pulseIn(echoPin, HIGH) upang basahin ang mataas na antas ng lapad ng pulso mula sa ECHO pin.
| Syntax | Ibig sabihin |
| pulseIn(pin, halaga) | Binabasa ang tagal ng HIGH o LOW pulse. |
| pulseIn(pin, halaga, timeout) | Binabasa ang pulso na may timeout value sa microseconds. |
Inirerekomenda ang paggamit ng timeout. Kung walang ibinalik na echo, ang function ay maaaring huminto sa paghihintay at ibalik ang 0 sa halip na harangan ang programa nang masyadong mahaba.
Ang mga kable ay diretso. Ikonekta ang VCC sa 5V, GND sa GND, TRIG sa isang Arduino digital output pin, at ECHO sa isang Arduino digital input pin. Ang sumusunod na halimbawa ay gumagamit ng Arduino Uno, TRIG sa pin 9, at ECHO sa pin 10.
Ang sumusunod na karaniwang Arduino program ay nagpapadala ng 10us trigger pulse, binabasa ang ECHO pulse width, kinakalkula ang distansya sa sentimetro, at ini-print ang resulta sa Serial Monitor.
const int trigPin = 9; const int echoPin = 10; mahabang tagal; float distanceCm; void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(9600); } void loop() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); tagal = pulseIn(echoPin, HIGH, 30000); if (tagal == 0) { Serial.println('Out of range'); } else { distanceCm = tagal * 0.0343 / 2; Serial.print('Distansya: '); Serial.print(distanceCm); Serial.println(' cm'); } pagkaantala(60); }
Kung nakikita mo ang mga halaga ng distansya sa Serial Monitor, gumagana nang tama ang HC-SR04 ultrasonic sensor at Arduino wiring. Magagamit mo pagkatapos ang data ng distansya para sa pagtukoy ng obstacle, kontrol sa paggalaw ng robot, mga awtomatikong pinto, mga paalala sa paradahan, o mga proyekto sa antas ng likido.
Panatilihin ang sinusukat na bagay sa loob ng inirerekomendang hanay ng distansya at sa labas ng 2cm blind zone.
Gumamit ng flat at solid na target na ibabaw para sa mas mahusay na ultrasonic reflection.
Iwasan ang pagsukat ng malambot, anggulo, buhaghag, o mga materyales na sumisipsip ng tunog.
Gumamit ng stable na 5V power supply at panatilihing maikli at secure ang mga kable.
Magdagdag ng timeout sa pulseIn() upang maiwasan ang mahabang pagharang kapag walang echo na bumalik.
Average o median-filter ang ilang mga pagbabasa upang mabawasan ang ingay.
Para sa mas mataas na katumpakan, bayaran ang temperatura dahil nagbabago ang bilis ng tunog sa temperatura ng hangin.
| Aplikasyon | Paano Ginagamit ang HC-SR04 |
| Robot sa pag-iwas sa balakid | Nakatuklas ng mga kalapit na bagay at tinutulungan ang robot na baguhin ang direksyon. |
| Sensor ng distansya ng paradahan | Sinusukat ang distansya sa pagitan ng sasakyan at isang balakid. |
| Pagtukoy sa antas ng likido | Sinusukat ang distansya mula sa sensor hanggang sa likidong ibabaw nang walang kontak. |
| Matalinong basurahan | Nakatuklas ng kalapit na kamay o bagay at nagti-trigger ng awtomatikong pagbukas ng takip. |
Upang gumamit ng HC-SR04 ultrasonic sensor na may Arduino, ikonekta ang VCC sa 5V, GND sa GND, TRIG sa isang digital output pin, at ECHO sa isang digital input pin. Magpadala ng 10us trigger pulse, basahin ang tagal ng echo gamit ang pulseIn(), at kalkulahin ang distansya gamit ang time-of-flight formula.
Ang HC-SR04 ay mura, madaling gamitin, at angkop para sa maraming Arduino distance measurement projects. Para sa pinakamahusay na mga resulta, bigyang-pansin ang target na ibabaw, anggulo ng pagsukat, blind zone, stable na power, timeout handling, at mga epekto sa temperatura.
Nagpapadala ang Arduino ng 10us pulse sa TRIG pin. Ang HC-SR04 ay naglalabas ng walong 40kHz ultrasonic pulse at itinatakda ang ECHO pin na mataas hanggang sa bumalik ang naaninag na tunog. Sinusukat ng Arduino ang oras ng pulso na ito at kinakalkula ang distansya.
Ang formula ay distansya = tagal × bilis ng tunog / 2. Sa sentimetro, ang karaniwang formula ng Arduino ay distanceCm = tagal × 0.0343 / 2, kung saan ang tagal ay sinusukat sa microseconds.
Ang sinusukat na echo time ay ang round-trip na oras mula sa sensor papunta sa object at pabalik sa sensor. Ang paghahati sa 2 ay nagbibigay ng one-way na distansya sa pagitan ng sensor at ng bagay.
Maaari mong gamitin ang karamihan sa mga Arduino digital pin. Sa maraming halimbawa, nakakonekta ang TRIG sa digital pin 9 at nakakonekta ang ECHO sa digital pin 10. Dapat tumugma ang code sa mga pin na ginamit sa iyong mga wiring.
Kabilang sa mga karaniwang sanhi ang maluwag na mga kable, hindi matatag na 5V power, maling TRIG o ECHO pin number, walang object sa range, angled target surface, malambot na materyales, naka-block na sensor head, o walang timeout sa pulseIn() function.
Ang blind zone ay ang pinakamababang distansya kung saan hindi maasahan ang pagsukat ng module. Para sa HC-SR04, ang blind zone ay karaniwang mga 2cm. Ang mga bagay na mas malapit dito ay maaaring makagawa ng hindi matatag na pagbabasa.
Oo, ang HC-SR04 ay maaaring gamitin para sa mga simpleng non-contact water level projects kung ang sensor ay protektado mula sa moisture at naka-mount sa itaas ng likidong ibabaw. Para sa mahalumigmig, panlabas, o pang-industriya na tangke, inirerekomenda ang isang hindi tinatagusan ng tubig na ultrasonic sensor.
Gumamit ng stable na power supply, panatilihing patayo ang sensor sa target, iwasan ang malambot o angled na ibabaw, magdagdag ng pulseIn timeout, kumuha ng maraming pagbabasa, gumamit ng median na pag-filter, at payagan ang humigit-kumulang 60ms sa pagitan ng mga sukat.