DC Motor-Steuerung

Elektromotoren können relativ einfach gesteuert werden. Motorsteuerung bedeutet im einfachsten Fall, den Motor in Bewegung zu versetzen. Dies geschieht in dem die Wicklungen des Motors mit Spannung versorgt werden. Dabei gibt es nur zwei Zustände: der Motor ist mit Spannung versorgt und dreht sich oder im anderen Fall eben nicht.

Um die Richtung des Motors zu wechseln, muss der Stromfluss in der Spule umgekehrt werden. Um dies ohne manuelles umpolen der Spannungsquelle zu erreichen, ist eine spezielle Schaltung erforderlich, die auf geschickte Art das automatische Umpolen ermöglicht. Die Schaltung hat ihren Namen von der Form wie die Schalter angeordnet sind. Da sie wie ein „H“ aus sieht wird sie als H-Schaltung oder H-Brücke bezeichnet. Eine solche H-Brücke sieht schematisch so aus:

Die rote Linie zeigt den Stromweg für die jeweilige Drehrichtung. Sind die Schalter 1 und 4 geschlossen, so dreht sich der Motor rechts herum. Schliesst man die Schalter 2 und 3 dreht sich der Motor in die andere Richtung. Wobei zu beachten ist, dass nicht alle theoretisch möglichen Schalterstellung zugelassen werden, um beispielsweise Kurzschlüsse zu vermeiden. Die Betriebsspannung U ist die Spannung für den Motor, die meist unabhängig von der Logik ist und auch höher gewählt werden kann als 12 V.

Steuerung der Motor-Geschwindigkeit

Die Geschwindigkeit eines Motors ist direkt proportional zur angelegten Spannung. Dies ermöglicht eine Geschwindigkeitsregulierung, indem eine Puls-Weiten-Modulation (PWM) verwendet wird.

Pulsweitenmodulation oder PWM ist eine Technik, die digitale Methoden verwendet, um analoge Ergebnisse zu erhalten. Bei der Pulsweitenmodulation nimmt man ein Rechtecksignal mit einer festen Frequenz und variiert die Breite der jeweiligen Pulse. Den Abstand zweier aufeinander folgender Pulse bezeichnet man als Periodendauer, die Breite des aktiven Pulses als Pulsweite. Das Verhältnis von Pulsweite zu Periodendauer bezeichnet man auch als “Duty Cycle”(also die Zeit, in der der Pin im Dienst ist).

Programmtechnisch kann ein PWM-Signal wie in der Graphik gezeigt erzeugt werden, und beispielsweise zur Geschwindigkeitsregelung an einem Gleichstrommotor verwendet werden. Dies ist möglich, weil die Geschwindigkeit eines Motors direkt proportional zur angelegten Spannung ist. Somit ermöglicht die Veränderung der Spannung über das erzeugte Verhältnis T1 zu T1+T2 die Geschwindigkeitsregulierung am Motor.

Standardmäßig bietet der Arduino mit dem Befehl AnalogWrite(…) die Möglichkeit, PWM-Signale mit einer Auflösung von 8 Bit und einer PWM-Frequenz von 490 Hz (Pin D3, D9, D10 und D11) bzw. 980 Hz (Pin D5 und D6) auszugeben. Die Funktion AnalogWrite sendet pseudo-analoge Werte mittels einer hardwarebasierten Pulsweiten Modulation (PWM) an den adressierten Ausgangspin. Diese arbeitet nach folgendem Prinzip: Ein Wert 0 generiert eine gleichmäßige Spannung von 0 Volt; Ein Wert von 255 generiert eine gleichmäßige Spannung von 5 Volt an einem festgelegten PIN. Für Werte zwischen 0 und 255 wechselt der PIN sehr schnell zwischen 0 und 5 Volt – je höher der Wert, desto länger ist der PIN auf HIGH (5 Volt).

In der nachfolgenden Tabelle werden einige markante Tastwerte den entsprechenden PWM Werten gegenüber gestellt. Würde man beispielsweise analogWrite(5, 64); eingeben, so würde am Pin 5 ein Signal mit einem Tastgrad von 25% ausgegeben werden.

Tastgrad0 %25%50%75%100%
PWM-Wert064128191255

Ansteuerung eines DC Motors

In der Praxis verwendet man keine einzelnen Transistoren sondern hochintegrierte Schaltkreise, die sämtliche Bauteile für eine Motorsteuerung enthalten. Ein Beispiel wäre der Baustein L293 D, der über 600mA Strom liefern kann. Daneben gibt es noch weit leistungsstärkere wie den L298 D der mit über 2A Motoren steuern kann. Im nachfolgenden Blockschaltbild ist der prinzipielle Aufbau schematisch dargestellt:

Blockschaltbild des IC L293 (Quelle www.ti.com)

Die Ansteuerung eines Motors ist damit relativ unkompliziert machbar. Wichtig ist dabei auf die unterschiedlichen Spannungsversorgungen zu achten. Der Baustein kann ohne Probleme mit 5V Spannung vom Arduino betrieben werden. Da die zu steuernden Motoren aber meist größere Spannungen benötigen, besteht die Möglichkeit eine externe Spannungsquelle an PIN 8 des Bausteins anzuschliessen. Der Masse Anschluss wird dagegen von beiden Spannungen verwendet.

Die Steuerung des Motors erfolgt über die beiden Eingänge IN1 und IN2 die mit den digitalen Ausgängen des Arduinos verbunden werden. Dabei können folgende vier Zustände auftreten:

Eingang IN 1Eingang IN 2Motor Verhalten
LOWLOWMotor Stoppt
LOWHIGHMotor dreht sich nach Links
HIGHLOWMotor dreht sich nach rechts
HIGHHIGHMotor stoppt

Eine elementare Steuerung mit dem Arduino sieht im einfachsten Fall so aus:

const int PIN_A = 7;
const int PIN_B = 8;

void setup () {
  Serial.begin(9600); 
  pinMode(PIN_A , OUTPUT);
  pinMode(PIN_B , OUTPUT); 
 
  // Motor nach rechts drehen
  digitalWrite(PIN_A, LOW); 
  digitalWrite(PIN_B, HIGH);

  // Motor nach links drehen
   digitalWrite(PIN_A, HIGH); 
   digitalWrite(PIN_B, LOW);
void loop() { }

Schreibe einen Kommentar