H-Bridge mit DPDT-Relay

DPDT-Relay als H-Bridge

Bei meinen Experimenten mit dem Gleichstromspielzeugmotor kam ich relativ rasch an den Punkt, an dem ich die Laufrichtung des Motors gern geändert hätte. Mit etwas Herumstöpseln fand ich bald heraus, dass man dazu einfach die Anschlüsse des Motors vertauschen beziehungsweise den Strom an den Anschlüssen umpolen muss. Das erste Problem dabei ist übrigens, dass man das überhaupt sieht, denn solange man den Motor nicht mit PWM steuert und die Laufgeschwindigkeit herabsetzt, ist das Auge zu träge, um die Laufrichtung zu erfassen.

Nun war das keine befriedigende Lösung, Kabel von Hand umzustecken. Das müsste doch auch elektronisch gehen? Eine kurze Webrecherche führte mich zur H-Bridge, einer Schaltung, mit der man genau das kann. Doch die beschriebenen H-Bridges funktionierten alle mit vier Transistoren (ich habe im Moment nur zwei) oder mit MOSFETs (davon habe ich gar keine). Irgendwo fand ich dann noch einen Hinweis auf eine H-Bridge mit einem DPDT-Relay. Moment, genau dieses Teil ist doch in meinem Experimentierkit enthalten! Ein Blick auf das Datenblatt bestätigte, dass ich nicht nur stolze Besitzerin eines Relay wars, sondern dass dieses sogar noch den richtigen Typ, nämlich Double Pole Double Throw oder eben DPDT, hatte. Doch leider fand ich im Web trotz intensiver Suche weder ein Tutorial noch einen konkreten Schaltplan dazu.

Statt mich nun in den nächsten Online-Elektronikshop zu stürzen (es müsste wohl eher heissen zu klicken), beschloss ich, erst einmal das Projekt aus dem Kit nachzubauen. Das erwies sich als Glücksfall, denn erstens hörte ich tatsächlich dieses befriedigende Schmatzen, das ein Relay von sich gibt, wenn es umschaltet. Und zweitens wurde ich dafür belohnt, dass ich den oft gegebenen Rtfm-Ratschlag (Read the f… manual) tatsächlich beherzigte. Ganz unten an diesem Projekt gab es nämlich nicht nur den mir bereits bekannten Hinweis, dass man die gezeigte Schaltung so umbauen könne, dass man die Laufrichtung eines Motors ändern könne, sondern auch ein Schaltplan dabei. Nun bin ich nicht gerade ein Profi im Lesen von Schaltplänen, aber mit dem Vorwissen aus dem Projekt gelang es mir tatsächlich, die gewünschte Aufgabenstellung zu realisieren. Und weil man bis jetzt im Web eine brauchbare Anleitung für eine H-Bridge mit DPDT-Relay nicht wirklich findet, hier nun die Dokumentation dazu.

Projektziel

Mit einem DPDT-Relay soll eine H-Bridge zusammengesteckt werden, um die Laufrichtung eines Gleichstrommotors über Arduino steuern zu können.

Komponenten

  • 1 Arduino UNO R3
  • 1 Steckbrett
  • viele Jumperkabel M/M (Bezugsadresse Schweiz)
  • 1 Diode 1 amp 1N4001 (Datenblatt)
  • 1 Transistor NPN 0.6 Amp IC-2222A (Datenblatt)
  • 1 Gleichstrommotor 5V (bei mir war es einer aus einem Mecano-Kasten, es könnte auch dieser sein)
  • 1 Relay DPDT Axicom 5V (Datenblatt)
  • 1 Widerstand 2.2 kOhm (Datenblatt)
  • optional 1 Kippschalter

Bestückungsplan

Für das DPDT-Relay gibt es in Fritzing leider keine Komponente, die Darstellung mit dem Mystery-Teil stimmt von den Grössenverhältnissen nicht. Die zwei Beinchen mit dem grösseren Abstand, die sogenannte coil, müssen nach oben.

Bestückungsplan für H-Bridge mit Arduino und DPDT-Relay

 

Code

Der Code ist das Uninteressanteste am ganzen Projekt: die Richtung wechselt man, indem man den Motor abwechseln auf HIGH oder LOW setzt. Damit sind wir auch schon beim grössten Schönheitsfehler des Projekts: Mit dieser Steuerung kann man den Motor nur noch umschalten, aber weder abschalten noch die Geschwindigkeit regeln. Das geht nur mit zusätzlichen Transistoren und/oder Relais oder zumindest mit einem Kippschalter für das Abschalten. Tja, jetzt muss ich mich doch noch in den nächsten Online-Elektronikshop stürzen!

/*
 * Steuerung der Laufrichtung eines Motors
 * mit H-Bridge und DPDT-Relay
 * Author: Silvia Rothen, rothen ecotronics, Bern, Switzerland
 * http://ecotronics.ch.honorius.sui-inter.net/wordpress/category/physical-computing/
 */

int motor = 3;

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

// the loop routine runs over and over again forever:
void loop() {
  //Achtung, geht nicht mit analogWrite!
  digitalWrite(motor, HIGH);
  delay(1000);
  digitalWrite(motor, LOW);  //dreht Laufrichtung um
  delay(1000);
}

Demo

In diesem MP4-Video sieht und hört man, wie sich die Laufrichtung des Motors dreht, wenn das Relay mit einem Klicken schaltet.

 

Comments are closed.