Neuentwicklung der Motoransteuerung

Die aktuelle Spieleransteuerung hat nach einigen Tests viele Probleme aufgezeigt. Zum einen war mir die Schussgeschwindigkeit zu gering und zum anderen hat der lineare Antrieb zu sehr gestottert. Zunächst bin ich davon ausgegangen, dass das ein mechanisches Problem ist und die Bewegung durch noch bestehende Toleranzen einfach sehr laut verläuft. Als ich nun aber mich mit dem Redesign der Platine beschäftigt habe, um einen anderen Motor für die Schussbewegung zu nutzen, ist mir aufgefallen, dass es in der Software noch einen Logikfehler bei der Motoransteuerung gab.

Grundsätzlich war der Gedanken sowohl für die Schussbewegung, als auch für die lineare Stellung den gleichen schnellen Motor zu verwenden. Dieser ist gekoppelt mit einem Encoder, der mit einem optischen Verfahren die aktuellen Position an den Microcontroller zurückliefert. Mein Gedanke war, wenn auf beiden Seiten die gleiche Hardware genutzt wird, sollte es auch möglich sein, den entsprechenden Softwarebaustein zu duplizieren. Im ersten Praxistest hat das allerdings sehr geruckelt. Ich hielt das erst für ein Hardwareproblem. Nach genauerer Analyse stellte sich allerdings heraus, dass der PID Regler mit einem Logikfehler implementiert gewesen ware. Fälschlicherweise wurde der Fehler zwischen Momentan-Geschwindigkeit und Soll-Geschwindigkeit durch den Regler direkt als Ansteuerung für den Motor genutzt. Folglich würde eine Spannung von 0V angelegt werden, hat der Motor die richtige Geschwindigkeit, was ihn natürlich sofort wieder entschleunigt. Das führt dann wieder zu einer neuen Beschleunigung, da die Geschwindigkeit zu gering war. Nachdem das Ganze mit 1 kHz passiert, sieht das praktisch wie ein Ruckeln aus.

Der neue Ansatz ist die Kaskadierung zweier Regler. Einer Überwacht die Position und der andere Be- und Entschleunigt den Motor entsprechend. In der Praxis hat das allerdings bei jeglichen Regelwerten zu einem Überschwingen geführt. Der entscheidende Faktor war es einen asymmetrischen PID Regler zu implementieren. Dieser interpretiert den Beschleunigungsvorgang separat von einer Entschleunigung und nutzt dementsprechend andere dafür optimierte Regelwerte. Dieses Grundgerüst sorgt für eine schnelle Bewegung zur entsprechenden Position. Ich bin sehr optimistisch, dass es damit nun möglich ist einen Schuss zu produzieren, der im Spiel wettbewerbsfähig ist. Manchmal muss man einen Schritt zurückgehen, um zwei nach vorne zu kommen...

Layout der neuen PCB, die zwei Motoren unterstützt


Da ich nun zwei Motoren statt einem Motor und einem Servo einsetzen, ist eine Neuentwicklung der Platine notwendig. Es muss vom Microcontroller ein weiterer Encoder eingelesen werden und es braucht einen zweiten Anschluss für den Motortreiber. Zusätzlich nutze ich das Redesign, um weitere Probleme zu beseitigen: Falsche Pinbelegungen, wie in einem vorherigen Blogpost erwähnt, werde ich verbessern, genauso wie es die Möglichkeit geben wird, die PCBs zu Daisy Chainen. Das Design ist soweit abgeschlossen und ich werde sie in den nächsten Tagen in Auftrag geben.

Schaltplan der neuentwickelten Platine


Den erhöhten Strombedarf der Motoren kann über jeweils ein Traco Power Netzteil gedeckt werden, welche mir die Firma dankenswerterweise für das Projekt zur Verfügung gestellt hat.

Im nächsten Schritt werde ich die Hardware vom aktuellen Test in den Tischkicker integrieren und die Software auf die Verwendung zweier Motoren anpassen.


Kommentare

Beliebte Posts aus diesem Blog

Erster Prototyp der Mechanik

Entwicklung einer Platine zur Bewegung der Spieler

Aufbau des Computersystems zur Spielberechnung