Raspberry Pi - MOSFET-Modul
Dieses Tutorial zeigt Ihnen, wie Sie mit dem Raspberry Pi eine 12V-DC-Last, zum Beispiel einen LED-Streifen oder einen Lüfter, über ein MOSFET-Modul ansteuern. Ein GPIO-Pin des Raspberry Pi arbeitet mit 3,3V und liefert nur einen sehr kleinen Strom. Das MOSFET-Modul nimmt dieses schwache Signal und steuert damit eine viel größere Last aus einem separaten Netzteil. Im Detail lernen wir:
- Was in den MOSFET-Modulen AOD4184, LR7843 und FR120N steckt und welches zu Ihrer Last passt
- Wie man den Raspberry Pi, das MOSFET-Modul, ein 12V-Netzteil und einen 12V-LED-Streifen verbindet
- Wie man ein Python-Skript schreibt, das die Last ganz ein- und ganz ausschaltet
- Wie man ein Python-Skript schreibt, das die Leistung der Last mit PWM Schritt für Schritt ändert
Wir empfehlen:
- Ein Relais zu verwenden, wenn das Gerät mit Netzspannung (AC) läuft. Das MOSFET-Modul kann nur DC verarbeiten.
- Einen PC817-Optokoppler zu verwenden, wenn Sie die umgekehrte Richtung brauchen, also wenn der Raspberry Pi ein 12V- oder 24V-DC-Signal erfassen soll, statt eines zu schalten.
Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über das MOSFET-Modul
Stellen Sie sich das MOSFET-Modul als einen Halbleiterschalter vor, der in der Minusleitung Ihrer DC-Last sitzt. Der Raspberry Pi sagt ihm, wann er leiten soll, und das Modul lässt den 12V-Strom durch die Last fließen oder sperrt ihn. Im Inneren bewegt sich nichts, daher gibt es kein Klicken und nichts nutzt sich mit der Zeit ab. Das Modul reagiert außerdem schnell genug, um einem PWM-Signal zu folgen. Mit PWM kann der Raspberry Pi einen LED-Streifen dunkler oder heller machen oder einen Lüfter oder Motor langsamer oder schneller laufen lassen.
Eine Seite deckt hier drei Platinen ab: AOD4184 (manchmal auch als D4184 verkauft), LR7843 und FR120N. Das Platinenlayout, die Pins, die Verdrahtung und das Python-Skript sind bei allen dreien gleich. Nur der MOSFET-Chip auf der Platine ist anders.
| AOD4184 | LR7843 | FR120N | |
|---|---|---|---|
| MOSFET-Chip | AOD4184A (N-Kanal) | IRLR7843 (N-Kanal) | IRFR120N (N-Kanal) |
| Max. Lastspannung (MOSFET-Nennwert) | 40V DC | 30V DC | 100V DC |
| Max. Strom (MOSFET-Nennwert) | 50A | 161A | 9,4A |
| Durchlasswiderstand RDS(on) | etwa 7 mΩ | etwa 3,3 mΩ | etwa 210 mΩ |
| Praktischer Strom ohne Kühlkörper | etwa 10–15A | etwa 15A | etwa 2A |
| Steuersignal | 3,3V / 5V Logik, aktiv HIGH | 3,3V / 5V Logik, aktiv HIGH | 3,3V / 5V Logik, aktiv HIGH |
| Isolation | PC817-Optokoppler | PC817-Optokoppler | PC817-Optokoppler |
| PWM | ja, bei etwa 1 kHz oder weniger halten | ja, bei etwa 1 kHz oder weniger halten | ja, bei etwa 1 kHz oder weniger halten |
| Lasttyp | nur DC | nur DC | nur DC |
Wie das Modul innen funktioniert
Das GPIO-Signal erreicht den MOSFET nie direkt. Es läuft in dieser Reihenfolge durch diese Teile: den PWM-Pin des Moduls, einen kleinen Widerstand, die LED im PC817-Optokoppler, dann (als Licht) den Fototransistor im selben PC817 und schließlich das Gate eines N-Kanal-MOSFETs. Der MOSFET liegt zwischen der LOAD-Klemme und der −-Klemme, er schaltet also die Minusleitung der Last (ein Low-Side-Schalter). Die Last selbst wird zwischen + und LOAD angeschlossen.
Die Logik ist aktiv HIGH. Unten sehen Sie, was im Modul bei jedem Signal passiert, das GPIO16 senden kann.
Wenn GPIO16 3,3V (HIGH) ausgibt
Ein GPIO-Pin des Raspberry Pi liefert nur 3,3V, nie 5V. Das reicht für das Modul:
- Die LED des Optokopplers braucht nur wenige Milliampere, daher kann der 3,3V-Pin sie direkt ansteuern. Es fließt ein kleiner Strom, und die LED leuchtet im Chip (Sie können es nicht sehen).
- Das Licht schaltet den Fototransistor ein. Das MOSFET-Gate erhält jetzt etwa die Hälfte der Lastversorgung, also etwa 6V bei einem 12V-Netzteil.
- Der MOSFET schaltet ganz EIN und wird zu einem geschlossenen Schalter. Sein Widerstand ist sehr niedrig: einige mΩ beim AOD4184 und beim LR7843 und etwa 0,2Ω beim FR120N.
- Der Strom muss diese Schleife durchlaufen: Netzteil + → +-Klemme → Last → LOAD-Klemme → MOSFET → −-Klemme → Netzteil −.
- Die Last erhält fast die volle Versorgungsspannung (etwa 12V) und läuft mit voller Leistung.
In Python ist das GPIO.output(MOSFET_PIN, GPIO.HIGH) oder ein Tastverhältnis von 100% mit pwm.ChangeDutyCycle(100).
Wenn GPIO16 0V (LOW) ausgibt
- Die LED des Optokopplers bekommt keinen Strom und leuchtet deshalb nicht.
- Ohne Licht bleibt der Fototransistor aus. Ein Widerstand am Gate zieht das MOSFET-Gate auf 0V.
- Der MOSFET schaltet AUS und wird zu einem offenen Schalter zwischen LOAD und −.
- Die Minusleitung der Last ist nun von Masse getrennt. Es kann kein Strom fließen, die Last erhält 0V und ist AUS.
In Python ist das GPIO.output(MOSFET_PIN, GPIO.LOW) oder pwm.ChangeDutyCycle(0).
Wenn GPIO16 ein PWM-Signal ausgibt
Das Skript in diesem Tutorial erzeugt das PWM-Signal mit pwm = GPIO.PWM(MOSFET_PIN, 500). Das bedeutet, dass GPIO16 500 Mal pro Sekunde zwischen 0V und 3,3V wechselt. Daraus folgt:
- Der MOSFET folgt jedem Wechsel. Er ist bei jedem HIGH-Teil EIN und bei jedem LOW-Teil AUS, sodass die Last 12V-Impulse erhält.
- Das Tastverhältnis ist der Teil jeder Periode, in dem das Signal HIGH ist. Sie stellen es mit pwm.ChangeDutyCycle() ein, von 0 bis 100.
- Die durchschnittliche Spannung und die durchschnittliche Leistung ergeben sich aus dem Tastverhältnis mal dem vollen Wert.
| pwm.ChangeDutyCycle() | Signal | Durchschnitt an einer 12V-Last |
|---|---|---|
| 0 | immer LOW | 0V, die Last ist AUS |
| 10 | 1/10 der Zeit HIGH | etwa 1,2V, etwa 10% Leistung |
| 50 | die Hälfte der Zeit HIGH | etwa 6V, etwa halbe Leistung |
| 90 | 9/10 der Zeit HIGH | etwa 10,8V, etwa 90% Leistung |
| 100 | immer HIGH | 12V, volle Leistung |
Das Skript geht in 10%-Schritten von 10% bis 100%, sodass Sie jede Stufe sehen können. Ein LED-Streifen sieht bei einem niedrigen Tastverhältnis dunkler aus, weil er zu schnell flackert, als dass das Auge es bemerkt. Ein Lüfter oder Motor dreht langsamer, weil seine drehende Masse die Impulse glättet.
Sie müssen die PWM-Frequenz niedrig halten, etwa 500 Hz bis 1 kHz, weil der PC817 ein langsames Bauteil ist. Ist die Frequenz zu hoch, kann der MOSFET nicht vollständig schalten. Die Last erhält dann keine sauberen Impulse, und der MOSFET wird heiß.
Weitere Folgen dieses Aufbaus
- Die Raspberry-Pi-Seite und die 12V-Seite sind elektrisch getrennt. Die Signalmasse und die Lastmasse sind auf dem Modul nicht verbunden.
- Die Gate-Spannung wird aus der Lastversorgung genommen, nicht vom Raspberry Pi. Deshalb muss die Lastversorgung mindestens etwa 6V haben. Wenn die Last mehr als einige Ampere zieht, verwenden Sie 9V oder mehr. Eine 5V-Lastversorgung funktioniert nicht gut.
MOSFET-Modul Pinout

Die Steuerseite ist eine 2-polige Stiftleiste (2,54mm Raster), sie passt also auf ein Breadboard:
- PWM: Dieser Pin empfängt das Steuersignal von einem GPIO-Pin des Raspberry Pi
- GND: Dieser Pin muss mit Masse (0V) des Raspberry Pi verbunden werden
Die Leistungsseite hat drei Schraubklemmen:
- +: Diese Klemme muss mit dem Pluspol der Lastversorgung (zum Beispiel 12V) und mit dem Pluskabel der Last verbunden werden. Beide Kabel teilen sich diese eine Klemme
- LOAD: Diese Klemme geht zum Minuskabel der Last. Das ist die geschaltete Seite, und sie führt zum Drain des MOSFET
- −: Diese Klemme muss mit dem Minuspol (Masse) der Lastversorgung verbunden werden
※ Notiz:
Die Anordnung der Pins auf einem Modul kann sich zwischen Herstellern und sogar zwischen Chargen unterscheiden. Es ist wichtig, bei der Arbeit mit dem Modul immer die aufgedruckten Beschriftungen zu verwenden. Schauen Sie genau hin!
Verdrahtungsdiagramm
Das erste Beispiel unten verwendet einen 12V-LED-Streifen. Andere Geräte, wie ein Lüfter, ein DC-Motor, eine Pumpe oder ein Magnet, werden weiter unten gezeigt.

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
- PWM-Pin des MOSFET-Moduls an GPIO16 des Raspberry Pi (Pin 36)
- GND-Pin des MOSFET-Moduls an GND des Raspberry Pi (Pin 34, direkt neben Pin 36, oder ein anderer GND-Pin)
- Pluspol des 12V-Netzteils (über die DC-Buchse) an + des MOSFET-Moduls
- Minuspol des 12V-Netzteils (über die DC-Buchse) an − des MOSFET-Moduls
- Pluskabel des LED-Streifens an + des MOSFET-Moduls (dieselbe Klemme wie der Pluspol des Netzteils)
- Minuskabel des LED-Streifens an LOAD des MOSFET-Moduls
WARNING
Die 12V-Versorgung muss auf der Seite der Schraubklemmen des Moduls bleiben. Verbinden Sie sie nie mit einem Pin der Raspberry-Pi-Stiftleiste. Die GPIO-Pins des Raspberry Pi vertragen nur 3,3V, und 12V zerstören die Platine.
Andere DC-Geräte an das MOSFET-Modul anschließen
Die Raspberry-Pi-Seite ist für jedes Gerät gleich: GPIO16 (Pin 36) geht an PWM, und ein GND-Pin geht an GND. Was sich ändert, ist die Seite der Schraubklemmen. Die Listen unter jedem Bild betreffen nur diese Seite.
Prüfen Sie diese Punkte, bevor Sie ein neues Gerät anschließen:
- Die Spannung des Netzteils muss gleich der Spannung des Geräts sein. Verwenden Sie für ein 12V-Gerät ein 12V-Netzteil. Die Versorgung muss außerdem 6V oder mehr haben, wie oben erklärt.
- Das Modul muss den Strom des Geräts verkraften. Das FR120N ist nur für kleine Geräte geeignet, etwa 2A ohne Kühlkörper. Das AOD4184 und das LR7843 sind für größere gedacht.
- Ein Gerät mit einer Spule (ein Motor, ein Lüfter, eine Pumpe oder ein Magnet) ist eine induktive Last. Das Modul hat keine Freilaufdiode auf der Platine, Sie müssen daher selbst eine hinzufügen (1N5819 oder 1N4007). Setzen Sie sie parallel zum Gerät ein. Die Kathode (die Seite mit dem Streifen) kommt an das Pluskabel des Geräts, und die Anode kommt an das Minuskabel des Geräts.
Sie können dasselbe Python-Skript für alle diese Geräte behalten. Die einzige Ausnahme ist ein Magnet: Steuern Sie ihn nur mit ganz EIN und ganz AUS (100% oder 0%) und lassen Sie den Überblendteil weg.
Raspberry Pi, MOSFET-Modul und 12V-DC-Motor

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
- Pluspol des 12V-Netzteils an + des MOSFET-Moduls
- Minuspol des 12V-Netzteils an − des MOSFET-Moduls
- Pluskabel des Motors an + des MOSFET-Moduls
- Minuskabel des Motors an LOAD des MOSFET-Moduls
- Freilaufdiode parallel zum Motor: Kathode (Streifen) an Plus des Motors, Anode an Minus des Motors
Das PWM-Tastverhältnis steuert, wie schnell sich der Motor dreht. Das Modul kann ihn nur in eine Richtung antreiben. Wenn Sie die Richtung umkehren müssen, verwenden Sie einen Motortreiber wie den L298N, wie im Tutorial Raspberry Pi - DC Motor gezeigt.
Raspberry Pi, MOSFET-Modul und 12V-Wasserpumpe

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
- Pluspol des 12V-Netzteils an + des MOSFET-Moduls
- Minuspol des 12V-Netzteils an − des MOSFET-Moduls
- Pluskabel der Pumpe an + des MOSFET-Moduls
- Minuskabel der Pumpe an LOAD des MOSFET-Moduls
- Freilaufdiode parallel zur Pumpe, genauso angeschlossen wie beim Motor
Das Tastverhältnis bestimmt den Wasserfluss. Achten Sie darauf, dass immer Wasser in der Pumpe ist. Trockenlauf kann sie beschädigen.
Raspberry Pi, MOSFET-Modul und 12V-LED-Streifen

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
- Pluspol des 12V-Netzteils an + des MOSFET-Moduls
- Minuspol des 12V-Netzteils an − des MOSFET-Moduls
- Pluskabel des LED-Streifens (oft mit 12V beschriftet) an + des MOSFET-Moduls
- Minuskabel des LED-Streifens an LOAD des MOSFET-Moduls
- Keine Freilaufdiode, weil ein LED-Streifen keine Spule hat
Das Tastverhältnis bestimmt die Helligkeit. Ein langer Streifen zieht mehr Strom, lesen Sie also den Strom Ihres Streifens, bevor Sie das Modul wählen. Diese Verdrahtung gilt für einen einfarbigen Streifen. RGB- und adressierbare Streifen funktionieren anders.
Raspberry Pi, MOSFET-Modul und 12V-Lüfter

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
- Pluspol des 12V-Netzteils an + des MOSFET-Moduls
- Minuspol des 12V-Netzteils an − des MOSFET-Moduls
- Rotes Kabel des Lüfters an + des MOSFET-Moduls
- Schwarzes Kabel des Lüfters an LOAD des MOSFET-Moduls
- Gelbes Kabel des Lüfters (Drehzahlsignal), falls Ihr Lüfter eines hat: nicht anschließen
- Freilaufdiode parallel zum Lüfter, genauso wie oben (sie ist billig und sicher hinzuzufügen)
Das Tastverhältnis bestimmt die Drehzahl des Lüfters. Manche Lüfter laufen bei einem sehr niedrigen Tastverhältnis nicht an, beginnen Sie daher bei etwa 30% oder höher.
Raspberry Pi, MOSFET-Modul und 12V-Magnetventil

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
- Pluspol des 12V-Netzteils an + des MOSFET-Moduls
- Minuspol des 12V-Netzteils an − des MOSFET-Moduls
- Pluskabel des Ventils an + des MOSFET-Moduls
- Minuskabel des Ventils an LOAD des MOSFET-Moduls
- Freilaufdiode parallel zur Ventilspule
Das ist ein stromlos geschlossenes Ventil. Wenn das Modul ganz EIN ist, öffnet das Ventil. Wenn es AUS ist, schließt das Ventil. Verwenden Sie kein PWM damit, nur EIN und AUS.
Raspberry Pi, MOSFET-Modul und 12V-Magnetschloss

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Um Ihren Verdrahtungsaufbau zu vereinfachen und zu organisieren, empfehlen wir die Verwendung eines Schraubklemmenblock-Shields für Raspberry Pi. Dieses Shield gewährleistet sicherere und besser verwaltbare Verbindungen, wie unten gezeigt:

- Pluspol des 12V-Netzteils an + des MOSFET-Moduls
- Minuspol des 12V-Netzteils an − des MOSFET-Moduls
- Pluskabel des Schlosses an + des MOSFET-Moduls
- Minuskabel des Schlosses an LOAD des MOSFET-Moduls
- Freilaufdiode parallel zur Schlossspule
Schalten Sie das Schloss ganz EIN oder ganz AUS, nie mit einer PWM-Überblendung. Die Spule erwärmt sich, wenn sie lange EIN bleibt. Schalten Sie sie daher nur kurz zum Öffnen EIN und danach wieder AUS.
Wie man den Raspberry Pi programmiert, um eine DC-Last mit dem MOSFET-Modul zu steuern
Es wird keine zusätzliche Bibliothek benötigt. Das Skript nutzt die PWM-Funktion von RPi.GPIO an GPIO16 und wiederholt diesen Ablauf immer wieder:
- Die Last ist 2 Sekunden lang ganz EIN, dann 2 Sekunden lang ganz AUS.
- Die Leistung steigt in 10%-Schritten von 10% auf 100%, mit 0,5 Sekunden pro Schritt.
- Die Leistung fällt auf dieselbe Weise von 90% zurück auf 0%.
- Das Skript wartet 1 Sekunde und beginnt dann von vorn.
Wenn Sie Ctrl + C drücken, stoppt das Skript das PWM und gibt den GPIO-Pin frei.
Schnelle Schritte
- Stellen Sie sicher, dass auf Ihrem Pi Raspbian oder ein anderes mit dem Raspberry Pi kompatibles Betriebssystem installiert ist.
- Stellen Sie sicher, dass Ihr Raspberry Pi mit demselben lokalen Netzwerk wie Ihr PC verbunden ist.
- Stellen Sie sicher, dass Ihr Raspberry Pi mit dem Internet verbunden ist, falls Sie einige Bibliotheken installieren müssen.
- Wenn Sie den Raspberry Pi zum ersten Mal verwenden, lesen Sie wie man den Raspberry Pi einrichtet
- Verbinden Sie Ihren PC per SSH mit dem Raspberry Pi, entweder mit dem eingebauten SSH-Client unter Linux und macOS oder mit PuTTY unter Windows.
- Stellen Sie sicher, dass die Bibliothek RPi.GPIO installiert ist. Falls sie fehlt, installieren Sie sie mit diesen Befehlen:
- Verdrahten Sie den Raspberry Pi, das MOSFET-Modul, das 12V-Netzteil und den LED-Streifen wie im obigen Schaltplan gezeigt. Lassen Sie das 12V-Netzteil vorerst ausgesteckt.
- Erstellen Sie eine Python-Skriptdatei MosfetModule.py und fügen Sie den folgenden Code hinzu:
- Stecken Sie das 12V-Netzteil ein.
- Führen Sie das Skript mit diesem Befehl aus:
- Beobachten Sie den LED-Streifen. Er leuchtet 2 Sekunden lang mit voller Helligkeit und ist 2 Sekunden lang dunkel. Dann wird er langsam heller, und danach wird er langsam dunkler.
- Prüfen Sie die Ergebnisse im Terminal.
Das Skript wiederholt diesen Ablauf endlos. Während des EIN- und AUS-Teils erscheint alle 2 Sekunden eine neue Zeile (durch die Zeilen mit time.sleep(2)). Beim Hoch- und Herunterfaden erscheint alle 0,5 Sekunden eine neue Zeile (durch die Zeilen mit time.sleep(0.5)). Die Ausgabe läuft weiter, bis Sie das Skript mit den Tasten Ctrl + C im Terminal stoppen. Das Skript schaltet dann die Last aus und räumt den GPIO-Pin auf.
Wenn Sie statt des LED-Streifens einen 12V-Lüfter oder -Motor verwenden, bedeutet dieselbe Ausgabe, dass der Lüfter mit voller Drehzahl läuft, stoppt, dann schneller und wieder langsamer wird.
Zusätzliches Wissen
AOD4184 vs. LR7843 vs. FR120N
Vergleichen wir die drei Module, um zu sehen, welches zu Ihrem Projekt passt:
| AOD4184 | LR7843 | FR120N | |
|---|---|---|---|
| Max. Lastspannung | 40V DC | 30V DC | 100V DC |
| Durchlasswiderstand | etwa 7 mΩ | etwa 3,3 mΩ | etwa 210 mΩ |
| Praktischer Strom ohne Kühlkörper | etwa 10–15A | etwa 15A | etwa 2A |
| Gut geeignet für | 12V- / 24V- / 36V-Lasten | 12V- / 24V-Lasten mit hohem Strom | kleine 24V- / 48V-Lasten |
- Das LR7843 hat den niedrigsten Widerstand, daher bleibt es bei hohem Strom am kühlsten. Wählen Sie es für leistungsstarke LED-Streifen oder große Motoren bei 12V oder 24V. Gehen Sie nicht über 30V.
- Das AOD4184 ist ein guter Allrounder. Es verträgt bis zu 40V und trägt trotzdem einen starken Strom.
- Das FR120N verträgt die höchste Spannung (bis zu 100V), aber sein Widerstand ist viel höher. Es eignet sich nur für kleine Ströme, etwa 2A ohne Kühlkörper.
Bedenken Sie, dass 50A und 161A Grenzwerte des MOSFET-Chips selbst sind. Das kleine Modul kann nicht so viel tragen. Die echte Grenze ist die Wärme. Berühren Sie den MOSFET nach einigen Minuten Betrieb vorsichtig. Wenn er zu heiß zum Anfassen ist, verringern Sie den Strom oder fügen Sie einen Kühlkörper hinzu.
MOSFET-Modul vs. Relais
Vergleichen wir ein MOSFET-Modul mit einem Relaismodul zum Schalten einer Last:
| MOSFET-Modul | Relaismodul | |
|---|---|---|
| Bewegliche Teile | keine | ja, ein mechanischer Kontakt |
| Geräusch | lautlos | klickt bei jedem Schalten |
| Schaltgeschwindigkeit | sehr schnell | langsam |
| PWM (Helligkeits- / Drehzahlsteuerung) | ja | nein |
| Lebensdauer | lang, kein Kontaktverschleiß | durch Kontaktverschleiß begrenzt |
| Lasttyp | nur DC | DC oder AC (Nennwert des Relais prüfen) |
Das MOSFET-Modul ist offensichtlich die bessere Wahl für DC-Lasten, besonders wenn Sie Helligkeit oder Drehzahl steuern möchten. Für Geräte mit Netzspannung (AC) ist ein Relais weiterhin das richtige Werkzeug.
Video Tutorial
Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.