ESP32 - MOSFET-module
Deze handleiding laat zien hoe u met ESP32 en een MOSFET-module een 12V gelijkstroombelasting aan en uit zet, het vermogen instelt en het vermogen afdrukt in de Serial Monitor. De handleiding werkt hetzelfde voor de modules AOD4184, LR7843 en FR120N, en laat zien hoe u zowel een ledstrip als een gelijkstroommotor of ventilator aansluit.
Hardware Benodigd
Of u kunt de volgende kits kopen:
| 1 | × | DIYables ESP32 Starterskit (ESP32 inbegrepen) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Over de MOSFET-module
Een GPIO-pin van de ESP32 geeft maar 3,3V en een paar milliampère. Dat is genoeg voor een kleine LED, maar veel te weinig voor een 12V ledstrip, een gelijkstroommotor, een ventilator, een pomp, een magneetklep of een verwarming. De MOSFET-module werkt als een elektronische schakelaar tussen die twee. De ESP32 geeft een zwak signaal en de module laat de sterke stroom van de belasting door.
Er zijn drie versies van deze module op de markt: AOD4184 (dezelfde chip wordt ook verkocht als D4184), LR7843 en FR120N. Het printplaatje is voor alle drie gelijk. Afmetingen, pinnen, bedrading en code veranderen niet. Het enige verschil is de MOSFET-chip in het midden. Die bepaalt hoeveel spanning en stroom de module aankan.
| AOD4184 | LR7843 | FR120N | |
|---|---|---|---|
| De MOSFET-chip | AOD4184A (N-channel) | IRLR7843 (N-channel) | IRFR120N (N-channel) |
| De max. belastingsspanning (chipwaarde) | 40V DC | 30V DC | 100V DC |
| De max. stroom (chipwaarde) | 50A | 161A | 9.4A |
| De aan-weerstand RDS(on) | ongeveer 7 mΩ | ongeveer 3.3 mΩ | ongeveer 210 mΩ |
| De praktische stroom zonder koellichaam | ongeveer 10–15A | ongeveer 15A | ongeveer 2A |
| Het stuursignaal | 3.3V / 5V logica, actief HIGH | 3.3V / 5V logica, actief HIGH | 3.3V / 5V logica, actief HIGH |
| De isolatie | PC817 optocoupler | PC817 optocoupler | PC817 optocoupler |
| PWM-ondersteuning | ja, houd ≤ ~1 kHz | ja, houd ≤ ~1 kHz | ja, houd ≤ ~1 kHz |
| Het belastingstype | alleen DC | alleen DC | alleen DC |
Om er een te kiezen, kijkt u naar uw belasting. De LR7843 heeft de laagste weerstand, dus hij blijft het koelst als er veel stroom loopt. Gebruik hem voor krachtige 12V- of 24V-ledstrips en grote motoren, maar nooit boven 30V. De AOD4184 is de veilige middenweg: sterke stroom en tot 40V, genoeg voor belastingen van 12V, 24V en 36V. De FR120N verdraagt de hoogste spanning, tot 100V, maar zijn weerstand is veel hoger. Dat betekent dat hij snel warm wordt, dus gebruik hem alleen voor kleine belastingen van 24V of 48V met ongeveer 2A.
Vertrouw de getallen van 50A en 161A niet te veel. Ze gelden voor de losse chip, niet voor dit kleine printplaatje. Op het printplaatje is warmte de echte grens. Als de belasting een paar minuten heeft gedraaid, raak de MOSFET dan voorzichtig aan. Als hij te heet aanvoelt, voeg dan een koellichaam toe of gebruik een kleinere belasting.
Pinout van de MOSFET-module

De pinnen zitten op twee plaatsen. Een kleine header met 2 pinnen (steek 2,54mm) is voor de ESP32, zodat hij gemakkelijk in een breadboard past. Een rij van drie schroefklemmen is voor de belasting en de voeding ervan.
Stuurheader:
- PWM-pin: sluit deze pin aan op een GPIO-pin van de ESP32 (GPIO18 in deze handleiding)
- GND-pin: sluit deze pin aan op GND van de ESP32
Schroefklemmen:
- +-pin: sluit deze pin aan op de pluskabel van de voeding van de belasting (bijv. 12V) en op de pluskabel van de belasting. Beide kabels delen deze ene klem
- LOAD-pin: sluit deze pin aan op de mintkabel van de belasting. Dit is de kant die de MOSFET schakelt
- −-pin: sluit deze pin aan op de mintkabel (aarde) van de voeding van de belasting
De opgedrukte labels kunnen per productiebatch een beetje verschillen, dus lees de tekst op uw eigen module voordat u gaat bedraden.
We raden u sterk aan de AOD4184-module te gebruiken als u niet zeker weet welke u moet kopen.
Hoe werkt de MOSFET-module
Het signaal van GPIO18 komt niet rechtstreeks bij de MOSFET. Het gaat de PWM-pin in, passeert een kleine weerstand en laat een klein ledje in de PC817-optocoupler branden. Dat licht schakelt een fototransistor in dezelfde chip en de fototransistor stuurt de gate van de MOSFET aan. Een weerstand op de gate trekt die terug naar 0V zodra de optocoupler uit is. De MOSFET zelf zit tussen de LOAD-klem en de −-klem, terwijl de belasting tussen + en LOAD hangt. Wat de belasting doet, hangt dus alleen af van de toestand van de PWM-pin, en er zijn drie mogelijke toestanden.
Als GPIO18 0V uitgeeft (LOW)
Bij 0V op de PWM-pin kan er geen stroom door het ledje van de optocoupler lopen, dus het blijft donker. De fototransistor blijft daardoor uit en de gate-weerstand houdt de MOSFET-gate op 0V. De MOSFET is UIT, wat betekent dat het pad van LOAD naar − open is, net als een open schakelaar. De mintkabel van de belasting heeft geen weg terug naar de adapter, dus er loopt geen stroom en de belasting staat op 0V. U krijgt deze toestand met analogWrite(MOSFET_PIN, 0) of digitalWrite(MOSFET_PIN, LOW).
Als GPIO18 3,3V uitgeeft (HIGH)
De ESP32 geeft maar 3,3V, maar dat is genoeg: het ledje van de optocoupler heeft maar een paar milliampère nodig, dus de GPIO-pin kan het direct aansturen (een 5V-board werkt op dezelfde manier). Het ledje gaat branden in de chip, waar u het niet kunt zien, en de fototransistor gaat aan. Nu krijgt de MOSFET-gate ongeveer de helft van de voeding van de belasting, ongeveer 6V als u een 12V-adapter gebruikt. De MOSFET schakelt volledig AAN en gedraagt zich als een gesloten schakelaar met een heel kleine weerstand, slechts enkele mΩ op de AOD4184- en LR7843-modules en ongeveer 0,2Ω op de FR120N-module. De stroom loopt van de plus van de adapter naar de +-klem, door de belasting, naar de LOAD-klem, door de MOSFET, uit de −-klem en terug naar de min van de adapter. De belasting krijgt bijna de volle 12V en werkt op volle kracht. In code is dit analogWrite(MOSFET_PIN, 255) of digitalWrite(MOSFET_PIN, HIGH).
Als GPIO18 een PWM-signaal uitgeeft
Een PWM-signaal is gewoon de twee toestanden hierboven, heel snel herhaald. Met analogWrite() wisselt GPIO18 ongeveer 1000 keer per seconde tussen LOW en HIGH, en de MOSFET volgt elke wissel: hij is AAN tijdens elk HIGH-deel en UIT tijdens elk LOW-deel. De belasting krijgt dus korte pulsen van 12V. Het deel van de tijd dat de pin HIGH blijft heet de duty cycle (inschakelduur), en de waarde die u aan analogWrite() geeft bepaalt die (duty cycle = waarde / 255). De gemiddelde spanning en het gemiddelde vermogen van de belasting zijn gewoon de duty cycle maal de volle waarde. Met een 12V-voeding bijvoorbeeld:
- 10% (waarde 26): een tiende van de tijd AAN, gemiddeld ongeveer 1,2V, een heel zwak gloeien of kruipen
- 50% (waarde 128): de helft van de tijd AAN, gemiddeld ongeveer 6V, ongeveer half vermogen
- 90% (waarde 230): negen tiende van de tijd AAN, gemiddeld ongeveer 10,8V, bijna vol vermogen
Een ledstrip knippert bij deze snelheid niet zichtbaar, hij ziet er gewoon dimmer uit. Een motor, ventilator of pomp draait langzamer, omdat de massa van de rotor de pulsen afvlakt. Houd de frequentie laag, rond 500 Hz tot 1 kHz, omdat de PC817 een trage component is. Bij een veel hogere frequentie heeft de MOSFET geen tijd om volledig te schakelen, krijgt de belasting rommelige pulsen in plaats van nette, en wordt de MOSFET warm. De ESP32-functie analogWrite() gebruikt standaard al 1 kHz, dus u hoeft niets te veranderen. De code in deze handleiding gebruikt dit PWM-geval om het vermogen van 10% tot 100% in stappen te verhogen.
Nog een paar feiten over de module helpen u problemen te voorkomen:
- De optocoupler houdt de ESP32-kant en de belastingskant elektrisch gescheiden. De signaal-GND en de belastings-GND zijn op de module niet verbonden, en u moet ze niet aan elkaar koppelen.
- Omdat de MOSFET een N-channel type aan de lage kant is, onderbreekt hij de mintkabel van de belasting, niet de pluskabel.
- De gate-spanning komt van de voeding van de belasting via een spanningsdeler, daarom is ze maar ongeveer de helft van die voeding. De voeding van de belasting moet dus ongeveer 6V of hoger zijn. Kies 9V of meer als de belasting meer dan een paar ampère trekt. Een voeding van 5V werkt niet goed.
- De module heeft geen vrijloopdiode (flyback-diode). Motoren, pompen, magneetspoelen en relais hebben er een nodig die buiten de module wordt toegevoegd.
- De module is alleen voor DC-belastingen. Gebruik hem nooit met netspanning (AC). Voor AC-apparaten, zie de ESP32 relay-handleiding.
Aansluitschema
De 12V voeding gaat alleen naar de schroefklemmen van de module. Laat deze nooit een pin van de ESP32 raken.
Hoe u ESP32 en de MOSFET-module aansluit met een 12V ledstrip

Deze afbeelding is gemaakt met Fritzing. Klik om de afbeelding te vergroten.
Als u niet weet hoe u ESP32 en andere componenten van stroom moet voorzien, vindt u instructies in de volgende tutorial: Hoe ESP32 van stroom te voorzien.
| Van | Naar |
|---|---|
| ESP32 GPIO18 | Module PWM-pin |
| ESP32 GND | Module GND-pin |
| 12V adapter + (via DC power jack) | Module +-klem |
| 12V adapter − (via DC power jack) | Module −-klem |
| Ledstrip + | Module +-klem (gedeeld met de adapter +) |
| Ledstrip − | Module LOAD-klem |
Hoe u andere 12V apparaten aansluit op de MOSFET-module
Veel apparaten kunnen de plaats van de ledstrip innemen. GPIO18 en GND van de ESP32 blijven precies zo aangesloten als in de tabel hierboven, dus de afbeeldingen hieronder tonen alleen de voedingskant. Het patroon verandert nooit: de plus van de adapter gaat naar +, de min van de adapter gaat naar −, de pluskabel van het apparaat gaat ook naar +, en de mintkabel gaat naar LOAD.
Kies een adapter met dezelfde spanning als uw apparaat, dus een 12V apparaat krijgt een 12V adapter. Welk apparaat het ook is, de voeding mag niet lager zijn dan 6V. Denk ook aan de stroom die uw apparaat trekt. De FR120N-module kan zonder koellichaam alleen lichte apparaten van ongeveer 2A aan, terwijl de AOD4184- en LR7843-modules geschikt zijn voor zwaardere.
U kunt de ESP32-code precies zo houden voor al deze apparaten. Bij een magneetslot of een magneetklep stuurt u echter alleen vol vermogen of nul (HIGH of LOW) en laat u het geleidelijk op- en afbouwen weg.
Een 12V gelijkstroommotor gebruiken

Deze afbeelding is gemaakt met Fritzing. Klik om de afbeelding te vergroten.
Sluit de pluskabel van de motor aan op de +-klem en de mintkabel van de motor op LOAD. In een motor zit een spoel, en als de MOSFET uitschakelt, geeft die spoel een spanningspiek terug. Na verloop van tijd kan deze piek de MOSFET beschadigen. Om de piek op te vangen, plaatst u een vrijloopdiode (flyback-diode) zoals een 1N5819 of een 1N4007 over de motorkabels, met het uiteinde met de streep (de kathode) op de pluskabel van de motor en het andere uiteinde (de anode) op de mintkabel van de motor. De apparaten met een spoel verderop hebben dezelfde diode nodig, op dezelfde manier geplaatst.
De PWM duty cycle (inschakelduur) bepaalt de snelheid, maar alleen in één richting. Als de motor in beide richtingen moet draaien, gebruik dan een driver zoals de L298N, zoals getoond in de ESP32 gelijkstroommotor-handleiding.
Een 12V koelventilator gebruiken

Deze afbeelding is gemaakt met Fritzing. Klik om de afbeelding te vergroten.
De rode kabel van de ventilator is de plus en gaat naar de +-klem, en de zwarte kabel gaat naar LOAD. Als uw ventilator een gele derde kabel heeft, meldt die alleen de snelheid, dus laat hem onaangesloten. Voeg hier ook de vrijloopdiode toe; hij is goedkoop en doet geen kwaad. Veel ventilatoren starten niet bij een heel lage duty cycle, begin dus bij ongeveer 30% of hoger.
Een 12V waterpomp gebruiken

Deze afbeelding is gemaakt met Fritzing. Klik om de afbeelding te vergroten.
Sluit de plus van de pomp aan op de +-klem en de min van de pomp op LOAD, en plaats de vrijloopdiode over de pomp. Een hogere duty cycle pompt meer water. Zorg dat de pomp altijd onder water staat, want droog draaien kan hem kapotmaken.
Een 12V magneetklep gebruiken

Deze afbeelding is gemaakt met Fritzing. Klik om de afbeelding te vergroten.
De plus van de klep gaat naar de +-klem en de min van de klep gaat naar LOAD, met de vrijloopdiode erover. Een normaal gesloten klep gaat open als de ESP32 de module volledig AAN zet, en sluit weer als de module UIT gaat. Probeer hem niet te dimmen met PWM; hij is open of dicht.
Een 12V magneetslot gebruiken

Deze afbeelding is gemaakt met Fritzing. Klik om de afbeelding te vergroten.
Sluit de plus van het slot aan op de +-klem en de min van het slot op LOAD, en voeg de vrijloopdiode toe. Stuur het slot alleen volledig AAN of volledig UIT aan. De spoel wordt snel warm, dus zet hem maar kort AAN om de grendel te openen en zet hem dan weer UIT. Een compleet voorbeeld van een deurslot staat in de ESP32 magneetslot-handleiding.
Een enkelkleurige 12V ledstrip gebruiken

Deze afbeelding is gemaakt met Fritzing. Klik om de afbeelding te vergroten.
Dit is hetzelfde circuit als in het hoofddiagram, gezien vanaf de voedingskant. De plus van de strip, vaak als 12V gedrukt, gaat naar de +-klem en de min van de strip gaat naar LOAD. Een ledstrip heeft geen spoel, dus hij heeft geen diode nodig. De duty cycle bepaalt de helderheid. Houd er rekening mee dat een langere strip meer stroom trekt, dus controleer de specificaties voordat u een module kiest. RGB- en adresseerbare strips hebben een andere opstelling nodig.
Hoe te Programmeren voor de MOSFET-module
Er is geen library nodig. De code gebruikt functies die al in de ESP32-core zitten.
- Geef een naam aan de GPIO-pin die de module aanstuurt: const int MOSFET_PIN = 18;
- Stel de pin in als output: pinMode(MOSFET_PIN, OUTPUT);
- Zet de belasting volledig AAN: analogWrite(MOSFET_PIN, 255); (of digitalWrite(MOSFET_PIN, HIGH);)
- Zet de belasting volledig UIT: analogWrite(MOSFET_PIN, 0); (of digitalWrite(MOSFET_PIN, LOW);)
- Stel een deel van het vermogen in, bijvoorbeeld 50%: analogWrite(MOSFET_PIN, 128);
- Zet een percentage om in een PWM-waarde van 0 tot 255: int duty = map(percent, 0, 100, 0, 255);
ESP32 Code - MOSFET-module
De onderstaande code zet de belasting 2 seconden volledig AAN en 2 seconden volledig UIT. Daarna verhoogt hij het vermogen van 10% tot 100% in stappen van 10%, elke halve seconde een stap, en verlaagt het op dezelfde manier terug naar 0%. Na een pauze van 1 seconde begint de cyclus opnieuw.
Snel aan de slag
Is dit de eerste keer dat u een ESP32 gebruikt? Bekijk dan hoe u de omgeving instelt voor ESP32 in Arduino IDE.
- Sluit de ESP32, de MOSFET-module, de ledstrip (of ventilator) en de 12V voeding aan zoals getoond in het diagram hierboven.
- Steek de USB-kabel in de ESP32 en uw pc. Laat de 12V adapter voorlopig uitgeplugd.
- Open Arduino IDE en selecteer het ESP32 Dev Module-board en de juiste COM-poort.
- Kopieer bovenstaande code en plak deze in Arduino IDE.
- Klik op de knop Upload in Arduino IDE om de code te compileren en naar de ESP32 te uploaden.
- Steek de 12V adapter in het stopcontact.
- Klik op het pictogram Serial Monitor en typ of selecteer 9600 als baudrate.
- Kijk naar de ledstrip: 2 seconden volle helderheid, 2 seconden donker, daarna wordt hij langzaam helderder en weer langzaam dimmer. Een ventilator doet hetzelfde met zijn snelheid.
- Bekijk de berichten in de Serial Monitor.
Als de belasting helemaal niet aangaat, controleer dan eerst de spanning van de voeding van de belasting. Onthoud dat die ongeveer 6V of meer moet zijn.
Video Tutorial
We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.