- Reikalingos medžiagos
- Linijos sekėjo sąvokos
- Grandinės paaiškinimas
- Linijos sekėjo roboto darbas naudojant MSP430
- Grandinės schema
- Programavimo paaiškinimas
Linijos sekimo robotas yra vienas populiariausių robotikos projektų tarp studentų ir pradedančiųjų dėl savo paprastumo. Tai seka juoda arba balta linija, atsižvelgiant į tai, kaip programuojate savo mikrovaldiklį. Čia mes gaminame linijos sekimo robotą, naudodami „MSP430“ paleidimo pultą iš „Texas Instruments“, kuris seka juodą liniją. Jei dar nesinaudojote „MSP430“ paleidimo priemone, perskaitykite mūsų „Stebėjimas naudojant MSP430“ mokymo programą.
Reikalingos medžiagos
- „MSP430G2 LaunchPad“ iš „Texas Instruments“
- L298D variklio tvarkyklės modulis
- Jungiamieji laidai
- IR jutiklio moduliai
- Važiuoklė, ratas, kalneliai
- „Energia IDE“
- Maitinimo šaltinis (3,3v) ir 5v-12v
Linijos sekėjo sąvokos
Linijos pasekėjo samprata yra susijusi su šviesa. Mes naudojome šviesos elgesį juodai baltame paviršiuje. Kai šviesa patenka ant balto paviršiaus, ji beveik visiškai atsispindi, o juodojo paviršiaus atveju šviesą sugeria juodas paviršius. Šis paaiškintas šviesos elgesys naudojamas šiame linijos sekimo robote.
Šiame MSP430 pagrįstame linijos sekimo robote mes panaudojome IR siųstuvus ir IR imtuvus, dar vadinamus fotodiodais. Jie naudojami šviesai siųsti ir priimti. IR perduoda infraraudonųjų spindulių šviesas. Kai infraraudonieji spinduliai patenka ant balto paviršiaus, jie atsispindi atgal ir sugaudomi fotodiodų, kurie sukelia tam tikrus įtampos pokyčius. Kai IR šviesa patenka ant juodo paviršiaus, šviesa sugeria juodą paviršių ir atgal jokie spinduliai neatsispindi, todėl fotodiodas negauna jokios šviesos ar spindulių. Norėdami sužinoti daugiau apie IR jutiklius, spustelėkite nuorodą.
Čia, šiame MSP430 pagrįstame linijos sekimo robote, kai jutiklis pajunta baltą paviršių, tada MSP gauna 1 kaip įvestį, o kai pajaučia juodąją liniją, MSP įleidžia 0.
Grandinės paaiškinimas
Mes galime suskirstyti visą sekimo robotą į įvairias sekcijas, pvz., Jutiklio sekciją, valdymo sekciją ir vairuotojo sekciją.
Jutiklio skyrius: Šiame skyriuje yra IR diodai, potenciometras, komparatorius (Op-Amp) ir šviesos diodai. Potenciometras naudojamas nustatant etaloninę įtampą komparatoriaus viename gnybte, o IR jutikliai suvokia liniją ir suteikia įtampos pokytį antrame komparatoriaus gnybte. Tada palygintuvas palygina abi įtampas ir sukuria skaitmeninį signalą išėjimo metu. Čia šioje grandinėje dviem jutikliams naudojome du lygintuvus. LM358 naudojamas kaip lyginamasis. LM358 pastatė du mažo triukšmo Op stiprintuvus.
Valdymo skyrius: „ MSP430 Launchpad“ naudojama valdyti visą linijos sekėjo roboto procesą. Komparatorių išėjimai yra prijungti prie „MPS430 Launchpad“ skaitmeninio kaiščio P1_3 ir P1_4. „MSP430 Launchpad“ nuskaito šiuos signalus ir siunčia komandas vairuotojo grandinei, kad vairavimo linijos sekėjas.
Vairuotojo skyrius: Vairuotojo skyrių sudaro variklio tvarkyklė ir du nuolatinės srovės varikliai. Variklio variklis naudojamas varikliams vairuoti, nes „MSP430 Launchpad“ tiekia nepakankamai įtampos ir srovės. Taigi mes pridėjome variklio tvarkyklę, kad gautume pakankamai įtampos ir srovės. DC varikliams vairuoti naudojome L298d tvarkyklę. „MSP430 Launchpad“ siunčia komandas šiai variklio tvarkyklei ir tada varo variklius.
Mes sukūrėme „Line Follower“ robotus, naudojančius skirtingus mikrovaldiklius:
- Linijos sekėjo robotas, naudojant 8051 mikrovaldiklį
- Linijos sekėjo robotas, naudojant „Arduino“
- Linijos sekėjo robotas, naudojant Raspberry Pi
- Linijos sekėjo robotas, naudojant PIC mikrovaldiklį
Linijos sekėjo roboto darbas naudojant MSP430
Linijos sekėjo darbas yra labai įdomus. Linijos sekimo robotas naudoja juodą liniją naudodamas jutiklį ir tada siunčia signalą į „MSP430 Launchpad“. Tada „MSP430 Launchpad“ variklį varo pagal jutiklių išvestį.
Šiame projekte mes naudojame du IR jutiklių modulius, būtent kairįjį ir dešinįjį jutiklius. Kai kairysis ir dešinysis jutikliai jaučia baltą spalvą, robotas juda į priekį.
Jei kairysis jutiklis yra ant juodos linijos, robotas pasisuka į kairę.
Jei dešinysis jutiklis pajunta juodą liniją, robotas sukasi į dešinę, kol abu jutikliai patenka į baltą paviršių. Kai atsiranda baltas paviršius, robotas vėl pradeda judėti į priekį.
Jei abu jutikliai atsiduria juodoje linijoje, robotas sustoja.
Grandinės schema
Šio „ MSP430“ linijos sekėjo roboto grandinė yra labai paprasta. Komparatorių išvestis yra tiesiogiai prijungta prie „MSP430 Launchpad“ skaitmeninio kaiščio numerių p1_3 ir P1_4. Variklio vairuotojo įvesties kaiščiai IN1, IN2, IN3 ir IN4 yra prijungti prie „MSP430 Launchpad“ skaitmeninio kaiščio P1_5, P2_0, P2_1, P2_2. Vienas variklis yra prijungtas prie variklio tvarkyklės OUT1 ir OUT2 išvesties kaiščių, o kitas variklis prijungtas prie OUT3 ir OUT4. Čia mes naudojome 3.3v maitinimą visai grandinei, išskyrus variklio tvarkyklės modulį. Mes tiekėme 8v variklio vairuotojo modulį. Vartotojas gali naudoti 5v-12v.
Taip pat galite sukurti savo IR modulį, pvz., Aš sukūriau „Perf Board“. Žemiau yra IR modulio grandinė:
Programavimo paaiškinimas
Visą programą ir vaizdo įrašą galite rasti šio straipsnio pabaigoje.
Programoje pirmiausia nustatome jutiklio ir variklių įvesties ir išvesties kaištį. Tada nustatykite keletą makrokomandų linijos sekėjo krypčiai ir tada parašykite direktyvą, kad pasirinktumėte jutiklio išvestį
Pastaba: jutiklis gali būti aktyvus žemas arba aktyvus aukštas, todėl pirmiausia patikrinkite, kokia yra jutiklio išvestis, tada pasirinkite direktyvą komentuodami arba nekomentuodami „activeLowMode“ . Jei norite aktyvios HIGH, pakomentuokite „ activeLowMode“ makrokomandą.
#define l_sensor P1_3 #define r_sensor P1_4 int pins = {P1_5, P2_0, P2_1, P2_2}; #define forward 0x05 #define left 0x06 #define right 0x09 #define stop 0x00 // # define activeLowMode #ifdef activeLowMode int res = {pirmyn, kairėn, dešinėn, stop}; #else int res = {sustoti, dešinėn, kairėn, pirmyn}; #endif
Po to, nustatymo funkcijoje, mes nurodome jutiklio ir variklio kaiščio kryptį. Tada ciklo funkcijoje mes patikriname įėjimus ir siunčiame išvestį į variklio tvarkyklės modulį, kad veiktų varikliai.
void setup () { for (int i = 0; i <4; i ++) pinMode (smeigtukai, OUTPUT); pinMode (l_sensor, INPUT); pinMode (r_sensor, INPUT); } void loop () {int sense = (digitalRead (l_sensor) << 1) - digitalRead (r_sensor); skirtas (int i = 0; i <4; i ++) „digitalWrite“ (kaiščiai, (res >> i) & 0x01); }
Šioje eilutėje yra keturios sąlygos, kurias perskaitėme naudodami „MSP430 Launchpad“. Mes naudojome du jutiklius, būtent kairįjį ir dešinįjį jutiklius.
Sąlygos: aktyvi HIGH išvestis
Įvestis |
Rezultatas |
Judėjimas Roboto |
||||
Kairysis jutiklis |
Dešinysis jutiklis |
Kairysis variklis |
Dešinysis variklis |
|||
LS |
RS |
LM1 |
LM2 |
RM1 |
RM2 |
|
0 |
0 |
0 |
0 |
0 |
0 |
Sustabdyti |
0 |
1 |
1 |
0 |
0 |
0 |
Pasukite į dešinę |
1 |
0 |
0 |
0 |
1 |
0 |
Pasukite į kairę |
1 |
1 |
1 |
0 |
1 |
0 |
Persiųsti |
Programa parašyta pagal aukščiau pateiktas lentelės sąlygas. Žemiau patikrinkite visą kodą ir demonstracinį vaizdo įrašą.