Guten Tag,
ich möchte über einen ATMEGA64L ein PCM Signal über Kopfhörer ausgeben.
Die Daten für das PCM Signal bekommt der ATMEGA über einen ARM Prozessor
welcher ogg(vorbis) Musik Dateien entsprechend decodiert und an den
ATMEGA sendet. Ich dachte das ich die erhaltenen Digitalen PCM Werte
über den Aufgebauten D/A Converter ausgeben kann.
Später bin ich jedoch darüber gestolpert das ich das Ausgangssignal des
ATMEGA wohl verstärken muss. Dazu habe ich mit einem TDA7050 das
Referenzdesign von Seite 6 aufgin Eagle aufgebaut.
Meinene Frage sind jetzt, kann das so funktionieren?,
was muss ich an VP anschliessen? und wie kann ich die Lautstärke am
Kopfhörer einstellen?
(Vielleicht über die Spannung an VP?, welche ist dann die Maximale für
einen Kopfhörerausgang?)
Schönen Sonntag. :-)
mfg.: Andre
P.s. Das Datenblatt zum TDA gibt hier:
http://www.Reichelt.de -> suche -> TDA 7050 T SMD -> Datenblatt
Hallo,
ich habe zwar die obere Hälfte nicht so richtig verstanden, aber zum
TDA7050: steht doch im Datenblatt: Vp 1,6-6V
Ich betreibe sie normalerweise mit 5V.
Lautstärke kannst Du entweder mit einem passenden Poti regeln (Beispiele
im Datenblatt) oder Du mußt die Lautstärke mit Deinem OGG-Decoder oder
dem ATMEGA schon im erzeugten Signal passend beeinflussen.
Für irgendwelche Experimente nehme ich meist die Lautstärkepotis aus
alten CD-Laufwerken, in einigen sind da schöne flache 2x50k Stereopotis
drin.
Gruß aus Berlin
Michael
@Michael U.
Danke für die Antwort.
Wenn ich das richtig verstehe kann ich die Lautstärke also auch über die
Spannung die ich an VP des TDA7050 anschliesse Regeln?
Oder muss das Poti zwangsweise zwichen den Ausgang des OPAmp und die
Kopfhörer. Da das ganze Portabel sein muss würde ich ja so unnötig
Leistung über das Poti verschwenden.
Auf dem Board was ich entwickeln möchte habe ich eine Spannung von ca
3,3V zur verfügung, dabei befürchte ich wird der Kopfhörer wohl nicht
besonders laut, oder täusche ich mich da?
Oder ist die Lautstärke ein Produkt aus Spannung und Strom, dann könnte
ich ja auch die Lautstärke über einen per PWM oder soetwas angesteuerten
Transistor vor VP beschränken?
Ich glaube das meine Antwort voller Fehler ist, tut mir leid. Ich hab
wohl nicht lange genug drüber nachgedacht.
Da ich ja über das Poti auch den Widerstand der Kopfhörer erhöhe wird ja
der Strom kleiner und ich habe auch weniger Leistung die abfällt.
Ich würde das ganze nur gerne über den µC regel. Wäre da die Idee mit
dem Begrenzen von VP über einen Transistor mit PWM ansteuerung eine
möglichkeit?
Meine frage bezüglich der lLautstärke bei 3,3V bleibt aber erhalten.
Hallo,
über die Betriebsspannung kannst Du die Lautstärke nicht einstellen.
Hast Du Dir das Datenblatt überhaupt mal angeschaut? Da sind doch
Beispielschaltungen für alle möglichen Anwendungsfäkke drin...
Wenn ich Dein erstes Posting richtig verstanden haben, hast Du PCM-Daten
von einem ARM, die irgendwie mit einem ATMEGA64 und einem DA-Wandler
ausgegeben werden. Dann hindert Dich doch nichts, die Lautstärkereglung
gleich mit im ATMEGA zu erledigen. Ist doch nur Umrechnung der
PCM-Daten, bevor sie zum DA-Wandler gehen.
Ob die Lautstärke bei 3,3V reicht, hängt stark von den benutzten
Kopfhörern ab, qualitaiv gute haben meist einen schlechteren
Wirkungsgrad und sind bei gleicher Leistung dann eben leiser.
Da hilft vermutlich nur ausprobieren.
Gruß aus Berlin
Michael
Danke für die Antwort.
Das Datenblatt habe ich mir angeschat. Die Beispielbeschaltung für einen
Stereokopfhörer Ausgang habe ich auch so in Eagle übernommen.
Bei dem Ürojket handelt es sie, wei sollte es auch anders sein, mal
wieder um
einen Musik Player. Die Software zum decodieren der ogg/vorbis daten
schreibt ein Freund von mir. Deswegen habe ich auch nicht so besonders
viel Ahnung von PCM und wie das ganze system Funktioniert. Mein
gedankengang dabei war folgender:
Der OpAmp verstärkt (irgendwie) das Signal das ich vom µC erhalte, da
der ja nicht besonders viel Strom über seine Ausgange liefern kann.
Also dachte ich, je höher die Spannung die am OpAmp an Vp anliegt, desto
mehr Leistung wird im Kopfhörer umgesetzt, also auch umso lauter.
Umgekehrt natürlich auch für den Fall das es leiser werden soll.
Wenn ich/mein Freund das nun auch einfach über eine Manipulation der PCM
Daten erreichen kann dann bin ich damit auch zu frieden, macht die
Schaltung etwas billiger, kleiner und einfacher.
Mir ist grade aufgefallen das mein Schaltplan garnicht im Anhang lag.
Hoffe das es jetzt geklappt hat.
Danke das du dir so viel Mühe mit mir machst.
Hi
>> macht die Schaltung etwas billiger, kleiner und einfacher.
Hat es eigentlich einen besonderen Grund, wieso du den AVR rein als
DA-Wandler benutzt und nicht einfach einen externen DA-Wandler?
WEnn ich mich recht erinnere gibts bei TI DA-Wandler mit PCM und
internem Kopfhörerverstärker ;-)
mfg Schoasch
Ich hab mich bei Reichelt nach DA-Converter umgeschaut und nur 8-Bit
Converter gefunden und das erschien mir etwas wenig.
Außerdem weis ich das die meisten DA Wandler die für so etwas kaufen
kann recht teuer sind (>10€).
Was meinst du bei TI? Wenn der Wandler<10-15€ kosten würde würde ich
auch eventuell den nehmen. (Der AVR bietet auch den vorteil Variabler
Sample Raten, wie sie bei Vorbis vorkommen können).
lol 16 bit mit R2R? Na das wird glaub ich nix :(
Bei 8 bit liegt die Grenze von R2R (sagt man zumindest), kA wie es
aussieht wenn du sehr präzise Widerstände nimmst (auf jeden Fall wäre es
dann teuer)
Hallo,
nimm einfach statt des TDA7050 zwei TDA7052AT (den TDA7053A gibt's wohl
nur als DIL und nicht SMD).
Die haben dann DC Eingänge für die Volumenregelung, welche Du dann ohne
Probleme mit einer einfachen PWM steuern kannst.
Und was das R2R angeht, so kannst Du da eigentlich auch gleich die
Hardware-PWM des AVRs nehmen.
Allerdings solltest Du hier mal nach MP3 Player suchen, da gibt's viele
Artikel, wo die passenden MP3/Vorbis Decoder-Chips teilweise mit I²C
oder SPI-Ansteuerung behandelt werden ;)
Viel Spaß beim stöbern.
@Marius - mit 0,1% Widerständen wird das auf jeden Fall zu teuer,
allerdings dachte ich da an 1% Widerstände die liegen noch im Rahmen.
@Hörerchen Die fertigen Decoder Chips waren mir zu teuer bzw. nicht über
Reichelt zu bekommen. Ich versuche möglichst alles bei einem Versender
zu kaufen, da ich sont jedes mal ziemlich viel Geld für den Versand
ausgeben muss slebst wenn die bauteile günstig(er) sind.
Aber ich gucke mir die fertigen projekte nochmal an. Allerdings wird
wird da ja entweder was mit Kopfhöerausgang oder ein Teuer DAC genommen.
Hallo,
naja, selbst schnelles Kopfrechnen sagt: 8 Bit sind 256 Spannungsstufen.
Die kleinste hat also 1/256 des Maximalwertes.
Ein 1%-Widerstand kann um 1/100 seines Wertes abweichen.
Wenn er um 1% abweicht, sind von den 8 Bit schon nur noch rund 6,5 Bit
übrig, kleinere Werte werden falsch gewandelt.
16 Bit sind 65536 Spannungsstufen.
Die kleinste hat also 1/65536 des Maximalwertes.
Eigentlich braucht man hier nicht weiter nachdenken...
PS: das ist eine Vereinfachung!
Gruß aus Berlin
Michael
@Michael U.
Das Prinzip hinter deiner Rechnung verstehe ich, nur deine Rechnung
nicht :-)
Das MSB hat bei falschem 1% Widerstand den größten Einfluss auf die
Ausgangspsannung. Also bei 3V und 16Bit auflösung wären das beim MSB ein
unterschied von 1,5V*0,01 = 0,015V also 15mV. Würde ich für die oberen
Widerstände welche mit 0,1% toleranz wählen wäre der Max fehler schon
nur noch 1,5mV. Allerdings verstehe ich schon das das so nicht die beste
Lösung ist.
Nur wie sollte ich das anders machen, wenn ich aus kosten gründen keinen
fertigen Baustein wie z.B. den VS1001 oder so wählen möchte und alle
bezahlbaren DAC nur 8Bit auflösung haben. Der einzige mit 12Bit kostet
schon mehr als 10€.
Den VS1001 mag ich vorallem nicht besonders weil es ziemlich teuer wird
wenn er kaputt geht - nen Widerstand kann ich einfach ersetzen und mit
AMTEGA bausteinen hatte ich bis jetzt keine/kaum probleme. Vorallem kann
ich da mein Programm per JTAG Debuggen, bei dem VS1001 etc. wird die
Fehelrsurche sehr schwer.
Naja werde ich das ganze wohl erstmal als 16Bit R2R netzwerk aufbauen
und dann mal berichten wiedas Ergebnis aussieht, und im notfall wenn es
nicht zufriedenstellend ist die Ausgabe Platine neu machen.
Danke für die Ganze Hilfe von euch. Ich habt mich wirklich weiter
gebracht, danke :-) - Schönen Feiertage (für die die am Mo frei haben)
Keine Ahnung wo dein Problem liegt, aber du kannst ganz einfach einen
TDA1543 an einen AVR klemmen, kann man bei diesen Projekt sehen:
http://www.swinkels.tvtom.pl/swinsid/
Dahinter noch einen Verstärker hängen (TDA7050 wurde hier bereits
erwähnt), dann hast du alles was du brauchst. Der DAC kostet bei
www.segor.de 4,50€ und der Verstärker 1,40€
Ich würde mal behaupten mit der Lösung bekommst du den besten Sound aus
deinen AVR.
Höchstwahrscheinlich reicht für deine Anwendung aber sowieso schon die 8
bit PWM des AVRs aus... aber naja, hier heist es wohl wieder mal nicht
kleckern sondern klotzen!
argh, das du ne ogg datei abspielen willst hab ich gar nicht gelesen, da
reicht die PWM dann wohl doch nicht.
Wenn der AVR nur den sound abspielen soll kannst du auch einen modernen
DAC nehmen, musst dann nur auf das timing aufpassen.
Hall Andre,
Das Ausgangssignal eines Verstärkers hängt von der
Eingangswechselspannug
mal die Verstärkung ab. Die Versorgungsspannung spielt insofern nur eine
Rolle,daß wenn sie zu niedrig ist,die Ausgangsamplitute oben und oder
unten
an der Versorgungsspannung anschlägt. Die Signalform wird dann gekappt.
Soetwas nennt man clipping und hört sich furchtbar an.
Du solltest dein Poti vor den Endverstärker in den Signalweg setzen.
Noch ne möglichkeit ist, digitale Potis(glaube von Maxim) zu nehmen.
die haben einen anschluß für up und einen für down und speichern den
wert
ins interne eeprom.
Gruß
ANdi
Hallo,
ich habe mir OGG nie angesehen, ich denke aber, es wird ähnlich MP3 die
Framewerte normieren und einen Faktor im Frame abspeichern, mit dem nach
dem decodieren die Werte multipliziert werden, um die tatsächliche
Lautstärke zu bekommen. Vermutlich gibt es im Header auch einen Faktor,
der für den gesammten Stream gilt.
Bei MP3 kann man so die Wiedergabelautstärke ändern, indem nur dieser
Faktor angepasst wird, Sollte bei OGG vermutlich auch so ähnlich sein,
man kann also die Laustärkeeinstellung bestimmt auch im OGG-Decoder
erledigen.
Auch bei den PCM-Daten könnte man sicher eingreifen, die 16Bit um 1
Stelle nach rechts verschoben sind -6dB, sicher zu grob als Einstellung,
aber wenn er noch ein paar Takte CPU-Zeit übrig hat...
"Nur was man nicht in Assembler programmieren kann, daß muß man löten."
;)
Gruß aus Berlin
Michael
man könnte den DAC bestimmt ohne große Probleme auch an den ARM bringen,
die Lösung die Andre hier verfolgt verkompliziert das ganze nur und am
ende wird er nur einen DAC mit schlechter Qualität haben, wenn
überhaupt.
Ja, 16Bit sind so nie zu erreichen.
1% Widerstände sind nicht mal 7Bit und 0,1% Widerstände gerade mal
10Bit.
Dazu muß man aber noch das Rauschen der VCC und die Widerstände der
Ausgangsstufen addieren, kann also nur noch schlechter sein.
Angenommen 100 Ohm sind bei 10k Widerständen auch nochmal 1%.
Und mit 100k Widerständen wirst Du bei 20kHz schon arge Probleme mit der
Slew-Rate bekommen.
Die 16Bit kannst Du Dir also voll und ganz abschminken.
Jeder fertige 8Bitter dürfte besser sein als Deine Schaltung.
Peter