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 der Einheit Ohm angegeben Das Ohmmeter ermittelt und zeigt diesen Wert 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 ü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.

Formel zur Berechnung des unbekannten Widerstands

In diesem Aufbau verwenden wir den Raspberry Pi Pico mit einem ADC zur Widerstandsmessung. 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 über den unbekannten Widerstand R_M und anschließend wird dessen Wert in Ohm umgerechnet.

Aufbau und Bauteile

  • Widerstand R_REF: Zum Ermitteln des unbekannten Widerstands mit einem Dreisatz ist ein bekannter Widerstand notwendig. Wir verwenden einen Widerstand mit einer möglichst geringen Toleranz von 10 kOhm.
  • Kondensator C_REF parallel zu R_REF: Parallel zum Widerstand R_REF wird ein Kondensator empfohlen. Ein Keramik-Kondensator zwischen 10 nF und 100 nF eignen sich für stabile Gleichspannungsmessungen.

Programmcode

Das Programm misst periodisch den Spannungswert an einem analogen Eingangspin, rechnet diesen in eine Spannung und anschließend in einen Widerstand um.

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
    adc_ref = adc.read_u16()
    
    # AC-Wert in Widerstand umrechnen
    resistor = int(R_REF * (adc_ref / (ADC_MAX - adc_ref)))
    
    # Ausgabe in der Kommandozeile
    print(f"{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), weshalb der berechnete Widerstandswert nicht exakt ist.

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_REF 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.

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:

Elektronik-Sets für das Hardware-nahe Programmieren

Elektronik-Sets für das Hardware-nahe Programmieren

Programmieren mit dem Raspberry Pi Pico
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.

Termine und Newsletter-Anmeldung

Frag Elektronik-Kompendium.de