Ein DIY-Oszilloskop mit dem STM32 und einem TFT-Display ist ein anspruchsvolles, aber äußerst lehrreiches Projekt: Sie verbinden schnelle Analog-Digital-Wandlung, saubere Zeitbasis, effiziente Datenpufferung und eine performante Grafikdarstellung zu einem eigenständigen Messgerät. Gerade im Hobby- und Prototypenumfeld ist so ein „Scope to go“ praktisch – etwa für das Debugging von PWM-Signalen, Sensoren, I2C-/UART-Pegeln, Audio- oder einfachen Schaltreglern. Gleichzeitig ist es wichtig, realistische Erwartungen zu haben: Ein selbstgebautes STM32-Oszilloskop ersetzt kein professionelles Laborgerät mit hoher Bandbreite, extrem schnellen Abtastraten und präziser Triggerlogik. Dafür bekommen Sie maximale Kontrolle über die Funktionen, lernen die Grenzen von ADC, Frontend und Displaypipeline kennen und können das Gerät genau auf Ihre Bedürfnisse zuschneiden. Entscheidend sind dabei drei Kernbereiche: ein gutes analoges Frontend (Schutz, Skalierung, Bandbreite), eine deterministische Datenerfassung (ADC + Timer + DMA) und eine schnelle, flimmerfreie Visualisierung auf dem TFT. In diesem Artikel erfahren Sie, wie Sie eine robuste Architektur aufbauen, welche STM32-Features wirklich zählen, wie Trigger und Messfunktionen sinnvoll umgesetzt werden und wie Sie typische Fehler (Aliasing, Jitter, Artefakte, falsche Pegel) von Beginn an vermeiden.
Was ein STM32-DIY-Oszilloskop leisten kann – und was nicht
Ein Mikrocontroller-Oszilloskop ist in erster Linie ein „Sampler mit Anzeige“. Ihre Messqualität wird durch Abtastrate, ADC-Auflösung/ENOB, analoges Frontend und Triggerstabilität bestimmt. Typische Einsatzfelder eines DIY-Geräts:
- Digitale Signale prüfen: PWM, Takt, UART/I2C (Pegel, Timing, Glitches).
- Sensoren debuggen: analoge Sensoren, Potis, einfache Messketten.
- Audio-/NF-Signale: im kHz-Bereich sehr gut darstellbar.
- Schaltregler-Basics: Ripple und Schaltfrequenzen im niedrigen Bereich – mit Vorsicht und gutem Frontend.
Grenzen entstehen meist durch:
- ADC-Bandbreite und Sample-Hold: je nach STM32-Serie und Konfiguration.
- Analoge Eingangsstufe: Schutz und Bandbreite sind schwer zu „improvisieren“.
- Display-Refresh: zu langsame Darstellung führt zu Ruckeln oder verpassten Ereignissen.
- Trigger-Genauigkeit: Software-Trigger ist oft zu langsam; Hardwarepfade sind stabiler.
Hardwareauswahl: Welcher STM32 passt für ein DIY-Oszilloskop?
Viele STM32 eignen sich grundsätzlich, aber einige Merkmale sind für ein Oszilloskopprojekt besonders wichtig:
- Schneller ADC mit DMA-Unterstützung: damit Samples ohne CPU-Overhead in einen Buffer laufen.
- Timer als präziser Sampling-Trigger: konstante Abtastintervalle, weniger Jitter.
- Genug RAM: für Sample-Buffer (Pretrigger/Posttrigger) und ggf. Double Buffering.
- Schnelle Display-Anbindung: SPI ist möglich, aber bei hoher Auflösung/Framerate limitiert; parallele RGB/LTDC ist leistungsfähiger.
- Optional FPU/DSP: für Messfunktionen, Filter und ggf. FFT.
Für Entwicklungsworkflow und Pin-/Clock-Setup sind STM32CubeMX und STM32CubeIDE gängige Werkzeuge, um ADC, Timer, DMA und Display-Schnittstellen reproduzierbar zu konfigurieren.
Analoges Frontend: Schutz, Skalierung und Bandbreite im Griff haben
Das Frontend ist der wichtigste Teil, wenn Sie Ihr STM32-DIY-Oszilloskop ernsthaft nutzen wollen. Der STM32-ADC verträgt nur Spannungen innerhalb der Versorgungsschienen (typisch 0…Vref bzw. 0…3,3 V). Messleitungen und reale Schaltungen liefern aber schnell Überspannungen, negative Anteile oder Transienten. Mindestens erforderlich sind:
- Eingangsschutz: Serienwiderstand, Schottky-Clamps zu 0 V/3,3 V oder geeignete Schutzdioden, optional TVS.
- Spannungsteiler/Attenuator: z. B. 1:1, 1:10, 1:100 Bereiche (umschaltbar per Relais/Analogschalter).
- AC/DC-Kopplung: Kondensator + Bias-Netzwerk für AC-Messung.
- Buffer/Op-Amp: zur Entkopplung und definierten Eingangsimpedanz, besonders für höhere Frequenzen.
- Anti-Aliasing-Filter: einfaches RC-Tiefpass, passend zur Abtastrate.
Bandbreite und Aliasing: Die wichtigste Regel im DIY-Oszilloskop
Wenn Sie mit Abtastrate
Praktisch bedeutet das: Entweder Sie erhöhen
Sampling-Engine: ADC + Timer + DMA als robustes Fundament
Damit Ihr DIY-Oszilloskop reproduzierbar misst, muss die Abtastung deterministisch sein. Die bewährte Architektur auf STM32 ist:
- Timer erzeugt Trigger: ein Hardware-Timer löst den ADC in konstantem Raster aus.
- ADC im Trigger-Mode: ADC konvertiert auf Timer-Event, nicht „im Loop“.
- DMA schreibt in Ring-/Pingpong-Buffer: Samples fließen in RAM, CPU verarbeitet Blöcke.
- Interrupt nur pro Block: statt pro Sample, um CPU-Last zu senken.
So reduzieren Sie Jitter, vermeiden Sampleverluste und können gleichzeitig Display und Bedienlogik laufen lassen. Besonders nützlich ist ein Ringbuffer, der kontinuierlich füllt und bei Trigger-Ereignis einen Pretrigger-Anteil (Vergangenheit) sowie Posttrigger-Anteil (Zukunft) bereitstellt.
Buffergröße und Zeitfenster: So planen Sie Ihre Anzeige
Ein Oszilloskop stellt immer ein Zeitfenster dar. Mit
Wenn Ihr TFT beispielsweise 320 Pixel breit ist, können Sie 320 Samples direkt als 1:1-Punkte nutzen oder mehr Samples per Downsampling/Min-Max-Binning auf die Pixelbreite reduzieren. Letzteres ist oft besser, weil es Peaks sichtbar hält.
Triggerlogik: Vom einfachen Flankentrigger zur stabilen Darstellung
Ohne Trigger ist ein Oszilloskop nur ein „laufender Plot“. Ein solider Trigger macht das Signal stabil sichtbar. In einem DIY-STM32-Projekt sind Triggerstufen sinnvoll abgestuft:
- Auto/Free-Run: Anzeige läuft auch ohne Triggerereignis, nützlich für erste Tests.
- Normal Trigger: Bild wird nur aktualisiert, wenn Triggerbedingung erfüllt ist.
- Single Shot: einmaliges Triggern, dann Freeze – ideal für sporadische Ereignisse.
- Flanke steigend/fallend: Basis für digitale Signale und viele analoge Messungen.
- Triggerlevel + Hysterese: verhindert Flattern bei verrauschten Signalen.
Software-Trigger kann funktionieren, wenn Abtastrate moderat ist und Sie blockweise arbeiten. Für höhere Anforderungen sind Hardwaretrigger (z. B. Analogkomparator oder externe Triggerleitung) überlegen, weil sie zeitlich präziser und weniger CPU-abhängig sind.
Hysterese als Stabilitätsfaktor
Ein Triggerlevel ohne Hysterese reagiert bei Rauschen oft mehrfach. Mit zwei Schwellen (oben/unten) stabilisieren Sie die Erkennung: Erst wenn das Signal die obere Schwelle überschreitet, gilt es als „High“, und erst unterhalb der unteren Schwelle wieder als „Low“. Das reduziert falsche Triggerungen deutlich.
Messfunktionen: Vpp, RMS, Frequenz und Duty Cycle sinnvoll berechnen
Ein DIY-Oszilloskop wirkt „fertig“, wenn es neben der Kurve Messwerte anzeigt. Typische Messfunktionen sind:
- Vmax, Vmin, Vpp: Peak-to-Peak-Spannung aus Buffer-Min/Max.
- Mittelwert (DC): arithmetischer Mittelwert über das Fenster.
- RMS: nützlich für Audio und Leistungsbetrachtungen.
- Frequenz: über Zero-Crossings oder Flankenabstände.
- Duty Cycle: bei PWM-Signalen wichtig.
RMS über diskrete Samples
Für schnelle Filter und Frequenzanalysen kann CMSIS-DSP hilfreich sein, insbesondere wenn Sie FFT-Auswertungen oder optimierte Vektoroperationen integrieren möchten.
Anzeige auf dem TFT: Flimmerfreie Darstellung und performantes Rendering
Die zweite große Baustelle ist die Grafik. Ein TFT über SPI ist einfach anzubinden, aber schnell am Limit, wenn Sie große Flächen oft neu zeichnen. Für ein angenehmes Oszilloskopgefühl sind diese Prinzipien bewährt:
- Nur ändern, was sich ändert: Kurvenbereich neu zeichnen, UI-Elemente seltener aktualisieren.
- Linien effizient zeichnen: statt Pixel für Pixel; ggf. vorberechnete Lookup-Tabellen.
- Double Buffering (wenn möglich): erst im RAM zeichnen, dann als Block ans Display senden.
- Min-Max-Binning: pro X-Pixel die Min/Max-Samples zeichnen, damit Peaks sichtbar bleiben.
Wenn Sie ein leistungsfähigeres Setup mit LTDC und ggf. DMA2D (Chrom-ART) nutzen, können Sie deutlich flüssiger rendern. Für grafische Projekte auf STM32 ist TouchGFX Designer eine Option, wenn Sie eine umfangreichere UI möchten. Für ein Oszilloskop ist jedoch häufig eine schlanke, eigene Zeichenroutine schneller und ressourcenschonender als ein vollständiges GUI-Framework.
Bedienkonzept: Timebase, Volts/Div und Trigger ohne Frust
Ein DIY-Oszilloskop steht und fällt mit der Bedienbarkeit. Die wichtigsten Stellgrößen sollten schnell erreichbar sein:
- Timebase (s/div): Abtastrate und/oder Downsampling so anpassen, dass das Zeitfenster passt.
- Volts/Div: über Frontend-Bereiche (Attenuator) und digitale Skalierung.
- Triggerlevel: idealerweise als Marker im Display, mit direkter Verstellmöglichkeit.
- Run/Stop und Single: für Debugging unverzichtbar.
Für Einsteiger sind ein Drehencoder plus Taster oder zwei Tasterreihen oft intuitiver als reine Touchbedienung. Bei Touch sollten große Bedienelemente und klare Rückmeldungen vorgesehen werden.
Kalibrierung und Genauigkeit: ADC-Referenz, Offset und Skalierung
Wenn Sie nicht nur „ungefähr“ messen wollen, brauchen Sie Kalibrierung. Typische Schritte:
- ADC-Offset bestimmen: Eingang kurzschließen oder definierte Referenz anlegen, Offset im Code korrigieren.
- Gain/Skalierung: mit bekannter Referenzspannung (z. B. präzise Quelle) den Skalierungsfaktor je Messbereich ermitteln.
- Frontend-Fehler berücksichtigen: Widerstandstoleranzen, Op-Amp-Offset, Temperaturdrift.
- Quantisierung: Auflösung und effektive Bits (ENOB) realistisch einordnen.
Gerade bei preiswerten Frontends ist es sinnvoll, Kalibrierwerte im Flash/EEPROM zu speichern und pro Messbereich getrennt zu führen.
Sicherheit und Schutz: Was Sie niemals direkt messen sollten
Ein DIY-Oszilloskop am Mikrocontroller ist für Kleinspannungssignale gedacht. Netzspannung und energiereiche Schaltungen sind ohne geeignete, geprüfte Isolation und Tastköpfe gefährlich. Setzen Sie klare Grenzen:
- Keine direkte Netzspannungsmessung: ohne Trenntrafo, geeignete HV-Tastköpfe und Sicherheitskonzept.
- Schaltregler nur mit Verständnis: hohe dV/dt, Störungen und Masseführung können Messungen verfälschen und Hardware zerstören.
- Schutzbeschaltung dimensionieren: Eingangsserienwiderstände, Clamps und Sicherungen so wählen, dass Fehlbedienung nicht sofort zum Totalschaden führt.
Wenn Sie Grundlagen zu Tastkopf- und Masseeffekten vertiefen möchten, bietet Oscilloscope Probing Basics (Tektronix) eine gut verständliche Einführung.
Erweiterungen: Zweikanal, Logikanalyse, FFT und Datenspeicherung
Wenn die Grundversion stabil läuft, können Sie Ihr STM32-Oszilloskop funktional ausbauen:
- Zweikanalbetrieb: zwei ADC-Kanäle synchron erfassen, getrennte Skalierung und Triggerquellen.
- Logikmodus: digitale Eingänge abtasten (mit Timer/DMA), einfache Protokolldekodierung (UART/I2C) als Zusatz.
- FFT-Spektrum: für Audio und Schwingungen, mit CMSIS-DSP und geeigneter Fensterfunktion.
- Screenshot/Logging: Messdaten speichern (z. B. auf SD oder per USB/Serial an PC), spätere Analyse.
Praxis-Checkliste: DIY-Oszilloskop mit STM32 und TFT sauber umsetzen
- Frontend planen: Schutz, Attenuator, AC/DC-Kopplung, Anti-Aliasing von Anfang an.
- Deterministisches Sampling: ADC per Timer triggern, DMA-Buffer (Ring/Pingpong), Block-Interrupts.
- Zeitfenster berechnen: Buffergröße und Abtastrate so wählen, dass Ihr TFT sinnvoll skaliert.
- Trigger zuerst stabil machen: Flankentrigger mit Hysterese, Normal/Single, Pretrigger-Buffer.
- Rendering optimieren: Min-Max-Binning, nur Teilbereiche neu zeichnen, optional Double Buffering.
- Kalibrieren: Offset/Gain je Messbereich, Referenzspannung und Toleranzen berücksichtigen.
- Sicherheit definieren: klare Spannungsgrenzen, keine netzspannungsnahen Experimente ohne geeignetes Equipment.
- Tools nutzen: Setup und Debugging mit STM32CubeMX und STM32CubeIDE reproduzierbar halten.
IoT-PCB-Design, Mikrocontroller-Programmierung & Firmware-Entwicklung
PCB Design • Arduino • Embedded Systems • Firmware
Ich biete professionelle Entwicklung von IoT-Hardware, einschließlich PCB-Design, Arduino- und Mikrocontroller-Programmierung sowie Firmware-Entwicklung. Die Lösungen werden zuverlässig, effizient und anwendungsorientiert umgesetzt – von der Konzeptphase bis zum funktionsfähigen Prototyp.
Diese Dienstleistung richtet sich an Unternehmen, Start-ups, Entwickler und Produktteams, die maßgeschneiderte Embedded- und IoT-Lösungen benötigen. Finden Sie mich auf Fiverr.
Leistungsumfang:
-
IoT-PCB-Design & Schaltplanerstellung
-
Leiterplattenlayout (mehrlagig, produktionstauglich)
-
Arduino- & Mikrocontroller-Programmierung (z. B. ESP32, STM32, ATmega)
-
Firmware-Entwicklung für Embedded Systems
-
Sensor- & Aktor-Integration
-
Kommunikation: Wi-Fi, Bluetooth, MQTT, I²C, SPI, UART
-
Optimierung für Leistung, Stabilität & Energieeffizienz
Lieferumfang:
-
Schaltpläne & PCB-Layouts
-
Gerber- & Produktionsdaten
-
Quellcode & Firmware
-
Dokumentation & Support zur Integration
Arbeitsweise:Strukturiert • Zuverlässig • Hardware-nah • Produktorientiert
CTA:
Planen Sie ein IoT- oder Embedded-System-Projekt?
Kontaktieren Sie mich gerne für eine technische Abstimmung oder ein unverbindliches Angebot. Finden Sie mich auf Fiverr.

