Raspberry Pi Pico als Ohmmeter
Ein Ohmmeter ist ein Messgerät, das verwendet wird, um den elektrischen Widerstand eines Bauteils zu messen. Der Widerstand wird in Ohm angegeben, und das Ohmmeter zeigt diesen Wert direkt an. Während der Messung darf das Bauteil, in der Regel ein Festwiderstand, nicht an einer Spannungsquelle angeschlossen sein. Der Grund ist, dass die Widerstandsmessung in der Regel über das Verhältnis zweier Spannung berechnet wird, weshalb der Widerstand schon vom Messgerät mit Strom versorgt wird. Deshalb muss das Bauteil spannungsfrei sein, weil sonst das Messgerät Schaden nehmen kann.
In diesem Aufbau verwenden wir den Raspberry Pi Pico mit einem ADC zur Widerstandsmessung. Mit Hilfe einer Berechnung wird aus der Referenzspannung (U_REF), die gemessene Spannung (U_RM) an einem bekannten Widerstand (R_FIX) der unbekannte Widerstand (R_M) berechnet.
FORMEL
- LINK
Aufbau und Bauteile


Programmcode
Der Programmcode misst mit einem ADC die Spannung an dem unbekannten Widerstand und zusätzlich noch die Referenzspannung zur Korrektur.
Die Parameter:
- R_FIX: Bekannter Referenzwiderstand (fester Wert im Spannungsteiler).
- U_REF: Referenzspannung des ADCs.
ADCs:
- adc_rm: ADC liest die Spannung am Messwiderstand.
- adc_ref: ADC liest die Referenzspannung.
Das Programm misst fortlaufend die Spannung am Widerstand und berechnet daraus den Widerstand in Ohm, der in der Kommandozeile angezeigt wird.
# Bibliotheken laden
import machine
import time
# ADC-Parameter
R_FIX = 10000 # Ohm
U_REF = 3.3 # Volt
# Initialisierung des ADC0 (GPIO26)
adc_rm = machine.ADC(machine.Pin(26, machine.Pin.IN, pull=None)) # Pulldown-Widerstand abschalten
# Initialisierung des ADC2 (GPIO28)
adc_ref = machine.ADC(machine.Pin(28, machine.Pin.IN, pull=None)) # Pulldown-Widerstand abschalten
# Hauptprogramm
while True:
time.sleep(2)
# ADC als Dezimalzahl lesen
value_ref = adc_ref.read_u16()
# ADC als Dezimalzahl lesen
value_rm = adc_rm.read_u16()
# ADC-Wert in Spannung umrechnen
voltage = value_rm * U_REF / value_ref
# ADC-Wert in Widerstand umrechnen
resistor = int(R_FIX * (value_rm / (value_ref - value_rm +1))) # +1 vermeidet Division durch Null
# Ausgabe in der Kommandozeile
print(f"ADC: {value_rm:5d} | ADC-REF: {value_ref:5d} | Widerstand: {resistor:6d} Ohm", end=" \r")
Einschränkungen
Begrenzte Auflösung und Genauigkeit des ADC: Der ADC (Analog-Digital-Converter) im Raspberry Pi Pico hat eine nominale Auflösung von 12 Bit (4.096 Stufen). In MicroPython wird der Wert auf 16 Bit (65.536 Stufen) interpoliert.
- Fehlende Kalibrierung: Der ADC ist nicht kalibriert, d. h. es gibt systematische Abweichungen (±10 mV oder mehr).
- Fehler durch die Referenzspannung (U_REF): Im Programmcode wird die Referenzspannung fest angenommen (3,3 V). In Wirklichkeit kann diese Spannung auch darüber oder darunter liegen. Diese Abweichung wirkt sich direkt proportional auf den berechneten Widerstand aus. Abhilfe schafft eine externe, präzise Referenzspannung oder Kalibrierung.
- Toleranz des Referenzwiderstands: Der Referenzwiderstand R_FIX hat eine Toleranz (z. B. ±1 %) wodurch ein systematischer Messfehler entsteht, besonders wenn der Referenzwiderstand und der Messwiderstand stark unterschiedlich groß sind.
- Temperaturabhängigkeit: Sowohl der Referenzwiderstand als auch der Messwiderstand und die Elektronik ändern ihren Widerstand leicht mit der Temperatur.
- Eingangsrauschen und Störungen: Der ADC ist empfindlich gegenüber elektrischen Störungen (USB-Rauschen, EMV, Kabelinduktion). Ein Tiefpassfilter (Kondensator zwischen ADC und GND) kompensiert diese Effekte etwas.
- Berechnungs- und Rundungsfehler: Die Berechnung enthält +1, um Division durch Null zu vermeiden. Das verfälscht den Wert leicht, besonders bei kleinen Spannungsunterschieden.
- Begrenzter Messbereich: Bei sehr kleinen Widerständen (< 100 Ohm) fällt fast die gesamte Spannung über den Referenzwiderstand ab, wodurch die Spannung am ADC kaum noch messbar ist. Bei sehr großen Widerständen (> 100 kOhm) fließt so wenig Strom, dass der ADC-Eingang nicht mehr zuverlässig misst.
Weitere verwandte Themen:
- ...
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.






