www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Audiofrequenz baustein


Autor: hanshans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich will von einem Mikrofon die Frequenz (bis sagen wir max. 20kHz, 15 
reichen denke ich auch) und (sofern möglich) auch die Lautstärke in dB 
messen/wissen.
Am liebsten wäre mir natürlich ein fertiger IC (nach dem Motto Analog 
rein und I2C oder SPI oder so kommt Frequenz und Lautstärke raus). Davor 
einen Verstärker und fertig ;) Gibt es sowas?

Wenn nicht.. wie kann ich sowas sonst machen? Erfahrung hab ich mit div. 
AVR/ARM und 8051. Bisschen was mit PIC (aber wirklich nur bisschen). Das 
ganze sollte nicht zu kompliziert (für mich) sein ;) Paar Hilfen / Links 
wären super. Bin auf dem Gebiet (Frequenzanalyse oder wie man das nennt) 
neu.

Hoffe ihr könnt mir weiterhelfen.

Grüße!

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AD636 hat einen dB-Ausgang, echte Effektivwertmessung, allerdings noch 
analog
http://www.analog.com/UploadedFiles/Data_Sheets/AD636.pdf

Autor: hanshans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der ist schon cool..

hab auch den TAS3103A gefunden von TI, der wohl als VU-Meter über I2C 
angesteuert wird und als VU-Meter dienen kann. Das wäre aber nur die 
Lautstärke.

Die Frequenz ist mir eigentlich wichtiger ;) dazu irgendeine Idee? 
obiger Baustein kann auch als Spectrum Analyzer genutzt werden über I2C, 
aber nur mit 10 Bändern. Eine Frequenzmessung ist damit nicht wirklich 
gut ;)

Wie kann ich das "Problem" lösen?

Autor: Michael Waiblinger (wiebel42)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hängt sehr stark davon ab was du genau möchtest, eine einfache 
Frequenzanalyse ist ja schon mit ein paar Bandpässen möglich 
(Lichtorgel) wenn das aber genauer sein soll wirst du im eine FFT (Fast 
Fourier Transformation) kaum herumkommen, das ist aber schon mit relativ 
wenig Aufwand möglich, das Elm-chan Teil:
http://elm-chan.org/works/akilcd/report_e.html
stellt imho so die schlankest mögliche Lösung dar, aber ein ARM sollte 
das locker nebenher machen, auch hier hängt es natürlich von den 
Anforderungen ab, wie genau es den sein soll und vor allem wie schnell 
(sich das Signal ändert).
 - wiebel

Autor: hanshans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also das Signal kommt von einem Mikrofon..
Auflösung sollte zwischen 50 und 20 Hz liegen (je besser umso besser 
g)
Genaugigkeit .. naja 20Hz sollten auch hier reichen.

Im Endeffekt reich es mir wenn ich nachher als Ausgabe habe
460Hz @ 20dB .. mehr brauche ich nicht. Das ganze Spektrum interessiert 
mich eigentlich nicht, daher wollte ich auch nicht umbedingt mit FFT 
etc. anfangen.

Autor: Michael Waiblinger (wiebel42)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine "Frequenzmessung" wie du schreibst ist mit einem Mikrophonsignal 
unmöglich, das Signal wird IMMER ein gewaltiges Spektrum aufweisen, du 
must eine Spektrogramm erstellen (FFT) und den stärksten Pegel (im 
Frequenzraum) zu deiner gesuchten Frequenz erklären. Die anzahl der 
Bänder (Fenstergrösse) bestimmt natürlich deine Auflösung und deinen 
Rechenbedarf. -wiebel

Autor: hanshans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, also werde ich wohl um die FFT nicht rumkommen, leider .. dann 
"einfach" das stärkste Band nehmen und das ist das die Frequenz.

Welchen Prozessor würdest Du/Ihr dafür empfehlen (wie gesagt 
ARM/AVR/8051 Dev. Kits/Compiler verfügbar)? Hier liegen habe ich noch 
einige ARMs (SAM7SE, SAM9260 .. etwas dick dafür ;), LPC2148, LPC2103 
und STR9irgendwas). Das ganze sollte natürlich einigermaßen schnell 
aktualisieren (so 10xpro Sekunde oder so)

Wenn ich richtig gerechnet habe müsste ich eine 2048 Punkte FFT machen 
bei 41kHz Abtastrate um auf 20Hz Auflösung zu kommen.

Wie nutze ich die FFT? Ich habe im netz mehrere FFT Algorithmen gefunden 
für verschiedene Architekturen. Klar .. Signal in AD-Wandler und dann in 
ein Array ablegen. Aber was mache ich dann mit den Daten? Den ARM 
Algorithmus den ich habe erwartet ein Array mit Real/Imaginärteil (??) 
Dann muss ich ja erstmal meine AD-Signal umwandeln oder (wie das?) Dann 
rufe ich die FFT auf mit dem Array, erhalte wieder ein Array. Was mache 
ich jetzt damit? Wie verwende ich die Daten. Ein paar Sichwörter dazu 
wären noch super ;)

THX!!

Autor: Michael Waiblinger (wiebel42)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, dafür bin ich jetzt zu sehr der Theoretiker, die blutigen Details 
müsste dir jetzt jemand anderes liefern.
Ideal wäre dafür natürlich ein DSP ansonste würde ich einen kleinen ARM 
dafür schon nehmen mit AVRs wird das zu träge, imho.
Ich würde mir die Elm-Chan Lösung nochmal genauer ansehen. Der kommt 
immerhin auf knapp 5Hz bei 2048 Punkten bei 9,6kHz, das dürfte aber auch 
schon die Obergrenze für AVRs sein. Aber das Datenhandling, kannst du 
bestimmt von ihm übernehmen. -wiebel

Autor: hanshans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo findet man da den den Hauptsource-Code ? FFT und Display Lib hab ich 
gefunden .. aber das PRogram?

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.