Raspberry Pi Pico: ADC richtig initialisieren
In der Einsteiger-Dokumentation für den Raspberry Pi Pico mit MicroPython wird ein ADC mit dem ADC-Kanal initialisiert:
# Variante mit der ADC-Kanal-Nummer 0 adc = machine.ADC(0)
Es gibt noch eine zweite Variante, wie sich ein ADC initialisieren lässt:
# Variante mit der GPIO-Nummer 26 adc = machine.ADC(26)
Der Unterschied ob die ADC-Instanz mit der ADC-Kanal-Nummer oder der GPIO-Nummer initialisiert wird, ergibt sich aus den unterschiedlichen Messwerten. Die Frage ist, was ist falsch und was ist richtig, und warum ist das so.
Die kurze Antwort ist, die Initialisierung über die ADC-Kanal-Nummern 0, 1, 2 und 3 führen zu falschen Messwerten.
ADC-Kanalnummer vs. GPIO-Pin-Nummer
Wichtig zu wissen ist, dass jeder GPIO standardmäßig einen Pulldown-Widerstand aktiviert hat. Ein machine.Pin(26), ohne weitere Parameter, ist dann standardmäßig ein GPIO-Eingang mit einem Pulldown-Widerstand.
Wenn man beim Initialisieren den ADC-Kanal verwendet, dann ist standardmäßig auch der Pulldown-Widerstand des GPIOs aktiviert. Das heißt, man hat am zu messenden Objekt einen Widerstand parallel geschaltet. Und dieser Widerstand kann den Messwert verfälschen.
Nur bei der Initialisierung des ADCs mit der GPIO-Nummer wird der Pulldown-Widerstand des GPIOs deaktiviert. Der kann den Messwert dann nicht mehr beeinflussen.
Hinweis: Es gibt in der Praxis eigentlich nur einen Fall, wo man einen ADC mit der ADC-Kanal-Nummer initialisieren muss. Das ist beim internen Temperatursensor, der die ADC-Kanal-Nummer 4 hat.
ADC richtig initialisieren
Im Prinzip ist es sinnvoll, immer die GPIO-Nummer beim Initialisieren zu verwenden, um grobfalsche Messwerte zu vermeiden.
Folgende Initialisierungen verhalten sich identisch:
adc = machine.ADC(26)
adc = machine.ADC(Pin(26))
adc = machine.ADC("GP26")
Weil gute Programmierung immer eindeutig ist, empfiehlt sich folgende Initialisierung:
adc = machine.ADC(Pin(26, machine.Pin.IN, pull=None))
Bei dieser Initialisierung sieht man auf einen Blick, dass der GPIO als Eingang und ohne Pulldown- oder Pullup-Widerstand als ADC initialisiert wird. Diese Zeile ist sozusagen unmissverständlich. Auf diese Weise wird der GPIO so eingestellt, wie er für den ADC sein muss.
Weitere verwandte Themen:
- Raspberry Pi Pico: Grundlagen zu ADC (Analog-Digital-Converter)
- Raspberry Pi Pico: Experimente mit ADC
- Raspberry Pi Pico: VSYS mit ADC messen
- Raspberry Pi Pico W: VSYS mit ADC messen
- Raspberry Pi Pico: GPIO-Grundlagen
Frag Elektronik-Kompendium.de
Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython
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: Programmieren mit dem Raspberry Pi Pico
Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.
Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.






