www.mikrocontroller.net

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


Autor: Bln_Star (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Daniel Bauer (und3rt4ker)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bln_Star (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, schon eher in c selbst...:(

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Bln_Star (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Daniel Bauer (und3rt4ker)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Oliver Döring (odbs)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl-j. B. (_matrixman_)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Bln_Star (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sone tabelle hat nich einer von euch zufällig schon da?;)

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Siehe dazu auch hier:

Beitrag "AVR Audiopegel messen"

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas Lang (andi84)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Morz Troll (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>mit LM324 o.ä. gleichrichten

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.