Forum: Mikrocontroller und Digitale Elektronik VU Meter in C.wie?


von Bln_Star (Gast)


Lesenswert?

Hallo,

ich würde gerne mit einem Atmega32 ein VU Meter realisieren. Die 
Ansteuerung der LED's steht schon, nur habe ich leider keine Ahnung wie 
ich die Signalauswertung bewerkstelligen soll. Das VU Meter soll über 
Line in gespeist werden. Hat jemand da schon was fertiges, evt. 
Codeschnipsel???


MFG

Bln_Star

von Daniel B. (und3rt4ker)


Lesenswert?

Hi, ich programmiere nicht in C, aber so würde der Ablauf aussehen:

-Signal von Line in über 8 bit ADC(reicht sicher) einlesen
-8bit wert aufteilen:
 angenommen du hast 10 LEDs, bei:
      -wert 1   -25     schaltest du        led 1
      -wert 26  -50     schaltest du        led 1+2
      -wert 51  -75     schaltest du        led 1+2+3
      -wert 76  -100    schaltest du        led 1+2+3+4
      -wert 101 -125    schaltest du        led 1+2+3+4+5
      -wert 126 -150    schaltest du        led 1+2+3+4+5+6
      -wert 151 -175    schaltest du        led 1+2+3+4+5+6+7
      -wert 176 -200    schaltest du        led 1+2+3+4+5+6+7+8
      -wert 201 -225    schaltest du        led 1+2+3+4+5+6+7+8+9
      -wert 226 -255    schaltest du        led 1+2+3+4+5+6+7+8+9+10

Und wenn du logarythmische Ansteuerung oder mehr LEDs willst, musst du 
die Wertebereiche anpassen.

Oder liegt das Promblem bei der Programmierung in C selbst?

MfG

Und3rt4ker

von Bln_Star (Gast)


Lesenswert?

ja, schon eher in c selbst...:(

von Rahul D. (rahul)


Lesenswert?


von Bln_Star (Gast)


Lesenswert?

ja, das kenn ich und das kann ich auch alles...aber das mit der 
logarithmischen teilung is mir nich so ganz klar...ich verwende übrigens 
32 leds pro balken...

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Dann machst Du Dir eine Tabelle mit 32 Werten im FLASH, die Du vorher 
mit einer logarithmischen Rechenoperation (Excel o.ä.) herausgeknobelt 
hat. Über-/ unterschreitet die Spannung vom ADC einen dieser Werte, 
schaltest Du die zugehörige LED ein/aus.

von Daniel B. (und3rt4ker)


Lesenswert?

hm...
wenn du 32 leds pro balken hast und einfach nur die aussteuerung linear 
ausgeben willst(doppelt so laut-->doppelt so viele leds), kannst du doch 
256/32 rechnen = 8
also 0-8 =led1
     9-16=led1+2
usw.

MfG
Und3rt4ker

von O. D. (odbs)


Lesenswert?

Doppelte Spannung heißt aber nicht doppelt so laut, deshalb verwendet 
man bei Lautstärkestellern meistens logarithmische Kennlinien.

Der Tip mit der Tabelle im Flash war der richtige.

von Karl-j. B. (_matrixman_)


Lesenswert?

Gibt übrigens auch fertige ICs an denen man nur noch Audio Signal und 
LEDs anschließen muss.

LM3915

der wäre auch gleich Logarithmisch

(Nur mal so als Tip)


In C würd ich es wie schon geschrieben mit einer Tabelle machen. 
Umrechen würde sicherlich auch gehen brauchst du aber durch die 
Mathefunktionen wahrscheinlich mehr Speicherplatz wir für die 32 
Grenzwerte...

von Bln_Star (Gast)


Lesenswert?

sone tabelle hat nich einer von euch zufällig schon da?;)

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Die ist meistens individuell, da jeder andere Spannungsbereiche 
auswerten möchte. Da mußt Du schon mal selber ´ran ;-). Es ist auch ohne 
weiteres machbar, passende Werte durch Probieren oder durch Messen mit 
einem Gerät mit Pegelmeter (DAT, MD-Recorder oder Computer mit guter 
Soundkarte) herauszufinden und diese dann in die Tabelle einzutragen. 
Ein Display am AVR, welches den aktuellen ADC-Wert anzeigt, ist hierbei 
sehr hilfreich.

von Matthias (Gast)


Lesenswert?

Bit sind doch schon logarithmisch, die muss man doch nurnoch mappen, 
z.B. so:

höchstwertiges Bit gesesetzt => alle LEDs leuchten
2.höchstwertiges Bit gesetzt => eine LED weniger leuchtet
3. höchstwertiges Bit gesetzt => zwei LEDs leuchten nicht
usw.


Natürlich muss man negative Werte auch betrachten.
Und damit das ganze auch noch halbweges anschaulich wird sollte man das 
ganzw wohl etwas aufintegrieren, und peak deection bzw. hold einbauen.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Siehe dazu auch hier:

Beitrag "AVR Audiopegel messen"

von Micha (Gast)


Lesenswert?

Das Thema ist jetzt zwar schon ne Weile alt, aber trotzdem muss ich 
nochmal was klar stellen:
Man misst am Mikrofon eine Spannung.
Diese entspricht dem Schalldruck.
Anzeigen möchte man (wahrscheinlich) den Schalldruckpegel, was da 
20log(p/p0) wäre. Mit p0 = 2*10^-5 Pa.
Wenn ihr von Lautstärken redet, redet ihr von subjektiven Größen.
Dazu könnt ihr die "Kurven gleicher Lautstärkepegel" hinzuziehen.
Wenn ihr nun wirklich sehen wollt was doppelt so laut ist wie etwas 
anderes, dann seht ihr euch eine Kurve an, die die Beziehung zwischen 
dem Lautstärkepegel (in phon) und der Lautheit (in sone) anzeigt. Ein 
Sprung von 1sone auf 2sone entspricht einer Verdopplung der Lautstärke. 
Rechnet man das zurück, erkennt man das dies in etwa 10dB bei 1kHz (in 
den Kurven gleicher Lautstärkepegel) eintspricht. Bei allen anderen 
Frequenzen stimmt das schon nicht mehr.
Man kann also keinesfalls die Lautheit direkt am Mikro messen.

Gruß

von ... (Gast)


Lesenswert?

Matthias schrieb:
> höchstwertiges Bit gesesetzt => alle LEDs leuchten
> 2.höchstwertiges Bit gesetzt => eine LED weniger leuchtet
> 3. höchstwertiges Bit gesetzt => zwei LEDs leuchten nicht
> usw.

Den 32-Bit ADC dazu möchte ich mal sehen.

Bei 32 LEDs würde man wohl nicht gerade den Zweierlogarithmus sondern 
eine feinere Abstufung wählen.

von Andreas L. (andi84)


Lesenswert?

Moin,

mit LM324 o.ä. gleichrichten, RC-Tiefpass hinten dran mit f_grenz ca 10 
Hz
Dann das Signal auf den ADC vom AVR.
Wenn man sich was gönnen möchte, gibt man das Signal nochmal um den 
faktor 4 verstärkt auf nen 2. adc, damit kann man dann in software eine 
bessere genauigkeit rausholen. (für kleine spannungen nimmt man das 
verstärkte signal). Umschaltung zwischen den ADC-Werten muss man halt 
programmieren.
Damit geht besser 0,5dB. Ist halt Peak Level. Logarithmus mit 
Wertetabelle.
DIe Tabelle berechnet man sich fix mit Excel.
(Referenzpegel für Studio ist 0dB mit 0,755V_eff)

von Morz Troll (Gast)


Lesenswert?

>mit LM324 o.ä. gleichrichten

das ist gerade etwa der schlechteste OpAmp. Ein LTC5507 oder aehnlich 
ist sicher besser geeignet.

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.