Entwicklung einer Platine zur Bewegung der Spieler

Um ein Männchen zu rotieren bzw. linear nach links und rechts zu bewegen, ist eine komplexes Zusammenspiel zwischen einem Motor, dem Drehgeber und einem Servomotor erforderlich. Das Ganze soll mit einem Microcontroller überwacht und gesteuert werden, der jeweils für eine Stange mit ihren Spielern zuständig ist. Wie bereits im ersten Blogpost gezeigt, wird von einer Seite eine Gewindestange im Inneren der Tischkickerstange rotiert. Dadurch kann sich das Männchen bewegen. Für diese Bewegung ist ein Motor erforderlich, der sowohl schnelle Bewegungen durchführen kann, als auch auf den Millimeter genau gebremst werden kann.

Damit mein Programm später ermitteln kann, wo sich die Männchen befinden, ist direkt mit dem Motor ein inkrementeller Drehgeber, ein sog. Encoder, verbunden. Dieser gibt beim Feststellen einer Drehung je nach Richtung einen Impuls. Somit kann die genaue Position durch Zählen der Impulse bestimmt werden. Mehr zum Aufbau dieser Hardware in einem der nächsten Blogposts.

Um einen Schuss auszuführen, müssen sich die Männchen um die eigenen Achse drehen können. Dafür nutze ich ein High-Speed Servomotor, wie er auch in RC-Rennautos zum Einsatz kommt. 

Die Softwareentwicklung setzt einen zuverlässigen Hardwareaufbau voraus. Deswegen haben ich mich für die Konstruktion einer eigenen PCB bzw. Platine entschieden. An diese können übersichtlich alle Aktoren und Sensoren angeschlossen werden. Über einen USB-Anschluss kann der Datenaustausch mit dem Computersystem sichergestellt werden, das später die Spielzüge aus der Auswertung der Kameradaten errechnet. Das Herzstück der Platine ist der Controller "rp2040" der Raspberry Pi Foundation.

Um den Mikrocontroller (rp2040) herum sind auf dem Schaltplan die weiteren Komponenten der PCB platziert

Als der Schaltplan fertiggestellt war, mussten alle eingesetzten Komponenten auf einer Platine so Platz finden, dass die geplanten Verbindungsleitungen die sog. Traces auch tatsächlich physikalisch gelegt werden können. Denn aufgrund des Herstellungsverfahrens der Platine ist es nicht möglich, dass sich Leiterbahnen auf einer Ebene kreuzen, ohne dass sie eine elektrische Verbindung haben.

Das finale Layout der Platine, wobei die roten Komponenten auf der Ober- und die blauen auf der Unterseite zu finden sind

Nachdem ich die Platine noch einige Male überprüft hatte, konnte sie zur Fertigung abgesendet werden. Die Herausforderung ist, dass sobald das Layout zur Produktion an eine Spezialfirma in Auftrag gegeben ist, können keine Veränderungen mehr vorgenommen werden. Selbst der kleinste Fehler kann im Extremfall zur Unbenutzbarkeit der Platine führen. Wäre beispielsweise die Belegung des Steckers (unten Links im Bild) vertauscht, ist es nur sehr schwierig möglich Leiterbahnen wieder aufzuritzen und Verbindungen zu ändern.

Als die Platine bereits einige Tage später per Post ankam, konnte ich sie mit den vorgesehenen Bauteilen bestücken. Die erste Anspannung fiel ab, nachdem beim ersten Betriebstest die verbauten Betriebs-LEDs direkt funktioniert haben.

Leider musste ich nach weiteren Arbeiten an der Software doch feststellen, dass sich im Layout doch ein Fehler befindet. Am Microcontroller hatte ich für das Servo einen Pin gewählt, der für die Ansteuerung nicht verwendet werden kann. (Mehr zum konkreten Problem im nächsten Post.) Zum Glück gab es einen einfachen Workaround, indem mit einem kurzen Kabel die Verbindung auf einen anderen Pin des rp2040-Microcontrollers gebrückt werden konnten.

Eingebaute Platine mit der links zu sehenden Kabelbrücke für den Pinbelegungsfehler

Im nächsten Schritt muss eine embedded Software entwickelt werden, die den Befehl zum Schuss des Balls entgegennimmt und die Ansteuerung des Motors übernimmt. Diese muss durch das Auslesen des Encoders und die vorgegebene Sollposition durch den Tischkickercomputer ermittelt werden.

Tim Arnold

Kommentare

Beliebte Posts aus diesem Blog

Erster Prototyp der Mechanik

Automatische Spielfelderkennung mithilfe von Fiducials

Montage der IDS Kamera über dem Tischkicker