Arduino - MOSFET-module
In deze tutorial leren we:
- Hoe u een MOSFET-module (AOD4184, LR7843 of FR120N) aansluit op Arduino
- Hoe u een 12V belasting, zoals een ledstrip of een ventilator, aansluit op de MOSFET-module
- Hoe u Arduino programmeert om de belasting AAN/UIT te zetten en het vermogen te regelen met PWM
Benodigde Hardware
Of u kunt de volgende kits kopen:
| 1 | × | DIYables STEM V3 Starterskit (Arduino inbegrepen) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Over de MOSFET-module
Een Arduino-pin geeft maar 5V en een heel kleine stroom. Hij kan een 12V ledstrip, een DC-motor, een ventilator, een pomp, een magneetklep of een verwarmingselement niet voeden. De MOSFET-module zit tussen Arduino en de belasting. Arduino stuurt een klein signaal en de module schakelt het grote vermogen van de belasting.
De modules AOD4184 (ook verkocht als D4184), LR7843 en FR120N hebben hetzelfde printontwerp. Ze hebben dezelfde afmetingen, dezelfde pinnen, dezelfde bedrading en dezelfde code. Alleen de MOSFET-chip is anders.
| AOD4184 | LR7843 | FR120N | |
|---|---|---|---|
| MOSFET | AOD4184A (N-channel) | IRLR7843 (N-channel) | IRFR120N (N-channel) |
| Max. spanning belasting (MOSFET-waarde) | 40V DC | 30V DC | 100V DC |
| Max. stroom (MOSFET-waarde) | 50A | 161A | 9.4A |
| Weerstand in aan-toestand RDS(on) | ongeveer 7 mΩ | ongeveer 3.3 mΩ | ongeveer 210 mΩ |
| Praktische stroom zonder koelblok | ongeveer 10–15A | ongeveer 15A | ongeveer 2A |
| Stuursignaal | 3.3V / 5V logica, actief HIGH | 3.3V / 5V logica, actief HIGH | 3.3V / 5V logica, actief HIGH |
| Isolatie | PC817 optocoupler | PC817 optocoupler | PC817 optocoupler |
| PWM | ja, houd ≤ ~1 kHz | ja, houd ≤ ~1 kHz | ja, houd ≤ ~1 kHz |
| Type belasting | alleen DC | alleen DC | alleen DC |
Welke moet u kiezen?
- LR7843: deze heeft de laagste weerstand, dus blijft het koelst bij hoge stroom. Hij is goed voor 12V/24V belastingen met grote stroom, zoals ledstrips met veel vermogen of grote motoren. De limiet is 30V.
- AOD4184: een goede allrounder. Hij werkt tot 40V met sterke stroom. Hij is goed voor 12V/24V/36V belastingen.
- FR120N: deze kan de hoogste spanning aan (tot 100V), maar de weerstand is hoog. Daarom past hij alleen bij kleine stromen (ongeveer 2A zonder koelblok). Hij is goed voor kleine 24V/48V belastingen.
De getallen 50A en 161A zijn de limieten van de chip, niet van het kleine printje. De echte limiet is warmte. Raak de MOSFET aan na een paar minuten. Is hij te heet, voeg dan een koelblok toe of verlaag de stroom.
Pinout

De module heeft twee groepen pinnen. De stuurzijde is een header met 2 pinnen (2.54mm), dus hij past op een breadboard. De vermogenszijde gebruikt drie schroefklemmen.
- Stuurzijde:
- PWM-pin: moet worden verbonden met een uitgangspin van Arduino. Deze pin ontvangt het stuursignaal.
- GND-pin: moet worden verbonden met GND van Arduino (signaalmassa).
- Vermogenszijde:
- + pin: moet worden verbonden met de positieve (+) van de voeding van de belasting, bijvoorbeeld 12V, en met de positieve draad van de belasting. Beide draden delen deze ene klem.
- LOAD-pin: moet worden verbonden met de negatieve draad van de belasting. Dit is de kant die de MOSFET schakelt.
- − pin: moet worden verbonden met de negatieve (−) van de voeding van de belasting.
- Het signaal gaat zo: Arduino-pin → PWM-pin → kleine weerstand → LED in de PC817 optocoupler → licht → fototransistor in de PC817 → gate van de MOSFET.
- Omdat het signaal als licht reist, zijn de Arduino-zijde en de belastingzijde geïsoleerd. De signaal-GND en de GND van de belasting zijn op de module NIET verbonden.
- De MOSFET is een N-channel low-side schakelaar. Hij zit tussen de LOAD-klem en de − klem, dus hij schakelt de negatieve draad van de belasting.
- Een weerstand op de gate trekt de gate naar 0V als de optocoupler uit is.
- Er loopt geen stroom in de optocoupler, dus de LED blijft donker.
- De fototransistor blijft uit. De gate-weerstand houdt de gate van de MOSFET op 0V.
- De MOSFET is UIT. Tussen LOAD en − is het als een open schakelaar.
- De − draad van de belasting is niet met massa verbonden, dus er loopt geen stroom. De belasting krijgt 0V.
- Code: digitalWrite(MOSFET_PIN, LOW); of analogWrite(MOSFET_PIN, 0);
- Een paar mA loopt in de optocoupler. De LED gaat branden in de chip (u kunt dit niet zien). De Arduino-pin kan deze kleine stroom makkelijk leveren.
- De fototransistor gaat aan. Nu krijgt de gate van de MOSFET ongeveer de helft van de voedingsspanning van de belasting, ongeveer 6V bij een 12V adapter.
- De MOSFET gaat volledig AAN. Het is als een gesloten schakelaar met een zeer lage weerstand: een paar mΩ voor de AOD4184 en LR7843, ongeveer 0.2Ω voor de FR120N.
- Het stroompad is: adapter + → + klem → belasting → LOAD-klem → MOSFET → − klem → adapter −.
- De belasting krijgt bijna de volle 12V en draait op vol vermogen.
- Code: digitalWrite(MOSFET_PIN, HIGH); of analogWrite(MOSFET_PIN, 255);
- Met analogWrite() schakelt de pin ongeveer 500 tot 1000 keer per seconde tussen LOW en HIGH.
- De MOSFET volgt de pin: AAN in elk HIGH-deel, UIT in elk LOW-deel. Zo krijgt de belasting snelle 12V pulsen.
- De duty cycle (inschakelduur) is het deel van de tijd dat de pin HIGH is. De gemiddelde spanning en het vermogen zijn de duty cycle maal de volle waarde. De waarde 0–255 bepaalt de duty cycle (duty = waarde / 255).
- Een ledstrip ziet er dimmer uit. Hij flikkert nog steeds, maar te snel voor uw ogen.
- Een ventilator of motor draait langzamer. De draaiende massa maakt de pulsen vlak.
- Houd de PWM-frequentie laag, ongeveer 500 Hz tot 1 kHz, omdat de PC817 traag is. Is de frequentie te hoog, dan kan de MOSFET niet volledig schakelen. Dan zijn de pulsen niet zuiver en wordt de MOSFET heet. De standaard analogWrite() van de Arduino Uno (ongeveer 490 Hz, of ongeveer 1 kHz op pin 5 en 6) is prima.
- De code in deze tutorial gebruikt PWM van 10% tot 100% om de belasting te laten in- en uitfaden.
- De voeding van de belasting moet minstens ongeveer 6V zijn, omdat de gate maar de helft ervan krijgt (zie het HIGH-geval hierboven). De module werkt dus NIET goed met een 5V voeding. Gebruik 9V of meer als de belasting meer dan een paar ampère trekt.
- Gebruik alleen DC-belastingen. Sluit nooit wisselspanning (netspanning) aan op deze module. Voor AC-belastingen, zie de tutorial Arduino - Relais.
- Er is GEEN vrijloopdiode (flyback-diode) op de print. Voor motoren, pompen, magneetkleppen en relais voegt u een externe vrijloopdiode toe (bijvoorbeeld 1N5819 of 1N4007) over de belasting: kathode (kant met streep) naar belasting +, anode naar belasting −.
De labels kunnen per partij een beetje verschillen. Lees altijd de tekst die op uw print staat.
Hoe het werkt
De module is actief HIGH. Laten we zien wat er gebeurt bij elk soort signaal op de PWM-pin.
Arduino-pin LOW (0V): de belasting is UIT
Arduino-pin HIGH (5V): de belasting is AAN
PWM-signaal: de belasting krijgt een deel van het vermogen
| Duty cycle | analogWrite()-waarde | Belasting is AAN | Gemiddelde spanning (12V voeding) |
|---|---|---|---|
| 0% | 0 | nooit | 0V |
| 25% | 64 | 1/4 van de tijd | ongeveer 3V |
| 50% | 128 | de helft van de tijd | ongeveer 6V |
| 75% | 191 | 3/4 van de tijd | ongeveer 9V |
| 100% | 255 | de hele tijd | 12V |
Enkele belangrijke regels:
Vergeleken met een relais maakt de MOSFET-module geen klikgeluid, heeft hij geen bewegende delen, schakelt hij zeer snel, gaat hij lang mee en ondersteunt hij PWM. Een relais kan geen PWM.
Bedradingsschema
Verbind pin 9 van Arduino met de PWM-pin, Arduino GND met de GND-pin, de 12V adapter (via de DC-voedingsconnector) met + en −, en de ledstrip met + en LOAD, zoals in de afbeelding hieronder.

Deze afbeelding is gemaakt met Fritzing. Klik om de afbeelding te vergroten.
Verbind de 12V nooit met een pin van Arduino.
Meer apparaten die u kunt aansluiten
De ledstrip is maar één keuze. U kunt hem vervangen door een ventilator, een pomp, een motor of een magneetspoel. De twee draden aan de Arduino-zijde veranderen niet. Aan de vermogenszijde is de regel altijd hetzelfde:
- Voedingsadapter + → +
- Voedingsadapter − → −
- Apparaat + → + (dezelfde klem als de adapter +)
- Apparaat − → LOAD
Snelle controles voordat u begint:
- Gebruik een adapter met dezelfde spanning als het apparaat (12V apparaat → 12V adapter). Ga nooit onder 6V.
- Kijk naar de stroom van het apparaat. De FR120N past alleen bij kleine apparaten (ongeveer 2A, zonder koelblok). Voor meer stroom kiest u de AOD4184 of de LR7843.
- Een apparaat met een spoel (motor, ventilator, pomp, magneetspoel) heeft een vrijloopdiode nodig, 1N5819 of 1N4007. Plaats hem over het apparaat: kant met streep naar apparaat +, andere kant naar apparaat −. Hieronder is dit aangegeven als "Diode: ja".
U hebt geen nieuwe code nodig voor deze apparaten. Dezelfde code werkt voor al deze apparaten. Gebruik voor een magneetspoel gewoon HIGH en LOW (100% en 0%) en sla het faden over.
Arduino MOSFET-module - 12V ledstrip

Deze afbeelding is gemaakt met Fritzing. Klik om de afbeelding te vergroten.
- Strip + (vaak bedrukt met "12V") → +, strip − → LOAD
- Diode: nee. Een ledstrip heeft geen spoel.
- PWM bepaalt de helderheid.
- Alleen eenkleurige strips. Een lange strip heeft meer stroom nodig, dus controleer eerst de stroom.
Arduino MOSFET-module - 12V koelventilator

Deze afbeelding is gemaakt met Fritzing. Klik om de afbeelding te vergroten.
- Rode draad → +, zwarte draad → LOAD
- Een derde draad (geel) is het snelheidssignaal. Laat die vrij.
- Diode: ja. Hij kost heel weinig en doet geen kwaad.
- PWM bepaalt de snelheid. Gebruik meer dan ongeveer 30%, anders start de ventilator mogelijk niet.
Arduino MOSFET-module - 12V waterpomp

Deze afbeelding is gemaakt met Fritzing. Klik om de afbeelding te vergroten.
- Pomp + → +, pomp − → LOAD
- Diode: ja
- PWM bepaalt de waterstroom.
- Laat de pomp niet draaien zonder water.
Arduino MOSFET-module - 12V DC-motor

Deze afbeelding is gemaakt met Fritzing. Klik om de afbeelding te vergroten.
- Motor + → +, motor − → LOAD
- Diode: ja
- PWM bepaalt de snelheid.
- De motor draait maar één kant op. Om de richting te veranderen hebt u een motordriver nodig, zoals de L298N. Zie Arduino - DC Motor.
Arduino MOSFET-module - 12V magneetklep

Deze afbeelding is gemaakt met Fritzing. Klik om de afbeelding te vergroten.
- Klep + → +, klep − → LOAD
- Diode: ja
- Normaal gesloten klep: AAN opent hem, UIT sluit hem.
- Alleen AAN/UIT. Geen PWM.
Arduino MOSFET-module - 12V magneetslot

Deze afbeelding is gemaakt met Fritzing. Klik om de afbeelding te vergroten.
- Slot + → +, slot − → LOAD
- Diode: ja
- Alleen volledig AAN of volledig UIT. Geen PWM.
- Geef een korte AAN-puls om te ontgrendelen. Blijft het lang AAN, dan wordt het heet. Zie ook Arduino - Magneetslot.
Hoe te programmeren voor de MOSFET-module
- Geen bibliotheek nodig: de code gebruikt alleen ingebouwde functies.
- Definieer de pin: const int MOSFET_PIN = 9; (pin 9 ondersteunt PWM, hij heeft het ~ teken)
- Zet de pin als uitgang: pinMode(MOSFET_PIN, OUTPUT);
- Zet de belasting volledig AAN: digitalWrite(MOSFET_PIN, HIGH); of analogWrite(MOSFET_PIN, 255);
- Zet de belasting volledig UIT: digitalWrite(MOSFET_PIN, LOW); of analogWrite(MOSFET_PIN, 0);
- Stel het vermogen van de belasting in met analogWrite(). De waarde loopt van 0 (UIT) tot 255 (vol vermogen). Bijvoorbeeld ongeveer 50%: analogWrite(MOSFET_PIN, 128);
- Zet een percentage (0–100%) om naar een PWM-waarde (0–255): int duty = map(percent, 0, 100, 0, 255);
Als u alleen AAN/UIT nodig hebt, is digitalWrite() genoeg. Wilt u dimmen of de snelheid veranderen, gebruik dan analogWrite(). Het werkt op dezelfde manier als in de tutorial Arduino - LED - Fade, maar nu bestuurt het een 12V belasting.
Arduino Code - MOSFET-module
De code hieronder doet deze dingen steeds opnieuw:
- Zet de belasting 2 seconden volledig AAN, daarna 2 seconden UIT
- Verhoogt het vermogen van 10% naar 100%, in stappen van 10%, elke 0,5 seconde
- Verlaagt het vermogen van 90% naar 0%, en wacht dan 1 seconde
Snelle stappen
- Maak de bedrading zoals in het diagram hierboven.
- Verbind Arduino met de pc via een USB-kabel.
- Steek de 12V voedingsadapter in de DC-voedingsconnector.
- Open de Arduino IDE. Ga naar het menu Tools en kies het juiste board en de juiste poort.
- Kopieer de bovenstaande code en plak deze in de Arduino IDE.
- Klik op de Upload knop in de Arduino IDE om de code naar Arduino te uploaden.
- Kijk naar de ledstrip: hij is 2 seconden op volle helderheid, daarna 2 seconden UIT, daarna wordt hij langzaam helderder en daarna langzaam dimmer.
- Open de Serial Monitor (baudrate 9600) en bekijk het resultaat.
Gebruikt u een 12V ventilator in plaats van de ledstrip, dan draait de ventilator op volle snelheid, stopt, en versnelt en vertraagt daarna. Vergeet de vrijloopdiode niet voor een ventilator of een motor.
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.