Motoren

Gleichstrommotor

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. Auf dem Calliope mini V3 ist der DRV8835 Chip integriert. Bei den vorherigen Versionen kommt der DRV8837 Chip zum EInsatz. Die Drehgeschwindigkeit eines Motors wird über ein PWM-Signal geregelt.

Spannung Verschieden. Der integrierte Motortreiber ist auf 9 Volt sowie 1 Ampere 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.

Calliope mini

Stromversorgung

Die Spannung des Motortreibers entspricht bei Versorgung über USB Kabel ca. 4.7V, bei Versorgung mit vollen Batterien 2.8V. Beim Anschluss von Motoren ist darauf zu achten, dass diese Spannung zur Nennspannung des Motors passt. Über die 2 Pins Vm und GND kann eine externe Stromquelle angeschlossen werden, hier werden Spannungen bis 9V unterstützt und darf 1A nicht übersteigen. Im Vergleich zum Calliope mini 1 & 2 wird außerdem der gesamte mini über diesen Anschluss mit Strom versorgt.

Die Pins, an denen Motortreiber, Batterie und Motor angeschlossen werden, befinden sich unterhalb der LED Matrix auf der 30 Pin Stiftleiste.

Datenblatt: DRV8835

Anschluss

Um Motoren anzuschließen stehen zwei Anschlüsse M0 und M1 bereit, bei denen jeweils ein Motor an den Plus Pin und den Minus Pin angeschlossen wird. Im Unterschied zum Calliope mini 1 & 2 kann jeder Anschluss (M0 & M1) jeweils einen Motor vorwärts und rückwärts regeln, da jeder Anschluss eine vollwertige H-Brücke enthält.

Aufbau für einen Motor

Positiver Anschluss des Motors an M0+, negativer Anschluss des Motors an M0-.

Aufbau für 2 Motoren

Positiver Anschluss des 1. Motors an M0+, negativer Anschluss des 1.Motors an M0-. Positiver Anschluss des 2. Motors an M1+, negativer Anschluss des 2. Motors an M1-.

Stromversorgung

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 und 1A beschränkt ist und nicht überschritten werden sollte.

Die Pins, welche Motortreiber, Batterie und Motor verbinden, befinden sich unterhalb der LED-Matrix.

Datenblatt: DRV8837

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.

Datenblatt: DRV8837

Wahrheitstabelle

IN1 IN2 OUT1 OUT2 Modus
0 0 Z Z Leerlauf
0 1 L H Rückwärts
1 0 H L Vorwärts
1 1 L L Bremsen

H = High-Side-Schalter an, L = Low-Side-Schalter an, Z = Beide Schalter aus

Aus dem Datenblatt des Motortreibers kann man entnehmen, dass durch die beiden Motortreiber-Ausgänge OUT1 und OUT2 sowohl Vorwärts-, Rückwärts gefahren als auch gebremst werden kann. Falls diese vertauscht werden, dann wird lediglich die Polarität und die Richtung umgekehrt. Bremsen, wenn beide Pins auf HIGH/1 sind und Leerlauf, wenn beide auf LOW/0 sind, bleiben demnach gleich. Beim Leerlauf wird keine Spannung auf den Motor übertragen und er kann sogesehen ausrollen.

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.

Datenblatt: DRV8837

Wahrheitstabelle:

IN1 IN2 OUT1 OUT2 Motor1 Motor2
0 0 Z Z Bremsen Bremsen
0 1 L H Beschleunigen Bremsen
1 0 H L Bremsen Beschleunigen
1 1 L L Vorwärts Vorwärts

H = High-Side-Schalter an, L = Lowside-Schalter an, Z = Beide Schalter aus

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.


code

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

code

FAQ

Der alte Motortreiber hatte nur einen Masseanschluss und beide Motoren mussten sich diesen teilen. Die Schaltung hat sich im Grunde nicht verändert, es gibt nur einen weiteren Pin, damit es handlicher ist 2 Motoren mit 4 Kabeln auch an 4 Pins anzuschließen.

Der Motortreiber des Calliope mini V2 ist eine sogenannte H-Brücke, welche die verschiedenen Modi des Motors, wie Vorwärts-, Rückwärtsfahren, Bremsen und Leerlauf realisiert. Der Motortreiber ist so konzipiert, dass dieser als Vollbrücke einen Motor Vorwärts- und Rückwärts bewegen kann. Für zwei Motoren wird diese in zwei Halbbrücken aufgeteilt und es können die Motoren nicht unabhängig voneinander entgegengesetzt, beziehungsweise rückwärts bewegt werden.
Weitere technische Informationen dazu finden sich im Datenblatt: DRV8837

Selbstverständlich kann auch ein externer Motortreiber, beziehungsweise eine zweite H-Brücke verwendet werden um mehrere Motoren unabhängig voneinander zu steuern. Da die DC-Motoren ihre Geschwindigkeit über PWM-Signale regulieren, können dafür die analogen PWM-Pins des Calliope minis verwendet werden.

Dabei handelt sich derzeitig um einen Bug in der DAL. Vermutlich kann der PWM-Timer für Motor und Servo nicht gleichzeitig verwendet werden. Es lassen sich in der Regel bis zu 3 unabhängige PWM Signale generieren. Dieses Problem besteht nicht beim Calliope mini V3.


Servomotor

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.

Calliope mini

Anschluss

Ein Servomotor hat 3 Pins. Einen Pluspol (VCC), Masse (GND) und ein Signalkabel, welches die Winkelstellung als PWM-Signal übermittelt.

Stromversorgung Calliope mini V3 (<= 3.3 V)

Servomotoren, die mit 3,3 Volt oder weniger betrieben werden, können direkt über den VCC Anschluss des Calliope mini mit Strom versorgt werden. Dazu wird VCC an den Pluspol und GND an den Minuspol verbunden, die Verbindung kann über Jumper Kabel an die 30 Pin Stiftleiste oder über Krokodilklemmen an die Touch Pins passieren. Um Servos zu verwenden, kann jeder Pin verwendet werden, es ist aber darauf zu achten, dass die Pins nicht als Display Pins verwendet werden oder das Display deaktiviert werden muss. Die Pins P0 bis P3, C4, C8, C9, und C13 bis C17 eignen sich gut.
Die Stromversorgung erfolgt entweder über USB-C oder über 3xAAA bzw. 3XAA Batterien.

externe Stromquelle (>3 V)

Wenn Servomotoren mit einer Nennspannung über 3.3V verwendet werden sollen, kann ein Batteriefach mit 4x AAA oder 4 x AA Batterien eingesetzt werden. Hier wird sowohl der Servomotor als auch der Calliope mini direkt über die Batterien versorgt. Die Spannung des Batteriefachs liegt mit 4x1.5V=6V über der zulässigen Spannung von 5V für den Calliope mini Batteriekonnektor. Über den VM Anschluss ist aber eine Versorgung weiterhin möglich.

*Diese Doppelverbindung kann auch mit einem Steckbrett umgesetzt werden

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 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 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

Prinzipell können soviele Servos betrieben werden, wie PWM-Signale bereit gestellt werden können. Allerdings funktionieren bis zu 3 Servos verlässlich, was daran liegt, dass nicht mehrere PWM-Signale mit konstanter Frequenz vom Prozessor generiert werden können. Zu viele Servos die gleichzeitig betrieben werden, machen dann ruckartige, inkonstante Bewegungen.

Ein 360 Grad Servo ermittelt statt der Winkelstellung die Geschwindigkeit und Richtung über das PWM Signal. In vielen Fällen ist dabei 0 Grad die eine unendliche Bewegung gegen den Uhrzeigersinn und 180 Grad eine unendliche Bewegung in dem Uhrzeigersinn bei maximaler Geschwindigkeit. 90 Grad stoppt entsprechend den Motor. Da es sich auch in dem Fall um ein PWM Signal handelt, können die gleichen Servoblöcke verwendet werden.
Für Makecode gibt es alternativ das Paket continous servo, dass als Erweiterung geladen werden kann, indem der folgende Link in die Suchleiste eingetragen wird: github.com/tinkertanker/pxt-continuous-servo

Link kopieren


Schrittmotor

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.

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

Link kopieren


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.

FAQ

Ein Schittmotor kann über die Kombination der Polarisierung der Spulen (Phasen) eine unterschiedliche Schrittauflösung erreichen und würde so genauer und flüssiger laufen. Haben wir z.B. 4 Spulen die unabhängig polarisiert werden können, so kann der Magnet am Rotor jeweils im Vollschrittmodus sich zu einer Phase hin orientieren. Würde man jetzt zwei nebeneinanderliegende Phasen anschalten, dann würde sich der Minuspol des Rotors zwischen den beiden Phasen liegen. Kombiniert man diese, dann hätte man doppelt soviele Schritte, bzw. eine Halbschrittsequenz. Das ganze kann über Spannung, die an den Spulen anliegt ebenfalls variiert werden und so Mikroschritte mit einer noch geringeren Auflösung erreicht werden.

Ein Schrittmotor macht unterschiedliche Schritte pro Umdrehung. Das hängt zum einen von der Übersetzung der Zahnräder ab (Gear Ratio) und zum anderen von der Schrittauflösung und Schrittmodus ab. Der Schrittmotor 28BYJ-48 hat z.B. im Vollschrittmodus eine Schrittauflösung von 1/32 und eine Zahnradübersetzung von 1/64, was insgesamt 32 * 64 = 2048 Schritte pro Umdrehung ergeben.
Die Schritte pro Umdrehung können auch alternativ aus dem Schrittwinkel hergleitet werden: 360° / Schrittwinkel

Ja, es können die einzelnen Spulen eines unipolaren Schrittmotors direkt über die Pins polarisiert werden. Im Datenblatt steht oft drin welche digitalen Pins in welcher Reihenfolge auf 1 oder 0 gesetzt werden müssen, um z.B. den Motor im Voll- oder Halbschrittmodus zu betreiben.

Schaltfolgetabelle 28BYJ-48 als Halbschrittsequenz und Uhrzeigersinn
Werden die 1 und 0 vertauscht, wird auch die Polarität und Drehrichtung geändert

Anschluss Schritt 1 Schritt 2 Schritt 3 Schritt 4 Schritt 5 Schritt 6 Schritt 7 Schritt 8
Orange (OUT4) 1 1 0 0 0 0 0 1
Gelb (OUT3) 0 1 1 1 0 0 0 0
Pink (OUT2) 0 0 0 1 1 1 0 0
Blau (OUT1) 0 0 0 0 0 1 1 1

Code


Anschluss Schritt 1 Schritt 2 Schritt 3 Schritt 4
Orange (OUT4) 1 0 0 1
Gelb (OUT3) 1 1 0 0
Pink (OUT2) 0 1 1 0
Blau (OUT1) 0 0 1 1