Raspberry Pi Pico: Widerstand messen
Widerstände sind wegen ihres Farbcodes manchmal schwer zu identifizieren. Gängige Werte erkennt man auf den ersten Blick. Doch es gibt Farbcodes, die man nicht kennt, weil sie exotisch sind oder die Farben sind nicht richtig oder nur undeutlich zu erkennen. Zur Identifikation arbeitet man mit einer Farbcodetabelle oder misst mit einem Multimeter nach, wenn man einen Irrtum vermeiden will.
Eine Alternative ist, wenn man beides nicht hat, einen Raspberry Pi Pico als Ohmmeter einzusetzen. Das geht ganz gut, wenn man Widerstandswerte zwischen 1 kOhm bis 100 kOhm ungefähr ermitteln will.
Die Idee ist, der Raspberry Pi Pico misst den Wert eines unbekannten Widerstands und zeigt ihn in der Thonny-Kommandozeile an. Aber, so einfach ist das nicht. Dabei kann man viel falsch machen.
Der Raspberry Pi Pico kann nämlich keine Widerstände messen. Im weitesten Sinn kann er an seinen ADC-Eingängen nur Spannungen zwischen 0 und +3,3 Volt messen. Genau genommen wandelt der Pico eine analoge Spannung in einen digitalen Wert um, der als Dezimalzahl zwischen 0 und 65.535 liegt. Und dann gilt es diesen Wert richtig zu interpretieren und in die gewünschte Größe umzuwandeln.

Dazu bedarf es eines Spannungsteilers zwischen einem Festwiderstand R_REF (zum Beispiel 10 kOhm) und dem unbekannten Widerstand R_M. Das Programm misst die Spannung am bekannten Widerstand und anschließend wird der Wert des unbekannten Widerstands in Ohm berechnet.
Aufbau und Bauteile


Programmcode
Das Programm misst periodisch den Spannungswert an einem analogen Eingangspin, rechnet diesen in eine Spannung und anschließend in einen Widerstand um. Damit lässt sich z. B. auch ein Sensor auswerten, dessen Widerstand sich mit Temperatur oder Licht ändert.
Die Parameter:
- R_REF: Bekannter Festwiderstand im Spannungsteiler
- U_REF: Referenzspannung des ADCs
- ADC_MAX: Maximale Auflösung des 16-Bit-ADCs
# Bibliotheken laden
import machine
import time
# ADC-Parameter
R_REF = 10000 # Ohm
U_REF = 3.3 # Volt
ADC_MAX = 65535 + 1 # Auflösung bei 16 Bit
# Initialisierung des ADC0 (GPIO26)
adc = machine.ADC(machine.Pin(26, machine.Pin.IN, pull=None)) # Pulldown-Widerstand abschalten
# Hauptprogramm
while True:
time.sleep(2)
# ADC als Dezimalzahl lesen (von R_REF)
adc_ref = adc.read_u16()
# ADC-Wert in Spannung umrechnen
voltage = adc_ref * U_REF / ADC_MAX
# ADC-Wert in Widerstand umrechnen
resistor = int(R_REF * (adc_ref / (ADC_MAX - adc_ref)))
# Ausgabe in der Kommandozeile
print(f"ADC_REF: {adc_ref:5d} | Spannung: {voltage:.3f} V | Widerstand: {resistor:6d} Ohm", end=" \r")
Darf es etwas mehr sein?
Für eine schnelle Widerstandsmessung ist dieser Aufbau und Programmcode in der Regel ausreichend. Das muss aber nicht immer so sein. Es kann sein, dass es etwas präziser und die Messung stabiler sein soll. Hierzu sind bei der Beschaltung und auch in der Software ein paar Anpassungen notwendig.
Weitere verwandte Themen:
- Messen mit dem Raspberry Pi Pico
- Raspberry Pi Pico: Spannung messen bis 3,3 Volt
- Raspberry Pi Pico: Spannung messen über 3,3 Volt
- Raspberry Pi Pico: Grundlagen zu ADC (Analog-Digital-Converter)
- Raspberry Pi Pico: Experimente mit ADC
Elektronik-Sets für das Hardware-nahe Programmieren
Elektronik-Sets für das Hardware-nahe Programmieren
Online-Meeting
Programmieren mit dem Raspberry Pi Pico
Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.




