HaBuRo3. Die Software main.cpp

Zurück

Zuerst führe ich hier externe Bibliotheken auf, die für das HaBuRo3-Projekt notwendig sind. An allen Entwicklern herzlichen Dank für diese hervorragenden libraries.

L298N Motortreiber von Rolando Pelayo
PID-Regler von Brett Beauregard
MPU6050 von ElectronicCats & Jeff Rowberg

Hier gehts nun ins Eingemachte! Die Erstellung der Software war für mich keine leichte Kost. Allein um mich auf die Themen MPU6050, PID-Regler und Bluetooth einzuschießen brauchte ich etwa 60 Stunden. Das gesamte Softwareprojekt habe ich in vier Softwaremodule aufgeteilt und separat getestet. Jedoch mit der Zusammenführung dieser Module zum Gesamtpaket fingen die Probleme an. Das Zusammenspiel MPU6050 und Bluetooth hat mich sehr verzweifelt. Zigmal habe ich den ganzen Krempel in die Ecke geschmissen. Die Internetplattform Stack Overflow hat geholfen. Ich kann es mir nicht verkneifen: Deutsche Foren! Antworten habe ich erhalten wie: „Lerne zuerst, wie man einen Satz richtig schreibt!“

Im Februar 2023 waren einige warme Tage, da habe ich den HaBuRo3 mehrere Stunden ausprobiert. Der Einbau von drei Potentiometern zum Trimmen der Regler-Parameter hat sich gelohnt. Gott sei Dank. Um auch den letzten Feinschliff für Kp, Kd, Ki und den Setpoint hinzubekommen hätte man mindesten 25 Mal die Software neu kompilieren müssen.

Bevor ich dir die Software präsentiere muss ich dich noch auf eine Sache aufmerksam machen: Die nachfolgende Software läuft so wie sie ist problemlos. Die Potentiometer-Trimmung und die Visualisierung einiger Parameter zur Konsole müssen nicht unbedingt deaktiviert werden. Es gibt jetzt kein ECHTZEITPROBLEM mehr zwischen MPU6050 und den Rest der Welt. Jedoch die Trimmung mit Potentiometer hat auch Nachteile. Wenn ein Spindelpotentiometer nachträglich verstellt wird, funktioniert der Roboter nicht mehr. Weiterhin haben die ADC-Eingänge des ESP32 Mikrocontrollers einen Temperaturdrift. Es gibt zwei #define Anweisungen im main()-Programm. Werden diese Anweisungen auf Kommentar gelegt (Zeile 30 & 31), arbeitet der Roboter mit den Einstellungen in Zeile 19 bis 22.


HaBuRo3. Die Software main.cpp -1- HaBuRo3. Die Software main.cpp -2-


Hier möchte ich einige Besonderheiten beschreiben, die aus dem obigen Quellentext etwas verborgen sind. Zeile 28: Die zwei Getriebemotoren haben unterschiedliche Drehzahlen. Das wird mit den beiden Parametern 0,7 und 1,0 ausgeglichen. Zeilen 58, 60 und 61: Variablen für die Vorwärts-, Rückwärts- und Kurvensteuerung werden im Listing „bluetooth.cpp“ Zeile 18 und 19 manipuliert. Bei einer zu großen Veränderung des Sollwertes kippt der Roboter um!

HaBuRo3 Visualisierung Konsole


(1) Ist der Roboter senkrecht Ausgerichtet und das MPU6050 Breakout Board (Beschleunigungssensor und Gyroskop) in Waage, erhält man einen Neigungswinkel von 0,49°. (2) Nach Abschluss der Trimmung, der Roboter balanciert stundenlang vor sich hin, erhält man einen Sollwert (Setpoint) von -1,21°. Wie interpretiert man nun diese beiden Werte? Ich sehe das so, dass der Schwerpunkt des Roboters bei -1,21° liegt. Ist das richtig?

HaBuRo3-MPU6050-Software1 HaBuRo3-MPU6050-Software2 HaBuRo3-MPU6050-Software3


Datei: mpu_dmp.cpp
Datei: mpu_dmp.h
Mehr Details im Kapitel MPU6050!


HaBuRo3-tools.cpp -1- HaBuRo3-tools.cpp -2- HaBuRo3-tools.cpp -3-


Datei: tools.cpp
Datei: tools.h
Mehr Details im Kapitel Akku!


HaBuRo3 Software Remote -1- HaBuRo3 Software Remote -2-


Datei: bluetooth.cpp
Datei: bluetooth.h
Mehr Details im Kapitel Remote Empfänger!




Zurück