- Reikalingos medžiagos:
- Linijos sekėjo sąvokos
- Grandinės schema ir paaiškinimas:
- PIC mikrovaldiklio programavimas:
- PIC linijos sekėjas veikia:
„Linijos sekėjo“ robotas yra paprastas, tačiau įspūdingas robotas, kurį gali sukurti dauguma studentų / mėgėjų. Šioje pamokoje sužinosime, kaip veikia linijos sekėjo robotas ir kaip mes galime jį sukurti naudodami PIC mikrovaldiklį PIC16F877A. „PIC16F877A“ yra 40 kontaktų universali MCU iš „Microchip“, mes naudojome šį IC visoje PIC mokymo programoje. Jei esate naujas, čia galbūt norėsite pažvelgti į šias PIC mokymo programas, kad sužinotumėte pagrindinius šio IC pagrindus ir kaip įkelti programas į mikrovaldiklį. Kadangi mes jau apėmėme šią informaciją savo pamokose, mes jas praleisime toliau pateiktame paaiškinime.
Jei jus domina robotika, turėtumėte gerai žinoti pavadinimą „ Linijos sekėjo robotas “. Šis robotas gali sekti liniją, tiesiog naudodamas porą jutiklių ir variklių. Šis robotas suteikia jums vietos begaliniam tobulėjimui, o tokie robotai kaip „Kiva“ („Amazon“ sandėlio robotas) yra to pavyzdys. Taip pat galite patikrinti kitus mūsų robotus:
- Linijos sekėjo robotas, naudojant 8051 mikrovaldiklį
- Linijos sekėjo robotas, naudojant „Arduino“
- Linijos sekėjo robotas, naudojant Raspberry Pi
Reikalingos medžiagos:
- PIC16F877A
- IR jutiklis (2Nos)
- DC pavaros variklis (2Nos)
- L293D variklio tvarkyklė
- Cheeses (Jūs taip pat galite sukurti savo, naudodamiesi kartonais)
- Maitinimo bankas (bet koks galimas maitinimo šaltinis)
Linijos sekėjo sąvokos
Linijos sekimo robotas sugeba stebėti liniją IR jutiklio pagalba. Šis jutiklis turi IR siųstuvą ir IR imtuvą. IR siųstuvas (IR šviesos diodas) perduoda šviesą, o imtuvas (fotodiodas) laukia, kol perduodama šviesa grįš atgal. IR šviesa grįš atgal, tik jei ją atspindės paviršius. Visi paviršiai neatspindi IR šviesos, juos visiškai atspindi tik baltos spalvos paviršius, o juodos spalvos paviršius juos visiškai pastebės, kaip parodyta toliau pateiktame paveikslėlyje. Sužinokite daugiau apie IR jutiklio modulį čia.
Dabar naudosime du infraraudonųjų spindulių jutiklius, kad patikrintume, ar robotas eina su linija, ir dviem varikliais, kad ištaisytume robotą, jei jis pasislenka iš kelio. Šiems varikliams reikalinga didelė srovė ir jie turėtų būti dviejų krypčių; taigi mes naudojame variklio tvarkyklės modulį, pvz., L293D. Mums taip pat reikės mikrovaldiklio, tokio kaip PIC, kad jis nurodytų variklius pagal IR jutiklio reikšmes. Toliau parodyta supaprastinta to paties bloko schema.
Šie du IR jutikliai bus išdėstyti po vieną iš abiejų linijos pusių. Jei nė vienas jutiklis neaptinka juodos linijos, PIC mikrovaldiklis nurodo varikliams judėti į priekį, kaip parodyta žemiau
Jei kairysis jutiklis atsiduria juodoje linijoje, mikrovaldiklis robotui nurodo pasukti į kairę, sukdamas tik dešinįjį ratą.
Jei dešinysis jutiklis yra juodoje linijoje, mikrovaldiklis robotui nurodo pasukti į dešinę, sukdamas kairįjį ratą.
Jei abu jutikliai atsiduria juodoje linijoje, robotas sustoja.
Tokiu būdu robotas galės sekti liniją neišlipęs iš trasos. Dabar pažiūrėkime, kaip atrodo grandinė ir kodas.
Grandinės schema ir paaiškinimas:
Visa šio PIC pagrįsto linijos sekėjo roboto schema parodyta žemiau
Grandinėje naudojami du IR jutikliai ir pora nuolatinės srovės pavarų variklių kartu su variklio tvarkyklės moduliu, kaip parodyta aukščiau. Šiame projekte naudojamas variklio tvarkyklės modulis yra L293D, mums reikės variklio tvarkyklės, nes PIC mikrovaldiklio išvesties kaištis negali gauti pakankamai srovės, kad varikliai galėtų važiuoti. Šis modulis bus maitinamas tiesiogiai iš maitinimo šaltinio (5 V), kaip parodyta grandinėje. Modulis turi keturis kaiščius (po du kiekvienam varikliui), kurie yra prijungti prie PIC valdyti variklių kryptį. Mes taip pat turime du IR jutiklius, kurie veikia kaip įvestis į PIC mikrovaldiklį. Šie jutikliai bus aukšti (1), jei jie bus virš balto paviršiaus, ir žemai (0), kai bus ant juodo paviršiaus. Visi smeigtukų jungtys parodytos toliau pateiktoje lentelėje.
S.No |
Prisijungta iš |
Prisijungęs prie |
1 |
IR jutiklis Paliktas kaištis |
RD2 (kaištis 21) |
2 |
IR jutiklis |
RD3 (22 kaištis) |
4 |
1 variklio kanalas A kaištis |
RC4 (23 kaištis) |
5 |
1 variklio B kanalo kaištis |
RC5 (kaištis 25) |
6 |
2 variklio kanalo A kaištis |
RC6 (kaištis 26) |
7 |
2 variklio B kanalo kaištis |
RC7 (kaištis 27) |
Tikrojoje techninėje įrangoje naudojau maitinimo banką, kuris duos + 5 V išėjimą tiesiai per USB jungtį; taigi apėjau 7805 įtampos reguliatorių ir maitinau PIC, jutiklius ir variklius naudodamas tą patį. Tai galite padaryti naudodami 12 V bateriją kartu su reguliatoriumi, kaip parodyta grandinėje.
PIC mikrovaldiklio programavimas:
Kai būsite pasirengę aparatinei įrangai, laikas pradėti programuoti. Visa šio PIC linijos sekėjo roboto projekto programa pateikiama šio puslapio pabaigoje. Tačiau svarbūs gabalai paaiškinti toliau.
Inicializuokite įvesties / išvesties kaiščius šiomis eilutėmis. 2 IR jutiklio kaiščiai veikia kaip įvestis, o keturi variklio kaiščiai - kaip išvesties kaiščiai.
TRISD2 = 1; TRISD3 = 1; IR vonia IR jutiklio kaiščiai deklaruojami kaip įvestis TRISC4 = 0; TRISC5 = 0; // 1 variklio kaiščiai deklaruoti kaip galia TRISC6 = 0; TRISC7 = 0; // 2 variklio kaiščiai deklaruoti kaip galia
Dabar mes turime perskaityti IR jutiklio būseną ir atitinkamai valdyti variklį. Pavyzdžiui, jei abu jutikliai yra aukšti (nepatenka į juodą liniją), mes abu variklius judiname į priekį, kaip parodyta žemiau esančioje programoje.
if (RD2 == 1 && RD3 == 1) // Abu jutikliai nėra per balck liniją {RC4 = 0; RC5 = 1; // 1 variklis priekyje RC6 = 1; RC7 = 0; // 2 variklis pirmyn}
Jei kairysis jutiklis eina per juodąją liniją, mes sukame į dešinę, laikydami 1 variklį nejudėdami ir sukdami 2 variklį pirmyn. Šis posūkio tipas vadinamas diferenciniu posūkiu.
else if (RD2 == 0 && RD3 == 1) // Kairysis jutiklis yra per juodąją liniją {RC4 = 1; RC5 = 1; // 1 variklio sustabdymas RC6 = 1; RC7 = 0; // 2 variklis pirmyn}
Panašiai, jei dešinysis jutiklis eina per juodąją liniją, tada botas priverstas pasukti kairįjį, laikydamas nejudantį antrąjį variklį ir pasukdamas pirmąjį variklį vienas į priekį, kaip parodyta žemiau.
else if (RD2 == 1 && RD3 == 0) // Dešinysis jutiklis yra virš juodosios linijos {RC4 = 0; RC5 = 1; // 1 variklis priekyje RC6 = 1; RC7 = 1; // 2 variklio sustabdymas}
Galiausiai, jei abu jutikliai patenka į juodą liniją, laikas sustabdyti robotą. Tai galima padaryti pakėlus visus abiejų variklių kaiščius aukštai. Tą patį darantis kodas parodytas žemiau
else // Abu jutikliai per juodąją liniją {RC4 = 1; RC5 = 1; // 1 variklio sustabdymas RC6 = 1; RC7 = 1; // 2 variklio sustabdymas}
Tai yra programa yra parengta ir ją galima įkelti į PIC naudojant bet kurį programuotoją, pvz., „PicKit“.
PIC linijos sekėjas veikia:
Kai aparatinė įranga ir kodas bus paruošti, laikas atlikti tam tikrus veiksmus. Kaip minėjau anksčiau, roboto valdymui naudojau „Power bank“, todėl man tereikia paprasčiausiai prijungti maitinimo banką prie roboto, kuriame yra nustatyta aparatinė įranga ir kodas jau įkeltas.
„PIC Perf“ plokštė buvo sukurta mūsų PIC mokomųjų programų serijai, kurioje mes išmokome naudoti PIC mikrovaldiklį. Galbūt norėsite grįžti prie tų PIC mikrovaldiklių vadovėlių, kuriuose naudojamos MPLABX ir XC8, jei nežinote, kaip įrašyti programą naudojant „Pickit 3“, nes praleisiu visą tą pagrindinę informaciją.
Dabar tiesiog paleiskite robotą per juodą liniją ir turėtumėte žiūrėti, kaip jis eina.
Iš pradžių galite susidurti su sunkumais, tokiu atveju skaitykite toliau. Jei ratai sukasi priešingai, tiesiog pakeiskite variklio, kuris sukasi priešinga kryptimi, poliškumą. Jei botas nukrypsta nuo linijos, pakeiskite IR jutiklį ir viskas turėtų būti gerai.
Visą robotų darbą galite rasti žemiau pateiktame vaizdo įraše. Tikiuosi, kad jums patiks projektas ir patiko kurti kažką panašaus. Jei kyla problemų, kaip tai veikia, galite juos paskelbti žemiau esančiame komentarų skyriuje, kad išspręstumėte tai, arba aptarti mūsų forumus techniniam turiniui aptarti.