Lesen analoger Sensoren mit einem GPIO-Pin
Im Gegensatz zu einigen anderen Geräten hat der Raspberry Pi keine analogen Eingänge. Alle 17 GPIO-Pins sind digital. Sie können hohe und niedrige Pegel ausgeben oder hohe und niedrige Pegel lesen. Dies ist ideal für Sensoren, die einen digitalen Eingang für den Pi bereitstellen, aber nicht so gut, wenn Sie einen Sensor verwenden möchten, der dies nicht tut.
Für Sensoren, die als variabler Widerstand fungieren, wie LDRs (Light Dependent Resistors) oder Thermistoren (Temperatursensoren), gibt es eine einfache Lösung. Es ermöglicht Ihnen, eine Reihe von Pegeln mit einem einzigen GPIO-Pin zu messen. Im Fall eines Lichtsensors können Sie damit verschiedene Lichtstärken messen.
Es verwendet eine grundlegende "RC" -Ladeschaltung (Wikipedia-Artikel), die oft als Einführung in die Elektronik verwendet wird. In dieser Schaltung schalten Sie einen Widerstand in Reihe mit einem Kondensator. Wenn an diesen Komponenten eine Spannung angelegt wird, steigt die Spannung am Kondensator an. Die Zeit, die es dauert, bis die Spannung 63 % des Maximums erreicht, entspricht dem Widerstand multipliziert mit der Kapazität. Bei Verwendung eines lichtabhängigen Widerstands ist diese Zeit proportional zur Lichtstärke. Diese Zeit wird als Zeitkonstante bezeichnet:
t =RC wobei t die Zeit ist,R der Widerstand (Ohm) und C die Kapazität (Farad) ist
Der Trick besteht also darin, zu bestimmen, wie lange ein Punkt in der Schaltung benötigt, um eine Spannung zu erreichen, die groß genug ist, um sich als "High" an einem GPIO-Pin zu registrieren. Diese Spannung beträgt ungefähr 2 Volt, was für meinen Geschmack nahe genug an 63% von 3,3 V liegt. Die Zeit, die die Schaltung braucht, um einen GPIO-Eingang von Low auf High zu ändern, ist also gleich „t“.
Mit einem 10Kohm Widerstand und einem 1uF Kondensator ist t gleich 10 Millisekunden. Im Dunkeln kann unser LDR einen Widerstand von 1 Mohm haben, was einer Zeit von 1 Sekunde entspricht. Sie können andere Werte mit einem Online-Zeitkonstantenrechner berechnen.
Um sicherzustellen, dass zwischen 3,3 V und dem GPIO-Pin immer ein Widerstand vorhanden ist, habe ich einen 2,2-Kohm-Widerstand in Reihe mit dem LDR eingefügt.
Theorie
Hier ist der Ablauf der Ereignisse:
- Setzen Sie den GPIO-Pin als Ausgang und setzen Sie ihn auf Low. Dies entlädt jegliche Ladung im Kondensator und stellt sicher, dass beide Seiten des Kondensators 0 V haben.
- Stellen Sie den GPIO-Pin als Eingang ein. Dies startet einen Stromfluss durch die Widerstände und durch den Kondensator nach Masse. Die Spannung am Kondensator beginnt zu steigen. Die benötigte Zeit ist proportional zum Widerstand des LDR.
- Überwachen Sie den GPIO-Pin und lesen Sie seinen Wert. Erhöhen Sie einen Zähler, während wir warten.
- An einem bestimmten Punkt wird die Kondensatorspannung genug ansteigen, um vom GPIO-Pin als High angesehen zu werden (ca. 2 V). Die benötigte Zeit ist proportional zur vom LDR gesehenen Lichtstärke.
- Legen Sie den GPIO-Pin als Ausgang fest und wiederholen Sie den Vorgang nach Bedarf.
Weitere Informationen:Lesen analoger Sensoren mit einem GPIO-Pin
Herstellungsprozess
- Kartierung des Temperaturflusses in Haushalten mit billigen Sensoren
- Linienverfolgungssensor mit RPi
- Kontrollieren eines Effekts mit echten Sensoren
- Lesen analoger Sensoren mit einem GPIO-Pin
- Analoge Sensoren ohne analoge Eingänge auf dem Raspberry Pi
- Java ME 8 + Raspberry Pi + Sensoren =IoT World (Teil 1)
- Auslesen von analogen Sensoren mit Raspberry Pi und Zabbix Supervisor
- Ein einfacher analoger Näherungssensor mit digitaler Schnittstelle (für Raspberry Pi) [letztes Update:7. Februar 2014]
- Raspberry Pi GPIO mit PIR-Bewegungssensor:Bestes Tutorial
- Analoge Sensoren auf dem Raspberry Pi mit einem MCP3008