Machen Sie diesen Line Follower Robot für das Science Fair-Projekt

Versuchen Sie Unser Instrument, Um Probleme Zu Beseitigen





In diesem Beitrag erfahren Sie, wie Sie mit Arduino eine Linienfolger-Roboterschaltung erstellen, die über ein speziell gezeichnetes Linienlayout läuft und diesem genau folgt, solange es verfügbar und von seinen Sensoren nachverfolgbar ist.

Mit dem Navneet Sajwan



Was ist ein Line Follower Robot?

Ein autonomer Roboter ist eine Maschine, die eine Reihe von Aktionen ausführen kann, die vom Programmierer angewiesen wurden, ohne manuell von einem Menschen in Echtzeit gesteuert zu werden.

Line Follower (LFRs) sind auch autonome Roboterautos, die von einem oder mehreren Sensoren und einem schwarzen oder weißen Linienpfad geführt werden. Sie bilden die Basis moderner selbstfahrender Autos.



Wie jeder autonome Roboter verfügen Linienfolger über eine Signalverarbeitungs- und Entscheidungseinheit, Sensoren und Aktoren. Wenn Sie ein Anfänger in der Robotik sind und es ernst nehmen möchten, sollten Sie hier beginnen. Lass es uns machen.

Ich habe zwei Infrarotsensoren und einen Dreiradantrieb für dieses Projekt verwendet. Die minimale Anzahl von Sensoren, die verwendet werden können, beträgt eins, und maximal acht sind für die PID-basierte Leitungsverfolgung ausreichend.

Erforderliche Komponenten:

Arduino uno

Chassis

Zwei batteriebetriebene (b.o.) Motoren und kompatible Reifen

Rollenball

Zwei Infrarotsensoren

Motortreibermodul

Netzteil

Arduino IDE Software

Schauen wir uns nun unsere Komponenten an:

ARDUINO ONE : Stellen Sie es sich als Kontrollraum unseres Roboters vor. Jetzt gibt es viele Entwicklungsboards, die für dieses Projekt in Betracht gezogen wurden, aber Arduino UNO war einfach nicht mit anderen vergleichbar. Es ist nicht so, dass unser Protagonist in Bezug auf seine mehrdimensionalen Merkmale überlegen war.

Wenn das der Fall gewesen wäre, hätten Raspberry Pi und Intel Edison es zwischen die Augen geschlagen. Die überzeugendsten Argumente, die zur Auswahl von Arduino UNO führten, wurden durch die Kombination von Merkmalen, Preis, Größe und Anforderungen für das Projekt gebildet.

Einige relevante Gründe waren:

GRÖSSE : Es ist im Vergleich zu Entwicklungsplatinen auf Atmega16- oder Atmega8-Basis recht klein, benötigt wenig Platz auf dem Chassis, sodass Sie einen kompakten und handlichen Bot erhalten.

Dies ist bei Robotikwettbewerben wirklich wichtig. Vertrauen Sie mir, Sie würden es hassen, mit diesem großen hässlichen Bot herumzulaufen und den ganzen Tag den Veranstaltungsort zu wechseln.

Kleiner als die Größe, schneller der Roboter und effizienter die Kurven.

BEST PROTOTYPING BOARD : Zweifellos hat Arduino UNO die beste Kombination von Funktionen für Prototyp entwickeln . Sobald Ihre Schaltkreise vorhanden sind und Ihr Projekt perfekt funktioniert, können Sie es durch etwas Kleineres und Billigeres wie Arduino Nano und Attiny85 ic ersetzen.

Für diejenigen, die Linienfolger für College-Projekte machen, schlage ich vor, UNO am Ende durch Nano zu ersetzen.

CHASSIS : Es ist der Rahmen, der alle Komponenten in Position hält. Beim Kauf eines neuen Chassis sind einige Punkte zu beachten:

Es sollte leicht und stark sein.

Für Projekte ist es besser, wenn Sie eines vom Markt kaufen. Wenn Sie sich jedoch auf den Wettbewerb vorbereiten, empfehle ich Ihnen dringend, Ihre eigenen anzupassen und dabei die Dimensionen und Anforderungen des Wettbewerbs zu berücksichtigen.

Wählen Sie ein Kunststoff- oder Holzgehäuse. Wenn Metallrahmen mit Arduino in Kontakt kommen, werden einige Stifte kurzgeschlossen. Dies ist ein wichtiger Faktor, auf den Sie sich bei der Suche nach Chassis konzentrieren sollten.

Halten Sie Ihr Chassis so niedrig wie möglich - dies gibt dem Bot Stabilität.

MOTOREN : Verwenden Sie eine leichte batteriebetriebene (B.O.) Gleichstromquelle. Motoren.

CASTOR BALL : Normale Räder bieten eine translatorische Bewegung entlang einer einzelnen Achse, aber eine Rollenkugel ist so konstruiert, dass sie sich entlang der Oberfläche in jede Richtung bewegt. Es gibt uns Dreiradantrieb.

Der Grund für den Vorzug des Dreiradantriebs gegenüber vier Rädern liegt in der vergleichsweise schnelleren Drehwirkung. Vielleicht haben Sie bemerkt, dass die Fahrradrikschas wie Reptilien durch den Verkehr stechen. Gleiches gilt für unseren Roboter.

SENSOREN : Es ist ein Gerät, das physikalische Parameter unserer Umgebung erkennt oder misst und in elektrische Signale umwandelt. In diesem Fall werden Infrarotstrahlen erfasst.

Sensoren sind für jeden Roboter von grundlegender Bedeutung. Wenn Arduino das Gehirn unseres Bots ist, könnten Sensoren genauso gut die Rolle der Augen spielen. Hier sind einige Dinge über Sensoren:

Die Sensoren müssen so ausgerichtet sein, dass die LED (s) zum Boden zeigen.

Sollte am vorderen Ende Ihres Bots platziert werden.

Der Mindestabstand zwischen ihnen muss größer sein als die Breite der schwarzen Linie.

MOTOR DRIVER BOARD : Motortreiber sind Pufferschaltungen, die Niederspannungssignale aufnehmen, um die Motoren anzutreiben, die eine höhere Spannung benötigen.

In unserem Fall kann Arduino eine ausreichende Spannung liefern, um die Motoren anzutreiben, aber es kann keinen ausreichenden Strom liefern. Die 5-V- und GND-Pins von Arduino UNO haben eine Nennstromstärke von 200 mA, während jeder GPIO-Pin eine Nennspannung von 40 mA hat. Dies ist viel niedriger als die von uns benötigten Anlauf- und Blockierstrommotoren.

Es gibt zwei Motortreiber, die ich für dieses Projekt bevorzuge: L298N und L293D. Beide eignen sich gleichermaßen für dieses Projekt.

Obwohl, L293D ist vergleichsweise günstiger hat aber eine niedrige Nennstromstärke. Ihre Verbindungen sind fast gleich. Da ich die Verbindungen für beide angegeben habe, liegt es ganz bei Ihnen, wie Sie Ihren Bot herstellen.

NETZTEIL ::

Verwenden Sie einen 12-V-Adapter oder eine Batterie (nicht mehr als 12 Volt).

Platzierung der Komponenten (vom vorderen zum hinteren Ende):

Sensoren an der Spitze Ihres Bots.

Lenkrad in der Mitte.

Motoren und Reifen in einer Reihe hinten.

Verbindungen:

SENSOREN zu ARDUINO ::

Verbinden Sie den Sensorstift wie gezeigt mit dem Arduino-Stift.

SensorstiftArduino Pin
VCC (5v)5V
GND (G)GND
LINKER SENSOR AUS (DO)Pin 6
RECHTER SENSOR AUS (DO)Pin 7

Hinweis: Um zu überprüfen, ob Ihre Sensoren eingeschaltet sind, richten Sie Ihre Handykamera auf die LED des IR-Senders. Auf dem Bildschirm leuchtet eine LED, die mit bloßem Auge nicht zu sehen ist. Einige moderne Handykameras verfügen über einen Infrarotfilter. Bitte berücksichtigen Sie dies.

MOTOR zu MOTOR FAHRER:

Jeder Motor verfügt über zwei Klemmen, die an den Motortreiber angeschlossen werden müssen. Versuchen Sie niemals, sie direkt mit Arduino zu verbinden. Wenn Sie von der Rückseite Ihres Bots aus mit Motoren in Ihrer Nähe und Sensoren in der Nähe schauen, schließen Sie diese wie folgt an:

MOTORL298NL293D
LINKER MOTORPIN 1 UND 2PIN 7 UND 8
RICHTIGER MOTORPIN 13 UND 14PIN 9 UND 10

KRAFTFAHRER nach ARDUINO UNO:

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

HINWEIS: Die Pins 8 und 9 von l298n werden zur Steuerung des an 1 und 2 angeschlossenen Motors verwendet. Die 10- und 11-Steuermotoren sind mit den Pins 13 und 14 verbunden. Ähnlich werden die Pins 5 und 6 von l293d zur Steuerung des angesteuerten Motors verwendet 7 und 8. Und 12 und 11 Steuermotor an Pin 9 und 10 angeschlossen.

Hier sind wir Jungs, bis zum Ende des Designteils. Wir haben noch die Codierung zu erledigen, aber vorher werden wir die Prinzipien durchgehen, die das Folgen von Zeilen ermöglichen.

So funktioniert ein Infrarotsensor:

Infrarotsensoren (IR-Sensoren) können verwendet werden, um den Kontrast in Farben und die Nähe von Objekten zu diesen zu erfassen. Das Prinzip, das hinter der Funktionsweise des IR-Sensors steckt, ist ziemlich einfach.

Wie wir sehen können, hat es zwei LEDs - IR-emittierende LED und eine Fotodiode. Sie wirken als Sender-Empfänger-Paar. Wenn ein Hindernis vor Emitterstrahlen kommt, werden sie vom Empfänger zurückreflektiert und abgefangen.

Dies erzeugt ein digitales Signal, das Mikrocontrollern und Aktuatoren zugeführt werden kann, um die erforderlichen Maßnahmen bei der Begegnung mit Hindernissen zu ergreifen.

Die grundlegende Physik sagt uns, dass ein schwarzer Körper die gesamte auf ihn einfallende elektromagnetische Strahlung absorbiert, während ein weißer Körper sie reflektiert. Dieses Prinzip wird von einem Linienfolger ausgenutzt, um zwischen weißer und schwarzer Oberfläche zu unterscheiden.

So funktioniert ein Linienfolger-Roboter:

LINE FOLLOWER LAYOUT

Im Normalzustand bewegt sich der Roboter so, dass beide Sensoren über weiß sind und die schwarze Linie zwischen den beiden Sensoren liegt.

Es ist so programmiert, dass beide Motoren so gedreht werden, dass sich der Bot in Vorwärtsrichtung bewegt.

Ganz natürlich kommt im Laufe der Zeit einer der beiden Sensoren über die schwarze Linie.

Wenn der linke Sensor über die Leitung kommt, werden die linken Motoren zum Stillstand gebracht und der Bot beginnt sich nach links zu drehen, es sei denn, der linke Sensor kommt wieder auf die weiße Oberfläche und der normale Zustand ist erreicht.

Wenn der rechte Sensor über die schwarze Linie kommt, werden die rechten Motoren gestoppt und folglich dreht sich der Bot jetzt nach rechts, es sei denn, der Sensor kommt über die weiße Oberfläche zurück. Dieser Drehmechanismus ist als Differentialantriebsmechanismus bekannt.

SCHALTPLAN:

VERDRAHTUNGSDETAILS:

PROGRAMMIERUNG UND KONZEPTE:

Nachdem wir mit dem Schaltungsteil fertig sind, fahren wir nun mit dem Programmierteil fort. In diesem Abschnitt werden wir das Programm verstehen, das unseren Roboter steuert. Hier ist der Code: / *
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()
}
}

Beschreibung der verwendeten Funktionen:

read_sensors (): Es nimmt die Messwerte beider Sensoren und speichert sie in den Variablen left und right.

move_forward (): Wenn das Arduino diese Funktion ausführt, bewegen sich beide Motoren in Vorwärtsrichtung.

turn_left (): Linker Motor stoppt. Bot biegt nach links ab.

turn_right (): Rechter Motor stoppt. Bot biegt rechts ab.

halt():Bot stops.

print_readings (): Zeigt die Messwerte der Sensoren auf dem seriellen Monitor an. Dazu müssen Sie 'Serial.begin (9600)' im void-Setup auskommentieren.

SENSORLESUNGEN:

Sensor über LeitungSENSORLESUNGEN
LINKSRICHTIG
LINKER SENSOR01
RICHTIGER SENSOR10
KEINER11
BEIDE00

GESCHWINDIGKEITSKONTROLLE:

Manchmal ist die Drehzahl der Motoren so hoch, dass der Roboter die Leitung verliert, bevor Arduino die Sensorsignale interpretiert. Kurz gesagt, der Bot folgt aufgrund der hohen Geschwindigkeit nicht der Linie und verliert die Linie immer wieder, obwohl der Algorithmus korrekt ist.

Um solche Umstände zu vermeiden, verringern wir die Geschwindigkeit des Bots mithilfe der PWM-Technik. Im obigen Code gibt es eine Variable mit dem Namen value.

Verringern Sie einfach den numerischen Wert in der Funktion, um die Geschwindigkeit zu verringern. In Arduino UNO können Sie nur pwm-Werte zwischen 0 und 255 haben.

analogWrite (Pin, Wert)

0<= value <=255

Dies ist das Ende meines Online-Postings. Ich hoffe, es ist detailliert genug, um alle Ihre brennenden Fragen zu beantworten, und wenn dies in der seltensten Realität nicht der Fall ist, haben wir immer den Kommentarbereich für Sie verfügbar. Kommentieren Sie Ihre Zweifel aus. Viel Spaß beim Basteln!




Zurück: Handygesteuertes Roboterauto mit DTMF-Modul Weiter: Passwortgesteuerter AC-Netz-EIN / AUS-Schalter