Tee tästä linjaseuraajarobotista tiedemessuille

Kokeile Instrumenttia Ongelmien Poistamiseksi





Tässä viestissä opimme rakentamaan linjaseuraajan robottipiirin Arduinolla, joka kulkee erityisen piirretyn linja-asettelun yli ja seuraa sitä uskollisesti niin kauan kuin se on saatavilla ja sen anturit voivat jäljittää.

Tekijä navneet sajwan



Mikä on linjaseuraajarobotti

Autonominen robotti on kone, joka voi suorittaa sarjan ohjelmoijan ohjeiden mukaisesti ilman, että ihminen ohjaa sitä manuaalisesti reaaliajassa.

Linjaseuraajat (LFR) ovat myös itsenäisiä robottiautoja, joita ohjaa yksi tai useampi anturi ja mustan tai valkoisen linjan polku. Ne muodostavat perustan nykyaikaisille itseajoautoille.



Kuten kaikilla itsenäisillä roboteilla, linjaseuraajilla on signaalinkäsittely- ja päätöksentekoyksikkö, anturit ja toimilaitteet. Jos olet aloittelija robotiikassa ja haluat ottaa sen vakavasti, sinun on aloitettava. Aloitetaan tekeminen.

Olen käyttänyt tätä projektia kahdella infrapuna-anturilla ja kolmivetoisella anturilla. Pienin mahdollinen antureiden määrä on yksi ja enintään kahdeksan riittää PID-pohjaiseen linjaseurantaan.

Vaaditut komponentit:

Arduino uno

Alusta

Kaksi paristokäyttöistä (b.o.) moottoria ja yhteensopivat renkaat

Pyörän pallo

Kaksi infrapuna-anturia

Moottorin ohjainmoduuli

Virtalähde

Arduino IDE -ohjelmisto

Katsotaanpa nyt komponenttimme:

ARDUINO ONE : Kuvittele, että se on robottimme ohjaushuone. Nyt projektissa on otettu huomioon paljon kehityskortteja, mutta Arduino UNO ei yksinkertaisesti vastannut muita. Ei ole, että päähenkilömme olisi ylivertainen moniulotteisten ominaisuuksiensa suhteen.

Jos näin olisi ollut, vadelma Pi ja Intel Edison olisivat lyöneet sitä silmien väliin. Pakottavimmat argumentit, jotka johtivat Arduino UNO: n valintaan, muodostuivat ominaisuuksien, hinnan, koon ja projektin vaatimusten yhdistelmästä.

Joitakin merkityksellisiä syitä olivat:

KOKO : Se on melko pieni verrattuna Atmega16- tai Atmega8-pohjaisiin kehityskortteihin, kuluttaa vähän tilaa alustalla, joten saat kompaktin ja kätevän botin.

Tällä on merkitystä robotiikkakilpailuissa. Luota minuun, että vihaisit vaeltaa ympäriinsä suuren ruman botin kanssa vaihtaessasi paikkaa koko päivän.

Pienempi koko, nopeampi robotti ja tehokkaammat käännökset.

PARAS Prototyyppikortti : Epäilemättä Arduino UNO: lla on paras yhdistelmä ominaisuuksia prototyyppien tekeminen . Kun piirisi ovat paikallaan ja projektisi toimii täydellisesti, voit korvata sen pienemmällä ja halvemmalla, kuten Arduino Nano ja Attiny85 ic.

Niille, jotka tekevät linjaseuraa korkeakoulujen hankkeisiin, ehdotan, että lopuksi korvataan UNO nanolla.

ALUSTA : Kehys pitää kaikki komponentit paikoillaan. Uutta alustaa ostettaessa on otettava huomioon muutama asia,

Sen tulisi olla kevyt ja vahva.

Hankkeisiin on parempi, jos ostat yhden markkinoilta. Mutta jos valmistaudut kilpailuun, suosittelen vahvasti, että muokkaat omasi, pitäen mielessä kilpailun mitat ja vaatimukset.

Valitse muovi- tai puurunko. Kun metalliset kehykset ovat kosketuksissa Arduinon kanssa, monet nastat oikosulussa. Tämä on suuri tekijä, johon on keskityttävä runkoa silmällä pitäen.

Pidä alusta mahdollisimman matalalla - tämä antaa botille vakauden.

MOOTTORIT : Käytä kevyttä paristokäyttöistä (B.O.) tasavirtaa moottorit.

CASTOR PALLO : Normaalit pyörät tarjoavat kääntyvän liikkeen yhtä akselia pitkin, mutta pyörän pallo on suunniteltu liikkumaan mitä tahansa pinnan suuntaa pitkin. Se antaa meille kolmivetoisen moottorin.

Syy parempana pidettävälle nelivetoiselle neljälle pyörälle johtuu sen suhteellisen nopeasta kääntymisestä. Olet ehkä huomannut polkupyörän riksaa lävistävän liikenteen läpi kuten matelijat. Sama pätee robottiimme.

ANTURIT : Se on laite, joka havaitsee tai mittaa kaikki ympäristömme fyysiset parametrit ja muuntaa sen sähköisiksi signaaleiksi. Tässä tapauksessa havaittu parametri on infrapunasäteet.

Anturit ovat erittäin tärkeitä kaikille roboteille. No, jos arduino on botin aivot, anturit voivat yhtä hyvin toimia silmien roolissa. Tässä on muutama asia antureista:

Anturien on oltava suunnattuna tavalla, joka johtaa lediä kohti maata.

Se tulisi sijoittaa botin etupäähän.

Pienimmän etäisyyden niiden välillä on oltava suurempi kuin mustan viivan leveys.

MOOTTORIN KULJETTAJAKORTTI : Moottoriohjaimet ovat puskuripiirejä, jotka ottavat matalajännitesignaalit voimakkaampaa jännitettä vaativien moottoreiden virran kytkemiseksi.

Meidän tapauksessamme Arduino voi tarjota riittävän jännitteen moottoreiden käyttämiseen, mutta se ei pysty tarjoamaan riittävästi virtaa. Arduino UNO: n 5v- ja GND-nastojen nykyinen luokitus on 200 mA, kun taas minkä tahansa GPIO-nastan luokitus on 40 mA. Tämä on paljon pienempi kuin tarvitsemamme käynnistys- ja pysäytysvirta-moottorit.

Tässä projektissa suosittelen kahta moottoriohjainta: L298N ja L293D. Molemmat ovat yhtä sopivia tämän projektin tekemiseen.

Vaikka, L293D on verrattain halvempi mutta sillä on matala nykyinen luokitus. Heidän yhteytensä ovat lähes samat. Koska olen antanut yhteydet molemmille, on täysin sinun tehtäväsi, miten teet botin.

VIRTALÄHDE :

Käytä 12 voltin adapteria tai akkua (enintään 12 volttia).

Komponenttien sijoitus (edestä taakse):

Anturit botin kärjessä.

Pyörän keskellä.

Moottorit ja renkaat takana yhdellä rivillä.

Liitännät:

ANTURIT ARDUINOON :

Liitä anturin tappi arduino-tapiin kuvan mukaisesti,

Anturin tappiArduino-tappi
VCC (5v)5 V
GND (G)GND
VASEN ANTURI OUT (DO)tappi 6
OIKEA ANTURI OUT (DO)tappi 7

Huomautus: Tarkista, että anturit ovat päällä, osoittamalla matkapuhelimesi kameraa infrapunalähettimen lediin. Näet näytöllä hehkuvan ledin, jota paljaat silmämme eivät näe. Joissakin moderneissa matkapuhelinkameroissa on infrapunasuodatin. Joten, ota se huomioon.

MOOTTORI - MOOTTORIOHJAIN:

Jokaisessa moottorissa on kaksi liitintä, jotka on kytkettävä moottorin ohjaimeen. Älä koskaan yritä liittää niitä suoraan arduinoon. Kun katsot botin takaosasta, moottorit lähelläsi ja anturit poispäin, kytke ne seuraavasti:

MOOTTORIL298NL293D
VASEN MOOTTORIPIN 1 ja 2PIN 7 ja 8
OIKEA MOOTTORIPIN 13 ja 14PIN 9 ja 10

MOOTTORINKULJETIN ARDUINO UNO:

MOOTTORIOHJAIN (L298N)ARDUINO ONE
PIN-koodi 4VIINI
PIN-koodi 5GND
PIN-koodi 65 V
PIN 8 ja PIN 9PIN 3 ja PIN 9
PIN 10 ja PIN 11PIN 5 ja PIN 10
PIN 7 ja PIN 125 V
MOOTTORIOHJAIN (L293D)ARDUINO ONE
PIN 3VIINI
PIN-koodi 2GND
PIN-koodi 15 V
PIN 5 ja PIN 6PIN 3 ja PIN 9
PIN 11 ja PIN 12PIN 5 ja PIN 10
PIN 4 ja PIN 55 V

HUOMAUTUS: L298n: n nastoja 8 ja 9 käytetään ohjaamaan moottoreita, jotka on kytketty 1 ja 2. Ja, 10 ja 11 ohjausmoottoria, jotka on kytketty nastoihin 13 ja 14. 7 ja 8. Ja 12 ja 11 ohjausmoottori kytketty nastoihin 9 ja 10.

Täällä olemme kaverit, suunnitteluosan loppuun asti. Meillä on vielä tehtävä koodaus, mutta ennen sitä käymme läpi periaatteet, jotka mahdollistavat linjaseurannan.

Infrapuna-anturin toiminta:

Infrapuna-antureita (IR-antureita) voidaan käyttää värien kontrastin ja esineiden läheisyyden tunnistamiseen. IR-anturin toiminnan takana oleva periaate on melko yksinkertainen.

Kuten näemme, sillä on kaksi lediä - IR-säteilevä led ja valodiodi. Ne toimivat lähettimen ja vastaanottimen parina. Kun este lähtee säteilevän säteen eteen, vastaanotin heijastaa ne takaisin ja pysäyttää.

Tämä tuottaa digitaalisen signaalin, joka voidaan syöttää mikro-ohjaimille ja toimilaitteille tarvittavien toimenpiteiden toteuttamiseksi esteen kohdatessa.

Fysiikan perustiedot kertovat meille, että musta runko absorboi kaiken sähkömagneettisen säteilyn, kun taas valkoinen runko heijastaa sitä. Linjaseuraaja hyödyntää tätä periaatetta erottaakseen valkoisen ja mustan pinnan.

Kuinka seuraajarobotti toimii:

RIVIN SEURAAVA ASETTELU

Normaalissa tilassa robotti liikkuu siten, että molemmat anturit ovat yli valkoisia ja musta viiva kummankin anturin keskellä.

Se on ohjelmoitu pyörittämään molempia moottoreita siten, että botti liikkuu eteenpäin.

Aivan luonnollisesti ajan myötä toinen antureista tulee mustan viivan yli.

Jos vasen anturi tulee linjan yli, vasen moottori lepää ja seurauksena botti alkaa kääntyä vasemmalle, ellei vasen anturi palaa valkoisella pinnalla ja saavutetaan normaali kunto.

Vastaavasti, kun oikea anturi tulee mustan viivan yli, oikeat moottorit pysähtyvät ja botti kääntyy nyt oikealle, ellei anturi palaa valkoisen pinnan yli. Tämä kääntymismekanismi tunnetaan differentiaalikäyttömekanismina.

PIIRIKAAVIO:

KYTKENTÄTIEDOT:

OHJELMOINTI JA KÄSITTEET:

Kun olemme tehneet piirin osan, siirrymme nyt ohjelmointiosaan. Tässä osassa ymmärrämme robottiamme ohjaavan ohjelman. Tässä on koodi: / *
Created and tested by Navneet Singh Sajwan
*Based on digital output of two sensors
*Speed control added
*/
int left, right
int value=250
void setup()
{
pinMode(6,INPUT)//left sensor
pinMode(7,INPUT)//right sensor
pinMode(9,OUTPUT)//left motor
pinMode(3,OUTPUT)//left motor
pinMode(10,OUTPUT)//right motor
pinMode(5,OUTPUT)//right motor
// Serial.begin(9600)
}
void read_sensors()
{
left=digitalRead(6)
right= digitalRead(7)
}
void move_forward()
{
analogWrite(9,value)//3,9 for left motor
digitalWrite(3,LOW)
analogWrite(10,value)//10,5 for right motor
digitalWrite(5,LOW)
}
void turn_left()
{
digitalWrite(9,LOW)//9,3 for left motor
digitalWrite(3,LOW)
analogWrite(10,value)//10,5 for right motor
digitalWrite(5,LOW)
}
void turn_right()
{
analogWrite(9,value)// 9,3 for left motor
digitalWrite(3,LOW)
digitalWrite(10,LOW)// 10,5 for right motor
digitalWrite(5,LOW)
}
void halt()
{
digitalWrite(9,LOW)// 9,3 for left motor
digitalWrite(3,LOW)
digitalWrite(10,LOW)// 10,5 for right motor
digitalWrite(5,LOW)
}
void print_readings()
{
Serial.print(' leftsensor')
Serial.print(' ')
Serial.print(left)
Serial.print('rightsensor')
Serial.print(' ')
Serial.print(right)
Serial.println()
}
void loop()
{
read_sensors()
while((left==0)&&(right==1)) // left sensor is over black line
{
turn_left()
read_sensors()
print_readings()
}
while((left==1)&&(right==0)) // right sensor is over black line
{
turn_right()
read_sensors()
print_readings()
}
while((left==0)&&(right==0)) // both sensors over the back line
{
halt()
read_sensors()
print_readings()
}
while((left==1)&&(right==1))// no sensor over black line
{
move_forward()
read_sensors()
print_readings()
}
}

Käytettyjen toimintojen kuvaus:

read_sensors (): Se ottaa sekä antureiden lukemat että tallentaa ne muuttujiin vasemmalle ja oikealle.

move_forward (): Kun arduino suorittaa tämän toiminnon, molemmat moottorit liikkuvat eteenpäin.

turn_left (): Vasen moottori pysähtyy. Bot kääntyy vasemmalle.

turn_right (): Oikea moottori pysähtyy. Bot kääntyy oikealle.

halt (): Bot pysähtyy.

print_readings (): Näyttää antureiden lukemat sarjamoduulissa. Tätä varten sinun on poistettava komento 'Serial.begin (9600)' tyhjässä asennuksessa.

ANTURIN LUKEMINEN:

ANTURI YLIRIVILLEANTURIN LUKEMINEN
VASENOIKEA
VASEN ANTURI01
OIKEA ANTURI10
EI MITÄÄN11
Molemmat00

NOPEUDEN SÄÄTÖ:

Joskus moottoreiden nopeus on niin suuri, että ennen kuin arduino tulkitsee anturisignaalit, robotti menettää linjan. Lyhyesti sanottuna botti ei seuraa linjaa suuren nopeuden takia ja menettää rivin, vaikka algoritmi on oikea.

Tällaisten olosuhteiden välttämiseksi laskemme botin nopeutta PWM-tekniikalla. Yllä olevassa koodissa on muuttuja nimeltä arvo.

Vähennä vain funktion numeerista arvoa nopeuden vähentämiseksi. Arduino UNO: ssa pwm-arvot voivat olla vain 0 ja 255 välillä.

analogWrite (tappi, arvo)

0<= value <=255

Tämä on viestini seuraajani loppu. Toivon, että se on riittävän yksityiskohtainen vastaamaan kaikkiin polttaviin kyselyihisi, ja jos se ei ole harvinaisessa todellisuudessa, meillä on aina käytettävissä kommenttiosio. Kommentoi epäilyjäsi. Hyvää höpöttämistä!




Pari: Matkapuhelinohjattu robotti-auto DTMF-moduulia käyttämällä Seuraava: Salasanalla ohjattu AC-virtakytkin