Raspberry Pi: GPIO beschalten

ELektronik-KOmpendium.de
Online

Preis auf Anfrage

Wichtige informationen

  • Kurs
  • Online
Beschreibung

Raspberry Pi: GPIO beschalten Grundsätzlich kann man einen GPIO wahlweise als Eingang oder als Ausgang betreiben. Als Eingang kann er die Zustände "high" und "low" auswerten. Zum Beispiel von einem Schalter. Als Ausgang kann er die Zustände "high" und "low" ausgeben. Das bedeutet, dass entweder eine Spannung von +3,3 V oder 0 V am Eingang angelegt oder am Ausgang ausgegeben wird. Neben der Möglichkeit GPIOs als Ein- und Ausgänge zu nutzen, gibt es noch Parallelfunktionen, wie SPI, I2C, UART, PWM und PCM. Die Konfiguration eines GPIOs muss man in jedem Fall beim Starten des Raspberry Pi per Script setzen. Die Zusatzfunktionen muss man gesondert aktivieren. Zum Beispiel durch Laden von Modulen. Neben der Parallelbelegung weisen GPIOs bestimmte Strom- und Spannungsgrenzen auf, die man bei der Beschaltung berücksichtigen muss. So liegt die Spannung eines GPIO-Ausgangs bei 0 V oder +3,3 V, wobei ein Strom von maximal 8 mA entnommen werden darf. Genauso bei einem GPIO-Eingang. Hier darf die anliegende Spannung 0 oder +3,3 V betragen.
Die GPIO-Pins eignen sich in keinem Fall zur Stromversorgung. Auch nicht die extra ausgewiesenen +3,3V- und +5V-Pins. Die sind nur dafür da, einen fest definierten Pegel bereitzustellen, um einen Stromkreis zu schließen. Externe Schaltungsteile, insbesondere Relais und Motoren, müssen über ein eigenes Netzteil versorgt werden.
In Ausnahmefällen mag es möglich sein, dass ein Relais oder auch ein Lüfter direkt am +3,3V- oder +5V-Kreis funktionieren mag. Aber das sollte nicht die Regel sein. In der Regel ist es so, dass man die GPIOs des Raspberry Pi mit Widerständen beschaltet, um Eingänge auf einen definierten Pegel zu setzten (Vcc oder GND) oder um den Strom zu begrenzen. Wenn ein GPIO-Ausgang etwas schalten soll, dann verstärkt man das Ausgangssignal...

Wichtige informationen

Themenkreis

Belegung und Beschaltung der GPIOs

Vor jedem Projekt ist es eine Überlegung wert, welche Pins beschaltet werden sollen. Wenn man einen beliebigen GPIO beschaltet, dann muss man später unter Umständen umbauen, weil man doch eine bestimmte Funktion nutzen möchte, die durch einen bereits beschalteten GPIO belegt ist.

  • Raspberry Pi: GPIO-Belegung

Problematisch an einem GPIO ist, dass sein Zustand beim Startvorgang nicht definiert ist. Bis ein GPIO definiert wurde, treten insbesondere an den Ausgängen unerwünschte Effekte auf, die zum Beispiel zum Klackern von Relais oder Flackern von LEDs führen können. Um das zu verhindern müssen Eingänge und Ausgänge mit Pullup- oder Pulldown-Widerständen beschaltet sein.

  • Raspberry Pi: GPIO mit Pullup- und Pulldown-Widerstand
GPIO als Eingang (Input)

Ist ein GPIO als Eingang definiert, dann nimmt er Schaltzustände externer Schaltungsteile an. Das kann im einfachsten Fall ein Taster oder Schalter sein. In jedem Fall muss ein Potential bzw. Pegel (Spannung) anliegen, damit der GPIO-Eingang den anliegenden Zustand auswerten kann. Diese Zustände bezeichnet man als "high" und "low" oder "1" und "0". Damit drückt man den anliegenden Pegel bzw. die Spannung aus, die 3,3 V oder 0 V betragen muss. Wichtig ist dabei, dass an einem GPIO-Eingang niemals mehr als 3,3 V anliegen dürfen. Das würde den Eingang zerstören.

Die Pegel bzw. Spannungswerte sind nicht in Stein gemeißelt. Sie unterliegen einer Toleranz. Ein GPIO-Eingang wird Spannungen unter 0,8 V als "low" erkennen und Spannungen über 1,3 V als "high".
Wenn keine definierte Spannung anliegt, dann neigen die Eingänge in irgendeine Richtung zu schwingen. Das heißt, sie nehmen wechselweise den Zustand "high" oder "low" an. Das passiert zum Beispiel dann, wenn der GPIO-Eingang unbeschaltet ist. Das sollte man vermeiden, wenn man seinen Zustand auswerten will.
Über Pullup- bzw. Pulldown-Widerstände kann man Einfluss darauf nehmen, welchen Zustand ein GPIO-Eingang im Grundzustand haben soll. Es empfiehlt sich grundsätzlich Eingänge mit einem Pulldown-Widerstand an Masse (GND, 0 V) zu legen, um das Einfangen von Störsignalen zu verhindern.

GPIOs können im Raspberry Pi auch Software-seitig mit Pullup- oder Pulldown-Widerständen beschaltet werden. Das sollte man nach Möglichkeit vermeiden, weil man echte Widerstände nicht übersehen kann und somit sicher sein kann, dass die Beschaltung wie gewünscht funktioniert.

GPIO als Ausgang (Output)

Ist ein GPIO als Ausgang definiert, dann kann man Schaltzustände an externe Schaltungsteile weitergeben. Das kann im einfachsten Fall eine LED oder Transistor sein, der ein Relais oder einen Motor steuert.
Der Pegel der Ausgangsspannung liegt bei 3,3 V. Es handelt sich dabei um einen CMOS-Ausgang, was auch bedeutet, dass der Port nicht viel Strom liefern kann. Ein einzelner GPIO-Ausgang kann zwischen 2 und 16 mA liefern. Mit mehr als 8 mA sollte man nicht rechnen. Für einen stabilen Ausgangsstrom reichen 2 bis 3 mA. Wer mehr braucht muss für einen GPIO-Ausgang einen Transistor als Schalter mit einer externen Stromversorgung vorsehen. Je nach Transistor und zu schaltendem Strom, reichen auch unter 1 mA aus.
Insgesamt kann man allen GPIO in Summe nicht mehr als ca. 50 mA entnehmen. Wenn man alle GPIOs als Ausgang definiert, dann kommt man auf ca. 3 mA pro GPIO, was man als Richtwert annehmen kann.

Weitere verwandte Themen:
  • Raspberry Pi: GPIO - General Purpose Input Output
  • Raspberry Pi: GPIO-Belegung
  • Raspberry Pi: GPIO programmieren
  • Raspberry Pi: GPIO mit Pullup- und Pulldown-Widerstand
  • 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.