Raspberry Pi Pico: GPIO-Eingang beschalten

Grundsätzlich kann man einen GPIO-Pin wahlweise als Eingang oder als Ausgang betreiben. Als Eingang kann er die Zustände "High" und "Low" einnehmen. Zum Beispiel von einem Schalter oder Taster, die den Eingang gegen Ground (GND) oder +VCC schalten.

Damit ein Eingang einen definierten Zustand hat, und nicht hin- und herschwingt, wird ein GPIO mit einem Widerstand mit +VCC oder GND verbunden. Ein Widerstand deshalb, um zusätzlich den Strom zu begrenzen und Kurzschlüsse zu verhindern.

GPIO-Eingang mit Taster und Widerstand gegen +VCC (Pullup-Prinzip)

Pullup-Widerstand

Beim Pullup-Prinzip wird der GPIO-Eingang mit einem Pullup-Widerstand auf den Pegel von +VCC gezogen. Der Grundzustand des Eingangs wäre dann "High" bzw. "logisch 1". Mit einem Schalter oder Taster wird der GPIO-Eingang gegen Ground (GND) gezogen bzw. geschaltet. Das heißt, im geschalteten Zustand hätte der Eingang den Zustand "Low" bzw. "logisch 0".

GPIO-Eingang mit Taster und Widerstand gegen GND (Pulldown-Prinzip)

Pulldown-Widerstand

Beim Pulldown-Prinzip wird der GPIO-Eingang mit einem Pulldown-Widerstand gegen Ground (GND) gezogen. Der Grundzustand des Eingangs wäre dann "Low" bzw. "logisch 0". Mit einem Schalter oder Taster wurd der GPIO-Eingang auf den Pegel von +VCC gezogen bzw. geschaltet. Das heißt, im geschalteten Zustand hätte der Eingang den Zustand "High" bzw. "logisch 1".

Doch welches Prinzip sollte man dabei anwenden? Pullup oder Pulldown?

Verzichtet man auf die Feinheiten der praktischen Elektronik ist es eine Frage, welchen Grundzustand ein GPIO-Eingang haben soll. Wenn er eine „0“ als Grundzustand haben und der Wechsel zu „1“ ausgewertet werden soll, dann verbindet man den GPIO mit einem Widerstand gegen Ground (Pulldown) und schaltet mit dem Taster gegen +VCC.
Soll der Grundzustand „1“ sein und der Wechsel zu „0“ ausgewertet werden, dann verbindet man den GPIO-Eingang mit einem Widerstand gegen +VCC (Pullup) und schaltet mit dem Taster gegen Ground.
Und welche Größe sollten diese Widerstände haben? Im allgemeinen ist ein Widerstandswert von 10 kOhm sinnvoll. In der Praxis kann es Gründe geben einen höheren oder auch niedrigeren Wert zu wählen.

Wenn man die Wahl hat zwischen Pullup-Widerstand und Pulldown-Widerstand, was wäre dann zu empfehlen? Da ergeben sich zwei Fragen:

  1. Welche Logik weist die äußere Beschaltung auf?
  2. Welches Prinzip wendet der Mikrocontroller RP2040 im Reset-Zustand und damit im unkonfigurierten GPIO-Zustand an?

Im Optimalfall passen die Prinzipien von 1. und 2. zusammen. Doch was steht dazu im Datenblatt des Mikrocontrollers?

  • Unter 5.2.2.2 (Pin List) steht in der Tabelle, dass an den GPIOs von 0 bis 29 im Reset-Zustand (Reset State) ein Pulldown-Widerstand wirkt. Also auch an den ADC-Eingängen.
  • Unter 5.2.3.4 (IO Electrical Characteristics) steht, dass der Widerstandswert zwischen 50 und 80 kOhm liegt. Sowohl für den Pullup- wie auch den Pulldown-Widerstand. Dieser Zustand bleibt solange, bis ein GPIO konfiguriert wird.

Was bedeutet das jetzt? Es ist sinnvoll, wenn die äußere Beschaltung sich daran orientiert, dass ein GPIO per Pulldown-Widerstand auf Ground (GND) gezogen wird und ein Schalter oder Taster gegen VCC schaltet. Das heißt, man sollte bei der äußeren Beschaltung das Pulldown-Prinzip bevorzugen. Auf diese Weise vermeidet man ungewollte Eingangszustände.

Taster entprellen

Taster weisen ein seltsames Eigenleben auf. Nur einmal gedrückt und trotzdem lösen sie eine Funktion mehrfach aus. Das liegt daran, dass sie bei Betätigung prellen. Das Prellen bezeichnet einen mechanischen Vorgang, bei dem ein metallischer Kontakt durch Zurückfedern zwei oder sogar mehrfach öffnet und wieder schließt, bis er seine Endstellung erreicht hat. Beispielsweise geschlossen oder offen. Mehrfach mechanisch Öffnen und Schließen bedeutet aber auch, elektrisch Öffnen und Schließen. Wird das ausgewertet, dann wird eine Funktion mehrfach ausgeführt, was meistens nicht Sinn der Sache ist. Eine wichtige Maßnahme ist, den Taster oder Schalter zu entprellen. Das kann man softwareseitig realisieren.

Weitere verwandte Themen:

Teilen:

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Elektronik-Set jetzt bestellen Online-Workshop buchen

Programmieren mit dem Raspberry Pi Pico
Online-Workshop

Hardware-nahes Programmieren mit dem Raspberry Pi Pico

Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.

Online-Workshop buchen

Für Ihre Fragen zu unseren Online-Workshops mit dem Raspberry Pi Pico besuchen Sie unseren PicoTalk (Online-Meeting). (Headset empfohlen)

Zum PicoTalk

 

Elektronik-Set Pico Edition
Elektronik-Set Pico Edition

Raspberry Pi Pico: Hardware-nahes Programmieren mit MicroPython

Leichter Einstieg mit All-in-one-Set zum sofort Loslegen, um eigene Steuerungen programmieren.

Elektronik-Set jetzt bestellen

 

Elektronik-Set Pico WLAN Edition
Elektronik-Set Pico WLAN Edition

Raspberry Pi Pico W: IoT und Smart Home mit WLAN und MQTT

Betreibe Deinen Raspberry Pi Pico W als drahtloser Sensor in Deinem WLAN, versende E-Mails mit Daten und kommuniziere per MQTT im Internet of Things oder Smart Home.

Elektronik-Set jetzt bestellen

 

Elektronik-Set Sensor Edition
Elektronik-Set Sensor Edition

Erweiterung zu den Elektronik-Sets Pico Edition und Pico WLAN Edition

Elektronik-Set mit den beliebtesten Sensoren zum Messen von Temperatur, Helligkeit, Bewegung, Lautstärke und Entfernung.

Elektronik-Set jetzt bestellen