Audio DAC

title

Ein sehr beliebtes DIY-Projekt unter den Audio-Freaks ist das Bauen eines DACs (Digital-Analog-Converter). Mit solch einem DAC wird ein digitales Audiosignal, das meistens per SPDIF empfangen wird, in ein analoges Signal gewandelt und kann dann einem Verstärker zugeführt werden. SPDIF kann man entweder optisch (Toslink) oder elektronisch (Koaxial) übertragen. Zudem gibt es USB-Sound-Chips, die ebenfalls SPDIF ausgeben. Ein solcher DAC lässt sich also ganz leicht zu einer hochqualitativen, externen Soundkarte aufbauen.

Tipp am Anfang: Man sollte bei einem solchen Projekt bereits Erfahrung im SMD-Löten haben. Die wichtigen ICs gibts nur in SMD-Bauform und meist sogar im besonders winzigen SSOP Gehäuse. Außerdem erspart man sich ne Menge Platz auf der Platine.

dac-all-01dac-all-02

Planung

Mein Ziel war es also einen DAC zu bauen, der sich hören lassen kann. Audio am PC wird meist mit einer Auflösung von 16 Bit und einer Sampling-Rate von 44,1kHz abgespielt. Digitale Aufnahmegeräte (DAT- oder Flash-Rekorder) zeichnen meist mit 48kHz bzw. 96kHz auf. Um diese Formate zu unterstützen und trotzdem eine einfache Schaltung zu haben habe ich beschlossen, nach der SPDIF-Dekodierung das Signal auf 24 Bit und 96kHz upzusamplen und anschließend dem DAC zuzuführen. Nach ein paar Nachforschungen in einschlägigen Foren waren bald die richtigen und gut verfügbaren Bauteile gefunden:

Zur Besorgung der Bauteile war eine Anfrage bei den Herstellern nach kostenlosen Samples eine gute Idee.
Der DAC hat einen differenziellen Stromausgang. Deshalb sind danach noch zwei OpAmps zur Strom-Spannungswandlung und ein OpAmp zur Filterung und Verstärkung am Ausgang notwendig. Auch dort wurde auf ordentliche Qualität geschaut und folgende OpAmps von BurrBrown verwendet:

Zur Kontrolle des SPDIF-Empfängers und zur Ansteuerung des geplanten LCDs habe ich einen AVR-Mikrocontroller von Atmel den ATmega16 im TQFP Gehäuse verwendet. Zum Schluss sollte das Projekt ungefähr folgende Struktur aufweisen:

dac-layout

Das Projekt besteht also grob aus vier Einheiten (Eingang, Digital, Analog und Versorgung) und insgesamt fünf Platinen. Es sind alles einseitige Leiterplatten und lassen sich mit guter Erfahrung leicht selber ätzen. Ich habe dabei mit einem Laserdrucker auf Folie gedruckt und nach dem Belichten mit Eisen-III-Chlorid geätzt. Lieferte beste Ergebnisse.

Update 29. Oktober 2011

Ich möchte auf ein paar Punkte aufmerksam machen, welche am AuidoDAC noch weiter verbessert werden können/sollten. Ein wichtiger Punkt dabei ist die Pinbelegung des LM317 auf der analog Platine. Wie auf den Fotos zu erkennen, musste ich die Pinbelegung nachträglich ändern. Ich habe damals die Platine dann umgezeichnet, es scheint das Footprint aber dennoch getauscht zu sein. Also am besten vor dem Bau nochmals checken.

Hier also die Liste mit Anmerkungen (Dank an Maximilian)
-) LM317: keine Rückwärtsdioden vorhanden (wenn Eingangsspanung schneller absinkt als Ausgangsspannung)
-) LM317 auf Analogplatine: LAYOUT FALSCH: die beiden Äußeren Pins sind VERTAUSCHT!!!! Lösung: SOT223 LM317 kaufen und den “geflippt” montieren. PAD mit Draht anschließen.
-) JTAGEN Fuse aus, sonstige Fuses auf 4MHz int. osc, BrownOut auf 2,7V einstellen (das ist nicht dokumentiert!)
-) nirgendwo ist eine Suppressordiode (Transil, z.B. P6SMB6V8A für die 5V-Schiene) eingeplant. Da sollte ggf. je eine für + und – Vin verbaut werden.
-) AVCC am Atmel ist nicht angeschlossen (muss angeschlossen werden, auch wenn Analog-Funktionen nicht genutzt!, da daraus manche Output-Pins versorgt werden).
-) LCD ließe sich auch im 4bit Modus ansteuern, dann hätte man noch freie Pins, z.B. zum Anschluss eines Drehgebers für die Lautstärkeregelung

Digitalteil

Schaltplan AudioDAC-digital (PDF, 126KB)

Auf der digitalen Platine waren der SPDIF-Empfänger, der Sample-Rate-Converter (SRC), die Master-Clock, der ATmega16 und die nötigen Teile für das LCD untergebracht.

Der SRC benötigt eine Master-Taktquelle, die das 256-fache der Samplingfrequenz ist. Bei den angestrebten 96kHz ergibt das eine Frequenz von genau 24,576MHz. Einen Quarz mit der richtigen Frequenz speziell für diese Anwendung habe ich bei Distrelec gefunden. Mit zwei Keramikkondensatoren gegen Masse und zwei Invertierern war die Taktquelle fertig.

Der SPDIF-Epfänger CS8416 liefert die Daten dekodiert auf dem Serial-Data-Port. Dieser besteht aus 3 Leitungen für Daten, Bit-Takt und Links-Rechts-Takt. Dieser Datenbus führt zum SRC und danach weiter zum DAC und sollte beim Layouten vorsichtig verlegt werden, weil doch recht hochfrequente Signale geführt werden. Weiters kann der CS8416 per SPI programmiert werden, welchen Eingang er verarbeiten soll und auf welchen SPDIF-Ausgang weitergeleitet wird. Damit kann man seinen AudioDAC auch mit digitalen Ausgängen ausstatten.

Der AD1896 kann man nur sehr wenig konfigurieren, deshalb wurde dieser auch fest verdrahtet anstatt ihn am µC anzuschließen. Er wurde so eingestellt, dass die einkommenden Daten left justified und der Ausgang right justified sind. Die Konvertierung wurde auf 24Bit und 96kHz eingestellt. Der PCM1796, der DAC, wird wieder per SPI vom µC aus eingestellt, weil dann auch eine Lautstärkeregelung möglich wäre. Diese Steuerungsleitungen und der Serial-Data-Bus gehen über ein 14 poliges Flachbandkabel zur Analog-Platine.

Tipp: Wenn man sich bei den Einstellungen des SRC am Anfang nicht sicher ist, sollte man die jeweiligen Pins als Jumper auf die Platine bauen. Nachträglich die Pins umlöten ist nicht sehr einfach und macht nur die Platine kaputt.

dac-digital-01dac-digital-02

Analogteil

Schaltplan AudioDAC-analog (PDF, 156KB)

Hier befindet sich der DAC-Chip PCM1796 und die nötige analoge Ausgangsschaltung. Dabei wurden OpAmps von BurrBrown mit MKP-Kondensatoren und Metall-Film-Widerstände für beste Qualität verbaut. Hier wurde auch nicht mehr in SMD sondern in normaler Durchstecktechnik gearbeitet. Ganz am Ende befinden sich die Ausgangskondensatoren (MKP 10µF) und das Relais.

Nach versehentlichem Grillen des PCM1796 musste dieser ersetzt werden und siehe da, dieser Typ ist kaum noch erhältlich. Doch es gibt noch den PCM1794 mit exakt gleichen Daten nur mit I2C ohne SPI-Schnittstelle.

Die notwendige Filterschaltung nach dem DAC wurde aus dem Datenblatt des DAC kopiert, nur die OpAmps wurden durch bessere ersetzt. Um die Störungen und das Rauschen zu minimieren wurde speziell dort auf eine saubere und möglichst kurze Leitungsführung geachtet.

Da der DAC zusätzlich zu den digitalen 3,3V eine analoge 5V Spannungsversorgung benötigt wurde diese aus den analogen +14V mit einem Spannungsregler LM317 erzeugt. Die OpAmps werden mit +/-14V versorgt.

Tipp: Aufgrund der verwirrenden Bezeichnung der unterschiedlichen Takte am DAC habe ich am Anfang die Master-Clock (24,576MHz) mit der Bit-Clock (2,304MHz) verwechselt und der Sound hat sehr deformiert und abgehackt geklungen. Nach langem Herumprobieren und verzweifeltem Suchen bin ich nach Monaten durch zufall auf den Fehler draufgekommen.

dac-analog-01dac-analog-02

Eingang mit USB-Sound

Schaltplan AudioDAC-input (PDF, 88KB)

Die Eingangsplatine wurde zuerst nur mit digitalen Ein- und Ausgängen (jeweils optisch und koaxial) entworfen. Nachdem der USB-Sound-Chip PCM2704 mit SPDIF-Ausgang aber nur läppische 11€ kostete und nur wenig extra Beschaltung braucht, musste die Platine überarbeitet werden.

Ein wichtiger Aspekt war die elektrische Entkopplung vom PC bzw. Laptop. Trotz externer Soundkarte von Terratec waren am Laptop immer störende Geräusche wie die Festplatte, Maus und andere ecklige Sachen zu hören (von der internen Soundkarte will ich gar nicht reden). Deshalb musste das richtig gut getrennt sein und dazu gibt es die Möglichkeit den SPDIF-Ausgang des USB-Chips mit einem Übertrager von der restlichen Schaltung zu entkoppeln, es gibt also keine gemeinsame Masse. Natürlich muss auch mit den SPDIF-Koaxial-Ein-Ausgängen das gleiche gemacht werden.

Die Übertrager waren spezielle Typen für Digital-Audio-Anwendungen. Es ist aber auch möglich, den Übertrager von Ethernet-Netzwerkkarten zu verwenden. Da sind auch gleich zwei Stück pro Karte in einem einzigen Gehäuse untergebracht. Auf jeden Fall ist nach dem übertrager eine kleine Verstärkerschaltung notwendig, um wieder TTL-Level zu erzeugen. Dies geschieh am besten mit einfachen Invertierern. Für den Koaxial-Ausgang muss das TTL-Signal noch auf ein symmetrisches Ausgangssignal gewandelt werden. Dies geschieht kostengünstig mit UND-Gattern. Der optische Ein- und Ausgang ist dabei kein Problem. Die Toslink Empfänger und Sender liefern bzw. benötigen TTL-Level.
Die Schaltung des USB-Sound-Chips ist auch aus dem Datenblatt kopiert worden und funktionierte schon beim ersten Mal perfekt. Mit lsusb oder cat /proc/input/devices sieht man die selbst gebaute Soundkarte schon gelistet:

Bus 001 Device 003: ID 08bb:2704 Texas Instruments Japan
I: Bus=0003 Vendor=08bb Product=2704 Version=0100
N: Name=”Burr-Brown from TI USB Audio DAC “

In Linux sowie in Windows wurde der Audio-DAC getestet und hat ohne zusätzlichen Treiber sofort funktioniert. Im Linux ist nur die Einstellung für das alsa-Soundsystem, wie bei jeder anderen USB-Soundkarte, etwas schwierig.

dac-input-01dac-input-02

Stromversorgung

Schaltplan AudioDAC-power (PDF, 110KB)

Die Spannungsversorgung ist auf zwei Platinen verteilt. Auf der ersten der “primären” ist der 230V-Teil, Transformatoren, Gleichrichtung und Siebung untergebracht. Die zweite Platine ist zur Stabilisierung zuständig. Für die Spannungen des digitalen Teils 3,3V und 5V wurden zwei Schaltregler mit den LM2576 aufgebaut. Der analoge Teil mit +/-14V wurde hingegen mit den LM317 Linearreglern realisiert. Alle Regler wurden mit Potis aufgebaut, damit später die Ausgangsspannung richtig kalibriert werden kann. Auch genügend Glättkondensatoren wurden eingebaut, um das Rauschen zu minimieren.

dac-pri-01dac-pri-02
dac-sek-01dac-sek-02

Firmware für den ATmega16

Die Firmware ist nicht sehr aufwändig und wurde deshalb in Assembler geschrieben. Im Prinzip geht es um die Ansteuerung des LCD und die Verarbeitung er beiden Tasten für Mute und Input-Wechsel. Der Mikrocontroller muss auch den SPDIF-Empfänger und den DAC richtig initialisieren und nach einer kurzen Zeitverzögerung nach dem Einschalten das Relais durchschalten. Eine Lautstärekeregelung wäre mit der Ansteuerung des PCM1796 auch möglich, ist aber überflüßig, weil meist an einem Vorverstärker oder dem Verstärker selbst schon die Lautstärke einstellbar ist. Zusätzlich speichert sich der µC den gewählten Eingang und Mute-Zustand im EEPROM ab, um beim nächsten Einschalten die alten Einstellungen wiederherstellen zu können.

Der Assembler-Code wurde unter Linux mit avra assembliert. Die mitgelieferte HEX-Datei lässt sich direkt auf den ATmega16 raufspielen. Ich habe dazu PonyProg mit selbstgebauter ISP-Hardware für die parallele Schnittstelle verwendet.

tarFirmware v1.0 (ZIP, 10KB)

tarAudio-DAC-Projekt, alle Schaltpläne und Firmware (ZIP, 470KB)

tarAudio-DAC-Projekt, Stücklisten (ZIP, 6,1KB)

dac-disp-01dac-disp-02dac-disp-03dac-disp-04

Fazit

Somit ist innerhalb von guten 1,5 Jahren ein Audio-DAC entstanden, der von seiner Ausstattung und Qualität unvergleichbar ist. Die Kosten von etwa 480€ haben sich mehr als gelohnt. Zudem hat das Bauen Spaß gemacht und viele Erfahrungen beim Erstellen des PCB-Layouts geliefert.

Fragen und Anregungen bitte gerne an albert.frisch AT gmail.com
Viel Spaß beim Basteln!

THD Messung

Fotos

Auf der Suche nach den Verwechslungsfehler von Master- und Bit-Clock
dsc03235

Das leere Wavetronic Gehäuse
dsc03238

Die digitale Platine mit CS8416 im Vordergrund
dsc03249

Schaltregler LM2576 für 3,3V und 5V
dsc03252

Linearregler LM317 für +/-14V
dsc03253

LCD mit angelötetem Flachbandkabel
dsc03257

Gehäuse mit Spannungsversorgung aufgebaut
dsc03259

Schaltregler fertig eingebaut
dsc03260

Digitale und analoge Platine dazu
dsc03262

Analoge Platine mit den Ausgangskondensatoren im Vordergrund
dsc03263

Digitale Platine fertig angeschlossen
dsc03264

Analoge Platine
dsc03265

Rückwand schwarz lackiert und 230V Stecker eingebaut
dsc03326

Ein- und Ausgangsplatine mit den drei Übertragern
dsc03333

Rückwand fertig aufgebaut
dsc03335

Befestigung der Eingangsplatine an der Rückwand
dsc03337

230V Anschluss und Filterung
dsc03340

Fertig aufgebauter Audio-DAC
dsc03342

Cinch-, USB-, Toslink- und Koax-Anschlüsse
dsc03346

Erster Hörtest mit DVD-Player und Laptop
dsc03360

Fertiger DAC
dsc03371