Ein Gleichstrom-Bürstenmotor (auch DC-Motoren) wird über die Geschwindigkeit kontrolliert. Indem die Pole vertauscht werden, kann auch die Richtung verändert werden in die der Motor läuft. Um die verschiedenen Richtungsanweisungen, wie Vorwärts, Rückwärts, Leerlauf und Bremsen zu gewährleisten, gibt es integrierte Schaltungen, die Motortreiber genannt werden. Einer (DRV8837) ist direkt auf dem Calliope mini verbaut. Die Drehgeschwindigkeit eines Motors wird über ein PWM-Signal, über die durchschnittliche Spannung geregelt.
Spannung | Verschieden. Der integrierte Motortreiber ist auf 9V beschränkt |
Positionsregelung | offener Regelkreis |
Geschwindigkeit | die Geschwindigkeit lässt sich variieren |

DC-Motoren eignen sich gut, um Fahrzeuge oder Propeller zu bauen, wenn es dabei nicht auf eine exakte Rotor- und Winkelstellung ankommt. Mit DC-Motoren können Dinge schnell und mit viel Kraft vor oder zurück bewegt werden.
Anschluss
Die Spannung, die der Calliope mini als Ausgang hat, liegt bei 3,3 V und wird für viele DC-Motoren nicht reichen. Deshalb werden diese über eine externe Stromquelle versorgt, die durch den Motortreiber auf maximal 9V beschränkt ist und nicht überschritten werden sollte.
Die Pins, welche Motortreiber, Batterie und Motor verbinden, befinden sich unterhalb der LED-Matrix.

Aufbau für einen Motor
Falls ein Motor angeschlossen wird, können die beiden logischen Pins A und B miteinander mit dem Motor verbunden werden. Die Reihenfolge ob A mit dem Minuspol oder B mit dem Pluspol des Motors verbunden werden, entscheidet darüber in welche Richtung dieser sich dreht.

Aufbau für 2 Motoren
Falls zwei Motoren angeschlossen werden, dann wird pro Motor ein logischer Pin A oder B und zusätzlich ein Masseanschluss (GND) verwendet. Da sich die Motoren jetzt jeweils eine unabhängige Halbbrücke des Motortreibers teilen, können sie nicht entgegenlaufen oder rückwärts fahren, sondern nur gemeinsam Vorwärts fahren und Bremsen oder jeweils einen Motor bremsen und den anderen in den Fahrmodus schalten.

Pinleiste
Zur Verbindung der Motoren kann eine 2,54 mm Stiftleiste verwendet werden und angelötet werden. Alternativ können auch lötfreie "Hammer"-Stiftleisten verwendet werden, die wieder entfernt werden können.
Zahnstochertrick
Für einen schnellen Aufbau, der nicht permanent sein soll, gibt es die Haushaltsalternative mit Zahnstochern. Dafür die Enden der Kabel von der Isolierung freilegen und dann die Litze mit Zahnstochern in die kleinen Löcher der Pins vorsichtig drücken. Solange der Kontakt zwischen Kabel und Pin hergestellt wird fließt auch ausreichend Strom für die Motoren.

Programmierung
Makecode
In Makecode sind die Motorblöcke under den Standardblöcken direkt zu finden

Ein Motor
Der Motor wird vorwärts bewegt, indem die Geschwindigkeit in der Programmierung auf eine positive Prozentzahl gesetzt wird. Um den Motor rückwärts zu bewegen werden negative Prozent eingestellt.

Für einen Motor gibt es noch die Modi "ausrollen", "bremsen" sowie schlafen:
- Rollt oder schläft der Motor wird keine Spannung angelegt, der Motor ist im Leerlauf.
- Bremst der Motor, dann wird dieser aktiv auf 0 Prozent Geschwindigkeit runtergeregelt.

Zwei Motoren
Um zwei Motoren zu steuern, wird der Block verwendet, indem Motor A und B, sowie A + B eingestellt werden können.
Um ein Fahrzeug z.B. nach rechts oder links zu bewegen, wird entsprechend die Geschwindigkeit des einen Motor verlangsamt, beziehungsweise auf 0 gesetzt und die des anderen Motors erhöht.

Die Fahrmanöver können wie hier im Beispiel in Funktionen definiert und abgerufen werden
Open Roberta Lab
Roboterkonfiguration
Im Open Roberta Lab, müssen zuerst die Pins für die Motoren in der Roboterkonfiguration konfiguriert werden. Unter Aktion finden sich der entsprechende Motorblock. Es kann Pin A und B ausgewählt werden. Wenn nochmal ein Blick in den Anschluss geworfen wird, dann sieht man, dass ein Motor die beiden Pins A und B belegt um auch rückwärts zu fahren. Deshalb müssen immer beide Motor-Pins konfiguriert werden, unabhängig davon, ob ein oder zwei Motoren angeschlossen wurden! Die Betitelung kann nach dem Aufbau angepasst werden.


Die Motor-Blöcke finden sich im Editor bei den fortgeschrittenen Blöcken (☆2) unter Bewegung

Ein Motor
Um einen Motor anzusteuern, wird der einfache Motorblock verwendet. Um den Motor vorwärts zu drehen, setze den Motorpin A auf eine Prozentzahl größer als 0. Damit sich dieser rückwärts dreht setze den Motorpin B hoch. Wichtig ist, dass nicht beide Motorpins gleichzeitig angeschaltet sind, denn dann wird der Motor gestoppt. Deshalb muss immer der entgegenlaufende Motorpin davor auf 0 gesetzt werden, indem dieser auf die Zustände "bremsen, schlafen oder ausrollen" gesetzt wird.

Zwei Motoren
Um zwei Motoren zu steuern, verwende den doppelten Motorblock.
Um ein Fahrzeug z.B. nach rechts oder links zu bewegen, wird entsprechend die Geschwindigkeit des einen Motor verlangsamt, beziehungsweise auf 0 gesetzt und die des anderen Motors erhöht.

FAQ
Ein Servomotor ist ein spezieller elektrischer Motor, der über die Winkelposition gesteuert wird. Ein zusätzlicher integrierter Sensor (Potentiometer) gibt die Informationen über die Position zurück. Über ein PWM-Signal wird anhand der Pulslänge die Winkelstellung übermittelt.
Spannung | Verschieden. Viele mit 5 - 6 Volt |
Positionsregelung | geschlossener Regelkreis (0 - 180°) |
2 verschiedene Versionen | Servos die sich um 180 und um 360 Grad drehen |

Servomotoren werden dann eingesetzt, wenn die Bewegung geschlossen und exakt sein muss. Im Modellbau werden sie z.B. für die Bewegung einer Schranke, oder das schwenkbare Höhenruder eines Flugzeugs verwendet.
Anschluss
Ein Servomotor hat 3 Pins. Einen Pluspol (VCC), Masse (GND) und ein Signalkabel, welches die Winkelstellung als PWM-Signal übermittelt.
Stromversorgung Calliope mini (3,3 V)
Servomotoren, die mit 3,3 Volt betrieben werden, können direkt über den Calliope mini mit Strom versorgt werden. Dazu wird VCC an den Pluspol und GND an den Minuspol der Krokodilklemmenanschlüsse/Touchpins verbunden. Es kann theoretisch jeder analoge Pin am Calliope mini für das Signal verwendet werden. Um jedoch bei den Touchpins zu bleiben, kann sowohl Pin P1, als auch P2 für das Signal verwendet werden.

externe Stromquelle (> 3,3 V)
Servomotoren mit mehr als 3 Volt sollten über eine externe Stromquelle, wie z.B. Batterien, betrieben werden.
Dafür wird die Versorgungsspannung (VCC) an den Pluspol, als auch die Masse (GND) an den Minuspol einer Batterie angeschlossen. Nur das Signalkabel (meist gelb) verbindet den Calliope mini. Dabei ist auch darauf zu achten, dass die Masse vom Servo auch mit der des Calliope Minis verbunden ist, damit der Stromkreis für die Signalleitung geschlossen ist.

Programmierung
Makecode
In Makecode befinden sich die Blöcke für die Servoansteuerung bereits in der Bibliothek. Diese finden sich unter den Fortgeschrittenen Blöcken unter Pins.

Servo zum Winkel bewegen
Mit "Setze Winkel..." wird der Servo in die jeweilige Winkelstellung mit kontinuierlicher Geschwindigkeit gefahren.

Pulslänge einstellen
Über die Pulslänge des PWM-Signals wird die Winkelstellung der Achse ermittelt. Die Frequenz bleibt dabei einheitlich bei 20 ms (50 Hz). der kürzeste Impuls, stellt den Servo auf 0 Grad und der längste auf die maximale Stellung von 180°. Alle anderen Positionen werden entsprechend dazwischen verteilt. Servos haben allerdings verschiedene Pulslängen. Diese kann in MakeCode angepasst und konfiguriert werden. Die meisten Servos haben eine Pulslänge zwischen 1 und 2 Millisekunden. Die neutrale Stellung zwischen den Werten wird im Editor festgelegt.
Die Pulslänge wird oft in Mikrosekunden (µs) angegbene. Das sind 1000 Millisekunden.

Open Roberta Lab
Roboterkonfiguration
Im Open Roberta Lab, müssen zuerst der Pin für den Servomotor in der Roboterkonfiguration konfiguriert werden. Unter Aktion finden sich der entsprechende Servomotor-Block. Der Servomotor kann an jeden beliebigen analogen/PWM Pin konfiguriert werden.

Servo zum Winkel bewegen
Der Block um den Servo in eine bestimmte Position zu bewegen befindet sich im Editor bei den fortgeschrittenen Blöcken (☆2) unter Bewegen
Der Servo wird in die jeweilige Winkelstellung mit kontinuierlicher Geschwindigkeit gefahren, die als Parameter gesetzt ist.

FAQ
Ein Schrittmotor bewegt sich, wie der Name es schon sagt, schrittweise in einem kleinen Winkel nach vorne. Anders als ein Servo gibt dieser keine Information über seine Position zurück. Auch wenn sie sehr exakt sind, fahren Drucker in denen Schrittmotoren eingebaut sind, ihre Patrone deshalb in eine Ecke, um sich neu zu orientieren und auszurichten. Der Schrittmotor läuft meistens langsamer und hat deshalb ein größeres Drehmoment.
Spannung | Verschiedene Spannungen, beginnend ab 2-3 V |
Positionsregelung | offener Regelkreis |
2 verschiedene Bauarten | Unipolare und bipolare Schrittmotoren |
Schrittmotoren werden in Maschinen und Automaten verbaut, die exakt und präzise arbeiten, wie 3D-Drucker, CNC-Fräsen, CD-Laufwerke, sowie Spiel- und Getränkeautomaten.
Unterschied Unipolar / Bipolar
Es gibt verallgemeinert zwei verschiedene Bauformen bei den Schrittmotoren:
Unipolar

Unipolare Schrittmotoren haben meistens 5, manchmal auch 6 oder sogar 8 Anschlüsse. Die beiden Spulen werden in der Mitte mit der Phase verbunden und so halbiert. Dadurch, dass jede halbe Seite der Spule unabhängig magnetisiert werden kann, kann die Polarität umgekehrt werden, ohne den gesamten Stromkreis umzukehren. Nachteil bei der Nutzung der halben Spule ist eine reduzierte Magnetkraft und ein geringeres Drehmoment.
- 5-6 Kabelverbindungen
- kein Treiber für Spannungsumkehrung, aber Transistorschaltung (Darlington-Array) erforderlich
- geringeres Drehmoment
- höhere Maximalgeschwindigkeit
Bipolar

Bipolare Schrittmotoren haben 4 Anschlüsse. Sie haben zwei Anschlüsse pro Spule. Der Vorteil von Bipolaren Schrittmotoren ist, dass sie effizienter sind, weil sie die ganze Wicklung der Spule verwenden. Der Nachteil ist, dass sie oft einen Treiber wie eine H-Brückenschaltung brauchen (ähnlich wie die DC-Motoren), damit die Polarität umgekehrt werden kann und dieser sich in die andere Richtung dreht.
- nur 4 Kabelverbindungen
- braucht einen Treiber zur Spannungsumkehrung (H-Brücke)
- höheres Drehmoment
- geringere Maximalgeschwindigkeit
Unipolarer Schrittmotor
Der meisten unipolaren Schrittmotoren brauchen für die höheren Ströme, um den Motor anzutreiben, eine Darlingtonschaltung, da die Ausgangsströme der Pins des Calliope mini nicht reichen würden, um die Spulen in den Schrittmotoren zu magnetisieren. Dafür kommen die Motortreiber in Spiel.
Je nachdem welche Spannungen die Motoren benötigen, sollte dies auch mit der zulässigen Spannung des Treibers abgestimmt werden. Diese Beispiele wurden mit dem 5 Volt Schrittmotoren getestet und einem Motortreiber basierend auf der Darlington-Schaltung:
Anschluss
Die Pins, die später im Editor konfiguriert werden, werden mit den vier IN-Eingängen der Treibermoduls verbunden. In diesem Beispiel werden die Pins C0 - C3 vom Calliope mini verwendet.
Die Pins C0 - C3 sind die "durchgeschleiften" Touchpins P0 - P3, die im Editor MakeCode auch nur als solche zu finden sind.
Es können aber auch alle anderen digitalen Pins verwendet werden. Mit die Ausgänge des Treibermoduls (OUT) wird der Motor angeschlossen. Da der Calliope mini nur 3,3V liefert, muss der Motor über den Motortreiber mit einer externen Stromquelle mit einer Spannung von 5V betrieben werden.
Die Masse (GND) des Calliope mini, als auch den der Batterie werden mit dem Ground (GND) des Treiberboards verbunden.

Grafik wurde mit Fritzing erstellt
Programmierung
Für einen Unipolaren Steppermotor 28BYJ-48 gibt es eine Erweiterung, die in den Editor geladen werden kann. Dazu auf Erweiterungen klicken und den folgenden Link in die Suchzeile eingeben: github.com/sarahhyy/pxt-28BYJ-48-stepper
Beim Start sollten die ausgewählten digitalen Pins des Calliope minis in der richtigen Reihenfolge für der Eingänge (in) des Treibermoduls ULN2003 vergeben werden.

Um den Schrittmotor vor- oder zurück zu bewegen können die folgenden "move"-Blöcke verwendet werden. Ein Schritt sind im Vollschrittmodus 11.25° Grad. Also braucht der Schrittmotor ungefähr 32 Schritte für eine ganze Umdrehung. In dem Block können sowohl, die Schritte, als auch volle Umdrehungen ausgewählt werden.
