Lag denne Line Follower Robot for Science Fair Project

Prøv Instrumentet Vårt For Å Eliminere Problemer





I dette innlegget lærer vi hvordan du bygger en linjefølger-robotkrets ved hjelp av Arduino, som vil kjøre over et spesielt tegnet linjelayout og trofast vil følge den så lenge den er tilgjengelig og sporbar av sensorene.

Av navneet sajwan



Hva er en Line Follower-robot

En autonom robot er en maskin som kan utføre en rekke handlinger som instruert av programmereren, uten å bli manuelt kontrollert av et menneske i sanntid.

Linjefølgere (LFR) er også autonome robotbiler som styres av en eller flere sensorer og en svart eller hvit linjebane. De danner grunnlaget for moderne selvkjørende biler.



Som alle autonome roboter har linjefølgere en signalbehandlings- og beslutningstaksenhet, sensorer og aktuatorer. Hvis du er nybegynner innen robotikk og vil ta det opp på alvor, er det her du bør begynne. La oss begynne å lage det.

Jeg har brukt to infrarøde sensorer og trehjulsdrift for å lage dette prosjektet. Minimum antall sensorer som kan brukes er en, og maksimalt åtte er tilstrekkelig for å følge PID-baserte linjer.

Komponenter som kreves:

Arduino uno

Chassis

To batteridrevne (b.o.) motorer og kompatible dekk

Castor ball

To infrarøde sensorer

Motordrivermodul

Strømforsyning

Arduino IDE-programvare

La oss nå se på komponentene våre:

ARDUINO ONE : Se for deg det som kontrollrommet til roboten vår. Nå er det mange utviklingsbrett som ble vurdert for dette prosjektet, men Arduino UNO var rett og slett ingen kamp for andre. Det er ikke slik at hovedpersonen vår var overlegen når det gjelder flerdimensjonale funksjoner.

Hvis det hadde vært tilfelle, ville Raspberry Pi og Intel Edison ha slått det mellom øynene. De mest overbevisende argumentene som førte til valget av Arduino UNO, ble dannet av kombinasjonen av funksjoner, pris, størrelse og krav til prosjektet.

Noen relevante årsaker var:

STØRRELSE : Den er ganske liten sammenlignet med Atmega16 eller Atmega8-baserte utviklingskort, bruker litt plass på chassiset, slik at du får en kompakt og hendig bot.

Dette betyr virkelig noe i robotikk-konkurranser. Stol på meg at du vil hate å streife rundt med den store stygge bot, og endre arena hele dagen.

Mindre størrelse, raskere robot og mer effektive svinger.

BESTE PROTOTYPING STYRELSE : Utvilsomt har Arduino UNO den beste kombinasjonen av funksjoner for prototyping . Når kretsene dine er på plass og prosjektet ditt fungerer perfekt, kan du erstatte det med noe mindre og billigere som Arduino Nano og Attiny85 ic.

For de som lager linjefølgere for høyskoleprosjekter, foreslår jeg at du bytter ut UNO med Nano til slutt.

CHASSIS : Det er rammen som holder alle komponentene på plass. Det er noen punkter du bør vurdere når du kjøper et nytt chassis,

Den skal være lett og sterk.

For prosjekter er det bedre hvis du kjøper en fra markedet. Men hvis du forbereder deg på konkurranse, foreslår jeg sterkt at du tilpasser dine egne, med tanke på dimensjonene og kravene til konkurransen.

Velg chassis av plast eller tre. Når metalliske rammer kommer i kontakt med Arduino, blir et antall pinner kortsluttet. Dette er en stor faktor å fokusere på mens du ser etter chassis.

Hold chassiset ditt så lavt som mulig - dette gir stabiliteten til boten.

MOTORER : Bruk batteridrevet lettvekt (B.O.) likestrøm motorer.

CASTOR BALL : Normale hjul gir translatorisk bevegelse langs en enkelt akse, men en hjulkule er designet for å bevege seg i hvilken som helst retning på overflaten. Det gir oss trehjulsdrift.

Årsaken til at du foretrekker trehjulsdrift fremfor 4 hjul, er på grunn av den relativt raskere svingvirkningen. Du har kanskje lagt merke til at syklusrikshauene gjennomborer trafikken som reptiler. Det samme er tilfellet med roboten vår.

SENSORER : Det er en enhet som oppdager eller måler fysiske parametere i miljøet vårt og konverterer det til elektriske signaler. I dette tilfellet er den oppdagede parameteren infrarøde stråler.

Sensorer er svært grunnleggende for enhver robot. Vel, hvis arduino er hjernen til vår bot, kan sensorer like godt spille øynene. Her er noen ting om sensorer:

Sensorene må være orientert slik at ledet (e) vender mot bakken.

Bør plasseres i frontenden av boten din.

Minste avstand mellom dem må være større enn bredden på den svarte linjen.

MOTORKJØRERBORD : Motordrivere er bufferkretser som tar opp lavspenningssignaler for å slå på motorene som krever høyere spenning.

I vårt tilfelle kan Arduino gi tilstrekkelig spenning til å drive motorene, men den kan ikke gi rikelig med strøm. Arduino UNOs 5v- og GND-pinner har en nåværende vurdering på 200mA, mens en hvilken som helst GPIO-pin har en rating på 40 mA. Dette er langt lavere enn start- og stallstrømmotorene vi trenger.

Det er to motordrivere som jeg foretrekker for dette prosjektet: L298N og L293D. Begge er like velegnede til å lage dette prosjektet.

Selv om, L293D er relativt billigere men har lav nåværende vurdering. Forbindelsene deres er nesten de samme. Siden jeg har gitt forbindelsene for begge deler, er det helt opp til deg hvordan du lager din bot.

STRØMFORSYNING :

Bruk en 12 V adapter eller et batteri (ikke mer enn 12 volt).

Plassering av komponenter (fra front til bakside):

Sensorer i toppen av boten din.

Løbehjul i midten.

Motorer og dekk i en linje bak.

Tilkoblinger:

SENSORER til ARDUINO :

Koble sensorpinnen til arduino-pinnen som vist,

SensorstiftArduino pin
VCC (5v)5V
GND (G)GND
VENSTRE SENSOR UT (DO)pinne 6
HØYRE SENSOR UT (DO)pinne 7

Merk: For å sjekke om sensorene dine er slått på, peker du mobiltelefonkameraet mot IR-senderen. Du vil se led glødende på skjermen som ikke kan sees av våre blotte øyne. Noen moderne mobiltelefonkameraer har infrarødt filter. Så ta det med i betraktningen.

MOTOR til MOTORDRIVER:

Hver motor har to terminaler som må kobles til motordriveren. Aldri prøv å koble dem direkte til arduino. Ser du fra baksiden av boten din, med motorer nær deg og sensorer unna, kobler du dem på følgende måte:

MOTORL298NL293D
VENSTRE MOTORPIN 1 OG 2PIN 7 OG 8
RIKTIG MOTORPIN 13 OG 14PIN 9 OG 10

MOTORDRIVER til ARDUINO UNO:

MOTORDRIVER (L298N)ARDUINO ONE
PIN 4VIN
PIN 5GND
PIN 65V
PIN 8 og PIN 9PIN 3 og PIN 9
PIN 10 og PIN 11PIN 5 og PIN 10
PIN 7 og PIN 125V
MOTORDRIVER (L293D)ARDUINO ONE
PIN 3VIN
PIN 2GND
PIN 15V
PIN 5 OG PIN 6PIN 3 og PIN 9
PIN 11 OG PIN 12PIN 5 og PIN 10
PIN 4 OG PIN 55V

MERKNAD: Pins 8 og 9 i l298n brukes til å kontrollere motoren som er koblet til 1 og 2. Og, 10 og 11 styringsmotor koblet til pinne 13 og 14. På samme måte brukes pinn 5 og 6 i l293d til å kontrollere motoren som er koblet til 7 og 8. Og styremotoren 12 og 11 koblet til pinnene 9 og 10.

Her er vi gutter, til slutten av designdelen. Vi har fortsatt kodingen å gjøre, men før det vil vi gå gjennom prinsippene som tillater linjefølgning.

Hvordan en infrarød sensor fungerer:

Infrarøde sensorer (IR-sensorer) kan brukes til å føle kontrast i farger og nærhet til gjenstander til den. Prinsippet som ligger bak arbeidet med IR-sensoren er ganske grunnleggende.

Som vi kan se, har den to lysdioder - IR-ledning og en fotodiode. De fungerer som sender-mottakerpar. Når et hinder kommer foran strålere, reflekteres de tilbake og blir snappet opp av mottakeren.

Dette genererer et digitalt signal som kan mates til mikrokontrollere og aktuatorer for å ta nødvendige tiltak for å møte hindringer.

Grunnleggende fysikk forteller oss at en svart kropp absorberer all elektromagnetisk stråling som hender på den mens en hvit kropp reflekterer den. Dette prinsippet utnyttes av en linjefølger for å skille mellom hvit og svart overflate.

Slik fungerer en linjefølgerrobot:

LINJEFØLGER OPSLAG

I normal tilstand beveger roboten seg på en slik måte at begge sensorene er over hvite og den svarte linjen midt i begge sensorene.

Den er programmert til å rotere begge motorene slik at boten beveger seg i fremoverretning.

Ganske naturlig, etter hvert som tiden går, kommer en av de to sensorene over den svarte linjen.

Hvis venstre sensor kommer over linjen, bringes venstre motorer til hvile, og som et resultat begynner bot å dreie mot venstre med mindre venstre sensor kommer tilbake på hvit overflate og normal tilstand oppnås.

På samme måte, når høyre sensor kommer over svart linje, stoppes høyre motorer og følgelig dreier bot seg nå mot høyre med mindre sensoren kommer tilbake over hvit overflate. Denne svingmekanismen er kjent som differensialdrivmekanisme.

KRETSDIAGRAM:

KABELDETALJER:

PROGRAMMERING OG KONSEPTER:

Etter å ha gjort med kretsdelen vil vi nå gå videre til programmeringsdelen. I denne delen vil vi forstå programmet som styrer roboten vår. Her er koden: / *
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()
}
}

Beskrivelse av funksjonene som brukes:

read_sensors (): Det tar avlesningene til begge sensorene og lagrer dem i variablene til venstre og høyre.

move_forward (): Når arduino utfører denne funksjonen, beveger begge motorene seg fremover.

turn_left (): Venstre motor stopper. Bot svinger til venstre.

turn_right (): Høyre motor stopper. Bot svinger til høyre.

halt (): Bot stopper.

print_readings (): Viser avlesning av sensorene på seriell skjerm. For dette må du fjerne kommentaren til 'Serial.begin (9600)' i ugyldig oppsett.

SENSORLESINGER:

SENSOR OVER LINESENSORLESINGER
VENSTREIKKE SANT
VENSTRE SENSOR01
RETT SENSOR10
INGEN11
BÅDE00

FARTSKONTROLL:

Noen ganger er motorens hastighet så høy at før arduino tolker sensorsignalene, mister roboten linjen. Kort sagt følger ikke bot linjen på grunn av høy hastighet og fortsetter å miste linjen selv om algoritmen er riktig.

For å unngå slike omstendigheter, reduserer vi hastigheten på bot ved hjelp av PWM-teknikk. I koden ovenfor er det en variabel som heter verdi.

Bare senk den numeriske verdien i funksjonen for å redusere hastigheten. I Arduino UNO kan du bare ha pwm-verdier mellom 0 og 255.

analogWrite (pin, verdi)

0<= value <=255

Dette er slutten på innlegget mitt online. Jeg håper det er detaljert nok til å svare på alle dine brennende spørsmål, og hvis det i den sjeldneste virkeligheten ikke er det, så har vi alltid kommentarseksjonen tilgjengelig for deg. Kommenter tvilen din. Ha en lykkelig flikking!




Forrige: Mobilstyrt robotbil ved hjelp av DTMF-modul Neste: Passordstyrt strømnett på / av-bryter