- Mga Materyal na Kinakailangan:
- Diagram ng Circuit:
- Paano aktwal na gumagana ang module ng HC-SR04:
- Pagsukat sa distansya sa pagitan ng dalawang mga sensor ng Ultrasonic (HC-SR04):
- Programa para sa Transmitter Sensor:
- Program para sa Receiver Sensor:
- Nagtatrabaho:
- Pinagbuting ideya - i-calibrate ang sensor gamit ang isang kilalang distansya:
Ang ultrasonikong sensor (HC-SR04) ay karaniwang ginagamit upang makita ang distansya ng isang bagay mula sa isang partikular na punto. Ito ay naging medyo madali upang gawin ito sa Arduino at ang code ay medyo simple din. Ngunit sa artikulong ito susubukan namin ang isang bagay na kakaiba sa mga tanyag na sensor na HC-SR04. Susubukan naming kalkulahin ang distansya sa pagitan ng dalawang mga sensor ng Ultrasonic na, gagawin namin ang isang sensor upang kumilos bilang transmitter at ang iba pang sensor upang kumilos bilang tatanggap. Sa pamamagitan nito, masusubaybayan natin ang lokasyon ng isang transmiter gamit ang maraming mga receiver ng ultrasonic ang pagsubaybay na ito ay tinatawag na triangulation at maaaring magamit para sa awtomatikong mga docking robot na tagasunod sa bagahe at iba pang katulad na aplikasyon. Ang paghahanap ng distansya sa pagitan ng dalawang sensor ng US maaaring tunog ay isang simpleng gawain ngunit naharap ko ang ilang mga hamon na tinalakay sa proyektong ito.
Ang diskarteng tinalakay sa artikulong ito ay hindi masyadong tumpak at maaaring hindi maging kapaki-pakinabang sa anumang totoong mga system nang walang mga pagbabago. Sa panahon ng dokumentasyong ito hindi ako nakakita ng sinumang nakakakuha ng mga resulta na malapit sa akin kaya naibahagi ko lang ang aking mga pananaw sa kung paano ko ito nagtrabaho upang ang mga taong sumusubok nito ay hindi na muling imbentuhin ang gulong.
Mga Materyal na Kinakailangan:
- Arduino (2Nos) - Anumang modelo
- HCSR04 Modyul (2Nos)
Diagram ng Circuit:
Kahit na gagawa kami ng isang sensor ng US (Ultrasonic) upang gumana bilang transmiter at ang iba pang bilang tatanggap ay ipinag-uutos na ikonekta ang lahat ng apat na mga pin ng mga sensor sa Arduino. Bakit tayo dapat Higit pa sa mga iyon ay tatalakayin sa paglaon, ngunit sa ngayon ang circuit diagram ay ang mga sumusunod
Tulad ng nakikita mo ang circuit diagram para sa parehong Transmitter at receiver ay magkapareho. Suriin din: Arduino Ultrasonic Sensor Interfacing
Paano aktwal na gumagana ang module ng HC-SR04:
Bago kami magpatuloy sa anumang karagdagang ipaalam sa amin maunawaan kung paano gumagana ang HC-SR04 sensor. Ang diagram sa ibaba ng tiyempo ay makakatulong sa amin na maunawaan ang pagtatrabaho.
Ang sensor ay may dalawang pin na Trigger at Echo na ginagamit upang sukatin ang distansya tulad ng ipinakita sa diagram ng tiyempo. Una upang simulan ang pagsukat dapat kaming magpadala ng isang ultrasonic alon mula sa transmiter, maaari itong gawin sa pamamagitan ng pagtatakda ng mataas na gatilyo ng pin para sa 10uS. Sa sandaling tapos na ito ang transmitter pin ay magpapadala ng 8 sonik na pagsabog ng mga alon ng US. Ang alon ng US na ito ay tatama sa isang bounce object at tatanggapin ng tatanggap.
Ipinapakita dito ang tiyempo ng tiyempo na kapag natanggap ng tatanggap ang alon ay gagawin nitong mataas ang Echo pin sa isang tagal ng oras na katumbas ng oras na ginugol para sa paglalakbay ng alon mula sa US sensor at maabot muli ang sensor. Ang diagram ng tiyempo na ito ay tila hindi totoo.
Tinakpan ko ang bahagi ng Tx (transmitter) ng aking sensor at tinignan kung ang Echo pulse ay naging mataas, at oo ito ay mataas. Nangangahulugan ito na ang Echo pulse ay hindi naghihintay para sa US (ultrasonic) na alon na matanggap nito. Kapag nailipat na nito ang US wave mataas na ito at nananatiling mataas hanggang sa bumalik ang alon. Kaya ang tamang diagram ng tiyempo ay dapat na tulad nito na ipinakita sa ibaba (Paumanhin para sa aking mahinang kasanayan sa pagsulat)
Ginagawa ang iyong HC-SR04 upang gumana bilang Transmitter lamang:
Ito ay medyo tuwid na pasulong upang makagawa ng isang HC-SR04 upang gumana bilang transmitter lamang. Tulad ng ipinakita sa diagram ng tiyempo kailangan mong ideklara ang Trigger pin bilang output pin at gawin itong manatiling mataas para sa 10 mikrosekondyo. Sisimulan nito ang pagsabog ng alon ng Ultrasonic. Kaya't tuwing nais naming ipadala ang alon kailangan lang naming makontrol ang gatilyo ng sensor ng Transmitter, kung saan ibinibigay ang code sa ibaba.
Ginagawa ang iyong HC-SR04 upang gumana bilang Tagatanggap lamang:
Tulad ng ipinakita sa diagram ng tiyempo hindi namin makontrol ang pagtaas ng Echo pin dahil nauugnay ito sa trigger pin. Kaya't walang paraan na maaari naming magawa ang HC-SR04 upang gumana bilang tatanggap lamang. Ngunit maaari kaming gumamit ng isang pag-hack, sa pamamagitan lamang ng pagtakip sa bahagi ng sensor ng tape gamit ang tape (tulad ng ipinakita sa larawan sa ibaba) o takpan ang alon ng US na hindi makatakas sa labas ng Transmitter casing nito at ang Echo pin ay hindi maaapektuhan ng alon na ito ng US.
Ngayon upang gawing mataas ang echo pin kailangan lang nating hilahin ang dummy gatilyo na pin na ito na mataas para sa 10 mga Microecond. Sa sandaling makuha ng sensor ng Receiver ang alon ng US na naihatid ng sensor ng Transmitter, ang echo pin ay bababa.
Pagsukat sa distansya sa pagitan ng dalawang mga sensor ng Ultrasonic (HC-SR04):
Sa ngayon naintindihan namin kung paano gawin ang isang sensor na gumagana bilang transmiter at ang iba pang sensor upang gumana bilang tatanggap. Ngayon, kailangan nating ihatid ang ultrasonikong alon mula sa transmitter sensor at matanggap ito sa sensor ng tatanggap at suriin ang oras na ginugol para maglakbay ang alon mula sa transmitter patungo sa tatanggap na madaling tunog diba ?? Ngunit nakalulungkot !, Mayroon kaming problema dito at hindi ito gagana.
Ang module ng Transmitter at module ng Receiver ay magkakalayo at kapag natanggap ng module ng tatanggap ang alon ng US mula sa module ng transmitter hindi nito malalaman kung kailan ipinadala ng transmiter ang partikular na alon na ito. Nang hindi alam ang oras ng pagsisimula hindi namin makalkula ang oras na kinuha at sa gayon ang distansya. Upang malutas ang problemang ito ang Echo pulse ng module ng tatanggap ay dapat gawin upang mataas na eksakto kapag naihatid ng module ng Transmitter ang alon ng US. Sa madaling salita, ang module ng Transmitter at ang module ng tatanggap ay dapat na mag-trigger nang sabay. Maaari itong makamit sa pamamagitan ng sumusunod na pamamaraan.
Sa diagram sa itaas, ang Tx ay kumakatawan sa Transmitter sensor at ang Rx ay kumakatawan sa sensor ng Receiver. Tulad ng ipinakita ang Transmitter sensor ay gagawin upang magpadala ng mga alon ng US sa isang pana-panahong kilalang pagkaantala, ito lang ang dapat gawin.
Sa sensor ng Receiver kailangan nating kahit papaano gawin ang trigger pin na mataas nang eksakto sa oras na ang transmitter pin ay mataas. Kaya't sa una ay sapalarang ginagawa namin ang Receivers Trigger upang maging mataas na gusto at manatiling mataas hanggang sa bumaba ang echo pin. Ang echo pin na ito ay mabababa lamang kapag nakatanggap ito ng isang alon ng US mula sa transmiter. Kaya't sa lalong madaling panahon na bumaba ito ay maaari nating ipalagay na ang Transmitter sensor ay na-trigger lamang. Ngayon, sa palagay na ito sa lalong madaling bumaba ang echo maaari naming maghintay para sa kilalang pagka-antala at pagkatapos ay ma-trigger ang gatilyo ng mga tatanggap. Bahagyang mai-sync nito ang gatilyo ng parehong Transmitter at receiver at kaya maaari mong mabasa ang agarang tagal ng echo pulse gamit ang pulseIn () at kalkulahin ang distansya.
Programa para sa Transmitter Sensor:
Ang kumpletong programa para sa module ng transmiter ay matatagpuan sa ilalim ng pahina. Wala itong ginagawa kundi mag-trigger ng transmitter sensor sa isang pana-panahong agwat.
digitalWrite (trigPin, MATAAS); delayMicroseconds (10); digitalWrite (trigPin, LOW);
Upang ma-trigger ang isang sensor kailangan naming gawin ang gatong pin upang manatiling mataas sa 10uS. Ang code na gawin ang pareho ay ipinapakita sa itaas
Program para sa Receiver Sensor:
Sa sensor ng receiver mayroon kaming takip sa Transmitter na mata ng sensor upang gawin itong dummy tulad ng tinalakay nang mas maaga. Ngayon ay maaari naming gamitin ang nabanggit na pamamaraan upang masukat ang distansya sa pagitan ng dalawang mga sensor. Ang kumpletong programa ay ibinibigay sa ilalim ng pahinang ito. Ilang mga mahahalagang linya ang ipinaliwanag sa ibaba
Trigger_US (); habang (digitalRead (echoPin) == TAAS); delayMicroseconds (10); Trigger_US (); tagal = pulseIn (echoPin, HIGH);
Sa una ay pinasisimulan namin ang US sensor sa pamamagitan ng paggamit ng function na Trigger_US () at pagkatapos ay maghintay hanggang ang echo pin ay mananatiling mataas gamit ang isang habang loop. Kapag naging mababa ito naghihintay kami para sa paunang natukoy na tagal, ang tagal na ito ay dapat na nasa isang lugar sa pagitan ng 10 hanggang 30 microseconds na maaaring matukoy gamit ang pagsubok at error (O maaari mong gamitin ang improbisyong ideya na ibinigay sa ibaba). Matapos ang pagkaantala na ito ay muling mag-trigger sa US gamit ang parehong pag-andar at pagkatapos ay gamitin ang pagpapaandar ng pulseIn () upang makalkula ang tagal ng alon.
Ngayon gamit ang parehong mga lumang pormula maaari naming kalkulahin ang distansya tulad ng sa ibaba
distansya = tagal * 0.034;
Nagtatrabaho:
Gawin ang mga koneksyon tulad ng ipinaliwanag sa programa. Takpan ang bahagi ng Tx ng sensor ng tatanggap tulad ng ipinakita sa larawan. Pagkatapos i-upload ang Transmitter code at tatanggap na code na ibinibigay sa ibaba sa transmiter at tatanggap na Arduino ayon sa pagkakabanggit. Buksan ang serial monitor ng module ng tatanggap at dapat mong mapansin ang distansya sa pagitan ng dalawang mga module na ipinapakita tulad ng ipinakita sa video sa ibaba.
Tandaan: Ang pamamaraang ito ay isang ideolohiya lamang at maaaring hindi tumpak o kasiya-siya. Gayunpaman maaari mong subukan ang improbisyong ideya sa ibaba upang makakuha ng mas mahusay na mga resulta.
Pinagbuting ideya - i-calibrate ang sensor gamit ang isang kilalang distansya:
Ang pamamaraan na ipinaliwanag sa ngayon ay kakatwa ay tila kasiya-siya, subalit sapat ito para sa aking proyekto. Gayunpaman nais kong ibahagi ang mga drawbacks ng pamamaraang ito at isang paraan upang madaig ang mga ito. Ang isang pangunahing sagabal ng pamamaraang ito ay ipinapalagay namin na ang Echo pin ng tatanggap ay nahuhulog kaagad pagkatapos na maihatid ng sensor ng Transmitter ang alon ng US na hindi totoo dahil ang alon ay magtatagal upang maglakbay mula sa transmiter patungo sa tatanggap. Samakatuwid ang Trigger ng transmitter at ang gatilyo ng tatanggap ay hindi magiging perpektong pag-sync.
Upang mapagtagumpayan ito maaari nating i-calibrate ang sensor gamit ang isang alam na distansya nang una. Kung alam ang distansya malalaman natin ang oras na ginugol para maabot ng alon ng US ang tatanggap mula sa transmiter. Panatilihin natin ang oras na ito bilang Del (D) tulad ng ipinakita sa ibaba.
Ngayon ay eksaktong malalaman natin pagkatapos kung gaano karaming oras ang dapat nating gawin ang Trigger pin ng Receiver sa mataas upang ma-sync sa gatilyo ng Transmitter. Ang tagal na ito ay maaaring kalkulahin ng Known Delay (t) - Del (D). Hindi ko nasubukan ang ideyang ito dahil sa mga limitasyon sa oras kaya't hindi ako sigurado kung gaano ito tumpak gagana. Kaya't kung sakaling subukan mo ito ipaalam sa akin ang mga resulta sa pamamagitan ng seksyon ng komento.