Raspberry Pi Pico als Stufen-Signalgenerator mit MCP4725

Der Raspberry Pi Pico ist ein Mikrocontroller mit vielen digitalen Ein- und Ausgängen. Allerdings besitzt er keinen analogen Ausgang. Er kann also keine echten analogen Signale erzeugen, sondern nur digitale Signale (z. B. PWM). Für die Ausgabe analoger Signale wird ein Digital-Analog-Wandler (DAC) benötigt. Ein solcher DAC kann im einfachsten Fall ein MCP4725-Modul sein, der vom Raspberry Pi Pico gesteuert wird.

Ein MCP4725-Modul kann dazu verwendet werden, um ein Stufen-Signal zu erzeugen. Dieses Stufen-Signal steigt von 0 Volt bis zur DAC-Versorgungsspannung (z. B. 3,3 Volt) schrittweise an, um dann wieder bei 0 Volt zu beginnen. Damit lässt sich der Raspberry Pi Pico beispielsweise als einstellbarer Signalgenerator nutzen.

Hinweis: Der Aufbau ist eigentlich nur dann sinnvoll, wenn man in der Lage ist, mit einem Oszilloskop das Stufen-Signal darzustellen. Wenn man das nicht hat, dann kann man auch eine LED am Ausgang des MCP4725 anschließen.
Außerdem sieht der Programmcode vor, die Daten vom Stufen-Signal auf der Kommandozeile auszugeben, die man im Thonny-Plotter (Drucker-Ansicht in der Kommandozeile) sehen kann.

Aufbau und Bauteile

Raspberry Pi Pico als Sinus-Signalgenerator mit MCP4725

Raspberry Pi Pico MCP4725-Modul
3V3 Pin 36 3V3
GND Pin 33 GND
GPIO0 I2C SDA Pin 1 I2C SDA
GPIO1 I2C SCL Pin 2 I2C SCL

Programmcode

Der Programmcode erzeugt mit einem Raspberry Pi Pico und einem MCP4725-DAC ein stufenförmiges analoges Ausgangssignal (eine sogenannte Treppen- oder Stufenwelle).

Im Programmcode sind folgende Parameter einstellbar:

  • FREQUENCY: Frequenz des Signals in Hz
  • STEPS: Anzahl der Stufen pro Signalperiode
  • AMPLITUDE: Maximaler DAC-Wert (0 - 4095 für 12 Bit)

Hinweis: Die Drucker-Ansicht (grafische Darstellungen der Werte) erhältst du, wenn du in der Kommandozeile per Rechtsklick das Optionsmenü aufrufst und dort „Drucker“ auswählst. Dann werden die Werte von „print(value)“ als Wellenform dargestellt.

# Bibliotheken laden
import machine
import time

# Konfiguration: Stufen-Signal
FREQUENCY = 0.1     # Frequenz in Hz
STEPS     = 8       # Anzahl der Stufen im Signal
AMPLITUDE = 4095    # 0 bis 4095 / 0 Volt bis VCC

# I2C-Initialisierung
DAC = machine.I2C(0, scl=machine.Pin(1), sda=machine.Pin(0), freq=400000)

# Funktion: Daten an den DAC senden
def write_dac(value):
    # Wert zwischen 0 und 4095
    value = max(0, min(4095, value))
    # Daten an den DAC senden (Fast Mode)
    DAC.writeto(0x60, bytes([(value >> 8) & 0x0F, value & 0xFF]))

# Funktion: Stufen-Signal erzeugen
def step_wave(frequency):
    # Zeit pro Stufe
    period = 1 / frequency
    # Verzögerung berechnen
    delay = period / STEPS   
    
    try:
        while True:
            for step in range(STEPS):
                value = int((step / (STEPS - 1)) * AMPLITUDE)
                write_dac(value)
                for _ in range(10):
                    print(value)
                    time.sleep(delay / 10)
    except KeyboardInterrupt:
        pass
    finally:
        write_dac(0)
        print('Beendet')

# Hauptprogramm
print(f"Starte Stufen-Signal mit {FREQUENCY} Hz")
print('Signal im Thonny-Drucker sichtbar!')
print()
print('Programm mit Strg + C beenden')
time.sleep(3)
print()
step_wave(FREQUENCY)

Experimente

Das stufige Signal wirkt auf die LED in besonderem Maße. Nicht bei jeder Stufe leuchtet die LED. Das liegt daran, dass eine LED erst bei einer bestimmten Spannung leuchtet. Bevor die nicht erreicht ist, leuchtet die LED gar nicht.
Versuche herauszufinden, ab welcher Stufe die LED leuchtet und welche Spannung bei dieser Stufe erreicht wurde. Eventuell musst du dazu im Programmcode eine Zeile ergänzen und die Geschwindigkeit verringern.

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