Audio Spektrum Analyzer Projekt

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 05 10 2024  10:20:34      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte

Gehe zu Seite ( 1 | 2 | 3 Nächste Seite )      


Autor
Audio Spektrum Analyzer Projekt
Suche nach: audio (2540)

    







BID = 45211

MatthiasAsselborn

Stammposter


Avatar auf
fremdem Server !
Hochladen oder
per Mail an Admin

Beiträge: 411
Wohnort: Altenstadt
Zur Homepage von MatthiasAsselborn ICQ Status  
 

  


Hallo

habe seit geraumer Zeit den Bau eines Audio Spektrum Analyzers angefangen. Habe Ihn auch vollendet
nur leider komplett in "analoger Form"
d.h. Bandpassfilter mit Widerständen und Elkos / Op's
zu jedem einzelnen Kanal eine Aussteuerungsanzeige
ich verwendete je einen UAA180.
...schön und gut.. der Analyzer sieht auch optisch gut aus
nur .. der UAA180 ist ein sehr altes Bauteil
und hat leider keinen constanten Dezibel verlauf
z.b. -8 -7-6 -5 .. 0 +1 +2 +3
sondern er fängt irgendwo bei -24 an und geht dann rassant noch oben

nun zu meiner Überlegung
ich habe den Atmel 2313 10Mhz hergenommen
und habe eine LED Aussteuerungsroutine
programmiert (vorerst mal 12 Led s pro Kanal)
mit constantemn Dezibel einer Schritt
später nehm ich n größeren Stein
mit mehr Speicher und Pins für 16 Led s
hänge aber nun komplett an den
Bandpassfiltern denn die beiden IC's
der LMF 380 und der LMF60-100
die ich mir vorgestellt habe...
sind eingestellt worden und das schon seit 1997..
Datenblätter sind aber noch verfügbar.
Mit 10 der 380 er und 2 der 60-100
würde sich dann ein 1/3 octave Analyzer
mit 30 Bändern verwirklichen lassen
nur weis ich im Moment echt nicht weiter
wie ich das lösen soll....
es gäbe noch ein Japan IC
den NJU 7507 auch ein mehrkanaliger Filter IC
wobei ich genauso wenig weis woher beziehen...

bei mir hängt es nun also an den Bandpässen ....

den AVR der zur Aussteuerung dient
kann ich ja mit 5 CMOS IC's
2mal den 4067B, 4515B
und einmal dem 4060B Multiplexen

oder geht das Multiplexen auch in einem Atmel ?
ich bin noch realtiv neu in der ganzen Geschichte mit
µC programmieren ... bitte also
nicht drüber lachen

gibt es eine Möglichkeit
irgendwie die Bandpässe zu verwirklichen ?
Atmel o.ä. ?? wenn ja wie ??
es müsste aber dan ein analoges Signal
am ende jenes Filters liegen ..
so dass es zusammenpasst
gibt es Bausteine mit integrierten D/A's ?
oder wie könnte ich das mit den
Bandpässen machen

bitte helft mir da weiter
und nicht einfach den Kopf schütteln ...







BID = 45248

Benedikt

Inventar

Beiträge: 6241

 

  

Wenn es wirklich einfach sein soll (von der Hardware her), dann nimmt man einen AD Wandler, der etwa 128 bis 1024 Werte aufzeichnet und abspeichert.
Diese Werte lässt man durch einen FFT Algorithmus laufen, und erhält als Ergebnis die einzelnen Frequenzen des aufgezeichneten Signals.
Ich habe mal versucht solch einen Algorithmus in Assembler für einen 8051 Mikrocontroller (um)zuschreiben.
Die ersten 10% hatte ich nach 2 Stunden, und habe es dann aufgegeben...

Hier der Code in QBasic für 8192 Werte (M=13, 13Bit=2^13)
Der PC benötigt dafür etwa 1 Sekunde zum berechnen. Ein optimiertes Code in einem Mikrocontroller könnte dies in etwa der gleichen Zeit schaffen, wenn man mit Festkommazahlen rechnet und einige weitere Vereinfachungen durchführt.
Wenn man mit 50Hz Auflösung zufrieden ist, benötigt man keine 8192 Werte sondern es reichen 128 oder 256. Dann ist das Programm um ein Vielfaches schneller.

Vielleicht findet sich was für den AVR im Internet
Einfach mal nach AVR + FFT googeln...

PI! = 3.1415926535#
M = 13
n=2 ^ M
K2 = 1
FOR K = 1 TO M
K2 = 2 * K2
K1 = K2 / 2
TH! = (2 * PI! / n) * K1
NK = n / K2
N1 = n / K1
FOR I = 1 TO NK
AG! = (I - 1) * TH!
WR! = COS(AG!)
WI! = -SIN(AG!)
FOR J = N1 TO n STEP N1
J1 = J - N1 + (I - 1)
J2 = J1 + NK
E1 = 2 * J1
E2 = 2 * J2
O1 = E1 + 1
O2 = E2 + 1
DR! = X(E1) - X(E2)
DI! = X(O1) - X(O2)
X(E1) = X(E1) + X(E2)
X(O1) = X(O1) + X(O2)
X(E2) = WR! * DR! - WI! * DI!
X(O2) = WI! * DR! + WR! * DI!
NEXT
NEXT
NEXT
J = 0:
FOR I = 0 TO n - 2
IF I < J THEN
EI = 2 * I
EJ = 2 * J
t! = X(EI)
X(EI) = X(EJ)
X(EJ) = t!
t! = X(EI + 1)
X(EI + 1) = X(EJ + 1)
X(EJ + 1) = t!
END IF
K = n / 2
AGAIN:
IF K > J THEN
J = J + K
ELSE
J = J - K
K = K / 2
GOTO AGAIN:
END IF
NEXT
t! = X(0) + X(1)
X(1) = X(0) - X(1)
X(0) = t!
X(n + 1) = -X(n + 1)
N2 = 2 * n
FOR K = 1 TO n / 2 - 1
K2 = 2 * K
NK = N2 - K2
AR! = X(K2) + X(NK)
AI! = X(K2 + 1) - X(NK + 1)
BR! = X(NK) - X(K2)
BI! = -X(NK + 1) - X(K2 + 1)
S! = SIN(K * PI! / n)
C! = COS(K * PI! / n)
CR! = BR! * S! - BI! * C!
CI! = BR! * C! + BI! * S!
X(K2) = (AR! + CR!) / 2
X(K2 + 1) = (AI! + CI!) / 2
X(NK) = (AR! - CR!) / 2
X(NK + 1) = (CI! - AI!) / 2
NEXT
FOR l% = 0 TO n - 1
X(l%) = (X(2 * l%) * X(2 * l%) + X(2 * l% + 1) * X(2 * l% + 1)) + 1
X(l%) = ((LOG(X(l%))) - 10) * 40
IF X(l%) < 0 THEN X(l%) = 0
NEXT

BID = 45329

MatthiasAsselborn

Stammposter


Avatar auf
fremdem Server !
Hochladen oder
per Mail an Admin

Beiträge: 411
Wohnort: Altenstadt
Zur Homepage von MatthiasAsselborn ICQ Status  

was bedeutet denn der ausdruck FFT und FIR ?

habe nun mal kurz gegoogelt
bin aber nur auf den einigermaßen brauchbaren Link

http://instruct1.cit.cornell.edu/co.....lisa/

gestoßen und da ist mir ein Projekt aufgefallen, in dem
mit einem AT90S8535 bei 9kHz Samplingfrequenz ein "einfacher"
Spektrumanalysator aus acht FIR-Bandpässen gebaut wurde.
(A/D-Wandler -> RAM -> Filter offline drüberlaufen lassen -> RS232

könnte ich teile des Sources für meine Version übernehmen
oder ist das ganz was anderes
mich stutzt die 9 khz Samplingfrequenz ?
was versteht man denn darunter ?

und wieso haben die auf der Seite
im Schaltbild einen Bandpass analog aufgebaut ?

BID = 45331

MatthiasAsselborn

Stammposter


Avatar auf
fremdem Server !
Hochladen oder
per Mail an Admin

Beiträge: 411
Wohnort: Altenstadt
Zur Homepage von MatthiasAsselborn ICQ Status  

sobald ich den obigen Basic Code ausprobiere meldet der
compiler mir nen Fehler

in der Zeile

DR! = X(E1) - X(E2)

Index außerhalb des Bereiches ..

woran liegt den das ?




BID = 45332

Benedikt

Inventar

Beiträge: 6241

Dies ist nur das Unterprogramm.
Als erstes musst du X als Array dimensionieren:
DIM X(8192)
Dann eine Wave Datei in das Array laden.
Ich werde mal ein kleines Demoprogramm schreiben und hier posten.
Dieses Programm wird eine Standart Wave Datei mit 8bit Mono lesen und das Spektrum anzeigen.

BID = 45339

MatthiasAsselborn

Stammposter


Avatar auf
fremdem Server !
Hochladen oder
per Mail an Admin

Beiträge: 411
Wohnort: Altenstadt
Zur Homepage von MatthiasAsselborn ICQ Status  

oh das ist ja toll

ich muss ehrlich sagen das Forum hier ist super
in anderen Foren in denen ich das selbe gepostet habe
bin ich nur dumm angeredet worden

noch ne kleine frage wegen den 50 herz
meinst du damit die bildwiederholrate der led s ??



BID = 45445

Benedikt

Inventar

Beiträge: 6241

Hier habe ich nun ein kleines Demoprogramm.
Im Moment ist es auf 512 Durchläufe eingestellt, benötigt dafür 1024Bytes an Daten.
Als Ergebnis liefert das Programm die Frequenzen von 0Hz bis Samplerate/2 (im Beispiel 11,025kHz/2) auf der X-Achse und deren Intensität auf der Y-Achse.
Die Auflösung auf der X-Achse beträgt 5512,5/512, etwa 10Hz.
Man kann damit also Frequenzen mit 10Hz Genauigkeit bestimmen.
In der angehängten Datei befindet sich das Programm und eine Wave Datei. Die Frequenz in der Datei steigt von 10Hz langsam auf 5000Hz an, was man auch deutlich im FFT Programm erkennen kann.

Hochgeladene Datei : FFT.zip

BID = 45522

MatthiasAsselborn

Stammposter


Avatar auf
fremdem Server !
Hochladen oder
per Mail an Admin

Beiträge: 411
Wohnort: Altenstadt
Zur Homepage von MatthiasAsselborn ICQ Status  

hmm

wie setze ich das nun auf den atmel um ?
bin wie gesagt noch ein atmel programmier anfänger und schon froh dass ich das vu meter hinbekommen habe ..

das basic programm könnte man doch noch ausbauen
um es von 10 bis z.b. 20k ansteigen zu lassen
das probier ich nun mal

BID = 45555

Benedikt

Inventar

Beiträge: 6241

Die 10kHz oder 20kHz sind kein Problem. Man muss nur doppelt soviele Werte aufzeichnen (pro Sekunde) als die maximale Frequenz. Für 0-20kHz müsste man also 40000 Werte pro Sekunde aufzeichnen. Man muss natürlich nicht alle 40000 Werte aufzeichen, sondern es reichen 256, um den kompletten Frequenzbereich zu erhalten. Die Auflösung ebträgt dabei dann leider nur 156Hz, aber dies sollte für einen einfachen LED Spektrumanaylser ausreichen.
Mit 2 Millionen Werte pro Sekunde (32768 Werte aufgezeichnet) kann man im Mittelwellenbereich viele Funksender empfangen. Ich konnte mit einer kleinen Spule als Antenne sehr viel empfangen und über 100 Sender identifizieren. Angefangen bei dem DCF (Funkuhr) Sender auf 77,5kHz, Deutsche Welle und viele anderen Europäischen Sender.

http://instruct1.cit.cornell.edu/co.....lisa/
Da hast due doch ein fertiges Programm, das die wichtigsten Teile enthält. Eventuell leicht angepasst und fertig ist die Schaltung.

BID = 45690

MatthiasAsselborn

Stammposter


Avatar auf
fremdem Server !
Hochladen oder
per Mail an Admin

Beiträge: 411
Wohnort: Altenstadt
Zur Homepage von MatthiasAsselborn ICQ Status  

könntest du mir dabei helfen das anzupassen
damit wäre mir schon sehr geholfen
denn wie bekomme ich das signal anstatt über rs232
auf meine 32 bänder...


BID = 45744

Benedikt

Inventar

Beiträge: 6241

Am besten besorgst du dir den AT89S8535, und verwendest das Programm aus dem Internet.
Die Ergebnisse werden dann per RS232 an den nächsten AVR mit deiner Software übertragen, die die Werte als LED Balken darstellt.

Wenn das alles zu kompliziert sein sollte:
Nimm einen BA3830. Dieses Filter IC besitzt 6 Bandpassfilter und liefert 6 analoge Ausgangssignale. Eine fertige Schaltung und/oder das IC gibts bei ELV.
Irgerndwo habe ich auch noch einen Schaltplan dafür liegen.
Das Datenblatt habe ich mal angehängt.



Hochgeladene Datei : BA3830.pdf

BID = 45781

MatthiasAsselborn

Stammposter


Avatar auf
fremdem Server !
Hochladen oder
per Mail an Admin

Beiträge: 411
Wohnort: Altenstadt
Zur Homepage von MatthiasAsselborn ICQ Status  

also mit dem BA3830 wird das nichts
da die bandpässe schon intern festgelegt sind

ich teste nun das mal an mit dem
atmel
meintest du nicht einen AT90S8535 ?? statt 89 ??

ich melde mich dann sobald ich den atmel geproggt habe
muss ja dann noch veränderungen an meinem code
vornehmen für die led aussteuerung ...

BID = 45819

MatthiasAsselborn

Stammposter


Avatar auf
fremdem Server !
Hochladen oder
per Mail an Admin

Beiträge: 411
Wohnort: Altenstadt
Zur Homepage von MatthiasAsselborn ICQ Status  

habe gerade gesehen auf der seite werden nur 8 bandpässe integriert dann ist das wohl doch nicht das richtige für mich ...

BID = 46684

sme-bbg

Schriftsteller



Beiträge: 959
Wohnort: Bad Eilsen
Zur Homepage von sme-bbg ICQ Status  

wenn du das fertig hast hätte ich gerne den schaltplan und den quelltext .. wäre nämlich super für meine lichtorgel *GG* Lichtorgek mit echtem FFT *Lechz*

sven

BID = 46703

MatthiasAsselborn

Stammposter


Avatar auf
fremdem Server !
Hochladen oder
per Mail an Admin

Beiträge: 411
Wohnort: Altenstadt
Zur Homepage von MatthiasAsselborn ICQ Status  

die betonung liegt auf "WENN"

mein display und meine aussteuerungsanzeige
sind nun komplett fertig
alles mit cmos und atmel

nur hab ich noch probleme mit den bandpässen da es keine filter ic s gibt ( oder ich sie nicht beziehen kann )
z.b. LMF380 / NJU 7507 , MSFS 1-6 ect....
und mir keiner so richtig erklärt was das mit dem fft auf sich hat ....


      Nächste Seite
Gehe zu Seite ( 1 | 2 | 3 Nächste Seite )
Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 20 Beiträge im Durchschnitt pro Tag       heute wurden bisher 10 Beiträge verfasst
© x sparkkelsputz        Besucher : 182127598   Heute : 1401    Gestern : 5499    Online : 674        5.10.2024    10:20
2 Besucher in den letzten 60 Sekunden        alle 30.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0431730747223