- Koncept linijskega sledilnega robota
- Potrebne komponente
- Shema vezja
- Programiranje Atmega16 za Line Follower Robot
Tu bomo gradili še en projekt z mikrokrmilnikom AVR Atmega16. Če mikrokrmilniki AVR ne poznate, se lahko sklicujete na prejšnje projekte in vadnice AVR.
Izdelava robota je vedno navdušenje za vse ljubitelje elektronike. In to vznemirjenje je mogoče povečati, če lahko robot samodejno naredi nekatere stvari brez kakršnih koli zunanjih navodil. Eden najpogosteje izdelanih robotov za začetnike elektronike je Line Follower Robot. Kot že ime pove, bo robot sledil črti, narisani na površini. Črte ni treba, da je ravna črta. Tudi črte so lahko poljubnih barv.
Pred tem smo zgradili projekte Line Follower Robot z različnimi krmilniki:
- Robot za sledenje linij z mikrokrmilnikom 8051
- Robot za sledenje linij z uporabo mikrokrmilnika PIC
- Robot sledilca linije, ki uporablja Arduino
- Line Follower Robot z uporabo Raspberry Pi
- Robot sledilca linij z lansirno ploščico MSP430
Danes bomo uporabili mikrokrmilnik AVR za izdelavo Robota, ki sledi liniji.
Za zaznavanje vodov se uporabljajo večinoma IR senzorji. IR senzorji dobro zaznavajo bele ali črne površine. Čeprav lahko uporabite druge dovršene senzorje, ki bodo lahko zaznali vse barve in lahko izdelajo robota, ki bo sledil vsem barvnim črtam. Robot bi moral biti sposoben zaznati črto, tudi če je pot spremenjena s spreminjanjem kota, in še naprej slediti črti. Prav tako se mora ustaviti, kjer koli je postajališče v vrsti.
Roboti s sledilnimi črtami se danes v veliki meri uporabljajo v predelovalnih industrijah, medicini, domači industriji in skladišču blaga. Roboti niso omejeni samo na te aplikacije in jih lahko razširijo na številne prihodnje aplikacije.
Koncept linijskega sledilnega robota
IR senzorji so ključni igralec tega projekta. IR senzorji so nameščeni na sprednji strani robota za sledenje narisani črni črti in površini. Robot je nameščen med vrvico in s pomočjo IR senzorjev robot sledi liniji. IR senzorji odčitavajo odčitke mikrokrmilniku, s pomočjo IR odčitavanja pa mikrokrmilnik premika motorje v levo ali desno stran in znova pripelje robota na pot.
Line Follower Robot lahko sledi liniji s pomočjo IR senzorja. Ta senzor ima IR oddajnik in IR sprejemnik. IR oddajnik (IR LED) oddaja svetlobo in sprejemnik (fotodioda) čaka, da se oddana svetloba vrne nazaj. IR svetloba se bo vrnila nazaj le, če jo odbija površina. Medtem pa vse površine ne odbijajo IR svetlobe, le bela barvna površina jih lahko popolnoma odbije, črna barvna površina pa jih bo popolnoma opazovala, kot prikazuje spodnja slika. Več o modulu IR senzorja preberite tukaj.
Zdaj bomo z dvema IR senzorjema preverili, ali je robot na progi, in dva motorja za popravilo robota, če se premakne iz tira. Ti motorji zahtevajo visok tok in bi morali biti dvosmerni; zato uporabljamo modul pogonskega motorja, kot je L293D. Potrebovali bomo tudi mikrokrmilnik, kot je ATmega16, ki daje navodila motorjem na podlagi vrednosti iz IR senzorja. Poenostavljen blokovni diagram istega je prikazan spodaj.
Ta dva IR senzorja bosta nameščena na obeh straneh črte. Če noben senzor ne zazna črne črte, mikrokrmilnik AVR naroči motorjem, naj se premaknejo naprej, kot je prikazano spodaj
Če se levi senzor prikaže na črni črti, potem mikrokrmilnik naroči robotu, da zavije levo, tako da sam zavrti desno kolo.
Če desni senzor prihaja na črno črto, potem mikrokrmilnik naroči robotu, da zavije desno, tako da sam zavrti levo kolo.
Če sta oba senzorja na črni črti, se robot ustavi.
Tako bo Robot lahko sledil črti, ne da bi prišel izven proge. Zdaj pa poglejmo, kako izgledata vezje in koda.
Potrebne komponente
- Enosmerni motorji (2 enoti)
- IR senzorski modul (2 enoti)
- Modul L293D
- Brezžični vir energije (npr. Baterija, napajalnik)
- Robotski ležalniki
- IC mikrokrmilnik Atmega16
- Kristalni oscilator 16 MHz
- Dva kondenzatorja 100nF
- Dva kondenzatorja 22pF
- Pritisni gumb
- Jumper žice
- Breadboard
- USBASP v2.0 (za programiranje Atmega16)
Shema vezja
Povežite vse komponente, kot je prikazano spodaj v vezju
Programiranje Atmega16 za Line Follower Robot
Tu je Atmega16 programiran z uporabo USBASP in Atmel Studio7.0. Če ne veste, kako lahko Atmega16 programirate s pomočjo USBASP, obiščite povezavo. Celoten program je podan na koncu projekta, samo naložite program v Atmega16 z uporabo programerja JTAG in Atmel Studio 7.0, kot je razloženo v prejšnji vadnici.
Kodo smo poskušali ohraniti čim krajši in preprostejši. Torej v tej kodi uporabljamo Makre in posebne registre funkcij.
if (bit_is_clear (PINA , leftSen)) { // preverite, če je levi senzor izklopljen
Ta izjava preveri, ali je PA0, kjer je priključen levi senzor, LOW ali HIGH.
Če želite izvedeti več o tej izjavi in drugih makrih, pojdite na to povezavo
Za branje IR senzorjev upoštevamo štiri pogoje. IR senzorji so poimenovani glede na njihovo namestitev pred robotom. Levi IR je levi senzor, desni IR pa desni senzor. Naslednji pogoji bodo določali gibanje robota.
Kodo smo napisali v skladu z zgoraj navedenimi pogoji. Sprememba je le v tem, da za pogon obeh motorjev uporabljamo samo dva vhodna zatiča L293D.
Celotna koda z demonstracijskim videoposnetkom je navedena spodaj.