Inhaltsverzeichnis
Gleichstrommotor
Einen Gleichstrommotor anzusteuern ist relativ einfach.
Wir könenn hier zwischen mehreren Varianten unterscheiden.
Einfaches Ein/Ausschalten
Für das einfache Ein/Ausschalten eines Gleichstrommotors ist nicht viel nötig. Dazu benötigen wir nur eine einfache Treiberstufe. Diese hier reichen dafür: Schaltstufen
Wichtig wäre hier noch eine gute Entkopplung von Motorstromkreis und Arduinoversorgung.
WICHTIG: Niemals einen, wenn auch noch so kleinen, Motor direkt an die Ports anschliessen.
Es gibt nur ganz wenige Motoren, die mit den maximalen 40mA aus einem Port zum laufen kommen. Beim Anlaufen brauchen die meisten Motoren doch deutlich mehr und das kann dann den Port beschädigen. Und selbst wenn wir sicher unterhalb dieses Stromes bleiben, ein Gleichstrommotor erzeugt prinzipbedingt Störungen (Bürstenfeuer, magenitsche Rückwirkungen…), die auch unseren Arduino aus dem Trapp bringen können.
Also niemals einen Motor direkt mit dem Arduino treiben.
Vorwärts/Rückwärts ein/aus
Um einen Motor vorwärts und Rückwärts zu betreiben, muss man für den Rückwärtsteil die Anschlüsse am Motor vertauschen.
Mit Relais
H-Brücke
Man kann das ganze auch mit einer Transistor oder FET H-Brücke machen.
Nun muss man nur noch dafür sorgen, daß immer nur entweder die Transistoren A und C, oder B und D durchgeschaltet werden. Das kann man durchaus in Software machen, sollte man aber dann doch lieber in Hardware giessen. Denn wenn auch nur kurzzeitig A und B oder C und D gleichzeitig durchgeschaltet sind, wird die Akkuspannug kurzgeschlossen und die Transistoren werden durchbrennen.
Man kann die Brücke so real aufbauen, muss jedoch noch ein paar Schutzschaltungen wegen der bereits erwähnten Störungen des Motors machen. Besser ist es, einen dafür vorgesehenen Baustein zu verwenden. Ein sehr weit verbreiteter Treiber ist der L293D. Dieser enthält 2 H-Brücken, sommit lassen sich 2 DC-Motoren vor/rückwärts steuern. (Oder sogar 4 Motoren in eine Richtung) Nebenbei gibt es für den Arduino da sogar fertig aufgebaute Motorshields für wenig Geld, den L293D oder einen ähnlichen anderen Baustein verwenden.
Der IC kann pro Kanal bis zu 600mA (Die H-Variante kann bis zu 2A, hat aber leider keine Dioden eingebaut) vertragen. Der L293D hat die nötigen Dioden bereits eingebaut. Zur Schaltung als H-Brücke verbindet man den Motor so wie auf der linken Seite. Den Enable Eingang verbindet man dauerhaft mit 5V. JEtzt kann man an den beiden Eingängen jeweils mit High (1) und Low (0) die Brücke steuern. High (1) Oben, Low (0) unten, dreht der MOtor in die eine Richtung, umgekehrt dreht der Motor in die andere Richtung, beide High oder Low, der Motor stoppt.
Vorwärts mit Regulierung der Drehzahl
Um eine Drehzahlsteller aufzubauen, braucht man eigentlich nicht viel. Statt einem Relais nimmt man einfach eine entsprechende dimensionierte Transistor-Treiberstufe. Am besten natürlich eine mit einem MOSFET. Die eigentliche Steuerung übernimmt einer der PWM Controller im Arduino. Diese werden auch gerne als analoge Ausgänge bezeichnet. Das ist in soweit nur korrekt, wenn man das Ausgangssignal glättet. NImmt man es, so wie es aus dem Arduino rauskommt hat man ein PWM Signal mit einer Grundtaktfrequenz von ca. 490Hz. Für einfache Anwendungen ist das durchaus ausreichend, will man aber mehr, sollte man zunächst mit der Frequenz hochgehen. Am besten direkt oberhalb der Hörgrenze, dann fiepen die Motoren auch nicht.
Ein paar grundsätzliche Ideen zur Motoransteuerung mittels PWM findet man hier: www.mikrocontroller.net, Motoransteuerung mit PWM
Wenn wir eh einen Treiber vom Typ L293 oder was ähnliches benutzen, ist die Implementierung recht einfach. Wir verbinden nur den Enable-Eingang mit einem PWM-Pin und schon sind wir fertig. Den Rest übernimmt der L293…
Vorwärts/Rückwärts mit Regulierung der Drehzahl
Wie bereits oben gesehen, kann man mit einer H-Brücke einen Motor betreiben. Verbinden wir nun die H-Brücke mit einem PWM-Kanal und einem Pin für die Drehrichtung dann haben wir bereits einen fertigen Motorcontroller. Die fertigen Shields sorgen durch etwas Logik vor dem L293 übrigens dafür, daß das PWM Signal und die Drehrichtung richtig konvertiert auf den L293 kommen.
Ich möchte aber auch noch auf eine andere Variante aufmerksam machen, die gerade bei uns Modellbauern gerne verwendet wird. Es ist eine Kombination aus einer einfachen MOSFET Treiberstufe, die mit einem PWM Signal zur Drehzahlsteuerung angesteuert wird und einer Relaisschaltstufe zur Drehrichtungsänderung. So funktioniert z.B. auch der Volksregler von modellbau-regler.de.
Eine weitere Variante ist übrigens auch einfach einen normalen Modellbauregler zu verwenden. Zur Ansteuerung kann man dann die Servobibliothek verwenden. Für kleine Motoren reicht übrigens auch eine einfach Servoelektronik. Wenn man z.B. einen Servo ausschlachtet und das Potie auf Mittelstellung stellt, kann man damit die Drehzahl des Motors einfach mit der Servo Bibliothek ausgeben. Das kann manchmal deutlich billiger sein als ein Motorshield und man kann mit einem Pin sowohl Drehzahl wie auch Drehrichtung bestimmen. Denn das macht die PPM-Steuerung der Servobibliothek.