Paano Masusukat ang Distansya sa Pagitan ng Dalawang Punto Gamit ang Arduino?

Sa Elektronika, kadalasang ginagamit ang Mga Ultrasonic Sensor upang masukat ang distansya mula sa isang partikular na punto patungo sa isa pa. Napakadali na magsulat ng isang code sa Arduino board at isama ang isang ultrasonic sensor upang maisakatuparan ang gawaing ito. Ngunit sa artikulong ito, magkakaroon kami ng ibang diskarte. Gagamitin namin ang dalawang magkakahiwalay na mga ultrasonic sensor na isasama sa dalawang magkakahiwalay na Arduino. Ang dalawang modyul na ito ay ilalagay sa dalawang magkakaibang puntos sa pagitan ng kung saan ang sukat ay susukat. Ang isang sensor ay gagawing isang tatanggap at ang isa pa ay gagawin na isang transmiter. Sa pamamagitan nito, masusukat natin ang distansya sa pagitan ng mga ito sa pamamagitan lamang ng paghanap ng posisyon ng transmiter sa pamamagitan ng paggamit ng maraming mga ultrasonic receiver. Ang diskarteng ginagamit namin dito ay tinawag Triangulasyon.



Pagsukat sa Distansya Gamit ang Arduino

Ang diskarteng ginamit dito ay kapaki-pakinabang lamang sa mga maliliit na sistema ng scale kung saan matatagpuan ang isang maliit na distansya. Upang maipatupad ito sa isang malaking sukat, tiyak na kinakailangan ng ilang mga pagbabago. Ang lahat ng mga hamon na kinakaharap habang isinasagawa ang proyektong ito ay tinalakay sa ibaba.



Paano Gumamit ng Arduino at Ultrasonic Sensor Upang Sukatin ang Distansya?

Tulad ng nalalaman natin ang buod sa likod ng proyekto, magpatuloy tayo at mangalap ng karagdagang impormasyon upang masimulan ang proyekto.



Hakbang 1: Pagtitipon sa Mga Bahagi (Hardware)

Kung nais mong maiwasan ang anumang abala sa gitna ng anumang proyekto, ang pinakamahusay na diskarte ay ang gumawa ng isang kumpletong listahan ng lahat ng mga sangkap na gagamitin namin. Ang pangalawang hakbang, bago simulang gawin ang circuit, ay dumaan sa isang maikling pag-aaral ng lahat ng mga sangkap na ito. Ang isang listahan ng lahat ng mga bahagi na kailangan namin sa proyektong ito ay ibinibigay sa ibaba.



  • Jumper Wires
  • 5V AC hanggang DC Adapter (x2)

Hakbang 2: Pagtitipon sa Mga Bahagi (Software)

  • Proteus 8 Professional (Maaaring ma-download mula sa Dito )

Pagkatapos i-download ang Proteus 8 Professional, idisenyo ang circuit dito. Isinama ko rito ang mga simulation ng software upang maaaring maginhawa para sa mga nagsisimula na idisenyo ang circuit at gumawa ng mga naaangkop na koneksyon sa hardware.

Hakbang 3: Paggawa ng The HCR-05

Tulad ng nalalaman natin ngayon ang pangunahing abstract ng aming proyekto, magpatuloy tayo at dumaan sa isang maikling pag-aaral ng pagtatrabaho ng HCR-05 . Maaari mong maunawaan ang pangunahing pagtatrabaho ng sensor na ito sa pamamagitan ng sumusunod na diagram.

Ang sensor na ito ay may dalawang mga pin, gatilyo pin, at eco pin parehong ginagamit upang sukatin ang distansya sa pagitan ng dalawang partikular na puntos. Ang proseso ay sinimulan sa pamamagitan ng pagpapadala ng isang ultrasonic alon mula sa sensor. Ang gawaing ito ay ginagawa sa pamamagitan ng pag-trigger ng trig pin para sa 10us. Ang isang 8 sonik na pagsabog ng mga ultrasonikong alon ay ipinadala mula sa transmiter sa sandaling tapos na ang gawaing ito. ang alon na ito ay maglalakbay sa himpapawid at sa sandaling maabot nito ang isang bagay sa kanyang paraan, babalik ito at tatanggapin ng receiver na nakabuo sa sensor.



Kapag ang ultrasonic alon ay tatanggapin ng tatanggap pagkatapos sumasalamin ng sensor, ilalagay nito ang eco pin sa isang mataas na estado. Ang pin na ito ay mananatili sa mataas na estado para sa tagal ng oras na eksaktong katumbas ng oras na kinuha ng ultrasonikong alon upang maglakbay mula sa transmiter at bumalik sa tatanggap ng sensor.

Upang gawin ang iyong ultrasonic sensor transmiter lamang, gawin lamang ang trig pin bilang iyong output pin at magpadala ng isang mataas na pulso sa pin na ito para sa 10us. Ang isang pagsabog ng ultrasonik ay sisimulan kaagad sa oras na ito ay tapos na. Kaya, tuwing ang alon ay nais na mailipat, ang pin ng gatilyo lamang ng ultrasonic sensor ay dapat kontrolin.

Walang paraan upang gawin ang ultrasonic sensor bilang a tatanggap lang dahil ang pagtaas ng pin ng ECO ay hindi makokontrol ng microcontroller sapagkat ito ay nauugnay sa trig pin ng sensor. Ngunit may isang bagay na maaari nating gawin ay, maaari nating sakupin ang transmitter ng ultrasonikong sensor na ito gamit ang duct tape s na walang UV wave na makakalabas. Pagkatapos ang ECO pin ng transmiter na ito ay hindi maaapektuhan ng transmiter.

Hakbang 4: Paggawa ng Circuit

Ngayon, sa paggawa namin ng parehong mga sensor upang gumana nang hiwalay bilang isang transmiter at isang tatanggap, mayroong isang malaking problema na kinakaharap dito. Hindi malalaman ng tatanggap ang oras na kinuha ng ultrasonikong alon upang maglakbay mula sa transmiter patungo sa tatanggap dahil hindi nito alam eksakto kung kailan nailipat ang alon na ito.

Upang malutas ang problemang ito, ang dapat nating gawin ay ang magpadala ng a TAAS signal sa ECO ng tatanggap sa sandaling maipadala ang ultrasonik na alon sa transmiter sensor. O sa simpleng mga salita, maaari nating sabihin na ang ECO ng tatanggap at ang gatilyo ng transmiter ay dapat na ipadala sa TAAS nang sabay-sabay. Kaya, upang makamit ito, kahit papaano ay gagawin nating mataas ang gatilyo ng tatanggap sa lalong madaling mataas ang gatilyo ng transmiter. Ang gatilyo ng tatanggap na ito ay mananatiling mataas hanggang sa mawala ang ECO pin MABABA . Kapag ang isang signal na ultrasonic ay tatanggapin ng ECO pin ng tatanggap, ito ay magiging Mababa. Mangangahulugan ito na ang nag-trigger ng sensor ng transmitter ay nakakuha lamang ng isang TAAS na signal. Ngayon, sa sandaling bumaba ang ECO, maghihintay kami para sa kilalang pagkaantala at mailalagay ang TAAS na nag-uudyok ng tatanggap. Sa pamamagitan nito, ang mga pag-trigger ng parehong mga sensor ay mai-sync at ang distansya ay makakalkula sa pamamagitan ng pag-alam sa pagkaantala ng oras ng paglalakbay ng alon.

Hakbang 5: Pagtitipon ng Mga Bahagi

Kahit na gumagamit lamang kami ng transmiter ng isang ultrasonic sensor at ang tatanggap ng iba pa, ngunit sapilitan upang ikonekta ang lahat ng apat na mga pin ng ultrasonic sensor sa Arduino. Upang ikonekta ang circuit, sundin ang mga hakbang na ibinigay sa ibaba:

  1. Kumuha ng dalawang mga ultrasonic sensor. Takpan ang tatanggap ng unang sensor at ang transmiter ng pangalawang sensor. Gumamit ng puting maliit na tubo ng tape para sa hangaring ito at tiyakin na ang dalawang ito ay ganap na natatakpan upang walang signal na umalis sa transmiter ng pangalawang sensor at walang signal na makukuha sa tatanggap ng unang sensor.
  2. Ikonekta ang dalawang Arduino sa dalawang magkakahiwalay na mga breadboard at ikonekta ang kani-kanilang mga sensor sa kanila. Ikonekta ang gatilyo na Pin sa pin9 ng Arduino at ecoPin sa pin10 ng Arduino. Palakasin ang ultrasonikong sensor ng 5V ng Arduino at karaniwang lahat ng mga batayan.
  3. I-upload ang code ng tatanggap sa Arduino ng Tagatanggap at ang transmitter code sa Arduino ng transmiter.
  4. Ngayon buksan ang serial monitor ng tumatanggap na bahagi at tandaan ang distansya na sinusukat.

Ang circuit diagram ng proyektong ito ay katulad ng:

Diagram ng Circuit

Hakbang 6: Pagsisimula Sa Arduino

Kung hindi ka pa pamilyar sa Arduino IDE, huwag mag-alala dahil ang isang hakbang-hakbang na pamamaraan upang mai-set up at gamitin ang Arduino IDE sa isang board ng microcontroller ay ipinaliwanag sa ibaba.

  1. I-download ang pinakabagong bersyon ng Arduino IDE mula sa Arduino.
  2. Ikonekta ang iyong Arduino Nano board sa iyong laptop at buksan ang control panel. sa control panel, mag-click sa Hardware at Sound . Ngayon mag-click sa Mga devices at Printers. Dito, hanapin ang port kung saan nakakonekta ang iyong board ng microcontroller. Sa aking kaso ito ay COM14 ngunit iba ito sa iba`t ibang mga computer.

    Paghanap ng Port

  3. Mag-click sa menu ng Tool. at itakda ang board sa Arduino Nano mula sa drop-down na menu.

    Setting Board

  4. Sa parehong menu ng Tool, itakda ang port sa numero ng port na iyong naobserbahan dati sa Mga devices at Printers .

    Setting Port

  5. Sa parehong menu ng Tool, Itakda ang Proseso sa ATmega328P (Matanda Bootloader ).

    Nagpoproseso

  6. I-download ang code na nakalakip sa ibaba at i-paste ito sa iyong Arduino IDE. Mag-click sa i-upload pindutan upang sunugin ang code sa iyong board ng microcontroller.

    I-upload

Upang mai-download ang code, pindutin dito.

Hakbang 7: Pag-unawa sa Code

Ang code na ginamit sa proyektong ito ay napaka-simple at medyo nagkomento. Mayroong dalawang mga file ng mga code sa naka-attach na folder. Ang code para sa transmiter at isang code para sa panig ng tatanggap ay parehong ibinibigay nang magkahiwalay. I-upload namin ang mga code na ito sa pareho ng kani-kanilang mga board ng Arduino. Bagaman ito ay nagpapaliwanag sa sarili, maikling ito ay inilarawan sa ibaba.

Code Para sa Transmitter Side

1. Sa pagsisimula, ang mga pin ng board ng Arduino ay naisimulan na makokonekta sa Ultrasonic Sensor. Pagkatapos ang mga variable ay ipinahayag na kung saan ay gagamitin upang mag-imbak ng mga halaga para sa pagkalkula ng oras at distansya sa panahon ng pagpapatakbo ng code.

// tinutukoy ang mga numero ng mga pin ayon sa int trigPin = 9; // ikonekta ang trig pin ng ultrasonic sensor sa pin9 ng Arduino const int echoPin = 10; // Ikonekta ang eco pin ng ultrasonic sensor sa pin10 ng Arduino // na tumutukoy sa mga variable na mahaba ang tagal; // variable upang maiimbak ang oras na ginugol ng ultrasonic wave t travel int distansya; // variable upang makalkula ang distansya ng tindahan

2. walang bisa ang pag-setup () ay isang pagpapaandar na tumatakbo lamang ng isang beses sa simula kapag pinapagana ng board s o ang pindutan ng paganahin ay pinindot. Dito kapwa ang mga pin ng Arduino ay ipinahayag na gagamitin bilang INPUT at OUTPUT . Ang Baudrate ay nakatakda sa pagpapaandar na ito. Ang rate ng baud ay ang bilis ng mga piraso bawat segundo kung saan nakikipag-usap ang microcontroller sa ultrasonic sensor.

void setup () {pinMode (trigPin, OUTPUT); // Itinatakda ang trigPin bilang isang Output pinMode (echoPin, INPUT); // Itinatakda ang echoPin bilang isang Input Serial.begin (9600); // Nagsisimula ang serial communication}

3. walang bisa loop () ay isang pagpapaandar na tumatakbo muli at muli sa isang loop. Narito namin naka-code ang microcontroller upang magpadala ito ng isang TAAS na signal sa Trigger pin ng ultrasonic sensor, wits para sa 20 microseconds at magpadala ng isang LOW signal dito.

void loop () {// Itinatakda ang trigPin sa TAAS na estado sa loob ng 10 micro segundo digitalWrite (trigPin, HIGH); // send a HIGH signal on the trigger of first sensor delayMicroseconds (10); // maghintay ng 10 micro segundo digitalWrite (trigPin, LOW); // send a LOW signal to the gatilyo ng unang pagkaantala ng sensor (2); // maghintay ng 0.2 segundo}

Code Para sa panig ng Tagatanggap

1. Sa pagsisimula, ang mga pin ng board ng Arduino ay naisimulan na makokonekta sa Ultrasonic Sensor. Pagkatapos ang mga variable ay ipinahayag na kung saan ay gagamitin upang mag-imbak ng mga halaga para sa pagkalkula ng oras at distansya sa panahon ng pagpapatakbo ng code.

// tinutukoy ang mga numero ng mga pin ayon sa int trigPin = 9; // ikonekta ang trig pin ng ultrasonic sensor sa pin9 ng Arduino const int echoPin = 10; // Ikonekta ang eco pin ng ultrasonic sensor sa pin10 ng Arduino // na tumutukoy sa mga variable na mahaba ang tagal; // variable upang maiimbak ang oras na ginugol ng ultrasonic wave t travel int distansya; // variable upang makalkula ang distansya ng tindahan

2. walang bisa ang pag-setup () ay isang pagpapaandar na tumatakbo lamang ng isang beses sa simula kapag pinapagana ng board s o ang pindutan ng paganahin ay pinindot. Dito kapwa ang mga pin ng Arduino ay idineklarang gagamitin bilang INPUT at OUTPUT. Ang Baudrate ay nakatakda sa pagpapaandar na ito. Ang rate ng baud ay ang bilis ng mga piraso bawat segundo kung saan nakikipag-usap ang microcontroller sa ultrasonic sensor.

void setup () {pinMode (trigPin, OUTPUT); // Itinatakda ang trigPin bilang isang Output pinMode (echoPin, INPUT); // Itinatakda ang echoPin bilang isang Input Serial.begin (9600); // Nagsisimula ang serial communication}

3. walang bisa ang Trigger_US () ay isang pagpapaandar na tatawagin para sa Fake Triggering ng trig pin ng pangalawang ultrasonic sensor. Sasa-sync namin ang oras ng pag-trigger ng trig pin ng parehong mga sensor.

void Trigger_US () {// Fake trigger ang US sensor digitalWrite (trigPin, HIGH); // Magpadala ng isang mataas na signal sa gatilyo pin ng Pangalawang sensor pagkaantalaMicroseconds (10); // maghintay para sa 10 micro secnds digitalWrite (trigPin, LOW); // send a LOW signal to the trigger pin pangalawang nagpadala}

Apat. walang bisa ang Calc () ay isang pagpapaandar na ginagamit upang makalkula ang oras na kinuha ng signal ng ultrasonic upang maglakbay mula sa unang sensor hanggang sa pangalawang sensor.

walang bisa ang Calc () // function upang patahimikin ang oras na ginugol ng ultrasonikong alon upang maglakbay {tagal = 0; // tagal ng una na itinakda sa zero Trigger_US (); // call the Trigger_US function habang (digitalRead (echoPin) == TAAS); // habang ang katayuan ng eo pin sa mataas na pagkaantala (2); // maglagay ng pagkaantala ng 0.2 segundo Trigger_US (); // call the Trigger_US function duration = pulseIn (echoPin, HIGH); // calulate the time time}

5. Dito sa walang bisa loop () pagpapaandar, kinakalkula namin ang distansya sa pamamagitan ng paggamit ng oras na kinuha ng signal ng ultrasonic upang maglakbay mula sa unang sensor hanggang sa pangalawang sensor.

void loop () {Pdistansya = distansya; Calc (); // call the Calc () function distansya = tagal * 0.034; // calulate ang distansya na sakop ng alon ng ultrasonic kung (Pdistance == distansya || Pdistance == distansya + 1 || Pdistance == distansya-1) {Serial.print ('Sinukat ang Distansya:'); // print sa serial monitor Serial.println (distansya / 2); // print sa serial monitor} //Serial.print('Distansya: '); //Serial.println(distansya/2); pagkaantala (500); // maghintay ng 0.5 segundo}