Einleitung
Ich zeige dir heute, wie du mit einer H-Brücke aus MOSFETs einen Elektromotor in beide Richtungen steuern kannst. Eine H-Brücke ermöglicht es dir, die Polarität der Spannung am Motor umzukehren und somit die Drehrichtung zu ändern – perfekt für deine Roboterprojekte, ferngesteuerte Fahrzeuge oder andere Anwendungen, bei denen du präzise Motorkontrolle brauchst. Die H-Brücke ist eine der grundlegendsten Schaltungen in der Elektronik, wenn du die volle Kontrolle über DC-Motoren haben möchtest.
Materialliste
Für dieses Projekt benötigst du folgende Bauteile:
- N-Channel MOSFET IRFZ40 – Auf Amazon ansehen
- P-Channel MOSFET IRF9Z30 – Auf Amazon ansehen
- DC Elektromotor 6-12V – Auf Amazon ansehen
- Steckbrett und Verbindungskabel – Auf Amazon ansehen
- Spannungsquelle 6-12V – Auf Amazon ansehen
- Arduino oder Mikrocontroller – Auf Amazon ansehen
- Widerstände 100Ω – Auf Amazon ansehen

Technische Grundlagen zur H-Brücke
Was ist eine H-Brücke?
Eine H-Brücke ist eine elektronische Schaltung, die aus vier Schaltern (in diesem Fall MOSFETs) besteht, die in einer H-förmigen Konfiguration angeordnet sind. Ich erkläre dir, warum diese Anordnung so genial ist: Durch gezieltes Schalten dieser Transistoren kannst du die Stromrichtung durch den Motor umkehren und damit seine Drehrichtung ändern.
N-Channel vs. P-Channel MOSFETs – Der Unterschied
- N-Channel MOSFET (IRFZ40): Dieser Transistor schaltet durch, wenn du am Gate eine positive Spannung anlegst. Ich verwende ihn typischerweise auf der Low-Side (Masse-Seite) der Schaltung.
- P-Channel MOSFET (IRF9Z30): Dieser schaltet durch, wenn am Gate eine negative Spannung (relativ zur Source) anliegt. Du setzt ihn auf der High-Side (Versorgungsspannung-Seite) ein.
Funktionsweise im Detail
Durch die Kombination von N- und P-Channel MOSFETs in der H-Brücke erreichst du vier verschiedene Zustände:
- Vorwärts: Ich schalte die linken oberen und rechten unteren MOSFETs durch – der Strom fließt von links nach rechts durch den Motor
- Rückwärts: Ich aktiviere die rechten oberen und linken unteren MOSFETs – der Strom fließt von rechts nach links
- Bremsen: Beide unteren oder beide oberen MOSFETs leiten – der Motor wird aktiv gebremst
- Freilauf: Alle MOSFETs sind gesperrt – der Motor läuft frei aus
Wichtiger Hinweis: Du darfst niemals gleichzeitig die oberen und unteren MOSFETs derselben Seite durchschalten! Das würde einen Kurzschluss erzeugen und deine Bauteile beschädigen.
Verkabelung und Schaltplan

Schritt-für-Schritt Aufbau der H-Brücke
Ich führe dich jetzt durch den Aufbau der Schaltung:
1. High-Side (obere MOSFETs):
- Verbinde die Source-Anschlüsse der P-Channel MOSFETs (IRF9Z30) mit der positiven Versorgungsspannung (+12V oder +6V, je nach deinem Motor)
2. Low-Side (untere MOSFETs):
- Verbinde die Source-Anschlüsse der N-Channel MOSFETs (IRFZ40) mit Masse (GND)
3. Motor-Anschlüsse:
- Die Drain-Anschlüsse der MOSFETs auf jeder Seite verbindest du jeweils miteinander
- Diese Verbindungspunkte bilden die beiden Anschlüsse für deinen Motor
- Schließe den Motor zwischen diese beiden Punkte an
4. Gate-Ansteuerung:
- Verbinde jedes Gate über einen 100Ω Vorwiderstand mit einem digitalen Ausgang deines Mikrocontrollers
- Diese Widerstände schützen sowohl die MOSFETs als auch deinen Controller vor Spannungsspitzen
5. Schutzmaßnahmen (empfohlen):
- Ich rate dir, Freilaufdioden parallel zum Motor zu schalten, um Spannungsspitzen beim Abschalten abzufangen
- Ein Kondensator (z.B. 100µF) parallel zur Spannungsversorgung stabilisiert die Spannung
Ansteuerungslogik
Für die Motorsteuerung benötigst du vier Steuersignale von deinem Mikrocontroller:
- Vorwärts: Signal 1 = HIGH, Signal 2 = LOW, Signal 3 = LOW, Signal 4 = HIGH
- Rückwärts: Signal 1 = LOW, Signal 2 = HIGH, Signal 3 = HIGH, Signal 4 = LOW
- Stop: Alle Signale = LOW
Der Code
Hier ist ein Beispiel-Code für Arduino, mit dem du die H-Brücke steuern kannst:
// Pin-Definitionen für die H-Brücke
const int MOSFET_1 = 2; // Linker oberer MOSFET (P-Channel)
const int MOSFET_2 = 3; // Linker unterer MOSFET (N-Channel)
const int MOSFET_3 = 4; // Rechter oberer MOSFET (P-Channel)
const int MOSFET_4 = 5; // Rechter unterer MOSFET (N-Channel)
void setup() {
// Alle Pins als Ausgänge konfigurieren
pinMode(MOSFET_1, OUTPUT);
pinMode(MOSFET_2, OUTPUT);
pinMode(MOSFET_3, OUTPUT);
pinMode(MOSFET_4, OUTPUT);
// Alle MOSFETs initial ausschalten
stopMotor();
Serial.begin(9600);
Serial.println("H-Brücke Motorsteuerung bereit");
}
void loop() {
// Motor vorwärts
Serial.println("Motor vorwärts");
motorForward();
delay(2000);
// Motor stoppen
Serial.println("Motor stopp");
stopMotor();
delay(1000);
// Motor rückwärts
Serial.println("Motor rückwärts");
motorBackward();
delay(2000);
// Motor stoppen
Serial.println("Motor stopp");
stopMotor();
delay(1000);
}
// Funktion: Motor vorwärts
void motorForward() {
digitalWrite(MOSFET_1, HIGH); // Linker oberer MOSFET ein
digitalWrite(MOSFET_2, LOW); // Linker unterer MOSFET aus
digitalWrite(MOSFET_3, LOW); // Rechter oberer MOSFET aus
digitalWrite(MOSFET_4, HIGH); // Rechter unterer MOSFET ein
}
// Funktion: Motor rückwärts
void motorBackward() {
digitalWrite(MOSFET_1, LOW); // Linker oberer MOSFET aus
digitalWrite(MOSFET_2, HIGH); // Linker unterer MOSFET ein
digitalWrite(MOSFET_3, HIGH); // Rechter oberer MOSFET ein
digitalWrite(MOSFET_4, LOW); // Rechter unterer MOSFET aus
}
// Funktion: Motor stoppen
void stopMotor() {
digitalWrite(MOSFET_1, LOW);
digitalWrite(MOSFET_2, LOW);
digitalWrite(MOSFET_3, LOW);
digitalWrite(MOSFET_4, LOW);
}
// Optional: Motor mit PWM-Geschwindigkeitssteuerung vorwärts
void motorForwardPWM(int speed) {
// speed: 0-255
analogWrite(MOSFET_1, speed);
digitalWrite(MOSFET_2, LOW);
digitalWrite(MOSFET_3, LOW);
analogWrite(MOSFET_4, speed);
}
Wichtiger Hinweis: Bei P-Channel MOSFETs musst du eventuell die Ansteuerungslogik invertieren (LOW = ein, HIGH = aus), abhängig von deiner spezifischen Schaltung und den verwendeten MOSFETs. Teste das vorsichtig mit niedrigen Spannungen!
Troubleshooting und Tipps
Häufige Probleme und Lösungen
Motor dreht sich nicht:
- Überprüfe, ob deine Spannungsversorgung ausreichend Strom liefert
- Messe die Spannung an den Gates – sie sollte beim Schalten deutlich messbar sein
- Kontrolliere alle Verbindungen auf dem Steckbrett
MOSFETs werden heiß:
- Du könntest versehentlich einen Shoot-Through (Kurzschluss) erzeugen
- Füge eine kleine Verzögerung (Dead-Time) zwischen dem Ausschalten eines MOSFETs und dem Einschalten seines Gegenstücks ein
- Eventuell benötigst du Kühlkörper für die MOSFETs
Motor läuft nur in eine Richtung:
- Prüfe die P-Channel MOSFETs – ihre Ansteuerung ist invertiert
- Kontrolliere die Gate-Spannungen mit einem Multimeter
Erweiterungsmöglichkeiten
Ich zeige dir, wie du dieses Projekt erweitern kannst:
- PWM-Steuerung: Durch Pulsweitenmodulation kannst du die Geschwindigkeit des Motors stufenlos regeln
- Strommessung: Mit einem Shunt-Widerstand in der Masseleitung kannst du den Motorstrom überwachen
- Optokoppler: Für galvanische Trennung zwischen Steuerung und Leistungsteil
- Mehrere Motoren: Baue mehrere H-Brücken für Multi-Motor-Projekte wie Roboter mit Rädern
Fazit
Mit dieser H-Brücken-Schaltung aus MOSFETs hast du eine leistungsfähige und effiziente Möglichkeit geschaffen, Elektromotoren bidirektional zu steuern. Die Kombination aus N-Channel (IRFZ40) und P-Channel (IRF9Z30) MOSFETs ermöglicht dir präzise Kontrolle über Drehrichtung und – mit PWM – auch über die Geschwindigkeit deines Motors.
Diese Grundschaltung ist die Basis vieler Motorsteuerungen in der Robotik und Automatisierung – von einfachen RC-Autos bis hin zu komplexen Roboterarmen. Du hast jetzt das Wissen, um professionelle Motorsteuerungen zu bauen und verstehst die Funktionsweise einer der wichtigsten Schaltungen in der Leistungselektronik.
Ich empfehle dir, zunächst mit niedrigen Spannungen und kleinen Motoren zu experimentieren, bevor du zu leistungsstärkeren Anwendungen übergehst. So kannst du die H-Brücke gefahrlos testen und verstehen.
Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book »Arduino Projekte Volume 1« an!
- Die beliebtesten Arduino-Projekte von StartHardware
- Inklusive Schaltplan, Beschreibung und Code
- Arduino-Schnellstart-Kapitel
- Kompakter Programmierkurs

Hallo,
in der aktuellen Version des Schaltbildes ist leider keine Batterie mehr enthalten obwohl in den KOmmentaren hin und wieder darauf Bezug genommen wird.
Gab es einen Grund, auf eine separate Stromversorgung für den Motor zu verzichten?
Könnte mir jemand das Schaltbild mit Batterie zusenden?
Hallo!
Meine Frage ist eig recht simpel.
Wenn ich den Motor nach rechts/links drehen will und die Drehzahl mit einer PWM steuere wie muss ich das dann Anschließen
Hallo,
zum Thema P-Mosfet:
Die Widerstände 10kOhm und 220 Ohm müssen vertauscht werden, da das Gate des P-Mosfet sonst bei geschaltetem npn Transistor ungefähr 10k/(10k+220) * Uv bekommt. Wobei Uv die Versorgungsspannung ist.
Bei gesperrtem npn Transistor liegt am Gate ungefähr die Versorgungsspannung Uv an.
Der Mosfet schaltet dadurch nicht.
Abhilfe schafft das Vertauschen der beiden Widerstände.
Wer noch etwas schnellere Schaltzeiten benötigt, kann beide Werte einfach noch halbieren, dritteln, oder sogar vierteln. (!!Spezifikationen des npn Transistors und Versorgungsspannung beachten!!)
Gruß, Stefan
Hallo Stefan,
besteht die möglichkeit mit einer anderen Software den Arduino beim laufenden Programm die Geschwindigkeit mit einem Schieber zu varieren, vorwärts rückwärts langsam schnell ohne bestimmte abläufe vorher zu Programmieren
Hallo,
der IRF9z30 verträgt eine Gate-Source-Spannung von -5V. Das bedeutet, man sollte die 10k mit der gezeigten Konfiguration weg lassen. Allerdings ist der Rds bei -5V noch realtiv hoch, wodurch die Verlustleistung ebenfalls relativ hoch ist. Grob überschlagen würde ich bei Raumtemperatur, ohne Kühlkörper den 9z30 maximal mit 800mA belasten.
Hallo,,
ich habe Interesse diese Schaltung zu verstehen und nachzubauen. Beim Verstehen gibt es aber das erste Prolem. Das Gate vom P-Mosfet wird über 220Ohm gegen Betriebsspannung gelegt und über 10KOhm durch den Transistor BC547 gegen Masse gezogen. Nach Ohmschen Gesetz verändert das die Spannung am Gate doch nur unwesentlich. Wie kann die Schaltung da funktionieren??? Und wie muß das Programm aussehen wenn ich z.B. über 2 Tasten den Motor in beiden Drehrichtungen mit unterschiedlichen Geschwindigkeiten und Richtungen steuern will?
Für Antworten vielen Dank und frohe Ostern
Peter
Eine Selbstbau-H-Brücke ist immer ein schwieriges Unterfangen.
Ein P-Mosfet sperrt, wenn am Gate ca die gleiche Spannung anliegt, wie am Source. Im Fall dieses Schaltbildes mit Versorgungsspanung für Motore größer als 5V schalten die oberen P_MOSFETS nie aus. Es kommt zu einem Kurzschluß. Wegen der Maximalen GARE-Sourcerspannung von +/- 20 V darf die Schaltung falls sie funktionieren würde auch nicht mit 24V betrieben werden.
Abhilfe: Ansteuerung des P_Mosfets durch einen Transistor wobei ich eine Ansteuerung durch 4 Arduino Ausgänge bevozuge, weil so der Motor ungebremst auslaufen kann (alle 4 MOSFET gesperrt). Ansonsten AnsteuerungsICs wie zB IR2104 und alles N-MOSFETs verwenden oder besser eine fertiges IC oder Modul nehmen.
Die genannten Mosfets sind für die Ansteuerung direkt durch Arduino nicht geeignet, da sie bei 5V Gatespannung nicht ganz durchschalten. Es sind Logic Level MOSFETs zu verwenden.
Stefan bitte ergänze und korrigiere die Beschreibung der Schaltung dahingehend, daß für diese Schaltung die Versorgungsspannung des Motors nicht größer als 5V sein darf.
Danke Uwe
@Uwefed: Vielen Dank für die Nachricht. Man lernt doch nie aus. Den Artikel ändere ich schnellstmöglich. Liebe Grüße, Stefan“
As more and more homeowners are forced to leave their homes, they turn to renting for the short term.
Playing games is not only for youngsters, it’s also for the youthful generation.
On top of this shock, I find out we now have a baby coming soon.
Hallo,
ich habe den Code so gemacht:
dadurch dreht sich mein Robotor einmal 3 sekunden nach links und dann 3 sekunden nach rechts…
Den linken Motor habe ich an pin 8 und 9
den rechten an pin 11 und 12 (einfach anschliessen ich weiss nicht mehr genau wie ich die Motoren angesteckt habe, also welcher Pin für forwärts und rückwärts war…)
int motor1l = 8;
int motor1r = 9;
int motor2l = 11;
int motor2r = 12;
void setup()
{
pinMode(motor1l, OUTPUT);
pinMode(motor1r, OUTPUT);
pinMode(motor2l, OUTPUT);
pinMode(motor2r, OUTPUT);
}
void loop()
{
analogWrite(motor1r, 100);
digitalWrite(motor1l, LOW);
analogWrite(motor2l, 100);
digitalWrite(motor2r, LOW);
delay(3000);
analogWrite(motor1l, 100);
digitalWrite(motor1r, LOW);
analogWrite(motor2r, 100);
digitalWrite(motor2l, LOW);
delay(3000);
}
You can certainly see your enthusiasm within the work you write.
The arena hopes for more passionate writers like you who aren’t afraid to say
how they believe. At all times follow your heart.