Inhaltsverzeichnis:
Video: Selbstausgleichender Roboter - PID-Regelalgorithmus - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:15
Dieses Projekt wurde konzipiert, weil ich daran interessiert war, mehr über Regelalgorithmen und die effektive Implementierung funktionaler PID-Schleifen zu erfahren. Das Projekt befindet sich noch in der Entwicklungsphase, da noch ein Bluetooth-Modul hinzugefügt werden muss, mit dem der Roboter von einem Bluetooth-fähigen Smartphone aus gesteuert werden kann.
Die verwendeten N20-Gleichstrommotoren waren relativ billig und haben daher ein erhebliches Spiel. Dies führt zu einem kleinen Ruck, wenn die Motoren den „Durchhang“überwinden, wenn sie Drehmoment auf die Räder ausüben. Daher ist es nahezu unmöglich, eine vollkommen gleichmäßige Bewegung zu erzielen. Der Code, den ich geschrieben habe, ist relativ einfach, demonstriert jedoch effektiv die Fähigkeiten des PID-Algorithmus.
Projektübersicht:
Das Chassis des Roboters wird mit einem Ender 3-Drucker in 3D gedruckt und ist so konzipiert, dass es zusammengepresst wird.
Der Roboter wird von einem Arduino Uno gesteuert, der Sensordaten vom MPU6050 übernimmt und die DC-Motoren über einen externen Motortreiber steuert. Es läuft mit einem 7,4 V, 1500 mAh Akku. Der Motortreiber regelt dies auf 5 V, um das Arduino mit Strom zu versorgen, und versorgt die Motoren mit 7,4 V.
Die Software wurde mit Hilfe der Bibliotheken 'Arduino-KalmanFilter-master' und 'Arduino-MPU6050-master' von gitHub von Grund auf neu geschrieben.
Lieferungen:
- 3D-gedruckte Teile
- Arduino UNO
- MPU6050 6-Achsen-Sensor
- Gleichstrommotortreiber
- N20 Gleichstrommotoren (x2)
- 9V Batterie
Schritt 1: Roboterbau
Druck und Montage
Der gesamte Aufbau sollte eingepresst sein, aber ich habe Sekundenkleber verwendet, um die Komponenten zu befestigen, um sicherzustellen, dass der Roboter beim Ausbalancieren völlig steif ist.
Ich habe die Teile in Fusion 360 entworfen und jedes Teil so optimiert, dass es ohne Stützen gedruckt wird, um engere Toleranzen und ein saubereres Oberflächenfinish zu ermöglichen.
Die beim Ender 3-Drucker verwendeten Einstellungen waren: 0,16 mm Schichthöhe bei 40% Füllung für alle Teile.
Schritt 2: 3D-Druckroboter
Fahrgestell (x1)
Linkes Rad (x2)
Linkes Motorgehäuse (x2)
Arduino-Gehäuse (x1)
Schritt 3: PID-Regelalgorithmus
Ich habe einen PID-Steuerungsalgorithmus von Grund auf mit den Bibliotheken 'Arduino-KalmanFilter-master' und 'Arduino-MPU6050-master' von gitHub geschrieben.
Die Prämisse des Algorithmus ist wie folgt:
- Rohdaten von MPU6050 lesen
- Verwenden Sie den Kalman-Filter, um Daten von Gyroskop und Beschleunigungsmesser zu analysieren, um Ungenauigkeiten bei den Gyroskop-Messwerten aufgrund der Beschleunigung des Sensors auszugleichen. Dies liefert einen relativ geglätteten Wert für die Neigung des Sensors in Grad auf zwei Dezimalstellen.
- Berechnen Sie den Fehler im Winkel, d. h.: Der Winkel zwischen Sensor und Sollwert.
- Berechnen Sie den proportionalen Fehler als (Konstante der Proportionalität x Fehler).
- Berechnen Sie den Integralfehler als laufende Summe von (Integrationskonstante x Fehler).
- Ableitungsfehler als konstant berechnen als [(Differenzierungskonstante) x (Fehleränderung / Zeitänderung)]
- Summieren Sie alle Fehler, um den an die Motoren zu sendenden Drehzahlausgang zu erhalten.
- Berechnen Sie anhand des Vorzeichens des Fehlerwinkels, in welche Richtung Motoren gedreht werden sollen.
- Die Schleife läuft auf unbestimmte Zeit und baut auf der Ausgabe auf, wenn die Eingabe variiert. Es handelt sich um eine Rückkopplungsschleife, die die Ausgabewerte als neue Eingabewerte für die nächste Iteration verwendet.
Der letzte Schritt besteht darin, die Parameter Kp, Ki und Kd der PID-Schleife abzustimmen.
- Ein guter Ausgangspunkt ist, Kp langsam zu erhöhen, bis der Roboter um den Schwerpunkt schwingt und einen Sturz auffangen kann.
- Als nächstes starten Sie Kd bei etwa 1% des Werts von Kp und erhöhen langsam, bis die Schwingungen verschwinden und der Roboter beim Drücken sanft gleitet.
- Beginnen Sie schließlich mit Ki etwa 20% von Kp und variieren Sie, bis der Roboter den Sollwert "überschreitet", um einen Sturz aktiv aufzufangen und in die Vertikale zurückzukehren.
Empfohlen:
Einen Roboter zur Hindernisvermeidung bauen – wikiHow
Wie man einen Hindernisvermeidungsroboter macht: Der Hindernisvermeidungsroboter ist ein einfacher Roboter, der von einem Arduino betrieben wird und was er tut, ist, dass er nur herumstreift und Hindernissen ausweicht. Er erkennt die Hindernisse mit einem HC-SR04 Ultraschallsensor, d. h. wenn der Roboter ein Objekt in der Nähe von
Einen intelligenten Roboter mit Arduino bauen – wikiHow
Wie man einen intelligenten Roboter mit Arduino macht: Hallo, ich bin Arduino-Hersteller und in diesem Tutorial werde ich Ihnen zeigen, wie man einen intelligenten Roboter mit Arduino macht, wenn Ihnen mein Tutorial gefallen hat, dann überlegen Sie, meinen Youtube-Kanal namens Arduino-Hersteller zu unterstützen
Einen humanoiden Roboter bauen – wikiHow
Wie man einen humanoiden Roboter baut: Hey Leute! Ich hoffe, Sie haben bereits meine vorherige anweisbare "Online-Wetterstation (NodeMCU)" und Sie sind bereit für einen neuen. Nach dem SMARS-Modellroboter, den wir beim letzten Mal zusammengebaut haben, geht es beim heutigen Projekt auch um das Lernen von Robotern und w
Roboter-Buggy bauen – wikiHow
Wie man einen Roboter-Buggy macht: Hallo !! In der heutigen Anleitung werde ich Ihnen beibringen, wie Sie Ihren eigenen Roboter-Buggy herstellen. Bevor wir auf die Spezifikationen und Dinge eingehen, die Sie dafür benötigen, ist ein Roboter-Buggy im Grunde ein programmierbares 3-Rad-Auto, das Sie steuern können
[Arduino-Roboter] Wie erstelle ich einen Motion-Capture-Roboter - Daumen Roboter - Servomotor - Quellcode: 26 Schritte (mit Bildern)
[Arduino-Roboter] Wie erstelle ich einen Motion-Capture-Roboter | Daumen Roboter | Servomotor | Quellcode: Thumbs Robot. Verwendet ein Potentiometer des Servomotors MG90S. Es macht sehr viel Spaß und ist einfach! Der Code ist sehr einfach. Es sind nur etwa 30 Zeilen. Es sieht aus wie ein Motion-Capture.Bitte hinterlassen Sie Fragen oder Feedback![Anleitung] Quellcode https://github.c