Skip to content

Latest commit

 

History

History
129 lines (107 loc) · 5.03 KB

README.md

File metadata and controls

129 lines (107 loc) · 5.03 KB

Digitaler Funktionsgenerator

Beschreibung

Wieder einmal ein, abgesehen vom Lerneffekt, völlig nutzloses Projekt. Da ich durch glückliche Umstände (Danke Alex!) kürzlich an ein altes Oszilloskop gekommen bin, brauchte ich natürlich eine Möglichkeit, dieses auch etwas besser kennen zu lernen. Konstante 5V Gleichspannungen angucken ist auf Dauer recht langweilig, also habe ich mir einen kleinen digitalen Funktionsgenerator gebaut. War ein interessantes Projekt. Auch wenn ich bezweifle, dass irgendjemand jemals diese Schaltung nachbauen und meine Software benutzen wird, möchte ich sie trotzdem zur Verfügung stellen.

Features

  • zwei Digital/Analog Wandler und ein PWM Kanal als Ausgänge
  • einstellbare Frequenz, Auflösung (bzw. Pulsweite) und Amplitude
  • Tiefpassfilter mit einstellbaren Grenzfrequenzen und nicht-invertierende Verstärker (OpAmps) für jeden Ausgang
  • ein "externer Kanal" auf einen vierten Tiefpass+OpAmp geführt
  • Verstärkung bis auf Netzteilspannung (nicht nur auf Logik-Level!) möglich
  • Sinus, Rechteck, Dreieck und Sägezahn in Software implementiert

TODO:

  • Software: Irgendwas schönes (sowas z.B.) mit dem X/Y Mode vom Oszi basteln
  • Hardware: Offset Korrektur für OpAmp und auch negative Spannungen möglich machen

Fotos

Platine:

Rechteck (ungefiltert und gefiltert):

Dreieck (mit verschiedenen Auflösungen des Digital/Analog-Wandlers):

Sägezahn (ungefiltert und geglättet):

Sinus (verschiedene Auflösungen):

Überlagerung von Signalen:

Sinus übersteuert (d.h. die Spannung hat die Versorgungsspannung des OpAmp erreicht):

Schaltplan

Eagle files:

Mit dem Board Layout bin ich alles andere als zufrieden. Leider sind noch einige "fliegende Verbindungen" drin, hatte irgendwann keine Lust mehr neu anzufangen, als ich gemerkt habe, dass es eng wird :-)

Software

(Ich benutze in diesem Projekt "Protothreads", eine schlanke Multithreading Implementation von Adam Dunkels)