Hi. Einen ähnlichen Post hab ich schon mal vor 2 oder 3 Jahren abgesetzt aber mittlerweile ist mein Wissen größer und das soll jetzt tatsächlich mal umgesetzt werden. Zwecks einer Audio-Visualisierung würde ich gerne den Bereich von 0dB bis -60dB eines eingehenden Audiosignals mit einem AVR erfassen können. Den Bezugspegel werde ich noch geschickt wählen. Den großen Dynamikumfang von 60dB und mehr hätte ich gerne, damit ich auch leise Passagen noch gut erfassen kann. Nun hat der AVR nur einen 10-Bit ADC. Per Look-Up-Table könnte ich die gemessene Eingangsspannung logarithmieren. Theoretisch entspricht das Verhältnis 1:1024 einem Dynamikumfang von 60,2dB, praktisch kann ich den aber nicht vollständig nutzen, denn unterhalb von -43dB unterscheiden sich die einzelnen Ausgangswertde des ADC um weniger als 1LSB. Auch wenn mir die Referenzspannung des ADC selbst generiere und zwischen den erlaubten Grenzen von 1V und 5V variieren lasse erreiche ich dadurch nur zusätzliche knapp +14dB. Einige AVR besitzen ja noch eine interne Verstärkung um den Faktor 20, was noch mal +26dB entspricht. Gar nicht übel so weit. Aber ist das wirklich der empfehlenswerte Weg oder würde es sich eher lohnen, gleich einen externen 16Bit-ADC zu nehmen? Oder dem internen ADC einen analogen logarithmierer vorzuschalten? Wie macht das der Profi? lg PoWl
Kennst Du den AD8307 oder AD8310 ? Mit der passenden Eingangsbeschaltung sind sie für Audiosignale zu gebrauchen.
Die interne Verstärkung bringt keinen höheren Dynamikumfang. Wenn es amateurmäßig (auch vom Preis) beherrschbar sein soll, empfiehlt sich z.B. ein MCP3202 (< 5 EU). Mit so einem externen 2-Kanal 12-Bit ADC kommt man auf 69 dB Dynamikumfang. Nächster Schritt: Mit vorgeschaltetem Präzisions-(Spitzen)-Gleichrichter, oder mit Echtzeitberechnung? Der Gleichrichter muss schon recht präzise sein. Die Echtzeitberechnung (wenn jeder Peak sauber erfasst werden soll) erfordert 2 * 40 kSamples / s. Das lässt dem typischen AVR kaum noch Zeit zum Rechnen...
Es ist auch ok wenn ich das Signal nur mit einigen wenigen kHz abtaste, nicht mit vollen 40kHz. Da eh ein Peak-Hold-Algorithmus eingesetzt wird und der signifikante Anteil des Pegels sowieso in den niedrigeren Frequenzen steckt dürfte das völlig ausreichen. Die interne Verstärkung bringt natürlich keinen höheren Dynamikumfang. Allerdings kann ich sie einschalten, wie gewohnt weitermessen und vom gemessenen dB-Wert einfach 26dB subtrahieren um wieder auf den tatsächlichen dB-Wert zu kommen. Genaugenommen komme ich damit sogar auf einen praktischen Dynamikumfang von 43+26 = 69dB. Gar nicht übel, sofern das einigermaßen rauschfrei funktioniert. Einen Messgleichrichter möchte ich, zwecks einfachheit übrigens nicht davor schalten. Ich ignoriere entweder jede zweite Halbwelle oder koppel das Signal über einen C an Aref/2 an (womit ich wieder 6dB Dynamikumfang verliere). Damit verpasse ich vor allem bei Bassimpulsen wenigstens den Peak nicht.
:
Bearbeitet durch User
Nun ja, die peaks liegen meist wirklich im Bassbereich. Oder werden (wenn sie sehr kurz sind) auch vom Ohr nicht erfasst. - Eine sehr kurze Übersteuerung (clipping) fällt dem Ohr auch nicht unbedingt auf - so dass der Anzeigefehler damit nicht zu groß wird. Richtig PROFESSIONELL bist du dann aber nicht mehr. Wenn du dir mal ein paar Musikstücke als Wellenform angesehen hast, würdest du nicht auf die Idee kommen, eine Halbwelle zu unterdrücken! Mit einem C an Aref/2 bleiben noch 63 dB. Allerdings würde ich im Programm (bei 12 ADC) nicht mit 2^12 / 2 = 2048 als NULL-Wert rechnen, sondern mit dem Wert, (Mittelwert) der sich ohne Einganssignal ergibt.
Paul H. schrieb: > Nun hat der AVR nur einen 10-Bit ADC. Per Look-Up-Table könnte ich die > gemessene Eingangsspannung logarithmieren. Theoretisch entspricht das > Verhältnis 1:1024 einem Dynamikumfang von 60,2dB, praktisch kann ich den > aber nicht vollständig nutzen, denn unterhalb von -43dB unterscheiden > sich die einzelnen Ausgangswertde des ADC um weniger als 1LSB. > [...] > Aber ist das wirklich der empfehlenswerte Weg oder würde es sich eher > lohnen, gleich einen externen 16Bit-ADC zu nehmen? Oder dem internen ADC > einen analogen logarithmierer vorzuschalten? > Wie macht das der Profi? Der überlegt, ob es wirklich wichtig ist, zwischen -43dB und -60dB wirklich jedes verschissene dB auflösen zu können und kommt, ohne viel nachdenken zu müssen, vollkommen unvermeidlich zu dem Schluß: Nein, das ist kompletter Unsinn, zu absolut nix wirklich nutzbar oder gar wirklich nützlich... Reicht dir das?
c-hater schrieb: >> Wie macht das der Profi? > > Der überlegt, ob es wirklich wichtig ist, zwischen -43dB und -60dB > wirklich jedes verschissene dB auflösen zu können und kommt, ohne viel > nachdenken zu müssen, vollkommen unvermeidlich zu dem Schluß: Nein, das > ist kompletter Unsinn, zu absolut nix wirklich nutzbar oder gar wirklich > nützlich... Dazu sollte man vielleicht noch anmerken, daß 3dB ungefähr das sind, was man mit dem nackten Ohr an Lautstärkeunterschied auflösen kann. Sprünge von 1dB sind vielleicht für einen Lautstärkesteller angemessen, aber für eine Pegelanzeige sind sie Overkill.
c-hater schrieb: > Der überlegt, ob es wirklich wichtig ist, zwischen -43dB und -60dB > wirklich jedes verschissene dB auflösen zu können und kommt, ohne viel > nachdenken zu müssen, vollkommen unvermeidlich zu dem Schluß: Nein, das > ist kompletter Unsinn, zu absolut nix wirklich nutzbar oder gar wirklich > nützlich... Huiuiui, da hat aber einer ne Laune :-D Dennoch: passabler Einwand. Ich habe jetzt aber nur von Audio-Visualisierung gesprochen, nicht explizit von VU-Meter. Für einen echten VU-Meter im Sinne eines Messinstruments würden 3dB-Schritte wohl auch reichen, da geb ich dir völlig recht. Meine Visualisierung fällt aber eher unter Lichtspielerei, da darfs dann ruhig auch mal 1dB-Auflösung sein, denn die Visualisierung soll sich auf den anliegenden Pegel auch adaptiv etwas anpassen, und da sind 3dB schon zu grob.
Ich wuerd einen Hardware Logarithmierer zB AD8310, verwenden, tiefpassen und in den ADC des AVR. Dabei ist zu beachten, dass ein AD8310 eine Bandbreite von ueber 400MHz hat, und in diesem Bereich alles verarbeitet. Dh die kleinsten Signale sind immer Rauschen. Dh man muss sich viel Muehe geben, um das Rauschen fernzuhalten.
Paul H. schrieb: > Ich habe jetzt aber nur von > Audio-Visualisierung gesprochen, nicht explizit von VU-Meter Dann lies doch mal den Betreff Deines Posts.
Jetzt N. schrieb: > Ich wuerd einen Hardware Logarithmierer zB AD8310, verwenden, tiefpassen > und in den ADC des AVR. Dabei ist zu beachten, dass ein AD8310 eine > Bandbreite von ueber 400MHz hat, und in diesem Bereich alles > verarbeitet. Dh die kleinsten Signale sind immer Rauschen. Dh man muss > sich viel Muehe geben, um das Rauschen fernzuhalten. Solche ICs hab ich auch noch nicht gesehen. Das wäre dann in der Tat die Profi-Variante. Ich probier jetzt erst mal aus, mit einem ATtiny26 zu logarithmieren und melde mich die Tage mal. Je nachdem wie erfolgreich das ist, kann ich noch auf andere Methoden umschenken. Spezialbauteile wollte ich halt nach Möglichkeit vermeiden bzw. erst ein mal so einfach wie möglich ans Ziel kommen :)
:
Bearbeitet durch User
Paul H. schrieb: > Wie macht das der Profi? Einen passenden uC auswählen der gleich 14 bit A/D besitzt, z.B. MSP430FE4232 der gleich 2 x 60 Segmente auf einem LCD ansteuern kann (ich glaube der ADC kann 4ksps, sollte für VU-Meter reichen). Da ein LCD keinen hohen Strom braucht, entfallen weitere Treiber. Da du vermutlich kein LCD fertigen lassen kannst, brauchst du aber einen uC mit mehr Strom und trotzdem noch Treiber. Dann nimm einen externen Audio-ADC durchaus älterer und billigerer Form, wie PCM1801.
Wenn ich das machen müßte, dann würde ich analog (naja, fast) logarithmieren. Das geht übrigens durchaus auch besser als über eine Diodenkennlinie. Ein schnuckeliges Verfahren ist im Buch "Schaltungs- praxis für Meßgeräte" (Militärverlag der DDR) beschrieben. Die Grundidee für den Logarithmierer ist, daß man das Eingangssignal (Gleichspannung) mit einem differenzierten (CR-Glied) Rechtecksignal vergleicht. Nach dem Differenzierglied hat man ja einen zeitlichen Abfall der Spannung gemäß e-Funktion. Wenn man das mit einer Gleichspannung vergleicht, dann kommt aus dem Komparator ein Rechtecksignal, dessen Tastverhältnis (aka Mittelwert) gleich dem Logarithmus der Spannung ist. Wenn man jetzt sowieso einen µC verwendet, dann kann man das Tast- verhältnis auch direkt auswerten. Dazu erzeugt man das Rechtecksignal mit einem Output Compare Kanal eines Timers. Und die Ausgänge der Komparatoren sampled man mit zwei Input Capture Kanälen. Braucht man nicht mal mehr einen ADC. Vor die beiden Komparatoren muß jeweils noch ein Spitzenwertgleich- richter. Natürlich aktiv mit OPV. Dahinter ein kleines Siebglied, angepaßt an die Abtastrate des Logarithmierers und die gewünschte zeitliche Auflösung für Peaks. Komplett analog mit einem B084 (TL084) für Gleichrichter und Komparator, einem B555 als Rechteckgenerator und 4x A277 (ähnlich LM3914) für zwei LED-Ketten mit je 20 LEDs tickert das in einem alten Verstärker von mir.
du brauchst aber auch Musik, die 60 dB Dynamik hat. Hört man einmal 5 Minuten die einschlägigen Müllsender, die die Charts hoch und runterleiern, kommt man höchstens auf 10 dB - das ist der Sprecher, der gerade wieder erklärt, das man den geilsten aller geilen Sender hört. Bei dynamischer Musik heißt das leise Stellen bei 40dB, damit sie überhaupt aus dem Umgebungsgeräusch herauskommen und 100dB wenns laut wird. Juchu!
Grrrrr schrieb: > du brauchst aber auch Musik, die 60 dB Dynamik hat. Dafür gibt es extra Bands wie die "Soulful Dynamics" https://www.youtube.com/watch?v=6pHQAGmo6ZM MfG Paul
> die einschlägigen Müllsender, die die Charts hoch und runterleiern,
Das liegt da ausnahmsweise nicht an den Charts, sondern am Optimod/etc
im, Sender. Die erzwingen typischerweise eine recht aggressive
Gleichheit(Lautheit) des Pegels, damit man das Rauschen von UKW-Stereo
nicht so merkt...
Andererseits bügeln sie damit auch die Unfähigkeit der
Idi^H^H^HModeratoren aus, gescheit auszupegeln. Die meisten sind da
nämlich der Meinung, dass ein Fader deshalb 10cm lang ist, damit man ihn
immer punktgenau auf 8cm einstellen kann (0dB...). Man schaue doch nur
mal auf die typischen Radiostudiobilder. Die Faderknöpfe sind immer in
zwei Reihen, entweder ganz unten oder auf 0dB ;)
Wenns mir nur um die Dynamik der Konservenmusik gehen würde, die wir so hören, würden mir ungefär 10dB Dynamikumfang auch reichen. Den großen Dynamikumfang brauche ich aber, da das Quellensignal aus verschiedenen Quellen wie Smartphone, iPod, und sonstigen mp3Playern stammt, welche nicht immer auf volle Lautstärke eingestellt sind und daher recht unterschiedliche Pegel liefern. Für die Visualisierung möchte ich das Eingangssignal auf Vollaussteuerung normieren. Daher ist es geschickt, einige 10dB Reserve zu haben.
:
Bearbeitet durch User
Mir ist gerade ein Denkfehler meinerseits aufgefallen. Wenn ich das Audio-Signal über einen Koppel-C auf AREF/2 lege ist der Offset-Wert bei 511. Wenn ich nun den x20 Gain noch mit drauf haue verstärkt der den Offset ja mit. Das funktioniert so nicht. Jetzt ist mir beim ATtiny261 aufgefallen, dass der nicht nur differentiell sondern auch bipolar messen kann! Gar nicht übel, dieser Tiny hat den komfortabelsten integrierten ADC. Ich werde mal einen ATtiny861 bei Reichelt ordern. Das Audio-Signal kann ich ja dann per C auf einen virtuellen GND von AVCC/2 koppeln und differenziell bipolar messen. Somit ist der gemessene Wert immer bezogen auf den virtuellen GND. Nebenbei stehen mir dann noch die Verstärkungsfaktoren von 8, 20, oder 32 (+18dB, +26dB, +30dB) zur Verfügung. Damit bin ich ziemlich flexibel, damit lässt sich arbeiten.
Hi >Jetzt ist mir beim ATtiny261 aufgefallen, dass der nicht nur >differentiell sondern auch bipolar messen kann! Gar nicht übel, dieser >Tiny hat den komfortabelsten integrierten ADC. Hä? Bipolar differential messen können alle AVRs mit differentiellen Eingängen. Die ATTinyx61, wie auch Attinyx4/x5/x7, haben zusätzlich einen unipolar differential Mode. Bei dem muss der positive Eingang immer >= dem negativen Eingang sein. MfG Spess
Das ist nicht richtig. Der ATtiny26 kann nur unipolar differenziell. Siehe Datenblatt Seite 94/95 ;-)
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.