- Mga Materyal na Kinakailangan:
- Konsepto ng Obstacle Pag-iwas sa Robot:
- Circuit Diagram at Paliwanag:
- Programming ka ng PIC Microcontroller:
- Obstacle Avoider Robot sa Aksyon:
Ang Obstacle Avoider Robot ay isa pang sikat na robot na nagpapalasa ng mga naka-embed na proyekto. Para sa mga bagong robot ng Umiwas sa balakid, ito ay isang normal na robot na may gulong na maaaring mag-navigate patungo nang hindi tumatama sa anumang mga hadlang. Mayroong maraming mga paraan upang bumuo ng isang Obstacle avoider robot sa proyekto gagamitin namin ang isang Ultrasonic Sensor (harap) at dalawang IR sensor (Kaliwa / Kanan) upang ang aming robot ay may mga mata sa lahat ng tatlong mga direksyon. Sa ganitong paraan maaari mo itong gawing mas matalino at mas mabilis sa pamamagitan ng pagtuklas ng mga bagay sa lahat ng tatlong panig at maneuver nang naaayon. Dito ay hinuhabol namin ang PIC Microcontroller PIC16F877A para sa balakid na pag-iwas sa robot.
Ang pagpapatakbo ng isang balakid na pag-iwas sa robot ay maaaring maobserbahan mula sa isang tunay na oras na produkto na tinatawag na Home cleaning robots. Kahit na ang teknolohiya at mga sensor na ginamit sa mga ito ay mas kumplikado, ang konsepto ay mananatiling pareho. Tingnan natin kung gaano natin magagawa ang paggamit ng aming mga normal na sensor at PIC microcontroller.
Suriin din ang aming iba pang Obstacle Avoiding Robots:
- Raspberry Pi Batay na Balakid Pag-iwas sa Robot
- DIY Smart Vacuum Cleaning Robot gamit ang Arduino
Mga Materyal na Kinakailangan:
- PIC16F877A
- IR Sensor (2Nos)
- Ultrasonic Sensor (1Nos)
- DC Gear Motor (2Nos)
- L293D Motor Driver
- Mga Chaise (Maaari ka ring bumuo ng iyong sariling gamit ang mga karton)
- Power bank (Anumang magagamit na mapagkukunan ng kuryente)
Konsepto ng Obstacle Pag-iwas sa Robot:
Ang konsepto ng Obstacle Avoiding Robot ay napaka-simple. Gumagamit kami ng mga sensor upang makita ang pagkakaroon ng mga bagay sa paligid ng robot at gamitin ang data na ito upang hindi mabangga ang robot sa mga bagay na iyon. Upang makita ang isang Bagay maaari kaming gumamit ng anumang mga sensor gamit tulad ng IR sensor at Ultrasonic sensor.
Sa aming robot ginamit namin ang sensor ng US bilang front sensor at dalawang IR sensor para sa kaliwa at kanan ayon sa pagkakabanggit. Ang robot ay uusad kapag walang bagay na naroroon bago ito. Kaya't ang robot ay susulong hanggang sa makita ng sensor ng Ultrasonic (US) ang anumang object.
Kapag ang isang bagay ay napansin ng sensor ng US, oras na upang baguhin ang direksyon ng robot. Maaari kaming lumiko pakaliwa o pakanan, upang magpasya ang direksyon ng pag-on na ginagamit namin ang tulong ng IR sensor upang suriin kung mayroong anumang bagay na naroroon malapit sa Kaliwa o kanang bahagi ng robot.
Kung mayroong isang tumutol na nakita sa harap at kanang bahagi ng Robot, pagkatapos ang robot ay babalik at kumaliwa. Ginagawa namin ang robot na tumakbo paatras para sa isang tiyak na distansya upang hindi ito mabangga sa bagay habang lumiliko.
Kung mayroong isang tumutol na nakita sa harap at kaliwang bahagi ng Robot, pagkatapos ang robot ay babalik at liko sa kanan.
Kung ang robot ay umabot sa isang sulok ng silid ay makakaramdam ng bagay na naroroon sa lahat ng apat. Sa kasong ito kailangan nating himukin ang robot paatras hanggang sa maging malaya ang alinman sa panig.
Ang isa pang posibleng kaso ay magkakaroon ng isang bagay sa harap ngunit maaaring walang anumang bagay alinman sa kaliwang bahagi o sa kanang bahagi, sa kasong ito kailangan naming random na lumiko sa alinman sa direksyon.
Inaasahan kong makapagbigay ito ng isang magaspang na ideya kung paano gumagana ang isang Obstacle avoider, magpatuloy tayo sa Circuit Diagram upang mabuo ang bot na ito at tangkilikin ito sa aksyon.
Circuit Diagram at Paliwanag:
Ang kumpletong circuit Diagram ng robot na batay sa PIC na pag-iwas sa robot ay ipinapakita sa larawan sa itaas. Tulad ng nakikita mong gumamit kami ng dalawang IR sensor upang makita ang mga bagay sa kaliwa at kanan ng robot ayon sa pagkakabanggit at isang sensor ng Ultrasonic upang masukat ang distansya ng bagay na naroroon nang una sa robot. Gumamit din kami ng isang L293D Motor Driver module upang himukin ang dalawang motor na naroroon sa proyektong ito. Ito ay mga ordinaryong motor na DC gear para sa mga gulong at kaya madali itong makukuha. Tutulungan ka ng sumusunod na talahanayan sa mga koneksyon.
S.Hindi |
Nakakonekta mula sa |
Nakakonekta sa |
1 |
IR sensor Naiwan na pin |
RD2 (pin 21) |
2 |
IR sensor Right out pin |
RD3 (pin 22) |
4 |
Motor 1 Channel Isang pin |
RC4 (pin 23) |
5 |
Motor 1 Channel B pin |
RC5 (pin 25) |
6 |
Motor 2 Channel Isang pin |
RC6 (pin 26) |
7 |
Motor 2 Channel B pin |
RC7 (pin 27) |
8 |
US Trigger Pin |
RB1 (pin 34) |
9 |
US Echo Pin |
RB2 (pin 35) |
Ang isang module ng Driver ng motor tulad ng L293D ay sapilitan sapagkat ang dami ng kasalukuyang kinakailangan para sa pagpapatakbo ng motor na DC gear ay hindi maaring mapagkunan ng I / O na pin ng PIC microcontroller. Ang mga sensor at ang module ay pinalakas ng supply na + 5V na kinokontrol ng 7805. Ang module ng driver ng motor ay maaaring pinalakas kahit na gumagamit ng + 12V, ngunit para sa proyektong ito ay naka-stuck lang ako sa magagamit na + 5V.
Ang kumpletong Robot ay pinalakas ng isang Power bank sa aking kaso. Maaari mo ring gamitin ang anumang ordinaryong power bank at ipasa ang seksyon ng regulator o gamitin ang circuit sa itaas at gumamit ng anumang 9V o 12V na baterya para sa Robot tulad ng ipinakita sa circuit diagram sa itaas. Kapag tapos na ang iyong mga koneksyon ay magmukhang ganito sa ibaba
Programming ka ng PIC Microcontroller:
Ang pagprograma sa iyo ng PIC upang gumana para sa isang Obstacle avoider ay talagang madali. Kailangan lamang nating basahin ang halaga ng tatlong mga sensor na ito at ihimok ang mga Motors nang naaayon. Sa proyektong ito gumagamit kami ng isang sensor ng Ultrasonic. Natutunan na namin kung paano i-interface ang ultrasonic sa PIC microcontroller, kung bago ka dito mabait na bumalik sa tutorial na iyon upang maunawaan kung paano gumagana ang isang sensor ng US sa isang PIC, dahil lalaktawan ko ang mga detalye tungkol dito upang maiwasan ang pag-uulit.
Ang kumpletong programa o ang Robot na ito ay ibinigay sa dulo ng pahinang ito, karagdagang ipinaliwanag ko ang mga mahahalagang tipak ng programa sa ibaba.
Tulad ng alam namin ang lahat ng mga programa ay nagsisimula sa mga deklarasyon ng Input at Output pin. Narito ang Apat na mga pin ng module ng Motor Driver at ang mga Trigger pin ay ang Mga output pin, habang ang Echo pin at dalawang IR out pin ay magiging input. Dapat nating gawing una ang module ng Timer 1 upang magamit ito sa sensor ng Ultrasonic.
TRISD = 0x00; // PORTD idineklarang output para sa interfacing ng LCD TRISB1 = 0; // Trigger pin ng US sensor ay ipinadala bilang output pin TRISB2 = 1; // Echo pin ng US sensor ay itinakda bilang input pin TRISB3 = 0; // RB3 ay output pin para sa LED TRISD2 = 1; TRISD3 = 1; // Parehong ang mga IR sensor pin ay idineklarang input TRISC4 = 0; TRISC5 = 0; // Motor 1 pins na idineklarang output TRISC6 = 0; TRISC7 = 0; // Motor 2 pins na idineklara bilang output T1CON = 0x20;
Sa program na ito kakailanganin naming suriin para sa distansya sa pagitan ng sensor at ng bagay nang madalas, kaya lumikha kami ng isang pagpapaandar na pinangalanang calcul_distance () sa loob na susukatin namin ang distansya ng pamamaraang tinalakay sa tutorial ng interface ng US sensor. Ang code ay ipinapakita sa ibaba
void calcul_distance () // function upang makalkula ang distansya ng US {TMR1H = 0; TMR1L = 0; // clear the timer bits Trigger = 1; __delay_us (10); Trigger = 0; habang (Echo == 0); TMR1ON = 1; habang (Echo == 1); TMR1ON = 0; time_taken = (TMR1L - (TMR1H << 8)); distansya = (0.0272 * time_taken) / 2; }
Ang susunod na hakbang ay upang ihambing ang mga halaga ng Ultrasonic sensor at IR sensor at ilipat ang robot nang naaayon. Dito Sa program na ito nagamit ko ang isang halaga ng cm bilang kritikal na distansya sa ibaba kung saan ang Robot ay dapat magsimulang gumawa ng mga pagbabago sa direksyon. Maaari mong gamitin ang iyong ginustong mga halaga. Kung walang object ang robot ay sumusulong lamang
kung (distansya> 5) {RC4 = 0; RC5 = 1; // Motor 1 forward RC6 = 1; RC7 = 0; // Motor 2 pasulong}
Kung ang isang bagay ay napansin, pagkatapos ang distansya ay pupunta sa ibaba cm. Sa kasong ito isinasaalang-alang namin ang mga halaga ng kaliwa at kanang Ultrasonik sensor. Batay sa halagang ito nagpasya kaming alinman sa kumaliwa o lumiko sa kanan. Ang isang pagkaantala ng ms ay ginagamit upang ang pagbabago ay direksyon ay nakikita.
kung (RD2 == 0 && RD3 == 1 && distansya <= 5) // Naka-block ang kaliwang sensor {back_off (); RC4 = 1; RC5 = 1; // Motor 1 stop RC6 = 1; RC7 = 0; // Motor 2 forward __delay_ms (500); } calcul_distance (); kung (RD2 == 1 && RD3 == 0 && distansya <= 5) // Na-block ang kanang sensor {back_off (); RC4 = 0; RC5 = 1; // Motor 1 forward RC6 = 1; RC7 = 1; // Motor 2 stop __delay_ms (500); }
Minsan ang Ultrasonic sensor ay makakakita ng isang bagay, ngunit walang object na napansin ng mga IR sensor. Sa kasong ito ang robot ay lumiliko sa kaliwa bilang default. Maaari mo rin itong gawing pakanan o sa isang random na direksyon batay sa iyong mga kagustuhan. Kung may mga bagay sa magkabilang panig gawin itong pabalik. Ang code para sa paggawa ng pareho ay ipinapakita sa ibaba.
kinakalkula_distansya (); kung (RD2 == 0 && RD3 == 0 && distansya <= 5) // Ang parehong sensor ay bukas {back_off (); RC4 = 0; RC5 = 1; // Motor 1 forward RC6 = 1; RC7 = 1; // Motor 2 stop __delay_ms (500); } calcul_distance (); kung (RD2 == 1 && RD3 == 1 && distansya <= 5) // Parehong naka-block ang parehong sensor {back_off (); RC4 = 1; RC5 = 0; // Motor 1 reverse RC6 = 1; RC7 = 1; // Motor 2 stop __delay_ms (1000); }
Obstacle Avoider Robot sa Aksyon:
Ang pagtatrabaho ng proyekto ay lubhang kawili-wili at nakakatuwang panoorin. Kapag tapos ka na sa iyong Circuit at Code, kapangyarihan lamang sa iyong Bot at iwanan ito sa lupa. Dapat itong makilala ang mga hadlang at maiiwasan ang mga ito nang matalino. Ngunit, narito ang nakakatuwang bahagi. Maaari mong baguhin ang code at gawin itong mas maraming bagay tulad ng pag-iwas nito sa isang hagdanan, ginagawang mas matalino sa pamamagitan ng pag-iimbak ng mahahalagang liko at ano ang hindi?
Tutulungan ka ng Robot na ito na maunawaan ang pangunahing kaalaman sa pagprograma at alamin kung paano tutugon ang isang aktwal na hardware sa iyong code. Palaging masaya na mai-program ang robot na ito at panoorin kung paano ito kumikilos para sa code sa totoong mundo.
Ginamit namin dito ang parehong PIC perf board na ginawa namin para sa pagpikit ng LED gamit ang PIC microcontroller at ginamit ang board na ito sa iba pang mga proyekto ng PIC Tutorial Series.
Ang iyong robot ay dapat magmukhang katulad sa ipinakita sa larawan sa itaas. Ang kumpletong pagtatrabaho ng proyektong ito ay ipinapakita sa video sa ibaba.
Inaasahan kong naintindihan mo ang proyekto at nasiyahan sa pagbuo ng isa. Kung mayroon kang anumang pag-aalinlangan o natigil maaari mong gamitin ang seksyon ng komento upang mai-post ang iyong mga katanungan at susubukan ko ang aking makakaya sa pagsagot sa kanila.