Lav denne Line Follower-robot til Science Fair-projektet

Prøv Vores Instrument Til At Fjerne Problemer





I dette indlæg lærer vi, hvordan man bygger et line-follower-robotkredsløb ved hjælp af Arduino, som kører over et specifikt tegnet linjelayout og vil trofast følge det, så længe det er tilgængeligt og spores af dets sensorer.

Af navneet sajwan



Hvad er en Line Follower-robot

En autonom robot er en maskine, der kan foretage en række handlinger som instrueret af programmøren uden at blive styret manuelt af et menneske i realtid.

Linjefølgere (LFR'er) er også autonome robotbiler, der styres af en eller flere sensorer og en sort eller hvid sti. De danner grundlaget for moderne selvkørende biler.



Som enhver autonom robot har linjefølgere en signalbehandlings- og beslutningstagningsenhed, sensorer og aktuatorer. Hvis du er nybegynder inden for robotteknologi og vil tage det op alvorligt, er det her, du skal starte. Lad os begynde at lave det.

Jeg har brugt to infrarøde sensorer og trehjulstræk til at lave dette projekt. Minimum antal sensorer, der kan bruges, er en, og maksimalt otte er tilstrækkelige til at følge PID-baseret linje.

Nødvendige komponenter:

Arduino uno

Chassis

To batteridrevne (b.o.) motorer og kompatible dæk

Castor bold

To infrarøde sensorer

Motordrivermodul

Strømforsyning

Arduino IDE-software

Lad os nu se på vores komponenter:

ARDUINO ONE : Forestil dig det som kontrolrummet på vores robot. Nu er der mange udviklingsforretninger, der blev overvejet for dette projekt, men Arduino UNO var simpelthen ingen match for andre. Det er ikke, at vores hovedperson var overlegen med hensyn til dens flerdimensionelle funktioner.

Hvis det havde været tilfældet, ville Raspberry Pi og Intel Edison have slået det mellem øjnene. De mest overbevisende argumenter, der førte til udvælgelsen af ​​Arduino UNO, blev dannet af kombinationen af ​​funktioner, pris, størrelse og krav til projektet.

Nogle relevante årsager var:

STØRRELSE : Det er ret lille sammenlignet med Atmega16 eller Atmega8-baserede udviklingskort, bruger lidt plads på chassiset, så du får en kompakt og praktisk bot.

Dette betyder virkelig noget i robotteknikker. Tro mig, du hader at strejfe rundt med den store grimme bot og skifte sted hele dagen.

Mindre størrelse, hurtigere robotten og mere effektive sving.

BEDSTE PROTOTYPINGBORD : Utvivlsomt har Arduino UNO den bedste kombination af funktioner til prototyping . Når dine kredsløb er på plads, og dit projekt fungerer perfekt, kan du erstatte det med noget mindre og billigere som Arduino Nano og Attiny85 ic.

For dem, der gør linjefølger til college-projekter, foreslår jeg at erstatte UNO med Nano i slutningen.

CHASSIS : Det er rammen, der holder alle komponenterne på plads. Der er et par punkter at overveje, når du køber et nyt chassis,

Det skal være let og stærkt.

For projekter er det bedre, hvis du køber en fra markedet. Men hvis du forbereder dig på konkurrence, foreslår jeg kraftigt, at du tilpasser dine egne under hensyntagen til konkurrencens dimensioner og krav.

Vælg et plast- eller træchassis. Når metalliske rammer kommer i kontakt med Arduino, korteres et antal ben. Dette er en stor faktor at fokusere på, når man kigger efter chassis.

Hold dit chassis så lavt som muligt - dette giver bot til stabilitet.

MOTORER : Brug letvægtsdrevet batteridrevet (B.O.) vekselstrøm motorer.

CASTOR BALL : Normale hjul giver translatorisk bevægelse langs en enkelt akse, men en hjulkugle er designet til at bevæge sig i enhver retning på overfladen. Det giver os trehjulstræk.

Årsagen til at foretrække trehjulstræk frem for 4 hjul er på grund af den forholdsvis hurtigere drejning. Du har måske bemærket cyklus-riksjaer, der gennemsyrer trafikken som krybdyr. Det samme er tilfældet med vores robot.

SENSORER : Det er en enhed, der registrerer eller måler enhver fysisk parameter i vores miljø og omdanner den til elektriske signaler. I dette tilfælde er den opdagede parameter infrarøde stråler.

Sensorer er meget grundlæggende for enhver robot. Hvis arduino er vores bots hjerne, kan sensorer lige så godt spille øjnene. Her er et par ting om sensorer:

Sensorerne skal være orienteret på en måde, der førte (r) vender mod jorden.

Bør placeres i forenden af ​​din bot.

Mindste afstand mellem dem skal være større end bredden på den sorte linje.

MOTORDRIVERBORD : Motordrivere er bufferkredsløb, der optager lavspændingssignaler for at tænde for de motorer, der kræver højere spænding.

I vores tilfælde kan Arduino give tilstrækkelig spænding til at drive motorerne, men det kan ikke give rigelig strøm. Arduino UNOs 5v- og GND-stifter har en nuværende vurdering på 200mA, mens enhver GPIO-stift har en rating på 40 mA. Dette er langt lavere end de start- og stopstrømsmotorer, vi har brug for.

Der er to motordrivere, som jeg foretrækker til dette projekt: L298N og L293D. Begge er lige velegnede til at lave dette projekt.

Selvom, L293D er relativt billigere men har en lav nuværende vurdering. Deres forbindelser er næsten de samme. Siden har jeg givet forbindelserne til begge, det er helt op til dig, hvordan du laver din bot.

STRØMFORSYNING :

Brug en 12 V adapter eller et batteri (højst 12 volt).

Placering af komponenter (fra front til bagende):

Sensorer i spidsen for din bot.

Hjul i midten.

Motorer og dæk i en linje bagpå.

Forbindelser:

SENSORER til ARDUINO :

Forbind sensortappen til arduino-stiften som vist,

SensorstiftArduino pin
VCC (5v)5V
GND (G)GND
VENSTRE SENSOR UD (DO)pin 6
HØJRE SENSOR UD (DO)pin 7

Bemærk: For at kontrollere, om dine sensorer er tændt, skal du rette dit mobiltelefonkamera mod IR-senderen. Du vil se led glødende på skærmen, som ikke kan ses af vores blotte øjne. Nogle moderne mobiltelefonkameraer har infrarødt filter. Så tag det i betragtning.

MOTOR til MOTORDRIVER:

Hver motor har to terminaler, der skal forbindes til motordriveren. Forsøg aldrig at forbinde dem direkte til arduino. Når du ser fra bagsiden af ​​din bot, med motorer tæt på dig og sensorer væk, skal du forbinde dem som følger:

MOTORL298NL293D
VENSTRE MOTORPIN 1 OG 2PIN 7 OG 8
HØJRE MOTORPIN 13 OG 14PIN 9 OG 10

MOTORDRIVER til ARDUINO UNO:

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

BEMÆRK: Stifter 8 og 9 i l298n bruges til at styre motoren, der er tilsluttet 1 og 2. Og, 10 og 11 styremotor, der er forbundet til stifter 13 og 14. Tilsvarende bruges ben 5 og 6 i l293d til at styre motoren, der er tilsluttet 7 og 8. Og styremotor 12 og 11 forbundet til ben 9 og 10.

Her er vi fyre, til slutningen af ​​designdelen. Vi har stadig kodningen at gøre, men inden det vil vi gennemgå de principper, der tillader linjefølgning.

Sådan fungerer en infrarød sensor:

Infrarøde sensorer (IR-sensorer) kan bruges til at registrere kontrast i farver og nærhed af objekter til den. Princippet, der ligger bag arbejdet med IR-sensoren, er ret grundlæggende.

Som vi kan se, har den to lysdioder - IR-emitterende led og en fotodiode. De fungerer som sender-modtagerpar. Når en forhindring kommer foran emitterstråler, reflekteres de tilbage og opfanges af modtageren.

Dette genererer et digitalt signal, der kan tilføres mikrokontrollere og aktuatorer for at tage de nødvendige skridt til at støde på hindring.

Grundlæggende fysik fortæller os, at en sort krop absorberer al den elektromagnetiske stråling, der falder ind på den, mens en hvid krop reflekterer den. Dette princip udnyttes af en linjefølger til at skelne mellem hvid og sort overflade.

Sådan fungerer en line follower-robot:

LINJEFØLGER OPLÆGNING

I normal tilstand bevæger robotten sig på en sådan måde, at begge sensorer er over hvide, og den sorte linje er midt i begge sensorer.

Det er programmeret til at rotere begge motorer, så bot'en ​​bevæger sig fremad.

Helt naturligt, når tiden går, kommer en af ​​de to sensorer over den sorte linje.

Hvis venstre sensor kommer over linjen, bringes venstre motorer til hvile, og som et resultat begynder bot at dreje mod venstre, medmindre den venstre sensor kommer tilbage på en hvid overflade, og normal tilstand er opnået.

Tilsvarende, når højre sensor kommer over sort linje, stoppes højre motor og følgelig vender bot nu mod højre, medmindre sensoren kommer tilbage over en hvid overflade. Denne drejningsmekanisme er kendt som differentiel drivmekanisme.

KREDSLØBSDIAGRAM:

KABELDETALJER:

PROGRAMMERING OG KONCEPTER:

Efter at have gjort med kredsløbsdelen vil vi nu gå videre til programmeringsdelen. I dette afsnit vil vi forstå det program, der styrer vores robot. 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 af anvendte funktioner:

read_sensors (): Det tager aflæsningerne af begge sensorer og gemmer dem i variablerne til venstre og højre.

move_forward (): Når arduino udfører denne funktion, bevæger begge motorerne sig fremad.

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

turn_right (): Højre motor stopper. Bot drejer til højre.

halt (): Bot stopper.

print_readings (): Viser målinger af sensorer på seriel skærm. Til dette skal du fjerne kommentar fra 'Serial.begin (9600)' i ugyldig opsætning.

SENSORLÆSNINGER:

SENSOR OVER LINESENSORLÆSNINGER
VENSTRERET
VENSTRE SENSOR01
HØJRE SENSOR10
INGEN11
BEGGE00

HASTIGHEDSKONTROL:

Nogle gange er motorhastigheden så høj, at før arduino fortolker sensorsignalerne, mister robotten linjen. Kort sagt følger bot ikke linje på grund af høj hastighed og fortsætter med at miste linjen, selvom algoritmen er korrekt.

For at undgå sådanne omstændigheder reducerer vi hastigheden på bot ved hjælp af PWM-teknik. I koden ovenfor er der en variabel med navnet værdi.

Sænk bare den numeriske værdi i funktionen for at sænke hastigheden. I Arduino UNO kan du kun have pwm-værdier mellem 0 og 255.

analogWrite (pin, værdi)

0<= value <=255

Dette er slutningen på mit indlæg online-tilhænger. Jeg håber, det er detaljeret nok til at besvare alle dine brændende forespørgsler, og hvis det i den sjældneste virkelighed ikke er det, så har vi altid kommentarsektionen tilgængelig for dig. Kommenter din tvivl. Hav en god tinkering!




Forrige: Mobiltelefonstyret robotbil ved hjælp af DTMF-modul Næste: Adgangskodestyret vekselstrøm til / fra-switch