Raspberry Pi Pico als Komparator

Ein Komparator ist eine elektronische Schaltung, die zwei Spannungen vergleicht und einen Ausgang schaltet, wenn die Eingangsspannung eine bestimmte Referenzspannung über- oder unterschreitet. Ein Komparator hat die Eigenschaft von Kippschaltungen und nimmt beim Über- oder Unterschreiten der Referenzspannung definierte Spannungswerte (z. B. +VCC und 0 Volt) am Ausgang an.
Ein Komparator wird typischerweise als Schwellwertschalter, in der Signalverarbeitung, um analoge Signale in digitale Signale umzuwandeln, und als Taktgeber und Oszillatoren eingesetzt.

Ein Komparator kann mit Transistoren, einem Operationsverstärker oder einem speziellen IC aufgebaut werden.

Wenn man eine Komparator-Funktion braucht, dann muss man dafür keine elektronische Schaltung bauen. Ein Komparator lässt sich auch mit einem Mikrocontroller realisieren. Wenn man beim Raspberry Pi Pico die GPIOs mit ADC als Eingang verwendet, kann man die Komparator-Funktion per Software nachbilden, die einen digitalen Ausgang schaltet. Die Schaltschwelle lässt sich einfach im Programmcode als Parameter festgelegt.
Auf diese Weise spart man sich das Herleiten von Formeln, Berechnen von Widerständen oder das Einstellen der Schaltschwellen mit Hilfe eines Potentiometers.

Aufbau und Bauteile

Raspberry Pi Pico als Komparator

Um die Funktionsweise der Komparator-Funktion nachvollziehen und ein Eingangssignal gezielt einstellen zu können, empfiehlt sich ein Potentiometer zu verwenden. Alternativ eignet sich auch ein Verbindungskabel, das mit dem ADC-Pin auf dem Steckbrett verbunden ist und auf der anderen Seite in der Luft hängt. Durch Berühren und Loslassen kann man das Umschalten provozieren.

Programmcode

Der Programmcode simuliert per Software eine Komparator-Funktion. Es misst eine analoge Spannung über den ADC-Eingang, vergleicht sie mit einem festgelegten Schwellwert und schaltet einen Ausgang entsprechend ein oder aus – ähnlich wie ein elektronischer Komparator. Eine LED zeigt den Zustand des Ausgangs an.

# Biblitheken laden
import machine
import time

# Konfiguration: Pins und GPIOs
PIN_IN  = 26         # GPIO mit ADC
PIN_OUT = 'LED'      # Onboard-LED
output_state = 0     # Grundzustand

# Eingang (ADC) initialisieren 
adc = machine.ADC(PIN_IN)

# Ausgang initialisieren
out = machine.Pin(PIN_OUT, machine.Pin.OUT, value=output_state)

# Schwellwerte für die Komparator-Funktion
V_THR = 1.65       # Spannung der Schaltschwelle in Volt
V_REF = 3.3        # ADC-Referenzspannung in Volt
ADC_MAX = 65535    # ADC-Höchstwert

# Umrechnung der Schaltschwelle in den dezimalen ADC-Wert
THR_ADC = int(ADC_MAX * (V_THR / V_REF))

# Hauptprogramm
print('Komparator')
print('Schaltschwelle:', V_THR, 'V')
print()

while True:
    time.sleep(1)
    
    # ADC-Wert lesen (0 - 65535)
    adc_value = adc.read_u16()
    
    # Komparator-Funktion
    if adc_value > THR_ADC: output_state = 1   # LED EIN, Spannung über Schwellwert
    else: output_state = 0                     # LED AUS, Spannung unter Schwellwert
    
    # Ausgang aktualisieren
    out.value(output_state)
    
    # Messwert zur Kontrolle ausgeben
    print(f"ADC: {adc_value:5d} | Eingang: {(adc_value/ADC_MAX)*V_REF:.2f} V | Ausgang: {output_state}")

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