Napravite ovog Robot sljedbenika za projekt Sajma znanosti

Isprobajte Naš Instrument Za Uklanjanje Problema





U ovom postu saznajemo kako izraditi robotski krug sljedbenika crta pomoću Arduina, koji će prelaziti preko posebno nacrtanog rasporeda crta i vjerno će ga pratiti sve dok je senzorima dostupan i može ga pratiti.

By navneet sajwan



Što je Robot sljedbenik linija

Autonomni robot je stroj koji može poduzeti niz radnji prema uputama programera, a da ih čovjek ne kontrolira ručno u stvarnom vremenu.

Linijski sljedbenici (LFR) također su autonomni robotski automobili koji se vode jednim ili više senzora i crnom ili bijelom linijom. Oni čine osnovu modernih samovozećih automobila.



Kao i svaki autonomni robot, sljedbenici linija imaju jedinicu za obradu signala i donošenje odluka, senzore i aktuatore. Ako ste početnik u robotici i želite se ozbiljno pozabaviti tim, ovdje biste trebali započeti. Počnimo izrađivati.

Za izradu ovog projekta koristio sam dva infracrvena senzora i pogon na tri kotača. Minimalni broj senzora koji se može koristiti je jedan, a maksimalno osam je dovoljno za praćenje crte na temelju PID-a.

Potrebne komponente:

Arduino uno

Šasija

Dva motora na baterije (b.o.) I kompatibilne gume

Ricinusova lopta

Dva infracrvena senzora

Modul vozača motora

Napajanje

Arduino IDE softver

Pogledajmo sada naše komponente:

ARDUINO JEDAN : Zamislite to kao kontrolnu sobu našeg robota. Sada postoji mnogo razvojnih ploča koje su uzete u obzir za ovaj projekt, ali Arduino UNO jednostavno nije bio mjerilo za druge. Nije da je naš glavni junak bio superiorniji u pogledu svojih višedimenzionalnih značajki.

Da je to bio slučaj, Raspberry Pi i Intel Edison zabili bi ga među oči. Najuvjerljiviji argumenti koji su doveli do odabira Arduina UNO formirani su kombinacijom značajki, cijene, veličine i zahtjeva za projektom.

Neki od relevantnih razloga bili su:

VELIČINA : Prilično je malen u usporedbi s razvojnim pločama temeljenim na Atmega16 ili Atmega8, troši malo prostora na šasiji, tako da ćete dobiti kompaktan i praktičan bot.

Ovo je zaista važno na natjecanjima iz robotike. Vjerujte mi da biste mrzili lutati okolo s onim velikim ružnim botom, mijenjajući mjesta po čitav dan.

Manje veličine, brži robot i učinkovitiji zavoj.

NAJBOLJA PLOČA ZA PROTOTIPIRANJE : Bez sumnje, Arduino UNO ima najbolju kombinaciju značajki za izrada prototipa . Jednom kada su vaši krugovi na mjestu i vaš projekt funkcionira savršeno, možete ga zamijeniti nečim manjim i jeftinijim poput Arduino Nano i Attiny85 ic.

Za one koji prave redoslijednike za fakultetske projekte predlažem da na kraju UNO zamijene Nanoom.

ŠASIJA : Okvir je koji drži sve komponente u položaju. Pri kupnji nove šasije treba uzeti u obzir nekoliko točaka,

Trebao bi biti lagan i jak.

Za projekte je bolje ako ih kupite na tržnici. Ali ako se pripremate za natjecanje, toplo predlažem da prilagodite svoje, imajući na umu dimenzije i zahtjeve natjecanja.

Odaberite plastično ili drveno kućište. Kada metalni okviri dođu u kontakt s Arduinom, određeni broj pinova se kratko spoji. To je veliki čimbenik na koji se morate usredotočiti dok pazite na šasiju.

Neka vam šasija bude što niža - to botu daje stabilnost.

MOTORI : Koristite laganu bateriju (B.O.) d.c. motori.

KOTAČKA KUGLA : Normalni kotači omogućuju translatorno kretanje duž jedne osi, ali kotačić je dizajniran za kretanje duž bilo kojeg smjera na površini. Daje nam pogon na tri kotača.

Razlog za preferiranje pogona na tri kotača nad 4 kotača je zbog njegovog relativno bržeg okretanja. Možda ste primijetili ciklus-rikše koji se probijaju kroz promet poput gmazova. Isti je slučaj našeg robota.

SENZORI : To je uređaj koji otkriva ili mjeri bilo koji fizički parametar našeg okoliša i pretvara ga u električne signale. U ovom slučaju otkriveni parametar su infracrvene zrake.

Senzori su izuzetno bitni za svakog robota. Pa, ako je arduino mozak našeg bota, senzori bi mogli igrati ulogu očiju. Evo nekoliko stvari o senzorima:

Senzori moraju biti usmjereni na način koji vodi (i) prema tlu.

Trebao bi biti postavljen na prednji kraj vašeg bota.

Minimalni razmak između njih mora biti veći od širine crne crte.

DASKA MOTORSKOG VOZAČA : Motorni pogonski sklopovi su međuspremnički krugovi koji uzimaju niskonaponske signale za napajanje motora kojima je potreban viši napon.

U našem slučaju, Arduino može pružiti dovoljan napon za pogon motora, ali ne može pružiti dovoljnu struju. Arduino UNO 5v i GND pinovi trenutačno imaju ocjenu 200mA, dok bilo koji GPIO pin ima ocjenu 40 mA. Ovo je puno niže od motora za pokretanje i zaustavljanje koji nam trebaju.

Dva su mi vozača motora koja više volim za ovaj projekt: L298N i L293D. Oboje su podjednako pogodni za izradu ovog projekta.

Iako, L293D je relativno jeftiniji ali ima malu strujnu ocjenu. Njihove su veze gotovo iste. Budući da sam dao veze za oboje, potpuno je na vama kako ćete napraviti bota.

NAPAJANJE :

Upotrijebite adapter od 12 v ili bateriju (ne više od 12 volti).

Postavljanje komponenata (od prednjeg prema stražnjem kraju):

Senzori na čelu vašeg bota.

Točkić u sredini.

Motori i gume u jednom redu straga.

Veze:

SENZORI za ARDUINO :

Spojite pin senzora na arduino pin kako je prikazano,

Osovinica osjetnikaArduino pribadača
VCC (5v)5V
GND (G)GND
LIJEVI SENZOR VAN (DO)iglica 6
DESNI SENZOR VAN (DO)iglica 7

Napomena: Da biste provjerili jesu li vaši senzori napajani, usmjerite kameru mobitela prema LED odašiljaču. Na ekranu ćete vidjeti LED svjetlo koje se ne može vidjeti našim golim očima. Neke moderne kamere za mobitele imaju infracrveni filtar. Dakle, molim vas uzmite to u obzir.

MOTORNI MOTORNI VOZAČ:

Svaki motor ima dva terminala koja treba spojiti na vozač motora. Nikada ih ne pokušavajte povezati izravno s arduinom. Gledajući sa stražnje strane bota, s motorima u vašoj blizini i udaljenim senzorima, spojite ih na sljedeći način:

MOTORL298NL293D
LIJEVI MOTORPIN 1 I 2PIN 7 I 8
DESNI MOTORPIN 13 I 14PIN 9 I 10

MOTORNI VOZAČ ARDUINO UNO:

MOTORNI VOZAČ (L298N)ARDUINO JEDAN
PIN 4VINO
PIN 5GND
PIN 65V
PIN 8 i PIN 9PIN 3 i PIN 9
PIN 10 i PIN 11PIN 5 i PIN 10
PIN 7 i PIN 125V
MOTORNI VOZAČ (L293D)ARDUINO JEDAN
PIN 3VINO
PIN 2GND
PIN 15V
PIN 5 I PIN 6PIN 3 i PIN 9
PIN 11 I PIN 12PIN 5 i PIN 10
PIN 4 I PIN 55V

NAPOMENA: Pribadače 8 i 9 l298n koriste se za upravljanje motorom spojenim na 1 i 2. I, 10 i 11 upravljački motor spojen na zatiče 13 i 14. Slično tome, zatiči 5 i 6 l293d koriste se za upravljanje motorom spojenim na 7 i 8. I upravljački motor 12 i 11 spojen na pinove 9 i 10.

Evo nas dečki, do kraja dijela dizajna. Još uvijek imamo kodiranje, ali prije toga proći ćemo kroz principe koji omogućuju slijeđenje linija.

Kako radi infracrveni senzor:

Infracrveni senzori (IR senzori) mogu se koristiti za osjetljivost kontrasta u bojama i blizine predmeta s njima. Načelo koje stoji iza rada IR senzora prilično je osnovno.

Kao što vidimo, ima dva LED diode - led koji emitira IR i fotodiodu. Djeluju kao par odašiljač-prijamnik. Kada prepreka dođe ispred emiterskih zraka, one se odbijaju natrag i presreće ih prijemnik.

To generira digitalni signal koji se može dostavljati mikrokontrolerima i aktuatorima kako bi se poduzele potrebne radnje u slučaju nailaženja na prepreku.

Osnovna fizika kaže nam da crno tijelo apsorbira sve elektromagnetske zrake koje na njega padaju, dok ga bijelo tijelo reflektira. To načelo koristi sljedbenik crte kako bi razlikovao bijelu i crnu površinu.

Kako radi robot sljedbenik crte:

RASPORED REDNOG IZGLEDA

U normalnom se stanju robot kreće na takav način da su oba senzora bijela, a crna crta usred oba senzora.

Programirano je za okretanje oba motora tako da se bot pomiče u smjeru naprijed.

Sasvim prirodno, kako vrijeme prolazi jedan od dva senzora dolazi preko crne crte.

Ako lijevi senzor dođe preko crte, lijevi motori se zaustavljaju i kao rezultat bot se počinje okretati prema lijevoj strani, osim ako se lijevi senzor vrati na bijelu površinu i postigne se normalno stanje.

Slično tome, kada desni senzor dođe preko crne crte, desni motori se zaustavljaju i posljedično se bot sada okreće udesno, osim ako se senzor vrati preko bijele površine. Ovaj mehanizam okretanja poznat je pod nazivom diferencijalni pogonski mehanizam.

KRUŽNI DIJAGRAM:

DETALJI OŽIČENJA:

PROGRAMIRANJE I KONCEPTI:

Nakon što smo završili s dijelom sklopa, sada ćemo prijeći na programski dio. U ovom ćemo odjeljku razumjeti program koji kontrolira našeg robota. Evo koda: / *
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()
}
}

Opis korištenih funkcija:

read_sensors (): Potrebna su očitanja oba senzora i pohranjena u varijable lijevo i desno.

move_forward (): Kada arduino izvrši ovu funkciju, oba motora kreću se u smjeru naprijed.

turn_left (): Lijevo zaustavljanje motora. Bot skreće lijevo.

turn_right (): Desno zaustavljanje motora. Bot skreće udesno.

zaustaviti (): Bot se zaustavlja.

print_readings (): prikazuje očitanja senzora na serijskom monitoru. Da biste to učinili, morate dekomentirati 'Serial.begin (9600)' u void setup-u.

ČITANJA SENZORA:

SENZOR NAD LinijomČITANJA SENZORA
LIJEVOPRAVO
LIJEVI SENZOR01
DESNI SENZOR10
NITKO11
OBA00

KONTROLA BRZINE:

Ponekad je brzina motora toliko velika da prije nego što arduino protumači signale senzora, robot izgubi liniju. Ukratko, bot ne prati liniju zbog velike brzine i stalno gubi liniju iako je algoritam točan.

Da bismo izbjegli takve okolnosti, smanjujemo brzinu bota tehnikom PWM. U gornjem kodu postoji varijabla s imenom value.

Samo smanjite brojčanu vrijednost u funkciji da biste smanjili brzinu. U Arduinu UNO možete imati samo vrijednosti pwm između 0 i 255.

analogWrite (pribadača, vrijednost)

0<= value <=255

Ovo je kraj mog posta na liniji sljedbenika. Nadam se da je dovoljno detaljan da odgovori na sve vaše goruće upite, a ako u najrjeđoj stvarnosti nije, tada vam uvijek imamo na raspolaganju odjeljak za komentare. Komentirajte svoje sumnje. Uživajte u veselom igranju!




Prethodno: Robotski automobil kojim upravlja mobitel pomoću DTMF modula Dalje: Prekidač za uključivanje / isključivanje izmjeničnog napajanja kontroliranog lozinkom