- Tarvittavat materiaalit
- Linjaseuraajan käsitteet
- Piirin selitys
- Linjaseuraajarobotin käyttö MSP430: lla
- Piirikaavio
- Ohjelmoinnin selitys
Linjaseuraajarobotti on yksinkertaisuutensa vuoksi yksi suosituimmista robotiikkaprojekteista opiskelijoiden ja aloittelijoiden keskuudessa. Se seuraa joko mustaa tai valkoista viivaa sen mukaan, miten ohjelmoit mikro-ohjaimesi. Tässä teemme linjaseuraajarobotin käyttämällä Texas Instrumentsin MSP430-käynnistyslevyä, joka seuraa mustaa linjaa. Jos olet uusi MSP430-käynnistyslevy, lue kohta Opi tuijottamaan MSP430-oppaasta.
Tarvittavat materiaalit
- MSP430G2 LaunchPad Texas Instrumentsilta
- L298D-moottorin ohjainmoduuli
- Johtojen liittäminen
- IR-anturimoduulit
- Alusta, pyörä, vuoristorata
- Energia IDE
- Virtalähde (3.3v) ja 5v-12v
Linjaseuraajan käsitteet
Linjaseuraajan käsite liittyy valoon. Olemme käyttäneet valon käyttäytymistä mustavalkoisella pinnalla. Kun valo putoaa valkoiselle pinnalle, se heijastuu melkein kokonaan ja mustan pinnan tapauksessa musta pinta absorboi valoa. Tätä selitettyä valon käyttäytymistä käytetään tässä linjaseuraajarobotissa.
Tässä MSP430-pohjaisessa linjaseuraajarobotissa olemme käyttäneet IR-lähettimiä ja IR-vastaanottimia, joita kutsutaan myös valodiodeiksi. Niitä käytetään lähettämään ja vastaanottamaan valoa. IR lähettää infrapunavaloja. Kun infrapunasäteet putoavat valkoiselle pinnalle, se heijastuu takaisin ja tarttuu fotodiodeihin, mikä aiheuttaa jännitteen muutoksia. Kun infrapunavalo putoaa mustalle pinnalle, musta pinta absorboi valoa eikä säteitä heijastu takaisin, joten valodiodi ei vastaanota valoa tai säteitä. Saat lisätietoja IR-antureista seuraamalla linkkiä.
Tässä MSP430-pohjaisessa linjaseuraajarobotissa, kun anturi havaitsee valkoisen pinnan, MSP saa tuloksi 1 ja kun aistit mustan viivan, MSP saa 0 tuloksi.
Piirin selitys
Voimme jakaa koko linjaseuraajarobotin eri osioihin, kuten anturiosaan, ohjausosaan ja kuljettajaosaan.
Anturiosa: Tämä osa sisältää infrapunadiodit, potentiometrin, komparaattorin (Op-Amp) ja LEDit. Potentiometriä käytetään vertailujännitteen asettamiseen vertailijan yhdelle liittimelle ja IR-anturit havaitsevat linjan ja antavat jännitteen muutoksen vertailijan toisessa liittimessä. Sitten vertailija vertaa molempia jännitteitä ja tuottaa digitaalisen signaalin lähdössä. Tässä piirissä käytimme kahta anturia varten kahta komparaattoria. LM358: ta käytetään vertailijana. LM358 on rakentanut kaksi hiljaista Op-vahvistinta.
Ohjausosa : MSP430 Launchpadia käytetään linjaseuraajarobotin koko prosessin ohjaamiseen. Komparaattorien lähdöt on kytketty MPS430 Launchpadin digitaalisiin nastoihin P1_3 ja P1_4. MSP430 Launchpad lukee nämä signaalit ja lähettää komennot ohjainpiirille ajolinjan seuraajalle.
Kuljettajan osa: Kuljettajan osa koostuu moottorin ohjaimesta ja kahdesta tasavirtamoottorista. Moottorin ohjainta käytetään moottoreiden ajamiseen, koska MSP430 Launchpad ei toimita riittävästi jännitettä ja virtaa moottorille. Joten lisäsimme moottorin ohjainpiirin saadaksemme tarpeeksi jännitettä ja virtaa moottorille. Tässä olemme käyttäneet L298d-ohjainta DC-moottoreiden ajamiseen. MSP430 Launchpad lähettää komentoja tälle moottoriohjaimelle ja ajaa sitten moottoreita.
Olemme kehittäneet linjaseuraajarobotteja eri mikrokontrollereilla:
- Linjaseuraajarobotti 8051-mikrokontrollerilla
- Linjaseurainrobotti Arduinolla
- Linjaseuraajarobotti Raspberry Pi: llä
- Linjaseuraajarobotti PIC-mikrokontrollerilla
Linjaseuraajarobotin käyttö MSP430: lla
Linjan seuraajan työskentely on erittäin mielenkiintoista. Linjaseuraajarobotti tunnistaa mustan viivan anturin avulla ja lähettää sitten signaalin MSP430 Launchpadille. Sitten MSP430 Launchpad käyttää moottoria anturien lähdön mukaan.
Tässä projektissa käytämme kahta IR-anturimoduulia, nimittäin vasenta ja oikeaa anturia. Kun sekä vasen että oikea anturi havaitsevat valkoisen, robotti liikkuu eteenpäin.
Jos vasen anturi tulee mustalla viivalla, robotti kääntyy vasemmalle puolelle.
Jos oikea anturi havaitsee mustan viivan, robotti kääntyy oikealle puolelle, kunnes molemmat anturit tulevat valkoiselle pinnalle. Kun valkoinen pinta tulee, robotti alkaa jälleen liikkua eteenpäin.
Jos molemmat anturit tulevat mustalle linjalle, robotti pysähtyy.
Piirikaavio
Tämän MSP430-linjaseuraajarobotin piiri on hyvin yksinkertainen. Vertailijoiden lähtö on kytketty suoraan MSP430 Launchpadin digitaalisiin pin-numeroihin p1_3 ja P1_4. Ja moottorin kuljettajan tulotapit IN1, IN2, IN3 ja IN4 on kytketty MSP430 Launchpadin digitaaliseen tapiin P1_5, P2_0, P2_1 ja P2_2. Yksi moottori on kytketty moottoriohjaimen OUT1 ja OUT2 lähtötappiin ja toinen moottori OUT3 ja OUT4. Tässä olemme käyttäneet 3,3 voltin virtalähdettä koko piirin virtalähteeseen paitsi moottorin ohjainmoduulia. Olemme toimittaneet 8v moottorin ohjainmoduuliin. Käyttäjä voi käyttää 5v-12v.
Voit myös rakentaa oman IR-moduulin, kuten minä rakensin Perf Boardille. Alla on IR-moduulin piiri:
Ohjelmoinnin selitys
Täydellinen ohjelma ja video ovat tämän artikkelin lopussa.
Ohjelmassa määritämme ensinnäkin anturin ja moottoreiden tulo- ja lähtötapin. Määritä sitten joitain makroja linjan seuraajan suunnalle ja kirjoita sitten direktiivi anturin lähdön valitsemiseksi
Huomaa: Anturi voi olla aktiivinen matala tai aktiivinen korkea, joten tarkista ensin anturin lähtö ja valitse sitten direktiivi kommentoimalla tai kommentoimalla activeLowMode . Jos kyseessä on aktiivinen HIGH, kommentoi activeLowMode- makroa.
#define l_sensor P1_3 #define r_sensor P1_4 int tapit = {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 = {eteenpäin, vasemmalle, oikealle, stop}; #else int res = {pysäytä, oikea, vasen, eteenpäin}; #loppu Jos
Sen jälkeen asetustoiminnossa annamme suunnan anturille ja moottorin tapille. Ja sitten silmukkatoiminnossa tarkistamme tulot ja lähetämme lähdön moottorin ohjainmoduulille moottoreiden ajamiseksi.
void setup () { for (int i = 0; i <4; i ++) pinMode (nastat, OUTPUT); pinMode (l_anturi, INPUT); pinMode (r_anturi, INPUT); } void loop () {int sense = (digitalRead (l_sensor) << 1) - digitalRead (r_sensor); (int i = 0; i <4; i ++) digitalWrite (nastat, (res >> i) & 0x01); }
Tässä rivin seuraajassa on neljä ehtoa, jotka luemme käyttämällä MSP430 Launchpadia. Olemme käyttäneet kahta anturia eli vasenta ja oikeaa anturia.
Edellytykset: Aktiivinen HIGH-lähtö
Tulo |
Tuotos |
Liike Robotista |
||||
Vasen anturi |
Oikea anturi |
Vasen moottori |
Oikea moottori |
|||
LS |
RS |
LM1 |
LM2 |
RM1 |
RM2 |
|
0 |
0 |
0 |
0 |
0 |
0 |
Lopettaa |
0 |
1 |
1 |
0 |
0 |
0 |
Käänny oikealle |
1 |
0 |
0 |
0 |
1 |
0 |
Käänny vasemmalle |
1 |
1 |
1 |
0 |
1 |
0 |
Eteenpäin |
Ohjelma on kirjoitettu yllä olevien taulukon ehtojen mukaisesti. Tarkista koko koodi ja esittelyvideo alla.