Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
mechatronik:wise21:kugel_balancieren [2022/02/17 12:27] Seraphin |
mechatronik:wise21:kugel_balancieren [2022/02/18 18:16] (aktuell) EinPegler |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
Wir, de Equalizer-Gruppe, wollen hier eine Zusammenfassung unserer Präsentation im Wissenschaftsfenster hochladen. | Wir, de Equalizer-Gruppe, wollen hier eine Zusammenfassung unserer Präsentation im Wissenschaftsfenster hochladen. | ||
- | + | ** | |
- | Die Präsentationsfolien: | + | Die Präsentationsfolien:** |
{{:mechatronik:wise21:ml_theequalizor_2.pdf|}} | {{:mechatronik:wise21:ml_theequalizor_2.pdf|}} | ||
- | Der Bauplan: | + | **Der Bauplan:** |
- | {{:mechatronik:wise21:bauplan.jpeg?200|}} | + | {{ :mechatronik:wise21:thequalizer_schema.png?300 |}} |
- | Der Schaltplan: | + | **Der Schaltplan:** |
{{:mechatronik:wise21:schaltplan_3_ebene_1_schaltplan.jpg?200|}} | {{:mechatronik:wise21:schaltplan_3_ebene_1_schaltplan.jpg?200|}} | ||
- | Der Arduino-Sketch: | + | **PID-Regler** |
+ | Zum Balancieren der Kugel benutzen wir einen PID-Regler. Dieser versucht, einen Eingabewert einem gesetzten Punkt anzugleichen, indem er einen Ausgabewert verändert. | ||
+ | PID-Regler benötigen außerdem drei festgelegte Werte, die sein Verhalten bestimmen. Das tun sie, indem sie unterschiedliche Gewichtung auf die momentane Position, Geschwindigkeit und die Änderung der Geschwindigkeit der Kugel zur Findung des Ausgabewertes legen. | ||
+ | Zum Finden der korrekten PID-Werte haben wir ein zweites Programm geschrieben, das Variationen dieser Werte für jeweils 20 Sekunden ausprobiert und dann speichert, wie gut der jeweilige Versuch lief. Die besten Ergebnisse wurden danach noch einmal per Hand ausprobiert und verglichen. | ||
+ | Jedes der drei Parameter konnte einen Wert von 0,01 bis 0,1 in Schritten von 0,005 annehmen. Das sind 18 Werte Pro Parameter, also insgesamt 18^3 = 5832 Tests über einen Zeitraum von 1 Tag, 8 Stunden und 24 Minuten. | ||
+ | {{ :mechatronik:wise21:wertfindung.mp4? |}} | ||
+ | Zeitraffer des Wertfindungs-Programms | ||
+ | {{ :mechatronik:wise21:pidendwerte.png?300 |}} | ||
+ | Auswertung der besten Werte | ||
+ | **Der Arduino-Sketch:** | ||
<code> | <code> | ||
//=============================================================================================================================Includes und Definitionen | //=============================================================================================================================Includes und Definitionen | ||
Zeile 30: | Zeile 40: | ||
Servo myservo; //das Objekt, das den Servomotor steuert // | Servo myservo; //das Objekt, das den Servomotor steuert // | ||
// | // | ||
- | //PID-Regler benötigen drei Parameter, die bestimmen, wie stark die momentane Position, // | ||
- | //Steigung und die Änderung der Steigung des Eingabewertes zur Findung des Ausgabewertes beitragen // | ||
//Es werden zwei PID-Werte benutzt, zwischen denen je nach Entfernung gewechselt wird // | //Es werden zwei PID-Werte benutzt, zwischen denen je nach Entfernung gewechselt wird // | ||
double aggKp = 0.075, aggKi = 0.07, aggKd = 0.055; //agressive Werte // | double aggKp = 0.075, aggKi = 0.07, aggKd = 0.055; //agressive Werte // | ||
Zeile 82: | Zeile 90: | ||
{ // | { // | ||
//Geschieht zur Vermeidung von Messpitzen nur, wenn sie sich um mehr als 5 bewegt // | //Geschieht zur Vermeidung von Messpitzen nur, wenn sie sich um mehr als 5 bewegt // | ||
- | s1 = 2; //Zusätliche Glättung der Messwerte, Verfährt wie in Zeilen 61-63 // | + | s1 = 2; //Zusätliche Glättung der Messwerte, Verfährt wie in Zeilen 59-61 // |
s2 = s3; // | s2 = s3; // | ||
s3 = s4; // | s3 = s4; // | ||
Zeile 142: | Zeile 150: | ||
} | } | ||
</code> | </code> | ||
+ | |||
+ | Das fertige Projekt in Aktion: | ||
+ | {{ :mechatronik:wise21:thequalizerdemo.mp4?300 |}} | ||
+ | {{ :mechatronik:wise21:pid_2.png?300 |}} |