Audio DAC

2. Digitalteil
3. Analogteil
4. Ein-/Ausgang mit USB-Sound
5. Stromversorgung
6. Firmware und Download
7. Fotos
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.
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:
- SPDIF-Empfänger: CS8416 Datenblatt
- Sample-Rate-Converter: AD1896 Datenblatt
- 24bit DAC: PCM1796 Datenblatt bzw. PCM1794 Datenblatt
- USB-Sound: PCM2704 Datenblatt (kam später noch dazu)
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:
- I-U-Wandlung: OPA2134 Datenblatt
- Filterung: OPA604 Datenblatt
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:
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.
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.
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.
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.
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.
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.
Audio-DAC-Projekt, alle Schaltpläne und Firmware (ZIP, 470KB)
Audio-DAC-Projekt, Stücklisten (ZIP, 6,1KB)




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!
Auf der Suche nach den Verwechslungsfehler von Master- und Bit-Clock

Die digitale Platine mit CS8416 im Vordergrund

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

LCD mit angelötetem Flachbandkabel

Gehäuse mit Spannungsversorgung aufgebaut

Digitale und analoge Platine dazu

Analoge Platine mit den Ausgangskondensatoren im Vordergrund

Digitale Platine fertig angeschlossen

Rückwand schwarz lackiert und 230V Stecker eingebaut

Ein- und Ausgangsplatine mit den drei Übertragern

Befestigung der Eingangsplatine an der Rückwand

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























