Calliope mit LEGO Motorsteuerung

Motorsteuerung Calliope Mini für LEGO 9V-Motoren

Der Calliope Mini besitzt zwei Kanäle zur Ansteuerung von Motoren und wir hätten diese gerne zur Ansteuerung eines LEGO-Modells mit zwei 9V-Motoren verwendet. Also schnell eine JST XH Buchse auf- und ein paar Kabel zusammen gelötet. Nachdem der Calliope programmiert und das LEGO Modell angeschlossen war kam die Enttäuschung. Die Calliope Motorsteuerung ist

  • zu schwach, die Motoren haben kaum Leistung
  • zwei Motoren können immer nur in die gleiche Richtung laufen
  • gelegentliches Brummen, da der Calliope-Lautsprecher irgendwo mit dranhängt

Damit wäre das Projekt fast gestorben, aber zum Glück hat der Calliope einen I²C Anschluss über den man die „DC Motor + Stepper FeatherWing Add-on For All Feather Boards“ Platine ansteuern könnte.

Stepper Motor Dual DC Driver Control Panel PCA9685 und TB6612

Das Modul bietet 4 Kanäle (jeweils bis zu 1.2A), wobei jeder Kanal einzeln vor- bzw. rückwärts und in beliebiger Geschwindigkeit laufen kann. Wem das nicht genügt, kann mehrere Module anhängen. Also haben wir gleich eine Bestellung beim Chinamann (PCA9685 mit TB6612 und ein paar weitere Teile) aufgegeben. Mit der Lieferung konnte dann endlich der Bau einer ordentlichen Motorsteuerung beginnen.

Bauteilliste

Alle Bauteile für die LEGO 9V Motorsteuerung mit dem Calliope Mini
  • JST 2.54 XH Stecker 6 Pin mit Kabel
  • JST 2.54 XH Buchse 6 Pin
  • 6S JST-XH Kopfschutz
  • seeed Grove – Adapterkabel, 4 Pin Dupont Female – 4 Pin Grove Stecker
  • Batteriehalter für 6 Mignonzellen (AA) mit Druckknopf
  • Batterieclip für 9-V Blöcke, L-Form
  • Gehäuse Box 70 x 45 x 30mm
  • 2 Zylinderschrauben mit Schlitz DIN 84 M3x6 und zwei Muttern
  • 1 LEGO Kabel
  • 2 LEGO 9V-Motoren
  • Stepper Motor Dual DC Driver Control Panel PCA9685 + TB6612
  • Reststück Lochrasterplatiene
  • etwas Kabel
  • Calliope Mini mit Batteriekasten

Aufbau der Motorsteuerung

Als erstes die Lochrasterplatine (2×13) zuschneiden. Dann können die JST 2.54 XH Buchse 6 Pin und drei Kabelpaare eingelötet werden.

JST 2.54 XH Buchse mit Lochrasterplatine und Schrauben/Muttern.
Fertige JST 2.54 XH Buchse auf Lochrasterplatine

Für den Anschluss habe ich einen JST 2.54 XH Stecker 6 Pin mit einem 6S JST-XH Kopfschutz versehen und dort 3 Paar Mini Tamiya Steckverbinder befestigt. Durch zwei mal Buchse für die Motoren (schwarze Kabel) und einmal Stecker für die Stromversorgung (rot/schwarzes Kabel) wird verhindert, dass die Batterie falsch angeschlossen werden kann. Nun trennt man das LEGO Stromkabel in der Mitte durch und bringt auch dort die Mini Tamiya Stecker an. Entsprechend sollte auch der Batterieclip mit einer Mini Tamiya Buchse versehen werden.

Adapterkabel für JST 2.54 XH Buchse mit Tamiyaanschlüssen

In das Gehäuse habe ich mit einem Dremel auf einer Seite etwa mittig ein rechteckiges Loch geschnitten, so dass die Buchse dort genau hindurch passt. Links und rechts daneben kommt jeweils ein kleines Loch für die M3 Schrauben. Durch Anhalten überträgt man die Position der Löcher auf die Lochrasterplatine und bohrt sie dort ebenfalls. Dann kann die Platine mit den M3 Schrauben und den Muttern in das Gehäuse eingeschraubt werden.

Gehäuse mit eingebauter Lochrasterplatine für JST 2.54 XH Buchse und Adapterkabel
Gehäuse mit eingebauter Lochrasterplatine für JST 2.54 XH Buchse

Die Kabelenden sollten mit Lötzinn getränkt werden, denn als nächstes werden sie mit den Anschlüssen M1, M2 und Spannungsversorgung der Steuerplatine verbunden. Diese legt man dann in das Gehäuse ein – ich habe auf eine weitere Befestigung verzichtet, da meine Kabel ziemlich starr sind und die Platine damit fest im Gehäuse sitzt – man könnte sie sicher noch einkleben oder mit Schrauben fixieren.

Zum Abschluss bohrt man ein weiteres Loch für das Seeed Grove Adapterkabel. Wenn man die Dupont Buchsen einzeln einführt, kann das Loch klein bleiben. Zur Zugentlastung gibt es zwar elegantere Wege, aber hier habe ich einfach einen Knoten in die Kabel gemacht.

Gehäuse mit angeschlossener DC Stepper + Motorsteuerung

Fertige Motorsteuerung

Wenn nun alles verbunden ist, kann der erste Test der Motorsteuerung mit dem Calliope Mini starten.

Angeschlossene Motorsteuerung mit Calliope und LEGO 9V Motoren

Programmierung

Die Ansteuerung des DC Motor Moduls erfolgt über eine Library, die Motorbefehle in passende I²C Nachrichten umsetzen kann. Die Programme selbst wurden mit OpenRoberta entwickelt und dann als C++ Sourcecode exportiert.

https://github.com/chpoulter/dcmotorlib

Mit dem Makefile wird die Library gebaut und ein paar fertigen Beispiel HEX-Dateien erzeugt werden. Hierzu werden allerdings die Calliope Mini Bibliotheken benötigt. Statt diese einzeln zusammen zu suchen, kann man auch das von OpenRoberta veröffentlichte GitHub-Projekt ora-cc-rsc verwenden.