GPIO und PWM: Pins schalten und steuern
Kurz: GPIO-Pins sind frei programmierbare digitale Ein- und Ausgänge von Mikrocontrollern; mit PWM lassen sich Helligkeit, Motoren und Servos steuern, ohne die Strombelastbarkeit der Pins zu überschreiten.
Genauer: GPIO (General Purpose Input/Output) sind Pins, die ein Programm als Eingang (Taster lesen) oder Ausgang (LED schalten) nutzt. Beim Raspberry Pi, Pico, Arduino und ESP32 verbindet das die Software mit der Welt.
Im Detail
Ein- und Ausgänge
- Ausgang:
HIGH(3,3 V/5 V) oderLOW(0 V); Strom pro Pin begrenzt (Arduino ≈ 20 mA, Pi ≈ 16 mA, Gesamt beachten); LED mit Vorwiderstand, größere Lasten über Transistor/MOSFET/Relais-Treiber. - Eingang: Taster lesen; ein offener Eingang schwebt (liest Zufall) → Pull-up oder Pull-down (intern aktivierbar:
INPUT_PULLUP). - Entprellen: mechanische Taster flattern einige ms → Software-Entprellung/Kondensator.
- Interrupts: Flanke löst Funktion aus (statt ständig abzufragen).
PWM (Pulsweitenmodulation)
Schnelles Ein/Aus mit einstellbarem Tastverhältnis (Duty Cycle). Der Mittelwert wirkt wie eine analoge Spannung: 25 % an → ca. ¼ Helligkeit/Leistung.
# MicroPython (Raspberry Pi Pico)
from machine import Pin, PWM
led = PWM(Pin(15)); led.freq(1000)
led.duty_u16(32768) # 50 %Anwendungen: LED dimmen, Motorgeschwindigkeit, Servo (Pulse 1–2 ms alle 20 ms für Winkel), Töne (Lautsprecher), Lüftersteuerung. Frequenz hoch genug (Flackern/Pfeifen vermeiden).
Analog und Pegel
- ADC liest Spannungen (0–3,3 V → 0–1023/4095), z. B. Potentiometer, Lichtsensor; Raspberry Pi hat keinen ADC (extern nötig, MCP3008). DAC ausgeben ist selten; PWM + Filter genügt oft.
- 3,3 V vs. 5 V: nur toleranten Pins/Pegelwandler; 5 V auf 3,3-V-GPIO kann zerstören.
- GND gemeinsam verbinden.
- Motoren/Servos mit eigener Stromversorgung und gemeinsamer Masse, Freilaufdiode; nicht direkt am Pin.
- Schutz: Vorwiderstände, ESD-Vorsicht.
Programmierung
- Arduino:
pinMode,digitalWrite,digitalRead,analogWrite. - Raspberry Pi:
gpiozero(LED(17).on(),Button(2)),libgpiod; (RPi.GPIOalt). Pin-Nummerierung (BCM vs. Board) unterscheiden. - MicroPython/CircuitPython auf Pico/ESP32.
- Linux-Ebene:
gpiod-Tools, Device-Tree. - Projekte: Taster-LED, Ampel, Temperatursensor + Display (I²C), Servo-Steuerung, Retro-Gehäuse mit Power-Taste, Lüfterkurve.
- Sicherheit: Nie Netzspannung direkt; Relais-Module mit Isolation nur mit Fachwissen.
Siehe auch: I²C, SPI und UART, Raspberry Pi, Arduino und Mikrocontroller, Elektronische Bauteile