Arduino - MOSFET-module

In deze tutorial leren we:

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

AOD4184, LR7843 en FR120N MOSFET-module 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.

    De labels kunnen per partij een beetje verschillen. Lees altijd de tekst die op uw print staat.

    Hoe het werkt

    • 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.

    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

    • 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);

    Arduino-pin HIGH (5V): de belasting is AAN

    • 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);

    PWM-signaal: de belasting krijgt een deel van het vermogen

    • 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).
    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
    • 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.

    Enkele belangrijke regels:

    • 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 −.

    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.

Arduino aansluitschema met AOD4184, LR7843 of FR120N MOSFET-module

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

Eenkleurige 12V ledstrip aangesloten op een MOSFET-module

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

MOSFET-module koelventilator aansluitschema

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

Een 12V waterpomp aansluiten op de MOSFET-module

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

MOSFET-module DC-motor 12V aansluitschema

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

12V normaal gesloten magneetklep en MOSFET-module aansluitschema

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

Magneetslot aansluitschema met MOSFET-module

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
/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-mosfet-module */ const int MOSFET_PIN = 9; // Arduino pin connected to the PWM pin of the MOSFET module void setup() { Serial.begin(9600); pinMode(MOSFET_PIN, OUTPUT); analogWrite(MOSFET_PIN, 0); // start with the load OFF } void setLoad(int percent) { int duty = map(percent, 0, 100, 0, 255); // convert 0-100% to 0-255 analogWrite(MOSFET_PIN, duty); Serial.print("Load power: "); Serial.print(percent); Serial.println("%"); } void loop() { // turn the load fully ON, then fully OFF Serial.println("Load: ON"); setLoad(100); delay(2000); Serial.println("Load: OFF"); setLoad(0); delay(2000); // increase the power step by step (PWM) for (int percent = 10; percent <= 100; percent += 10) { setLoad(percent); delay(500); } // decrease the power step by step (PWM) for (int percent = 90; percent >= 0; percent -= 10) { setLoad(percent); delay(500); } delay(1000); }

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.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
Load: ON Load power: 100% Load: OFF Load power: 0% Load power: 10% Load power: 20% Load power: 30% Load power: 40% Load power: 50% Load power: 60% Load power: 70% Load power: 80% Load power: 90% Load power: 100% Load power: 90% Load power: 80% Load power: 70% Load power: 60% Load power: 50% Load power: 40% Load power: 30% Load power: 20% Load power: 10% Load power: 0%
Ln 11, Col 1
Arduino Uno on COM15
2

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.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!