Forum: Mikrocontroller und Digitale Elektronik Audiofrequenz baustein


von hanshans (Gast)


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!

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

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

von hanshans (Gast)


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?

von Michael W. (wiebel42)


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

von hanshans (Gast)


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.

von Michael W. (wiebel42)


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

von hanshans (Gast)


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!!

von Michael W. (wiebel42)


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

von hanshans (Gast)


Lesenswert?

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

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.