- Līnijas sekotāja robota jēdziens
- Nepieciešamās sastāvdaļas
- Ķēdes shēma
- Atmega16 programmēšana līnijas sekotāja robotam
Šeit mēs veidosim vēl vienu projektu ar AVR Atmega16 mikrokontrolleru. Ja AVR mikrokontrolleri jums ir jauni, varat atsaukties uz iepriekšējiem AVR projektiem un apmācībām.
Robota uzbūve vienmēr ir saviļņojums visiem elektronikas hobijiem. Un šo saviļņojumu var palielināt, ja robots var automātiski paveikt dažas darbības bez jebkādiem ārējiem norādījumiem. Viens no elektronikas iesācēju visbiežāk uzbūvētajiem robotiem ir Line Follower Robot. Kā norāda nosaukums, robots sekos līnijai, kas novilkta uz virsmas. Līnijai nav jābūt taisnai. Arī līnijas var būt jebkuras krāsas.
Iepriekš mēs veidojām robotu līnijas sekotājus, izmantojot dažādus kontrollerus:
- Līnijas sekotāja robots, izmantojot mikrokontrolleru 8051
- Līnijas sekotāja robots, izmantojot PIC mikrokontrolleru
- Līnijas sekotāja robots, izmantojot Arduino
- Līnijas sekotāja robots, izmantojot Raspberry Pi
- Līnijas sekotāja robots, izmantojot MSP430 Launchpad
Šodien mēs izmantosim AVR mikrokontrolleru, lai izveidotu līnijas sekotāja robotu.
Līniju noteikšanai galvenokārt tiek izmantoti infrasarkanie sensori. IR sensori labi nosaka baltas vai melnas virsmas. Lai gan jūs varat izmantot citus izsmalcinātus sensorus, kas spēs noteikt visas krāsas un var izveidot robotu, kas var sekot visām krāsu līnijām. Robotam jāspēj noteikt līniju, pat ja ceļš tiek mainīts, mainot leņķi, un turpina sekot līnijai. Turklāt tai vajadzētu apstāties visur, kur pieturvieta nonāk līnijā.
Līniju sekotāju roboti mūsdienās tiek plaši izmantoti ražošanas nozarēs, medicīnas, sadzīves lietojumos un preču noliktavās. Roboti neaprobežojas tikai ar šīm lietojumprogrammām, un tos var paplašināt daudzās turpmākajās lietojumprogrammās.
Līnijas sekotāja robota jēdziens
IR sensori ir galvenais dalībnieks šajā projektā. IR sensori tiek novietoti robota priekšpusē, lai izsekotu uzzīmēto melno līniju un virsmu. Robots ir novietots starp līniju, un ar IR sensoru palīdzību robots seko līnijai. IR sensori nodrošina atgriezenisko saiti ar mikrokontrolleru, un ar infrasarkanās staru nolasīšanas palīdzību mikrokontrolleris pārvieto motorus pa kreisi vai pa labi un atkal noved robotu uz ceļa.
Līnijas sekotāja robots spēj izsekot līniju ar IR sensora palīdzību. Šim sensoram ir IR raidītājs un IR uztvērējs. IR raidītājs (IR LED) pārraida gaismu, un uztvērējs (fotodiods) gaida, kamēr raidītā gaisma atgriezīsies. IR gaisma atgriezīsies tikai tad, ja to atstaro virsma. Tā kā visas virsmas neatspoguļo infrasarkano gaismu, tikai baltā krāsaina virsma tos var pilnībā atspoguļot, un melnā krāsa to pilnībā novēros, kā parādīts attēlā zemāk. Uzziniet vairāk par IR sensoru moduli šeit.
Tagad mēs izmantosim divus IR sensorus, lai pārbaudītu, vai robots ir ceļā ar līniju, un divus motorus, lai labotu robotu, ja tas pārvietojas ārpus ceļa. Šiem motoriem nepieciešama liela strāva, un tiem jābūt divvirzienu; tāpēc mēs izmantojam motora draivera moduli, piemēram, L293D. Mums būs nepieciešams arī mikrokontrolleris, piemēram, ATmega16, lai instruētu motorus, pamatojoties uz vērtībām no IR sensora. Vienkāršota tā paša diagramma ir parādīta zemāk.
Šie divi IR sensori tiks izvietoti pa vienam abās līnijas pusēs. Ja neviens no sensoriem nenosaka melnu līniju, tad AVR mikrokontrolleris liek motoriem virzīties uz priekšu, kā parādīts zemāk
Ja kreisais sensors nāk uz melnās līnijas, mikrokontrolleris uzdod robotam pagriezties pa kreisi, vien pagriežot labo riteni.
Ja labais sensors nāk uz melnās līnijas, mikrokontrolleris uzdod robotam pagriezties pa labi, vien pagriežot kreiso riteni.
Ja abi sensori nonāk melnā līnijā, robots apstājas.
Tādā veidā Robots varēs sekot līnijai, nenokļūstot ārpus trases. Tagad ļaujiet mums redzēt, kā izskatās ķēde un kods.
Nepieciešamās sastāvdaļas
- DC zobratu motori (2 vienības)
- IR sensoru modulis (2 vienības)
- L293D modulis
- Bezvadu barošanas avots (piemēram, akumulators, barošanas banka)
- Robotu salāti
- Atmega16 mikrokontrolleru IC
- 16Mhz kristāla oscilators
- Divi 100nF kondensatori
- Divi 22pF kondensatori
- Uzspied pogu
- Džemperu vadi
- Maizes dēlis
- USBASP v2.0 (lai programmētu Atmega16)
Ķēdes shēma
Savienojiet visus komponentus, kā parādīts ķēdes diagrammā
Atmega16 programmēšana līnijas sekotāja robotam
Šeit Atmega16 tiek ieprogrammēts, izmantojot USBASP un Atmel Studio7.0. Ja nezināt, kā Atmega16 var ieprogrammēt, izmantojot USBASP, apmeklējiet saiti. Pilnīga programma tiek dota projekta beigās, vienkārši augšupielādējiet programmu Atmega16, izmantojot JTAG programmētāju un Atmel Studio 7.0, kā paskaidrots iepriekšējā apmācībā.
Mēs esam centušies saglabāt kodu pēc iespējas īsāku un vienkāršāku. Tātad šajā kodā mēs izmantojam makro un īpašo funkciju reģistrus.
if (bit_is_clear (PINA , leftSen)) { // pārbaudiet, vai kreisais sensors ir izslēgts
Šis paziņojums pārbauda, vai PA0 vietā, kur ir pievienots kreisais sensors, ir LOW vai HIGH.
Ja vēlaties uzzināt vairāk par šo paziņojumu un citiem makro, dodieties uz šo saiti
Ir četri nosacījumi, kurus ievērojam, lasot infrasarkanos sensorus. IR sensori tiek nosaukti pēc to izvietojuma robota priekšpusē. Kreisais IR ir kreisais sensors, un labais IR ir labais sensors. Šādi apstākļi izlems robota kustību.
Mēs esam uzrakstījuši kodu atbilstoši iepriekš minētajiem nosacījumiem. Izmaiņas ir tikai tas, ka mēs izmantojam tikai divas L293D ieejas tapas, lai darbinātu abus motorus.
Pilns kods ar demonstrācijas video ir norādīts zemāk.