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
Beitrag #6091897 wurde vom Autor gelöscht.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.