Raspberry Pi: GPIO mit Pullup- und Pulldown-Widerstand

ELektronik-KOmpendium.de
Online

Preis auf Anfrage

Wichtige informationen

  • Kurs
  • Online
Beschreibung

Raspberry Pi: GPIO mit Pullup- und Pulldown-Widerstand Der Zustand eines unbeschalteten GPIO-Eingangs liegt nicht zwangsläufig bei 0 Volt oder "low". GPIO-Eingänge neigen dazu zufällig in die eine oder andere Richtung zu schalten. Und zwar abhängig davon, was sich der Pin oder Anschlusspunkt gerade einfängt. Das Spektrum reicht von hochfrequenten Einstreuungen umliegender Bauteile oder anderer Pins, bis hin zu Überspannung. Das heißt, ein GPIO hat dann mal das eine oder andere, was zu unerwünschten Effekten führen kann.
Um dem entgegenzuwirken, verhilft man den GPIO-Eingängen zu definierten Pegeln. Das heißt, man versieht den jeweiligen Pin mit einem Pullup- oder Pulldown-Widerstand. Abhängig davon, ob man standardmäßig die Zustände "high" oder "low" erwartet. "Pull" heißt "ziehen". Das heißt, der GPIO wird auf einen bestimmten Pegel (Spannungswert) "gezogen". Pullup bedeutet auf "high" rauf- und Pulldown auf "low" runterziehen. Das Hinaufziehen erreicht man, in dem man den GPIO-Pin über einen Widerstand mit der Betriebsspannung verbindet. Das Hinunterziehen erreicht man, in dem man den GPIO-Pin über einen Widerstand mit dem Ground (GND) verbindet. Der Raspberry Pi hat auch interne Pullup- bzw. Pulldown-Widerstände, die normalerweise deaktiviert sind. Zum Einschalten muss man ein Register auf der Kommandozeile bedienen, was allerdings nicht so einfach ist. Besser ist es, man verwendet richtige Widerstände. Die kann man sehen und weiß dann, dass die GPIOs richtig beschaltet sind. Auch Ausgänge kann man mit Pullup- oder Pulldown-Widerständen beschalten. Allerdings ist deren Sinnhaftigkeit abhängig vom nachfolgenden Schaltungsteil. Dieser Schaltungsteil hat auch Eingänge, die im Grundzustand...

Wichtige informationen

Was lernen Sie in diesem Kurs?

Grundlagen

Themenkreis

Pullup-Widerstand am GPIO-Eingang

In diesem Schaltbild ist der Widerstand von VCC auf einen GPIO-Eingang geschaltet und der geöffnete Schalter vom GPIO-Eingang auf GND. Der Widerstand zieht den GPIO-Eingang gegen VCC. Hier liegen definitiv +3,3 V, also "high", an. Und deshalb wird dieser Widerstand Pullup-Widerstand genannt. Weil der Widerstand den GPIO auf die Betriebsspannung raufzieht.

Wird der Schalter betätigt, dann wird der GND mit dem GPIO-Eingang verbunden. Das hat folgenden Effekt: Die Spannung fällt komplett am Pullup-Widerstand ab und dadurch liegt am GPIO-Eingang GND an und somit ein "low".

Hinweis: Das Schaltbild aus Pullup-Widerstand und Schalter kann man sich auch als Reihenschaltung aus zwei Widerständen vorstellen. Es gilt entsprechend die Spannungs- und Stromverteilung. Wobei der Schalter im offenen Zustand ein unendlich hochohmiger und im geschlossenen Zustand ein niederohmiger Widerstand ist.

  • Grundlagen zu Pullup- und Pulldown-Widerständen
  • Reihenschaltung von Widerständen
Pulldown-Widerstand am GPIO-Eingang

In diesem Schaltbild ist der geöffnete Schalter von VCC auf den GPIO-Eingang geschaltet und der Widerstand vom GPIO-Eingang auf GND. Der Widerstand zieht den GPIO-Eingang gegen GND. Hier liegt definitiv 0 V, also "low", an. Und deshalb wird dieser Widerstand als Pulldown-Widerstand bezeichnet. Weil der Widerstand den GPIO auf 0 V runterzieht.

Wird der Schalter betätigt, dann wird VCC direkt an den GPIO-Eingang gelegt. Das hat folgenden Effekt: Die Spannung fällt komplett am Pulldown-Widerstand ab und dadurch liegt am GPIO-Eingang VCC an und somit ein "high".

Hinweis: Das Schaltbild aus Pullup-Widerstand und Schalter kann man sich auch als Reihenschaltung aus zwei Widerständen vorstellen. Es gilt entsprechend die Spannungs- und Stromverteilung. Wobei der Schalter im offenen Zustand ein unendlich hochohmiger und im geschlossenen Zustand ein niederohmiger Widerstand ist.

  • Grundlagen zu Pullup- und Pulldown-Widerständen
  • Reihenschaltung von Widerständen
Welche Werte sollten Pullup- und Pulldown-Widerstände haben?

Wie groß die Widerstände sein sollen kommt ganz auf die Anwendung an. Im Normalfall eignen sich Werte von 10 bis 100 kOhm. Man muss also nicht zwangsläufig die oft empfohlenen 10-kOhm-Widerstände nehmen. Es darf auch mehr sein. Das ist geschickt, wenn man gerade keine passenden Widerstände da hat.

Es spricht viel dafür einen größeren Wert als 10 kOhm zu verwenden. Wenn der Raspberry Pi per Batterie, Akku oder Solar betrieben wird, dann kommt es auf geringstmöglichen Stromverbrauch an und genau dann sollte man vielleicht größere Widerstandswerte als 10 kOhm verwenden. Wenn nämlich im Grundzustand Strom über einen zu kleinen Pullup- oder Pulldown-Widerstand fließt, dann geht das zu Lasten des Stromverbrauchs.
Beispielrechnung: Bei einem VCC von 3,3 V und einem Pullup-Widerstand von 10 kOhm fließen im Grundzustand 0,33 mA über den Widerstand zum GPIO-Eingang. Das ist nicht viel. Aber mit einem höheren Widerstandswert kann man den Stromverbrauch noch weiter senken. Zum Beispiel mit 1 MOhm. Aber, dann muss man auch darauf achten, dass die Kontakte und Pins staubgeschützt sind, weil sonst der Kontaktwiderstand an den Pins dazu führt, dass es zu einem Spannungsteiler zwischen Pullup-/Pulldown-Widerstand und dem Kontaktwiderstand kommt.
In so einem Fall kann man lange nach dem Fehler suchen.

Weitere verwandte Themen:
  • Raspberry Pi: GPIO - General Purpose Input Output
  • Raspberry Pi: GPIO-Belegung
  • Raspberry Pi: GPIO beschalten
  • Raspberry Pi: GPIO programmieren
  • Raspberry Pi: Grundlagen der Energieversorgung / Stromversorgung

Hinweis: Dieses Tutorial ist Teil einer Aufgaben und Übungen mit dem Raspberry Pi-Reihe, die für Lern- und Ausbildungszwecke erstellt wurde. Die dargestellte Lösung ist Teil einer konkreten Aufgabenstellung, die Schüler, Auszubildende und Studenten, lösen sollen. Deshalb muss der hier aufgezeigte Weg nicht der Optimalfall sein.