Raspberry Pi Pico als Schmitt-Trigger

Ein Schmitt-Trigger ist eine elektronische Schaltung, die zur Signalverarbeitung verwendet wird. Er wandelt ein analoges Eingangssignal in ein definiertes, digitales Ausgangssignal um. Das Besondere dabei sind die zwei Schaltschwellen. Das sind die Punkte, an denen der Ausgang in den einen oder anderen Zustand (0 und 1) umschaltet. Diese Eigenschaft hilft, unerwünschte Schaltvorgänge zu verhindern und Störsignale zu begrenzen. Ein Schmitt-Trigger kann Rauschen filtern, aus sinusförmigen Signalen saubere Rechtecksignale erzeugen und Signalpegel konvertieren.

Typischerweise wird ein Schmitt-Trigger mit Transistoren, einem Operationsverstärker oder einem speziellen IC wie dem CD4093 aufgebaut.

Es geht aber auch ohne elektronische Schaltung. Ein Schmitt-Trigger lässt sich auch mit einem Mikrocontroller realisieren. Wenn man beim Raspberry Pi Pico die GPIOs mit ADC als Eingang verwendet, kann man die Schmitt-Trigger-Funktion per Software nachbilden, die einen digitalen Ausgang schaltet. Die beiden Schaltschwellen lassen 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 Schmitt-Trigger

Um die Funktionsweise der Schmitt-Trigger-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

Bei dem folgenden Programmcode handelt es sich um einen programmierbaren Schmitt-Trigger, dessen Verhalten sich jederzeit anpassen lässt. Die obere und untere Schaltschwelle lassen sich bis maximal 3,3 Volt angeben und werden automatisch in ADC-Werte umgerechnet.

Der Programmcode liest den Analogwert über den ADC ein, wendet die obere und untere Schaltschwellen an und schaltet z. B. eine LED oder einen digitalen Ausgang entsprechend um.

Dazu hat die Schmitt-Trigger-Funktion zwei Schaltschwellen:

  • Obere Schwelle (V_HIGH): Ausgang wird HIGH, wenn die Spannung am ADC die obere Schwelle überschreitet.
  • Untere Schwelle (V_LOW): Ausgang wird LOW, wenn die Spannung am ADC die untere Schwelle unterschreitet.

Dazwischen bleibt der jeweils aktuelle Zustand erhalten (Hysterese).

# 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 Schmitt-Trigger-Funktion
V_HIGH = 2.0         # Spannung der oberen Schaltschwelle in Volt
V_LOW  = 1.0         # Spannung der unteren Schaltschwelle in Volt
V_REF = 3.3          # ADC-Referenzspannung in Volt
ADC_MAX = 65535      # ADC-Höchstwert

# Umrechnung der Schwellwerte in dezimale ADC-Werte
THR_HIGH = int((V_HIGH / V_REF) * ADC_MAX)
THR_LOW  = int((V_LOW / V_REF) * ADC_MAX)

# Hauptprogramm
print('Schmitt-Trigger')
print('Obere Schwelle:', V_HIGH, 'V', '/', 'Untere Schwelle:', V_LOW, 'V')
print()

while True:
    time.sleep(1)
    
    # ADC-Wert lesen (0 - 65535)
    adc_value = adc.read_u16()
    
    # Schmitt-Trigger-Funktion
    if adc_value > THR_HIGH: output_state = 1
    elif adc_value < THR_LOW: output_state = 0
    
    # Ausgang aktualisieren
    out.value(output_state)
    
    # Messwert zur Kontrolle ausgeben
    print(f"ADC: {adc_value:5d} | Eingang: {adc_value*V_REF/ADC_MAX:.2f} V | Ausgang: {output_state}")

Weitere verwandte Themen:

  • ...

Frag Elektronik-Kompendium.de

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

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

Elektronik-Set jetzt bestellen Online-Workshop buchen

Online-Workshop: Programmieren mit dem Raspberry Pi Pico

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.

Online-Workshop buchen

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

 

Elektronik-Sets für das Hardware-nahe Programmieren