Gör denna Line Follower-robot för Science Fair-projektet

Prova Vårt Instrument För Att Eliminera Problem





I det här inlägget lär vi oss hur man bygger en linjeföljande robotkrets med Arduino, som kommer att köra över en specifikt ritad linjelayout och följa den troget så länge den är tillgänglig och spårbar av dess sensorer.

Av navneet sajwan



Vad är en Line Follower-robot

En autonom robot är en maskin som kan vidta en serie åtgärder enligt instruktioner från programmeraren utan att manuellt styras av en människa i realtid.

Linjeföljare (LFR) är också autonoma robotbilar som styrs av en eller flera sensorer och en svart eller vit linje. De utgör grunden för moderna självkörande bilar.



Som alla autonoma robotar har anhängare en signalbehandlings- och beslutsfattande enhet, sensorer och ställdon. Om du är nybörjare inom robotik och vill ta upp det på allvar, är det här du bör börja. Låt oss börja göra det.

Jag har använt två infraröda sensorer och trehjulsdrift för att göra detta projekt. Minsta antal sensorer som kan användas är en och högst åtta räcker för att PID-baserad linje ska följa.

Komponenter som krävs:

Arduino uno

Chassi

Två batteridrivna (b.o.) motorer och kompatibla däck

Castor boll

Två infraröda sensorer

Motordrivarmodul

Strömförsörjning

Arduino IDE-programvara

Låt oss nu titta på våra komponenter:

ARDUINO ONE : Föreställ dig det som kontrollrummet för vår robot. Nu finns det många utvecklingsbrädor som övervägdes för detta projekt, men Arduino UNO var helt enkelt ingen match för andra. Det är inte så att vår huvudperson var överlägsen vad gäller dess flerdimensionella funktioner.

Om så hade varit fallet skulle Raspberry Pi och Intel Edison ha slagit det mellan ögonen. De mest övertygande argumenten som ledde till valet av Arduino UNO bildades av kombinationen av funktioner, pris, storlek och krav för projektet.

Några relevanta skäl var:

STORLEK : Det är ganska litet jämfört med Atmega16 eller Atmega8-baserade utvecklingskort, tar lite plats på chassit, så du får en kompakt och praktisk bot.

Detta betyder verkligen i robottävlingar. Lita på mig att du skulle hata att ströva runt med den stora fula botten och byta plats hela dagen.

Mindre storlek, snabbare roboten och effektivare svängar.

BÄSTA PROTOTYPINGBORD : Utan tvekan har Arduino UNO den bästa kombinationen av funktioner för prototyping . När dina kretsar är på plats och ditt projekt fungerar perfekt kan du ersätta det med något mindre och billigare som Arduino Nano och Attiny85 ic.

För dem, som gör linjeföljare för college-projekt, föreslår jag att man byter ut UNO med Nano i slutet.

CHASSI : Det är ramen som håller alla komponenter på plats. Det finns några punkter att tänka på när du köper ett nytt chassi,

Den ska vara lätt och stark.

För projekt är det bättre om du köper en från marknaden. Men om du förbereder dig för tävling, föreslår jag starkt att du anpassar dina egna, med tanke på tävlingens dimensioner och krav.

Välj ett plast- eller trächassi. När metallramar kommer i kontakt med Arduino kortsluts ett antal stift. Detta är en stor faktor att fokusera på när man letar efter chassi.

Håll ditt chassi så lågt som möjligt - detta ger botten stabilitet.

MOTORER : Använd lätta batteridrivna (B.O.) likström motorer.

CASTOR BALL : Normala hjul ger översättningsrörelse längs en enda axel men en hjulkula är utformad för att röra sig i valfri riktning på ytan. Det ger oss trehjulsdrift.

Anledningen till att föredra trehjulsdrift framför fyra hjul är på grund av dess relativt snabbare vridning. Du kanske har lagt märke till att cykel-rikshawerna tränger igenom trafiken som reptiler. Samma är fallet med vår robot.

SENSORER : Det är en enhet som upptäcker eller mäter någon fysisk parameter i vår miljö och omvandlar den till elektriska signaler. I detta fall är parametern som detekteras infraröda strålar.

Sensorer är mycket grundläggande för alla robotar. Tja, om arduino är vår bot hjärna, kan sensorer lika gärna spela ögonen. Här är några saker om sensorer:

Sensorerna måste vara orienterade på ett sätt som leder mot marken.

Bör placeras i framsidan av din bot.

Minsta avstånd mellan dem måste vara större än bredden på den svarta linjen.

MOTORFÖRARE : Motordrivrutiner är buffertkretsar som tar upp lågspänningssignaler för att driva de motorer som kräver högre spänning.

I vårt fall kan Arduino tillhandahålla tillräcklig spänning för att driva motorerna men det kan inte ge tillräckligt med ström. Arduino UNO: s 5v- och GND-stift har en strömstyrka på 200mA medan alla GPIO-stift har en rating på 40 mA. Detta är mycket lägre än de start- och stallströmsmotorer vi behöver.

Det finns två motorförare som jag föredrar för detta projekt: L298N och L293D. Båda är lika lämpliga för att göra detta projekt.

Fastän, L293D är jämförelsevis billigare men har ett lågt strömvärde. Deras anslutningar är nästan desamma. Sedan har jag gett anslutningarna för båda, det är helt upp till dig hur du gör din bot.

STRÖMFÖRSÖRJNING :

Använd en 12 V-adapter eller ett batteri (högst 12 volt).

Placering av komponenter (från framsidan till baksidan):

Sensorer i toppen av din bot.

Länkhjul i mitten.

Motorer och däck i en rad bak.

Anslutningar:

SENSORER till ARDUINO :

Anslut sensorstiftet till arduino-stiftet som visas,

SensorstiftArduino-stift
VCC (5v)5V
GND (G)GND
VÄNSTER SENSOR OUT (DO)stift 6
HÖGER SENSOR UT (GÖR)stift 7

Obs: För att kontrollera om dina sensorer är påslagen, rikta din mobiltelefonskamera mot IR-sändarledningen. Du kommer se led glödande på skärmen som inte kan ses av våra blotta ögon. Vissa moderna mobiltelefonkameror har infrarött filter. Så ta det med i beräkningen.

MOTOR till MOTORFÖRARE:

Varje motor har två terminaler som måste anslutas till motorföraren. Försök aldrig ansluta dem direkt till arduino. Titta från baksidan av din bot, med motorer nära dig och sensorer borta, anslut dem enligt följande:

MOTORL298NL293D
VÄNSTER MOTORPIN 1 OCH 2PIN 7 OCH 8
HÖGER MOTORPIN 13 OCH 14PIN 9 OCH 10

MOTORDRIVARE till ARDUINO UNO:

MOTORFÖRARE (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
MOTORFÖRARE (L293D)ARDUINO ONE
PIN 3VIN
PIN 2GND
PIN 15V
PIN 5 OCH PIN 6PIN 3 & PIN 9
PIN 11 OCH PIN 12PIN 5 & PIN 10
PIN 4 OCH PIN 55V

OBS: Stiften 8 och 9 i l298n används för att styra motorn som är ansluten till 1 och 2. Och styrmotorn 10 och 11 ansluten till stiften 13 och 14. På samma sätt används stift 5 och 6 i l293d för att styra motorn ansluten till 7 och 8. Och styrmotorn 12 och 11 ansluten till stiften 9 och 10.

Här är vi killar, till slutet av designdelen. Vi har fortfarande kodningen att göra men innan det kommer vi att gå igenom de principer som möjliggör linjeföljning.

Hur en infraröd sensor fungerar:

Infraröda sensorer (IR-sensorer) kan användas för att avkänna kontrast i färger och närhet av objekt till den. Principen bakom arbetet med IR-sensorn är ganska grundläggande.

Som vi kan se har den två lysdioder - IR-avgivande led och en fotodiod. De fungerar som sändar-mottagarpar. När ett hinder kommer framför sändarstrålar reflekteras de tillbaka och fångas upp av mottagaren.

Detta genererar en digital signal som kan matas till mikrokontroller och manöverdon för att vidta nödvändiga åtgärder för att möta hinder.

Grundläggande fysik berättar att en svart kropp absorberar all elektromagnetisk strålning som inträffar på den medan en vit kropp reflekterar den. Denna princip utnyttjas av en linjeföljare för att skilja mellan vit och svart yta.

Så här fungerar en linjeföljare-robot:

FÖLJNING AV LINJER

I normalt tillstånd rör sig roboten på ett sådant sätt att båda sensorerna är över vita och den svarta linjen är mitt i båda sensorerna.

Den är programmerad att rotera båda motorerna så att botten rör sig framåt.

Helt naturligt, när tiden går, kommer en av de två sensorerna över den svarta linjen.

Om vänster sensor kommer över linjen vilar motorerna till vila och som ett resultat börjar botten att svänga mot vänster om inte den vänstra sensorn kommer tillbaka på vit yta och normalt tillstånd uppnås.

På samma sätt, när höger sensor kommer över svart linje, stoppas rätt motorer och följaktligen vänder bot nu mot höger såvida inte sensorn kommer tillbaka över vit yta. Denna svängmekanism kallas differentiell drivmekanism.

KRETSDIAGRAM:

LEDNINGSDETALJER:

PROGRAMMERING OCH KONCEPTER:

Efter att ha gjort med kretsdelen kommer vi nu att gå vidare till programmeringsdelen. I det här avsnittet kommer vi att förstå programmet som styr vår robot. Här är 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()
}
}

Beskrivning av använda funktioner:

read_sensors (): Det tar avläsningarna för båda sensorerna och lagras i variablerna vänster och höger.

move_forward (): När arduino utför denna funktion, rör sig båda motorerna framåt.

turn_left (): Vänster motor stannar. Bot svänger vänster.

turn_right (): Höger motor stannar. Bot svänger höger.

halt (): Bot slutar.

print_readings (): Visar avläsningar av sensorerna på seriell bildskärm. För detta måste du avmarkera “Serial.begin (9600)” i ogiltig installation.

SENSORLÄSNINGAR:

SENSOR ÖVER LINESENSORLÄSNINGAR
VÄNSTERRÄTT
VÄNSTER SENSOR01
HÖGER SENSOR10
INGEN11
BÅDE00

HASTIGHETS KONTROLL:

Ibland är motorns hastighet så hög att innan arduino tolkar sensorsignalerna, tappar roboten linjen. Kort sagt, bot följer inte linjen på grund av hög hastighet och fortsätter att förlora linjen även om algoritmen är korrekt.

För att undvika sådana omständigheter minskar vi hastigheten på botten med PWM-teknik. I koden ovan finns en variabel med namnet värde.

Minska bara det numeriska värdet i funktionen för att minska hastigheten. I Arduino UNO kan du bara ha pwm-värden mellan 0 och 255.

analogWrite (pin, värde)

0<= value <=255

Detta är slutet på mitt inlägg online. Jag hoppas att det är tillräckligt detaljerat för att svara på alla dina brinnande frågor och om det i sällsynta verklighet inte är det, så har vi alltid kommentarsektionen tillgänglig för dig. Kommentera dina tvivel. Ha en glad tinkering!




Tidigare: Mobilstyrd robotbil med DTMF-modul Nästa: Lösenordsstyrd växelströmbrytare