- Tarvittavat materiaalit:
- Esteiden välttämisen robotin käsite:
- Piirikaavio ja selitys:
- PIC-mikrokontrollerin ohjelmointi:
- Esteentekijärobotti toiminnassa:
Obstacle Avoider Robot on toinen kuuluisa robotti, joka maustaa upotettuja projekteja. Niille, jotka ovat uusia Obstacle avoider -robotteja, se on vain normaali pyöräinen robotti, joka voi navigoida tietä lyömättä esteitä. Esteenkäyttäjärobotti voidaan rakentaa monella tavalla projektissa, jossa aiomme käyttää yhtä ultraäänianturia (edessä) ja kahta IR-anturia (vasen / oikea) niin, että robotillamme on silmät kaikkiin kolmeen suuntaan. Tällä tavoin voit tehdä siitä paljon älykkäämpiä ja nopeampia havaitsemalla esineitä kaikilta kolmelta sivulta ja ohjaamalla sen mukaan. Tässä haastamme PIC-mikrokontrollerin PIC16F877A haasteen esteen välttämiseksi.
Esteitä välttävän robotin toiminta voidaan havaita reaaliaikaisessa tuotteessa nimeltä Kotisiivousrobotit. Vaikka tekniikka ja anturit, joita niissä käytetään, ovat paljon monimutkaisia, konsepti pysyy samana. Katsotaanpa, kuinka paljon voimme saavuttaa käyttämällä normaaleja antureitamme ja PIC-mikrokontrollereitamme.
Tarkista myös muut estettä välttävät robotit:
- Vadelma Pi -perusteinen este robotin välttämisessä
- Tee DIY-älypuhdistusrobotti Arduinolla
Tarvittavat materiaalit:
- PIC16F877A
- IR-anturi (2Nos)
- Ultraäänianturi (1Nos)
- DC-vaihdemoottori (2Nos)
- L293D-moottorin ohjain
- Cheeses (Voit myös rakentaa oman kartongin avulla)
- Virtapankki (kaikki käytettävissä olevat virtalähteet)
Esteiden välttämisen robotin käsite:
Esteen välttämisen robotin käsite on hyvin yksinkertainen. Havaitsemme antureilla esineiden läsnäolon robotin ympärillä, ja näiden tietojen avulla emme törmää robottiin näiden esineiden yli. Kohteen havaitsemiseksi voimme käyttää mitä tahansa käyttöantureita, kuten IR-anturia ja ultraäänianturia.
Robotissamme olemme käyttäneet Yhdysvaltain anturia etuanturina ja kahta IR-anturia vasemmalla ja oikealla. Robotti liikkuu eteenpäin, kun sen edessä ei ole esineitä. Joten robotti liikkuu eteenpäin, kunnes ultraäänitunnistin (USA) havaitsee kohteen.
Kun Yhdysvaltain anturi havaitsee kohteen, on aika muuttaa robotin suuntaa. Voimme joko kääntyä vasemmalle tai oikealle, päättääksemme kääntösuunnan, käytämme IR-anturin avulla tarkistaaksemme onko robottin vasemman tai oikean puolen lähellä esineitä.
Jos robotin etu- ja oikeassa reunassa on havaittu vastustusta, robotti palaa takaisin ja kääntyy vasemmalle. Annamme robotin ajamaan taaksepäin tietyn matkan, jotta se ei törmää esineeseen käännöksen aikana.
Jos robotin edessä ja vasemmalla puolella on havaittu vastustusta, robotti palaa takaisin ja kääntyy oikealle.
Jos robotti saavuttaa huoneen kulman, se havaitsee esineiden olevan kaikissa neljässä. Tässä tapauksessa meidän on ajettava robottia taaksepäin, kunnes jokin sivuista vapautuu.
Toinen mahdollinen tapaus on , että edessä on esine, mutta ei ehkä ole esineitä vasemmalla tai oikealla puolella, tässä tapauksessa meidän on satunnaisesti käännettävä mihin tahansa suuntaan.
Toivottavasti tämä olisi antanut karkean käsityksen siitä, miten Este-avoider toimii, jatketaan nyt piirikaavion kanssa tämän botin rakentamiseksi ja sen nauttimiseksi toiminnassa.
Piirikaavio ja selitys:
Tämän PIC-pohjaisen esteen välttävän robotin täydellinen piirikaavio on esitetty yllä olevassa kuvassa. Kuten näette, olemme käyttäneet kahta infrapuna-anturia robotin vasemmalla ja oikealla puolella olevien kohteiden havaitsemiseen ja ultraäänianturin avulla robotin edessä olevan kohteen etäisyyden mittaamiseen. Olemme käyttäneet myös L293D-moottoriohjainmoduulia kuljettamaan projektissa olevia kahta moottoria. Nämä ovat vain tavallisia pyörien tasavirtamoottoreita, joten ne voidaan johtaa helposti. Seuraava taulukko auttaa sinua yhteyden muodostamisessa.
S. ei |
Yhdistetty |
Yhdistetty |
1 |
IR-anturi Vasen uloke |
RD2 (tappi 21) |
2 |
IR-anturi Oikea ulostulo |
RD3 (tappi 22) |
4 |
Moottori 1 kanava A tappi |
RC4 (tappi 23) |
5 |
Moottori 1 kanava B-nasta |
RC5 (tappi 25) |
6 |
Moottorin 2 kanavan A tappi |
RC6 (tappi 26) |
7 |
Moottorin 2 kanavan B tappi |
RC7 (tappi 27) |
8 |
Yhdysvaltain liipaisintappi |
RB1 (tappi 34) |
9 |
Yhdysvaltain kaiku |
RB2 (tappi 35) |
Moottorin ohjainmoduuli, kuten L293D, on pakollinen, koska PIC-mikrokontrollerin I / O-nasta ei voi hankkia DC-moottorin käyttämiseen tarvittavaa virran määrää. Anturit ja moduuli saavat virtansa + 5 V: n virtalähteestä, jota säätelee 7805. Moottorin ohjainmoduulia voidaan käyttää virralla jopa + 12 V: lla, mutta tässä projektissa olen juuri jättänyt kiinni käytettävissä olevaan + 5 V: een.
Täydellinen robotti saa virtansa PowerBank minun tapauksessani. Voit myös käyttää mitä tahansa tavallista virtapankkia ja ohittaa säätimen osan tai käyttää yllä olevaa virtapiiriä ja käyttää mitä tahansa 9 V: n tai 12 V: n akkua robotille, kuten yllä olevassa piirikaaviossa on esitetty. Kun yhteytesi on tehty, se näyttää tältä alla
PIC-mikrokontrollerin ohjelmointi:
PIC: n ohjelmointi työskentelemään Obstacle avoiderille on todella helppoa. Meidän on vain luettava näiden kolmen anturin arvo ja käytettävä moottoreita vastaavasti. Tässä projektissa käytämme ultraäänianturia. Olemme jo oppineet käyttämään ultraääniä PIC-mikrokontrollerilla, jos olet uusi täällä, palaa takaisin tähän opetusohjelmaan ymmärtämään, kuinka yhdysvaltalainen anturi toimii PIC: n kanssa, koska ohitan yksityiskohdat täällä välttääksesi toistumisen.
Täydellinen ohjelma tai tämä robotti annetaan lopussa tämän sivun, olen selvitti edelleen tärkeä paloina ohjelman alla.
Kuten tiedämme, kaikki ohjelmat alkavat Input and Output pin -ilmoituksilla. Tässä Motor Driver -moduulin neljä nastaa ja Trigger-nastat ovat Output-nastat, kun taas Echo-nasta ja kaksi IR-lähtö-nastaa syötetään. Meidän tulisi alustaa Timer 1 -moduuli, jotta sitä voidaan käyttää ultraäänianturin kanssa.
TRISD = 0x00; // PORTD ilmoitettu LCD TRISB1 -liitännän ulostuloksi = 0; // Yhdysvaltain anturin liipaisintappi lähetetään lähtönastana TRISB2 = 1; // Yhdysvaltain anturin kaiutappi on asetettu tulotapiksi TRISB3 = 0; // RB3 on LED TRISD2: n lähtötappi = 1; TRISD3 = 1; // Molemmat IR-anturitapit ilmoitetaan tulona TRISC4 = 0; TRISC5 = 0; // Moottorin 1 nastat ilmoitettu lähtöön TRISC6 = 0; TRISC7 = 0; // Moottori 2 nastaa ilmoitettu lähtöön T1CON = 0x20;
Tässä ohjelmassa joudumme tarkistamaan anturin ja kohteen välisen etäisyyden melko usein, joten olemme luoneet funktion nimeltä Laske_etäisyys (), jonka sisällä mitataan etäisyys Yhdysvaltojen anturien rajapinnan opetusohjelmassa käsitellyllä menetelmällä. Koodi näkyy alla
void calc_distance () // funktio laskemaan etäisyys US {TMR1H = 0; TMR1L = 0; // tyhjennä ajastinbitti Trigger = 1; __viive_us (10); Trigger = 0; kun (Kaiku == 0); TMR1ON = 1; kun (Kaiku == 1); TMR1ON = 0; käytetty aika = (TMR1L - (TMR1H <8)); etäisyys = (0,0272 * käytetty aika) / 2; }
Seuraava askel olisi vertailla ultraäänianturin ja infrapunatunnistimen arvoja ja liikuttaa robottia vastaavasti. Tässä Tässä ohjelmassa olen käyttänyt cm: n arvoa kriittisenä etäisyytenä, jonka alapuolella robotin tulisi alkaa muuttaa suuntaa. Voit käyttää haluamiasi arvoja. Ellei esineitä ole, robotti vain liikkuu eteenpäin
jos (etäisyys> 5) {RC4 = 0; RC5 = 1; // Moottori 1 eteenpäin RC6 = 1; RC7 = 0; // moottori 2 eteenpäin}
Jos kohde havaitaan, etäisyys laskee alle cm: n. Tässä tapauksessa otetaan huomioon vasemman ja oikean ultraäänianturin arvot. Tämän arvon perusteella päätämme kääntyä vasemmalle tai oikealle. Ms: n viivettä käytetään niin, että muutos on suunnassa.
if (RD2 == 0 && RD3 == 1 && etäisyys <= 5) // Vasen anturi on estetty {back_off (); RC4 = 1; RC5 = 1; // Moottorin 1 pysäytys RC6 = 1; RC7 = 0; // Moottori 2 eteenpäin __viive_ms (500); } Laske etäisyys (); if (RD2 == 1 && RD3 == 0 && etäisyys <= 5) // Oikea anturi on estetty {back_off (); RC4 = 0; RC5 = 1; // Moottori 1 eteenpäin RC6 = 1; RC7 = 1; // Moottorin 2 pysäytys __viive_ms (500); }
Joskus ultraäänianturi havaitsi kohteen, mutta infrapunatunnistimet eivät havaitse mitään. Tässä tapauksessa robotti kääntyy oletuksena vasemmalle. Voit myös saada sen kääntymään oikealle tai satunnaisessa suunnassa mieltymystesi mukaan. Jos molemmilla puolilla on esineitä, teemme sen taaksepäin. Koodi saman tekemiseksi näkyy alla.
Laske etäisyys (); if (RD2 == 0 && RD3 == 0 && etäisyys <= 5) // Molemmat anturit ovat auki {back_off (); RC4 = 0; RC5 = 1; // Moottori 1 eteenpäin RC6 = 1; RC7 = 1; // Moottorin 2 pysäytys __viive_ms (500); } Laske etäisyys (); if (RD2 == 1 && RD3 == 1 && etäisyys <= 5) // Molemmat anturit on estetty {back_off (); RC4 = 1; RC5 = 0; // Moottori 1 taaksepäin RC6 = 1; RC7 = 1; // Moottorin 2 pysäytys __viive_ms (1000); }
Esteentekijärobotti toiminnassa:
Projektin työskentely on erittäin mielenkiintoista ja hauskaa katsella. Kun olet valmis piirisi ja koodisi kanssa, kytke vain botti päälle ja jätä se maahan. Sen pitäisi pystyä tunnistamaan esteet ja välttämään niitä älykkäästi. Mutta tässä tulee hauska osa. Voit muokata koodia ja tehdä siitä enemmän asioita, kuten saada se välttämään portaita, tekemään siitä älykkäämpi tallentamalla arvokkaita käännöksiä ja mitä ei?
Tämä robotti auttaa sinua ymmärtämään ohjelmoinnin perustiedot ja oppimaan, kuinka todellinen laitteisto reagoi koodiin. On aina hauskaa ohjelmoida tämä robotti ja katsoa kuinka se käyttäytyy koodin suhteen reaalimaailmassa.
Tässä olemme käyttäneet samaa PIC perf -levyä, jonka olemme tehneet LED-merkkivalon vilkkumiseen PIC-mikrokontrollerilla, ja käytimme tätä levyä muissa PIC Tutorial -sarjan projekteissa.
Robotisi tulisi näyttää jotain samanlaiselta kuin yllä olevassa kuvassa. Tämän projektin täydellinen työskentely on esitetty alla olevassa videossa.
Toivottavasti ymmärrät projektin ja nautit sen rakentamisesta. Jos sinulla on epäilyksiä tai juutut jumiin, voit lähettää kysymyksesi kommenttiosion avulla ja yritän parhaani vastata niihin.