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

Online-Workshop Mehr Informationen Elektronik-Set jetzt bestellen

Programmieren mit dem Raspberry Pi Pico
Online-Workshop

Programmieren mit dem Raspberry Pi Pico

Online-Workshop mit einer Einführung ins Physical Computing mit Leuchtdioden, Taster und Temperatursensor.

  • Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython ohne Vorkenntnisse
  • Optimaler Einstieg, um eigene Ideen zu verwirklichen und Steuerungen zu programmieren
  • Inklusive Elektronik-Set mit einem Raspberry Pi Pico, Zubehör und elektronischen Bauteilen

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

Zum PicoTalk Mehr Informationen Am Online-Workshop teilnehmen

Elektronik-Set Pico Edition
Elektronik-Set Pico Edition

Hardware-nahes Programmieren mit dem Raspberry Pi Pico

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

Online-Workshop Mehr Informationen Elektronik-Set jetzt bestellen