Inhaltsverzeichnis:

Selbstausgleichender Roboter - PID-Regelalgorithmus - Gunook
Selbstausgleichender Roboter - PID-Regelalgorithmus - Gunook

Video: Selbstausgleichender Roboter - PID-Regelalgorithmus - Gunook

Video: Selbstausgleichender Roboter - PID-Regelalgorithmus - Gunook
Video: 10 Coole Dinge von Amazon, die den Kauf wert sind 2024, November
Anonim
Selbstausgleichender Roboter - PID-Regelalgorithmus
Selbstausgleichender Roboter - PID-Regelalgorithmus

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

Roboterbau
Roboterbau
Roboterbau
Roboterbau
Roboterbau
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

3D-Druckroboter
3D-Druckroboter

Fahrgestell (x1)

Linkes Rad (x2)

Linkes Motorgehäuse (x2)

Arduino-Gehäuse (x1)

Schritt 3: PID-Regelalgorithmus

PID-Regelalgorithmus
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.

  1. Ein guter Ausgangspunkt ist, Kp langsam zu erhöhen, bis der Roboter um den Schwerpunkt schwingt und einen Sturz auffangen kann.
  2. 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.
  3. 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: