Forum: Mikrocontroller und Digitale Elektronik Digital Analog Wandler per µC steuern


von Klaus F. (rose123)


Lesenswert?

Hallo liebe Mikrokontroller Freunde,
Durch einen dummen Fehler, muss/darf ich mich nun mit dem Thema
Mikrokontroller auseinandersetzen.
Ich habe mir etliche Digital Analog Wandler Platinen anfertigen
lassen um ein aktives HiFi-System aufzubauen. 3 Wege a 4 parallele Dacs.
Dabei habe ich mich im Datenblatt des AK4396 Dac um ein Schaltplanbild 
vertan und muss die Dacs nun per µC ansteuern, anstatt lediglich ein 
paar Pins auf Logik 1 oder 0 zu legen.
Leider habe ich von der µc Materie keinen Blassen und bin auf 
Unterstützung angewiesen.
Ich habe versucht mich den Anfängen der Materie anzunähern, aber musste 
leider feststellen, dass ich wohl keinen Zugang finde, oder mein IQ halt 
nicht reicht. Deshalb muss ich hier nun ein paar Fragen der dümmeren Art 
stellen. Relevante Seiten vom Datenblatt des AK4396 sind 27-29.

1. Muss es unbedingt ein µC sein der das Ding ansteuert, oder geht das 
auch über ein paar Schalter, PC, oder sonst was?
2. Wenn nicht, welcher µC reicht für diese Anwendung? Ich habe zwar 
einen AVR Net-IO
 von Pollin hier liegen, aber ich denke mal das der overkill ist.

Wer mir irgendwie bei dem Projekt helfen kann, dem wäre ich sehr 
dankbar. Als Anreiz würde ich mich mit einem, auf mein Bord aufgelöteten 
AK4396 bedanken. Das Board hat ein optimales Layout und ist sehr klein, 
weshalb es ganz nah an die I2S Abgriffpunkte  gebracht werden kann. Es 
ist in Zusammenarbeit mit den Jungs (Jocko, Elso Kwak, Carlos Filipe 
ect.) von diyhifi punkt OH ER GE entstanden. Der AK4396 braucht 
keinerlei Ausgangstufe, was den Aufwand, einen hervorragend klingenden 
Dac zu bauen, erheblich vereinfacht.  Koppelkondensatoren und sauberen 
Strom ist alles was er braucht.
OK, genug der Werbung. Ich hoffe das irgendwer mir helfen kann.

Gruß,
Klaus

von Krapao (Gast)


Lesenswert?

> Relevante Seiten vom Datenblatt des AK4396 sind 27-29.

Achtung: Du hast dein Datenblatt und das Schaltplanbild (beide, das für 
die verkorksten Platinen und das Ersatzbild mit µC) nicht angehängt oder 
verlinkt.

> 1. Muss es unbedingt ein µC sein der das Ding ansteuert, oder geht das
> auch über ein paar Schalter, PC, oder sonst was?

Schwer zu sagen ohne Schaltbild oder Beschreibung was du erreichen 
willst.

Etliche Funktionen sind über Pull-Up oder Pull-Down-Widerstände und 
Jumper/Schalter an definierten Pins einstellbar.

Wenn du allerdings dynamisch die Konfiguration über das Register Control 
Interface ändern willst/musst, sehe ich keinen anderen Weg als einen µC 
(oder PC) dafür zu benutzen. PC wäre wohl Overkill...

> 2. Wenn nicht, welcher µC reicht für diese Anwendung? Ich habe zwar
> einen AVR Net-IO  von Pollin hier liegen, aber ich denke mal das der
> overkill ist.

X-beliebiger, bevorzugt einen den du programmieren kannst oder einen den 
du ansonsten nutzlos rumliegen hättest. Die Programmierung an sich ist 
IMHO Peanuts im Vergleich zum Handling des AK4396. Wenn du etliche 
Digital Analog Wandler Platinen mit einem µC bedienen willst, achte auf 
genügend I/O-Leitungen!

AK4396
http://www.asahi-kasei.co.jp/akm/en/product/ak4396/ak4396.html
http://www.asahi-kasei.co.jp/akm/en/product/ak4396/ak4396_f00e.pdf

von Klaus F. (rose123)


Angehängte Dateien:

Lesenswert?

Danke Krapao,
die Sache ist, dass ich die digitale Frequenzweiche über eine Soundkarte 
realisiere und deshalb der PC eh läuft wenn ich Musik höre.
Andererseits würde mir die µC Steuerung mehr zusagen, aber ich kapiere
das Konzept von so einem Ding einfach nicht. Ich dachte immer dass nur 
innerhalb des µC mit 8, 16 ect. bit gearbeitet wird und die Ausgänge auf 
1 oder 0 geschaltet werden, um dann irgendwelche Relais oder sonst was 
zu schalten. Hier braucht der Dac aber ein 16 bit Signal.
Da muss ja der µC ein 16 bit Siganl ausgeben. Naja mir fehlen halt die 
Grundkenntnisse.
Vielleicht erbarmt sich ja einer und zeigt an Hand von ein zwei 
Zeilen,wie ein Tastendruck SMUTE aktiviert.

von Krapao (Gast)


Lesenswert?

Der AK4396 setzt einen digitalen DVD-Audiostream (192 kHz PCM oder 1-bit 
DSD) in Audiosignale um. Diese Umsetzung kann man beeinflussen z.B. kann 
man Abschwächen usw.

Für das SMUTE (Soft Mute) reicht im Prinzip ein Taster am SMUTE Pin. Das 
SMUTE wird während eines HIGH am Pin durchgeführt. Die Dämpfung fährt 
dabei allmählich vom eingestellten Wert ATT auf unendlich (Stille). Wird 
SMUTE losgelassen (Pin LOW), wird der eingestellt Dämpfungswert ATT 
wieder angefahren.

Ist Stille erreicht, wechselt der DZF Pin auf HIGH, d.h. wenn man die 
Signalquelle stumm umschalten will, kann man den DZF Pin auswerten und 
schalten, denn jetzt ist das optimal. Ein µC/PC kann das ganz gut 
automatisieren. Entweder stur eine Zeit warten bis Stille da sein sollte 
oder wie geschrieben den DZF auswerten.

Wenn man lediglich einen Taster nimmt, sollte es allerdings ein Taster 
mit Entprellung sein. Technisch wird der Taster active-high 
betrieben, d.h. man braucht einen Pull-Down-Widerstand

        Taster (Offen im Ruhezustand)
DVDD     ===
 o-------o o----+-----o SMUTE
                |
                +-###-o GND
                  10K
               Widerstand

Statt einem einfachen Taster kann auch eine per µC/PC aktivierbare 
einfache Schaltung verwendet werden z.B. ein Optokoppler an einer echten 
RS232-Schnittstelle oder einem USB/RS232-Adapter wenn man auf die PC 
Schiene gehen will.

Hat man sich für eine bessere Kontrolleinheit entschieden, dann kann das 
natürlich auch noch andere Sachen steuern, z.B. die ATT Werte setzen 
ggf. getrennt rechter/linker Kanal usw.. In der Regel ist beinhaltet 
eine solche Kontrolleinheit einen µC statt einem IC-Grab und dem 
verpasst man sinnigerweise gleich auch ein Interface zu einem PC.

von Krapao (Gast)


Lesenswert?

Bessere Kontrolleinheit:

Statt direkt an einzelne Steuerpins wie den SMUTE zu gehen, werden vom 
µC Daten digital in Control Register des AK4396 geschrieben oder von 
dort gelesen.

Bei einer solchen "Steuerung über die Control Register ist ein 
bestimmtes serielles Protokoll mit Clock- und Datenleitungen 
einzuhalten. Die Beschreibung davon ist Inhalt deiner beiden Bilder.

von Klaus F. (rose123)


Lesenswert?

Danke Jungs,
es ist ja gerade mein Dilemma, dass ich aus Versehen mein Layout für 
Serial Mode gemacht habe. Ich kann den Dac nicht mehr mit den Pins
beschalten, weil die meisten davon auf Masse liegen. Nur halt die drei 
csn,
cckl, und cdti habe ich um den dac zu steuern.
Welche Befehle braucht es dass ein µC bespielsweise per Knopfdruck
Slow roll off aktiviert?

Klaus

von Krapao (Gast)


Lesenswert?

Du brauchst in dem Fall halt vier I/O-Pins am µC. Davon einen Eingabepin 
für deinen Knopfdruck. Die Entprellung machst du am besten in 
Software. Und drei Ausgabepins für die Leitungen CSN, CCLK und CDT1 
brauchst du. Bedienen der I/O-Pins mit Tastern (Eingabe) oder LEDs 
(generelle Ausgabe) am AVR ist in den Tutorials ganz am Anfang erklärt.

Die Ausgabepins sollten den gleichen Logikpegel haben wie dein AK4396 
also 3.0 bis 5.23V Versorgung des µCs. Am einfachsten versorgst du den 
µC also mit DVDD.

Wenn du dich für eine Kommandosequenz aus dem Datenblatt entschieden 
hast, ziehst du CSN low, ziehst CCLK low, legst das erste Bit der 
Kommandosequenz auf CDT1, ziehst CCLK high, und wiederholst fürs nächste 
Bit das Klappern mit CCLK/CDT1 bis zum letzten Bit der Kommandosequenz. 
Dann ziehst du CSN auf high und die Kommandosequenz wird vom AK4396 
ausgeführt, wenn sie richtig aus dem Datenblatt abgelesen wurde.

Für die Bitaktionen gibt es als Lernstoff den Artikel 
Bitmanipulation. Schleifengedöns ist Bestandteil jeder 
Programmiersprache. Assembler, C oder BASIC kannst du ein bisschen? 
Bisher ist auch k(aum )einer abgewiesen worden, der seinen nicht 
notwendigerweise perfekten Programmcode hier gezeigt hat...

Die Mindestzeit wie lange ein Pegel gehalten werden muss, steht im 
Datenblatt. Die bewegen sich je nach Leitung im 80-200 ns Bereich. Wenn 
du da pragmatisch was um 1 µs oder auch länger nimmst, passt das. Kannst 
du beim AVR mit der delay_us() Funktion machen.

Es wäre extrem hilfreich, wenn du überwachen kannst, was dein Programm 
sendet, ohne direkt den AK4396 anhängen zu müssen. Optimal geht das mit 
einem Logikanalysator. Wenn der nicht zur Verfügung steht, kannst du den 
Programmablauf im Simulator durchexerzieren, dauert halt länger. Oder du 
benutzt bei der Entwicklung statt 1µs 5s Haltezeiten und hängst je eine 
LED mit Worwiderstand an die Leitungen. Dann siehst du auch was auf den 
Leitungen passiert.

Warum schreibe ich dir den Code jetzt nicht einfach?

Ich bin da ein gebranntes Kind und fürchte den Umfang den das annehmen 
könnte. Nach dem kleinen Finger ist paar Abende später der ganze Arm ab. 
Vom SMUTE geht es über SLOW ROLL OFF zum Werweisswasnochfürfeature. 
Mittelfristig hast du mehr davon, wenn du nachvollziehen und selber 
steuern kannst, was dein µC macht.

von Klaus F. (rose123)


Lesenswert?

Danke Danke Danke
das sind doch mal brauchbare Infos.

Gruß,
Klaus

von Purzel H. (hacky)


Lesenswert?

Einen DAC kann man natuerlich auch per Schalter ansteuern. Nur kommt 
dann eben nur DC raus. Wenn sich die Werte schneller aendern muessen die 
Schalter schneller betaetigt werden.
Aha. Da sollte Sound rauskommen ? Was waeren dann ab 44'000 neuen Werten 
pro Sekunde. Da sollte man sich auch noch fragen, woher die Werte 
kommen. Ab CD ? USB Stick ?

von Klaus F. (rose123)


Lesenswert?

Mein lieber Oschi, du bist hier ganz schön daneben.
Es geht hier nur um das Programmieren des Dacs und
nicht um dessen Wandlungsaufgabe.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.