AEQ-WEB

Arduino IRFZ44N PWM MOSFET Load Control
Arduino
06.04.2019

Switch language to: en Englisch

Arduino MOSFET Steuerung


Mikrocontroller wie der Arduino oder ein ESP sind sicherlich die günstigsten Steuerkomponenten auf den Markt. Mit diesen Entwicklungsboards oder Mikrocontrollern kann man problemlos sämtliche Komponenten steuern. Möchte man jedoch große Verbraucher wie Elektromotoren oder starke Lampen schalten, so kann man das nicht ohne weitere Elektronik machen, da der maximale Ausgangstrom bei den meisten Mikrocontrollern bei 50 Milliampere liegt. In diesen Artikel gehen wir auf MOSFET-Transistoren ein und zeigen, wie man damit große Lasten schalten kann oder die Leistung von einem Gleichstrommotor regeln kann.


MOSFET vs. Relais

Relais sind relativ einfach aufgebaut. Damit besteht die Möglichkeit, galvanisch getrennte Stromkreise und je nach Relais-Type auch sehr große Lasten zu schalten. Das Problem vom Relais ist, dass man damit Lasten nur ein- und ausschalten kann, aber nicht regeln. Sehr oft wünscht man sich jedoch, dass z. B. ein langer LED-Strip gedimmt werden kann, oder dass ein großer Gleichstrommotor langsam los fährt. Das kann mittels PWM-Signalen über einen MOSFET gesteuert werden. Außerdem sind MOSFET-Transistoren wesentlich kleiner und günstiger gegenüber Relais. Trotzdem wird oft auf MOSFETs verzichtet, da diese gegenüber dem Relais keinen Wechselstrom schalten können und bei großen Lasten sehr heiß werden, weshalb oft sehr große Kühlkörper benötigt werden.


Was ist ein MOSFET

MOSFET steht für Metall-Oxid-Semiconductor-Feldeffekttransistor und dient zum Schalten von hohen Strömen. Obwohl der Transistor heutzutage Polysilizum enthält, ist die Bezeichnung gleich geblieben. Im Grunde handelt es sich hier um einen Hochleistungstransistor, der sehr hohe Ströme und Spannungen schalten kann. Die Steuerspannungen sind meistens auch höher im Gegensatz zu normalen Transistoren wie z. B. den BC547. Auch bei den MOSFETs gibt es N-Kanal und P-Kanal Typen, wobei überwiegend aufgrund des besseren Innenwiderstandes N-Kanal MOSFETs verwendet werden. Der MOSFET hat folgende PIN-Bezeichnungen:


  • S (Source): Der Source-Pin (Quelle) ist der Eingang vom MOSFET. Bei einem aktiven Gate entspricht die Source-Spannung der Drain-Spannung.
  • D (Drain): Der Drain (Abfluss) ist der Ausgang, der zum Verbraucher geht und dadurch die Last steuert.
  • G (Gate): Das Gate (Steuerelektrode) ist der Steuerungseingang vom MOSFET, der den Stromfluss zwischen Source und Gate steuert.

MOSFET am Arduino

Grundsätzlich kann der MOSFET ohne weitere Bauteile an einem digitalen Pin vom Arduino angeschlossen werden. Der I/O Pin wird direkt an das Gate angeschlossen. Die Masse von der Spannungsversorgung und den Arduino wird mit dem Source-Pin vom MOSFET verbunden. Die Masse vom Endverbraucher wird mit dem Drain verbunden. Wenn der Verbraucher anstatt mit der Masse mit dem Pluspol gesteuert werden soll, so muss ein P-Kanal MOSFET verwendet werden. Dabei wird zusätzlich eine Vorschaltung von einem NPN-Transistor am Gate benötigt, da der Arduino nur eine positive Spannung am I/O Pin schaltet. Zwischen dem Gate-Pin und dem Source-Pin befindet sich noch ein Widerstand, der idealerweise einen Wert zwischen 1K und 10K hat. Dieser Widerstand schaltet das Gate gegen Masse, damit der MOSFET nach Spannungsabfall vom Gate sofort abschaltet und nicht weiter für einen gewissen Zeitraum durchlässig bleibt.


Arduino IRFZ44N PWM MOSFET Motor Control

Verbraucher regeln mit PWM

Da die meisten Mikrocontroller einen oder mehrere I/O Pins haben, die PWM (Pulsweitenmodulation) unterstützen kann man mit dem MOSFET Leistungen regeln. Dadurch kann man einen Elektromotor langsam anfahren lassen, die Leistung einer Heizspule regeln oder auch eine Lampe dimmen. MOSFETs befinden sich übrigens auch in zahlreichen Ladegeräten, Audioverstärkern oder Schaltnetzteilen.


Arduino Sourcecode

Der Beispielcode steuert den MOSFET über den digitalen PIN 6 an. Über den Serial Monitor wird ein Wert zwischen 0 und 255 eingeben, der dann an den PWM-Pin gesendet wird. Der Endverbraucher kann dann wie in unserem Beispiel ein Elektromotor sein, der je nach eingegebenen Wert unterschiedlich schnell läuft.


int PWM_PIN = 6;
int pwmval = 0;

void setup() {
  Serial.begin(9600);
  pinMode(PWM_PIN,OUTPUT);
  Serial.println("Send a value between 1 and 255");
}

void loop() {
  if (Serial.available() > 1) {
      pwmval =  Serial.parseInt();
      Serial.print("Set Speed to: ");
      Serial.println(pwmval);
      analogWrite(PWM_PIN, pwmval);
      Serial.println("done!");
  }
}

Arduino Serial Monitor PWM Controll


Von Alex @ AEQ-WEB 100