VU-Meter mit AVR in 1dB-Schritten bis -60dB

OP #4223790
Lesenswert?

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
Gast #4223826
Lesenswert?

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...
OP #4223845
Lesenswert?

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.
Gast #4223872
Lesenswert?

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.
Gast #4224839
Lesenswert?

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?
#4225054
Lesenswert?

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.
OP #4225215
Lesenswert?

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.
OP #4225288
Lesenswert?

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 :)
#4225327
Lesenswert?

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.
#4225467
Lesenswert?

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.
Gast #4226115
Lesenswert?

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!
#4226125
Lesenswert?

>  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 ;)
OP #4226316
Lesenswert?

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.
OP #4232030
Lesenswert?

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.
Gast #4232146
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren