Inhaltsverzeichnis:

PID-basierter Linienfolgeroboter mit POLOLU QTR 8RC-Sensor-Array - Gunook
PID-basierter Linienfolgeroboter mit POLOLU QTR 8RC-Sensor-Array - Gunook

Video: PID-basierter Linienfolgeroboter mit POLOLU QTR 8RC-Sensor-Array - Gunook

Video: PID-basierter Linienfolgeroboter mit POLOLU QTR 8RC-Sensor-Array - Gunook
Video: Fast line follower Robot 2024, November
Anonim
PID-basierter Linienverfolgungsroboter mit POLOLU QTR 8RC-Sensor-Array
PID-basierter Linienverfolgungsroboter mit POLOLU QTR 8RC-Sensor-Array

Hallo!

Dies ist mein erstes Schreiben über instructables, und heute werde ich Sie auf die Straße bringen und erklären, wie man eine PID-basierte Linie nach dem Roboter mit QTR-8RC-Sensorarray baut.

Bevor wir mit dem Bau des Roboters fortfahren, müssen wir verstehen, was als PID bezeichnet wird.

Schritt 1: Funktionsprinzip

Was ist PID??

Der Begriff PID steht für proportional, integral, derivative. Also einfach, was wir mit der Einbeziehung von PID mit Linienverfolgung tun, ist, dass wir dem Roboter einen Befehl geben, der Linie zu folgen und die Drehungen zu erkennen, indem wir den Fehler berechnen, indem wir berücksichtigen, wie weit ist es von der Schiene abgekommen.

Schlüsselbegriffe wie in Polalu-Dokumenten erwähnt

Der proportionale Wert ist ungefähr proportional zur Position Ihres Roboters in Bezug auf die Linie. Das heißt, wenn Ihr Roboter genau auf der Linie zentriert ist, erwarten wir einen proportionalen Wert von genau 0

Der Integralwert zeichnet den Bewegungsverlauf Ihres Roboters auf: Er ist eine Summe aller Werte des Proportionalterms, die seit dem Start des Roboters aufgezeichnet wurden

Die Ableitung ist die Änderungsrate des proportionalen Wertes

In diesem Tutorial werden wir nur über Kp- und Kd-Terme sprechen, Ergebnisse können jedoch auch mit dem Ki-Term erzielt werden. Die Messwerte, die wir vom Sensor erhalten, sind nicht nur analoge Messwerte, sondern auch Positionsmesswerte des Roboters.so im Grunde Der Sensor liefert Werte von 0 bis 2500 von maximaler Reflexion bis minimaler Reflexion, gibt aber gleichzeitig auch Auskunft darüber, wie weit der Roboter von der Linie gestrandet ist.)

Jetzt müssen wir den Fehlerterm betrachten. Dies ist die Differenz der beiden Werte Sollwert und Stromwert. (Der Sollwert ist der Messwert, der der "perfekten" Platzierung der Sensoren über den Linien entspricht. und Der Strom Der Wert stellt die momentanen Messwerte des Sensors dar. Zum Beispiel: Wenn Sie diesen Array-Sensor verwenden und 8 Sensoren verwenden, erhalten Sie einen Positionsmesswert von 3500, wenn Sie genau richtig sind, etwa 0, wenn Sie zu weit weg sind die Linie und um die 7000, wenn Sie viel zu recht haben.). Unser Ziel ist es, den Fehler null zu machen. Nur dann kann der Roboter der Linie reibungslos folgen.

Dann kommt der Berechnungsteil,.

1) Berechnen Sie den Fehler.

Fehler = Sollwert - Aktueller Wert = 3500 - Position

Da ich 8 Sensoren verwende. Der Sensor liefert einen Positionsmesswert von 3500, wenn der Roboter perfekt platziert ist. Nachdem wir nun unseren Fehler berechnet haben, den Spielraum, um den unser Roboter über die Strecke driftet, ist es an der Zeit, den Fehler zu untersuchen und die Motordrehzahlen entsprechend anzupassen

2) Bestimmen Sie die eingestellten Drehzahlen der Motoren.

MotorSpeed = Kp * Fehler + Kd * (Fehler - LastError);

LastError = Fehler;

RightMotorSpeed = RightBaseSpeed + MotorSpeed;

LeftMotorSpeed = LeftBaseSpeed - MotorSpeed;

Logischerweise bedeutet ein Fehler von 0, dass unser Roboter nach links draußen ist, was bedeutet, dass unser Roboter ein bisschen nach rechts gehen muss, was wiederum bedeutet, dass der rechte Motor langsamer und der linke Motor schneller werden muss. DAS IST PID!

Der MotorSpeed-Wert wird aus der Gleichung selbst bestimmt. RightBaseSpeed und LeftBaseSpeed sind die Geschwindigkeiten (beliebiger Wert von PWM 0-255), mit denen der Roboter läuft, wenn der Fehler null ist.

Der Code, den ich angehängt habe, enthält auch, wie Sie die Positionswerte des Sensors überprüfen können, sodass Sie den seriellen Monitor öffnen und den Code hochladen und mit einer Zeile selbst sehen können, wie sich die Motoren drehen, wenn die Position variiert.

Wenn Sie bei der Implementierung Ihres Roboters in Schwierigkeiten geraten, überprüfen Sie einfach, ob und sehen Sie, indem Sie die Vorzeichen der Gleichungen ändern !!!

Und nun der kniffligste Teil, Kp UND Kd zu finden, ich musste mehr als 1 Stunde damit verbringen, meinen Roboter perfekt abzustimmen. Anstatt zufällige Werte einzugeben, fand ich eine einfachere Methode, um dies zu bestimmen.

  1. Beginnen Sie mit kp und Kd gleich 0, und beginnen Sie mit Kp, versuchen Sie zuerst, Kp auf 1 zu setzen und den Roboter zu beobachten. Unser Ziel ist es, der Linie zu folgen, auch wenn sie wackelt, wenn der Roboter überschwingt und die Linie verliert, reduzieren Sie den kp-Wert.wenn der Roboter eine Kurve nicht navigieren kann und träge ist, erhöhen Sie den Kp-Wert.
  2. Sobald der Roboter der Linie etwas zu folgen scheint, stellen Sie den Kd-Wert (Kd-Wert > Kp-Wert) ein, beginnen Sie bei 1 und erhöhen Sie den Wert, bis Sie eine sanfte Fahrt mit weniger Wackeln sehen.
  3. Sobald der Roboter beginnt, der Linie zu folgen, erhöhen Sie die Geschwindigkeit und prüfen Sie, ob er in der Lage ist, die Linie zu halten und ihr zu folgen.

Denken Sie daran, dass die Geschwindigkeit einen direkten Einfluss auf die PID-Abstimmung hat und Sie möglicherweise manchmal neu abstimmen müssen, um der Geschwindigkeit Ihres Roboters zu entsprechen.

Jetzt können wir mit dem Bau unseres Roboters beginnen.

Schritt 2: Der Build

Das Build
Das Build
Das Build
Das Build
Das Build
Das Build

Arduino atmega 2560 mit USB-Kabel – dies ist der verwendete Hauptmikrocontroller.

Chassis- für das Roboter-Chassis habe ich 2 runde Acrylplatten verwendet, die für ein anderes Projekt verwendet werden, das dafür perfekt ist. Mit Muttern und Schrauben habe ich ein 2-stöckiges Chassis gebaut, damit ich andere Module an der oberen Platte befestigen kann Sie können fertige Fahrgestelle verwenden.

www.ebay.com/itm/2WD-DIY-2-Wheel-Drive-Rou…

Mikrometall-Getriebemotoren - der Roboter brauchte schnell drehende Motoren, um die PID-Routine zu bewältigen, dafür habe ich Motoren mit einer Nennleistung von 6 V 400 U / min und geeigneten griffigen Rädern verwendet.

www.ebay.com/itm/12mm-6V-400RPM-Drehmoment-Gea…

www.ebay.com/itm/HOT-N20-Micro-Gear-Motor-…

QTR 8Rc Sensor-Array – dies kann für die Linienverfolgung verwendet werden, wie bereits erwähnt, ich denke, Sie haben jetzt ein klares Verständnis dafür, wie das Sensor-Array mit PID betrieben wird um einen schnellen Linienfolger aufzubauen.

www.ebay.com/itm/Pololu-QTR-8RC-Reflectanc…

TB6612FNG Motortreiber - Ich wollte einen Motortreiber verwenden, der Kurven im Handumdrehen handhaben und die Richtung ändern kann, der in der Lage ist, die Motoren effektiv zu bremsen, wenn das PWM-Signal niedrig wird.

www.ebay.com/itm/Pololu-Dual-DC-Motor-Drive…

Lipo-Akku - 11,1 V Lipo-Akku wird verwendet, um den Roboter mit Strom zu versorgen. Obwohl ich einen 11,1 V-Lipo-Akku verwendet habe, ist diese Kapazität mehr als das, was für das Arduino und die Motoren benötigt wird Lipo-Akku oder 6V Ni-MH-Akku ist perfekt. Aus diesem Grund muss ich einen Abwärtswandler verwenden, um die Spannung auf 6V umzuwandeln.

11.1V-

7,4 V-

Abwärtswandlermodul -

Darüber hinaus benötigen Sie Überbrückungsdrähte, Muttern und Schrauben, Schraubendreher und Isolierbänder sowie Kabelbinder, um sicherzustellen, dass alles an seinem Platz ist.

Schritt 3: Zusammenbauen

Montage
Montage
Montage
Montage
Montage
Montage
Montage
Montage

Befestigen Sie die Motoren und ein kleines Lenkrad mit Muttern und Schrauben in einer Platte und montieren Sie dann den QTR-Sensor, den Motortreiber, das Arduino-Board und schließlich die Batterie auf das Chassis.

Hier ist ein perfektes Diagramm, das ich im Internet gefunden habe und das Ihnen sagt, wie die Verbindungen hergestellt werden sollten.

Schritt 4: Entwerfen Sie Ihre Linienspur

Entwerfen Sie Ihre Linienspur
Entwerfen Sie Ihre Linienspur

Jetzt scheint Ihr Projekt fast abgeschlossen zu sein. Für die letzte Phase benötigen Sie eine kleine Arena, um Ihren Roboter zu testen. Ich habe eine zufällige Linie mit einer Breite von 3 cm verwendet, weiße Linie auf schwarzem Hintergrund. Stellen Sie sicher, dass Sie alles gut einfügen. Vermeiden Sie vorerst 90-Grad-Winkelkreuze und -Querschnitte, da dies ein komplizierter Fall der Codierung ist.

Schritt 5: Programmieren Sie Ihren Code

1. Laden Sie das Arduino herunter und installieren Sie es

Desktop-IDE

· Fenster -

· Mac OS X -

· Linux -

2. Laden Sie die QTR 8 RC-Sensor-Array-Datei herunter und fügen Sie sie in den Arduino-Bibliotheksordner ein.

·

· Dateien in den Pfad einfügen - C:\Arduino\libraries

3. Herunterladen und öffnenLINEFOLLOWING.ino

4. Laden Sie den Code über ein USB-Kabel auf das Arduino-Board hoch

Schritt 6: FERTIG

Image
Image

Jetzt haben Sie einen selbstgebauten Linienfolgeroboter.

Ich hoffe, dieses Tutorial war hilfreich. Zögern Sie nicht, mich über [email protected] zu kontaktieren, wenn Sie ein Problem haben.

bis bald mit einem weiteren neuen projekt.

Viel Spaß beim Bauen!!

Empfohlen: