Erste Bewegung mit dem Arduino

Ziel:

Der Arduino UNO soll Gleichstrommotoren, Schrittmotoren und Relais in Bewegung versetzen, dabei sollen die Bewegungen zielgerichtet auch in die jeweils entgegengesetzte Richtung ausgeführt werden können. Neben gerichteter Bewegung wollen wir uns Wege anschauen, auf denen  Geschwindigkeit und Kraft zu dosieren sind.

Scope:

Mikrocontroller verfügen über Eingänge wie auch Ausgänge zur Aufnahme von Information und Befehlssequenzen sowie zur Ausgabe von Information (z.B. auf einem Display, über ein Terminal, Speicherung auf Medien) – über die Leistungsfähigkeit (Leistung = Spannung x Strom), auch nur ein kleines Motörchen eine Zuckung zu entlocken, verfügen sie nicht. Derartige Bemühungen quittieren sie oft mit einem letzten, gerauchten Gruß. Es muss also ein „Hebel“ her, der Ausgangssignale des Controllers in handfeste Leistungen übersetzen kann. In diesem Beitrag werden Aspekte von Leistung / Verlustleistung / Verstärkung mittels Transistor / Schutzdiode / Treiberbausteine und H-Brücke behandelt.

Material / Bauteile:

  • TIP120
  • L293DNE
  • Diode
  • Widerstände 220 Ohm, 1 kOhm, 2,2 kOhm
  • Lüftermotor mit/ohne eingebaute Diode
  • Schlauchpumpe mit Gleichstrommotor
  • Digitalvolmeter (DVM)
  • Steckplatine
  • viele Steckbrücken

 

Hintergrund:

Aktoren bewirken meist eine Aktion, die eine höhere elektrische Leistung erfordert als der Mikrocontroller an seinen Pins abgeben kann. Erzeugte Aktionen sind dabei in einigen Fällen unmittelbar durch die menschlichen Sinne zu erfassen (Heizung, Bewegung, Licht usw.) in anderen Fällen lassen sich die Wirkungen erst durch den Einsatz technischer Hilfsmittel nachweisen und quantifizieren (Magnetfeld, UV-Strahlung, Ultraschall usw.). Viele Aktoren besitzen Spulen, die elektromagnetische Felder erzeugen.

In Spulen, die in magnetischen Felder bewegt werden, entsteht eine elektrische Spannung. Damit entsteht in Aktoren, deren Wirkung auf elektrischen Spulen beruht ein Problem. Nach Abschalten der für die Aktion notwendigen anliegenden Spannung besteht das magnetische Feld fort und induziert eine Gegenspannung. Dreht sich die Spule eines Motors in einem magnetischen Feld entsteht an den Enden der Wicklungen eine elektrische Spannung (Generatorspannung). Beide Efekte sind geeignet durch Erzeugung einer Überspannung oder Umkehrung der vorgesehenen Spannung, die Schaltung und mithin auch den Mikrocontroller zu zerstören. Auch nichtbewegte Spulen erzeugen bein Anlegen einer Spannung ein magnetisches Feld, das nach Entfernen der Spannungsquelle dafür sorgt, dass die Spannung nicht sogleich abfällt.

Experiment: Nach Verbinden des DVM (Einstellung Spannung <= 20 V) mit den Polen eines kleinen Gleichstrommotors, wird dieser in Bewegung gesetzt. Die auf dem DVM beträgt je nach Drehzahl weit mehr als + oder – 12V!

Leistung ist eine physikalische Größe und wird in Watt [W] gemessen. Ein Watt entspricht dabei 1 Joule pro Sekunde oder auch 1 Kilogramm mal Meter² pro Sekunde³. Gerade die letzte Beschreibung beschreibt erschließt sich nicht von selbst.

Im vorliegenden Fall interessiert zunächst die elektrische Leistung. Dort gilt, Leistung ist Spannung mal Strom.

P = U I

Die im Arduino UNO verwendete Spannung beträgt 5 Volt. Die maximale Belastbarkeit der Ausgangspins wird mit 20 mA angegeben. Daraus ergibt sich, dass die verfügbare Leistung eines Ausgangspins maximal 5 V mal 20 mA = 100 mW beträgt.

Der RaspberryPi wird mit 3,3 V betrieben. Die Pins dort dürfen dauerhaft (z.B. LED) mit nur 2 mA belastet werden. Damit steht dort eine Leistung von 3,3 V mal 3 mA = 9,9 mW zur Verfügung.

Schon ein Kleinstmotor braucht meist mehr Leistung, als die Ausgangspins zur Verfügung stellen können. Und warum ist das so? Die Pins sollen gar nicht direkt zum Schalten und Treiben von Lasten verwendet werden. Viele Pins sind auch für andere Aufgaben (zum Beispiel zur Kommunikation mit Peripheriegeräten) mehrfach belegbar. Dort könnten sich hohe Ströme sehr schnell zerstörerisch auswirken. Die Ausgangsspannungen von RaspberryPi und Arduino sind fast immer im Sinne der Anwendnung „falsch“! Gute Praxis ist die Verwendung von Potenzialtrennung und spezieller Verstärkerschaltungen, damit die „Intelligenz“ nicht negativ durch Rückwirkungen der „Muskeln“ beeinflusst wird.

Wann immer mit Strömen >20mA und Spannungen oberhalb der Spannung des Mikrocontrollerboards gearbeitet werden soll, empfiehlt sich die Verwendung eines regelbaren Labornetzgerätes mit Strombegrenzung. Ein kleiner Gleichstrommotor, der im Leerlauf maximal 2 A Strom benötigt mutiert zum stromhungrigen Moloch, wenn er blockiert (wird). 18 A Blockierstrom können dann auch fließen und sowohl den Motor als auch den Leistungsteil der entworfenen Schaltung in Hitzewallung versetzen. Jeder Versuchsbetrieb beginnt mit einer eingeschalteten Strombegrenzung, bei der sicher ist, dass ein etwa fließender Strom keinen Schaden anrichten wird.

Die einfachste und klassische Weise, mit variablen kleinen Strömen. große Ströme zu regeln, verläuft über den Transistor oder gekoppelte Transistoren. Ein Transistor besitzt 3 „Beinchen“. Im vorliegenden Fall eines npn-Transistors ist er in einer für mittlere Leistungen typischen Gehäuseform (TO220) verbaut. Mit Blick auf die Beschriftung sind dies von links nach rechts Basis, Collector und Emitter. Der Mikrocontroller steuert mit einem seiner Ausgangspins (möglichst ein PWM-fähiger Pin) die Basis des Transistors und somit den Strom der vom Collector aufgenommen und über den Emitter an GND (Ground = 0) weiterleitet. Die Last / der Aktor wird auf der einen Seite an die Eingangsspannung und mit der anderen Seite mit dem Collectoreingang verbunden. Die für die Last gewählte Eingangsspannung soll mindestens so groß wie die Arbeitsspannung des digitalen Ausgangspins sein. Sie darf die anliegende Spannung darf den Maximalwert des Transistors nicht übersteigen. Die Schaltung funktioniert nicht, wenn Emitter-Ground nicht mit dem GND-Ground-Pin des Mikrocontroller verbunden wird (gemeinsame Masse).

Der Transistor TIP120 ist eigentlich ein Darlington-Leistungstransistor und enthält eine zusätzliche innere Beschaltung, die eine äußere Beschaltung mit Freilaufdioden überflüssig machen soll. Trotzdem schadet eine zusätzliche äußere Beschaltung mit schnellen Dioden insbesondere dann nicht, wenn die äußeren Freilaufdioden schneller reagieren als die internen. Die externe Diode wird dabei zwischen den Collector und die positive Eingangsspannung so geschaltet, dass sie in Sperrichtung betrieben wird. Also zeigt der kennzeichnende Ring (Kathodenseite der Diode) auf der Diode in Richtung auf die positive Eingangsspannung.

Wie seinem Datenblatt zu entnehmen ist, kann er 5 A Strom bei 60 V anliegender Spannung steuern. Allerdings ist die maximal zulässige Leistung, die er steuern kann auf 2 W begrenzt solange er ohne Kühlkörper betrieben wird. Mit Kühlkörper sind es immerhin 65 W.

SteuerbareInduktiveLast_Steckplatine

Nachdem die folgenden Beispiel sinngemäß nachvollzogen und erste Erfahrungen mit der Ansteuerung von Motoren mit Hilfe des Arduino gemacht sind stellt sich die Frage, ob denn wohl neben der Leistung der Aktoren auch im die Drehrichtung zu steuern wäre.

High-Power Control: Arduino + TIP120 Transistor

High-Power Control: Arduino + TIP120 Transistor

Use Arduino with TIP120 transistor to control motors and high power devices

Use Arduino with TIP120 transistor to control motors and high power devices

Beispiel-Sketch zum Test des Aufbaus:

// Beispiel-Sketch fuer die Steuerung einer Last mit Hilfe
// eines TIP120-Transistors, der an Pin 9 angeschlossen ist

int pwmPinTIP120 = 9;

void setup() {
  pinMode(pwmPinTIP120, OUTPUT);
}

void loop() {
  analogWrite(pwmPinTIP120, 160); // schalte auf 2/3-Last ein
  delay(100);
}

Die H-Brücke löst das Problem mit der digitalen Steuerung des Drehrichtungswechsels auf elegante Weise. Hierzu ein Beitrag auf dieelektronikerseite.de.

Im praktischen Einsatz eines Fermenters zum Brauen von Bier findet sich die H-Brückenschaltung des sublab in Leipzig. Hier steuert H-Brücke die Temperierung über Peltierelemente.

Werden geringe Leistungen benötigt, genügt oft die Verwendung eines einzelenen Treiber-Bausteins wie dem L293DNE. Dieser besitzt zudem den Vorzug eingebauter Freilaufdioden. Leider kann er in Dauerlast nur Ströme bis 600 mA steuern.

Das Tutorial Nr. 15 von Adafruit zeigt die Ansteuerung eines kleinen Gleichstrommotors mit Hilfe des L293DNE. Im Beispiel von Adafruit kann sogar die Leistung des Motors durch ein Potenziometer verändert werden.

InvertierenderMototreiber_Steckplatine

Da der Treiberbaustein L293DNE über 4 Leistungsendstufen verfügt, ist er nicht nur in der Lage 4 Gleichstrommotoren zu steuern oder als H-Brücke einen Gleichstrommotor mit steuerbarer Drehrichtung anzutreiben, er lässt sich auch hervorragend als Treiberbaustein zur Steuerung eines Schrittmotors einsetzen. Das Adafruit Tutorial Nr 16 zeigt Aufbau und Musterprogramm dieser Steuerung. Andere Treiberbausteine sind zwar leistungsfähiger für einen Testlauf mit Schrittmotoren aus kleinen Diskettenlaufwerken genügt die Leistungsfähigkeit vollkommen.

Wem die englische Sprache nicht so nahe liegt oder wer einfach eine weitere knappe Darstellung eines Aufbaus Arduino UNO, L293DNE und kleiner Schlrittmotor aus Diskettenlaufwerk such, der wird auch auf der Webseite Arduino-Tutorial.de fündig. Auf dieser Seite stehen auch das Programm sowie einige weiterführende Anregungen mit Anschluss eines unipolaren Schrittmotors sowie der Nutzung einer externen Stromquelle.