[FAQ] Wie schalte ich eine Last (Relais, Motor, Lampen, etc.) über einen GPIO?

  • Immer wieder taucht die Frage nach dem Anschluss von größeren Lasten bis zu 12 Volt auf, daher erkläre ich nachfolgend für Laien verständlich, wie diese anzuschließen sind. (Dem Physiker oder E-Techniker mögen wegen der gewählten Begriffe die Haare zu Berge stehen, aber für Einsteiger ist "Minus" leichter zu verstehen als "GND")


    Ein GPIO liefert 3,3V und sollte mit maximal 2-4mA belastet werden, wie hier ausführlich erklärt wird. Daher dürfen größere Lasten wie Relais, Motoren, Lampen, etc. niemals direkt am GPIO betrieben werden.


    Wichtig: GND (Minusleitungen) der beteiligen Komponenten müssen in allen Fällen zusammen liegen, so dass alle Geräte die selbe Masse haben.


    Die Lasten werden über eine Schaltstufe angeschlossen. Der GPIO steuert hierbei einen NPN Transistor oder N-Kanal Mosfet an, der dann seinerseits laienhaft ausgedrückt als Schalter fungiert und GND (Minusleitung) zum Verbraucher schließt oder öffnet. Erklärt wird dies sehr ausführlich zum Beispiel bei mikrocontroller.net und elektronik-kompendium.de. Die nachfolgenden Informationen beziehen sich beispielhaft auf den Transistor BC337 und den Mosfet IRLZ44N. Andere Typen sind möglich, müssen aber evtl. anders beschaltet werden. Informationen darüber gibt es im Datenblatt.


    Von dort stammen auch die angehangenen Grafiken.


    Wird ein Verbraucher bis 500mA angeschlossen, wird ein Widerstand von 270 Ohm an den GPIO angeschlossen. An diesen Widerstand wird der Transistor BC337 mit dem mittleren Pin (Basis) angeschlossen. Schaut man von oben auf den Transistor und hält die flache Seite nach links, dann wird der nach oben ausgerichtete Pin (Kollektor) an den Verbraucher angeschlossen. Der nach unten ausgerichtete Pin (Emitter) wird an Masse angeschlossen.


    Wer größere Lasten schalten möchte, kann dazu einen IRLZ44N nehmen. Dieser wird mit einem kleinen Vorwiderstand direkt an den GPIO angeschlossen. Hierzu wird, wenn man von vorne (Beschriftung ist sichtbar) auf den Mosfet schaut, der linke Pin an den GPIO angschlossen. Der mittlere Pin wird wieder an den Verbraucher angeschlossen und der rechte Pin an GND (Minus). Wichtig ist noch ein Widerstand von etwa 10 KOhm, der zwischen den GPIO und GND (Minus) geschaltet wird.


    Alternativ kann man größere Lasten auch über Relais betreiben. Diese können aber nicht direkt an den GPIO angeschlossen werden, sondern müssen wieder über die bereits erklärte Schaltstufe angesteuert werden. Wichtig ist, dass man bei Relais, die keine integrierte Diode haben, eine Schutzdiode parallel zum Relais installiert. Hierzu kann man beispielsweise eine 1N4148 nehmen.


    Für kleinere Lasten habe ich eine Platine entworfen, mit der Vcc (also die Plusleitung) geschaltet werden kann. Hierbei dient ein NPN Transistor als "Schalter" für den Mosfet, der dann seinerseits die Spannung schaltet.

  • z.B. der Transistor BC337 (man kann man auch viele andere Typen verwenden - im Grunde hängt das von B, UCEmax und IC max ab). -> Transistorpinbelegung entsprechend Datenblatt
    Man kann auch eine fertige Darlington Schaltung verwenden wie z.B. ULN2803, hat aber UCE sat von ca. 1V.
    FET kann nicht immer direkt an GPIO angeschlossen werden, oder ? Das Hängt doch vom Typ und von IDS ab.
    Die Raspeberry Pi hat keinen "Minus" Anschluss und die Schaltungen auch nicht, also bin ich für GND als Bezeichnung.
    Automatisch zusammengefügt:[hr]
    OK hab gesehen, der IRLZ44N kann bei 3,3 V UGS mehr als 20A denke das sollte reichen.

    Edited once, last by evil ().