Raspberry Pi Pico als Sägezahn-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 Sägezahn-Signal zu erzeugen. Dieses Sägezahn-Signal steigt von 0 Volt bis zur DAC-Versorgungsspannung (z. B. 3,3 Volt), 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 Sägezahn-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 Sägezahn-Signal auf der Kommandozeile auszugeben, die man im Thonny-Plotter (Drucker-Ansicht in der Kommandozeile) grafisch darstellen kann.
Aufbau und Bauteile

| 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 über den Digital-Analog-Wandler (DAC) ein Sägezahn-Signal.
Dieses Signal steigt periodisch linear an und springt dann wieder auf Null zurück.
Im Programmcode sind folgende Parameter einstellbar:
- FREQUENCY: Das Sägezahnsignal wiederholt sich. Die Zeit (Periode) ist der Kehrwert der Frequenz.
- RESOLUTION: Anzahl der Schritte/Stufen pro Periode.
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: Sägezahn-Signal
FREQUENCY = 0.5 # Frequenz in Hz
RESOLUTION = 256 # Anzahl Schritte pro Periode (Auflösung)
VALUE_MAX = 4095 # 0 bis 4095
# 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: Sägezahn-Signal erzeugen
def sawtooth_wave(frequency):
# Zeit pro Schritt berechnen
period = 1 / frequency
# Verzögerung berechnen
delay = period / RESOLUTION
try:
while True:
for step in range(RESOLUTION):
value = int((step / (RESOLUTION - 1)) * VALUE_MAX)
write_dac(value)
print(value)
time.sleep(delay)
except KeyboardInterrupt:
pass
finally:
write_dac(0)
print('Beendet')
# Hauptprogramm
print(f"Starte Sägezahn-Signal mit {FREQUENCY} Hz")
print('Signal im Thonny-Drucker sichtbar!')
print()
print('Programm mit Strg + C beenden')
time.sleep(3)
print()
sawtooth_wave(FREQUENCY)
Experimente
Das Sägezahn-Signal hat auf eine angeschlossene LED einen An-Aus-Effekt. Allerdings blinkt die LED nicht einfach, sondern blendet langsam ein. Entsprechend dem Sägezahn-Signal. Wenn man die Frequenz verringert, zum Beispiel auf „0.1“ (Hz), dann dauert es länger, bis die LED angegangen ist. Bei einer höheren Frequenz blinkt die LED einfach nur.
Bei der Auflösung (RESOLUTION) wirkt das Einblenden bei höheren Werten feiner. Allerdings ist dem enge Grenzen gesetzt. Die Frequenz kann man nicht beliebig erhöhen.
Weitere verwandte Themen:
- Raspberry Pi Pico als Sinus-Signalgenerator mit dem MCP4725
- Raspberry Pi Pico als Rechteck-Signalgenerator mit dem MCP4725
- Raspberry Pi Pico als Stufen-Signalgenerator mit dem MCP4725
- Raspberry Pi Pico: MCP4725 programmieren
- Raspberry Pi Pico als Signalgenerator mit dem MCP4725
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.






