Analoge Sensoren am Raspberry Pi mit nur einem GPIO-Pin auslesen
Das Problem
Anders als viele Mikrocontroller bietet der Raspberry Pi ausschließlich digitale GPIO-Pins. Diese können High (3,3 V) und Low (0 V) Pegel schalten oder einlesen, aber keine analogen Spannungen direkt messen. Glücklicherweise ermöglicht eine einfache RC-Ladetechnik das Auslesen variabler Widerstandssensoren wie LDRs und Thermistoren mit nur einem einzigen GPIO-Pin.
Funktionsprinzip
In einem klassischen RC-Glied sind ein Widerstand und ein Kondensator in Reihe geschaltet. Wird eine Spannung angelegt, steigt die Kondensatorspannung exponentiell an. Die Zeit, bis 63 % der Versorgungsspannung erreicht sind, ergibt sich aus der Zeitkonstante t = R × C, wobei t die Zeit in Sekunden, R der Widerstand in Ohm und C die Kapazität in Farad ist. Indem man misst, wie lange der Kondensator braucht, um den High-Pegel-Schwellwert des GPIO (≈ 2 V bei 3,3 V Pi) zu erreichen, erhält man einen Wert proportional zum Sensorwiderstand – und damit zur gemessenen physikalischen Größe.
Beispiel: Mit 10 kΩ Widerstand und 1 µF Kondensator beträgt die Zeitkonstante 10 ms. Ein LDR mit 1 MΩ im Dunkeln liefert ca. 1 s – Licht und Dunkelheit lassen sich so problemlos unterscheiden.
Praktische Umsetzung
Um einen definierten Widerstand zwischen 3,3 V-Versorgung und GPIO-Pin zu gewährleisten, schaltet man einen 2,2 kΩ Widerstand in Reihe zum LDR. Der vollständige Messablauf:
- Kondensator entladen: GPIO als Ausgang konfigurieren und auf Low ziehen.
- Ladevorgang starten: GPIO als Eingang umschalten. Strom fließt durch das Widerstandsnetzwerk in den Kondensator, dessen Spannung ansteigt.
- Anstiegszeit messen: Einen Zähler (oder High-Resolution-Timer) inkrementieren, bis der GPIO High (≈ 2 V) liest. Die verstrichene Zeit entspricht der RC-Zeitkonstante des Sensors.
- Wiederholen: GPIO wieder auf Ausgang, Low ziehen und für kontinuierliches Monitoring wiederholen.
Für detailliertere Anleitungen siehe die offizielle Raspberry Pi GPIO-Dokumentation und den Wikipedia-Artikel zum RC-Glied. Ein Online-RC-Zeitkonstanten-Rechner hilft bei der Auswahl passender Bauteilwerte für Ihren Sensorbereich.
Herstellungsprozess
- Kosteneffizientes Indoor-Temperatur-Mapping mit Low-Cost-Sensoren
- Line-Tracking-Sensor mit Raspberry Pi – Einfacher KY-033 Tür/Line Detektor
- Sensor-gesteuerte Audio-Effekte mit dem Satellite CCRMA Kit bauen
- Analoge Sensoren am Raspberry Pi mit nur einem GPIO-Pin auslesen
- Analoge Sensoren am Raspberry Pi ohne nativen ADC auslesen – Step-Response Methode
- IoT mit Java ME 8 auf Raspberry Pi: Teil 1 – GPIO Sensor-Integration
- Analoge Sensoren mit Raspberry Pi und Zabbix auslesen – Schritt-für-Schritt-Anleitung
- Low-Cost Infrarot-Näherungssensor für Raspberry Pi nur mit Digitalpins
- Raspberry Pi GPIO meistern: PIR-Bewegungsmelder an B+/Model 2 anschließen
- MCP3008 ADC zum Auslesen analoger Sensoren mit Raspberry Pi nutzen