Hallo,
für eine Projektarbeit im Studium muss ich ein periodisches Analogsignal
im Frequenzspektrum untersuchen. Die digitale Signalverarbeitung soll
mit einem Mikrocontroller und integriertem 12 Bit ADC erfolgen. Dahinter
findet eine FFT statt.
Mir fehlen noch einige Infos und das Verständnis über die FFT in
Mikrocontrollern, um damit arbeiten zu können.
Habt ihr Erfahrungen damit?
Könnt ihr Bücher oder Dokumente vorschlagen, in denen ich mich einlesen
sollte?
Eigenschaften des Analogsignals:
- 0 bis 10 V
- Frequenzen bis max. 180 Hz
- Signalformen: Sinus, Dreieck, Trapez
Eigenschaften des ADC:
- 12 Bit deltasigma
- 200 ksps
Vielen Dank für eure Hilfe!
Speicherdrossel schrieb:> Mir fehlen noch einige Infos und das Verständnis über die FFT in> Mikrocontrollern, um damit arbeiten zu können.
Bitte angeben welche Infos und Verständnis du wohl beherscht. Hast du zB
schon mit einen microcontroller programmiert ? Welches ? Hast du die
mathematische hintergrund und verstehst du voellich wie FFT (und fourier
analyse) funktioniert und hast du eine idee welche resultaten mann
erwarten kann ?
Hast du ein vorschlag von hardware die du benutzen wollst ?
Patrick aus die Niederlaende
Ich habe schon viel mit Mikrocontrollern gearbeitet und fühle mich in
den Sprachen C und C++ sicher. Mit fehlt einfach das Verständnis zur
FFT, hauptsächlich der mathematische Hintergrund.
Als Hardware kommt bei mir wie meistens ein MSP430 zum Einsatz. In
diesem Fall ein MSP430FR5994.
Moin,
Wenn dir die Fouriertransformation nicht so ganz geheuer ist - hier hab'
ich mal Spektrumanalyse ohne Fourier gemacht:
Beitrag ""LED-Spectrumanalyzer"software ohne Fouriertransformation"
Jenachdem, ob du das Spektrum eher linear(fourier) oder
logarithmisch(kaskadierte Filterbank) aufloesen willst...
Gruss
WK
Wo ist das problem?
Du haust die ADC werte in einen pingpong buffer und lässt dann eine FFT
drüberlaufen. Herauszufinden wie man die bufferlänge anhand des
gewünshcten resultats bestimmt ist wohl die aufgabe, das sollst du
lernen.
Für das verständniss der FFT würd ich die DFT anschauen und genau
nachvollziehen. Welcher sin welcher frequenz wird mit was multipliziert
und so. Die DFT ist nur eine auf rechenspeed getrimmte DFT, das prinzip
ist das gleiche.
Wenn du gute note willst hätt ich da einen tip einer DFT die
kontinuierlich resultate liefert ohne jedesmal alles neu zu rechnen.
Falls dein prof begreift was das ist gibts 1+.
> Könnt ihr Bücher oder Dokumente vorschlagen, in denen ich mich einlesen> sollte?
Klaro!
Titel : Butterfly-Algorithmus
Untertitel : Theorie und Praxis der Fourier-Transformation
Autor(en) : Norbert Schaefer, Manfred Bertuch
Redakteur : be
Zeitschrift : c't 8/86, S. 44
Querverweise: siehe 10/86, S. 8
Schlagw�rter: Know-how
Der Artikel erklaert es in epischer Breite. Das konnten damals normale
c't leser verstehen. Ich war damals noch Schlosserlehrling und hab es
mit dem Artikel in Turbopascal implementiert. Im Studium (bei mir
Nachrichtentechnik) kommt das natuerlich auch vor, aber eher etwas
weniger Anwendungsorientiert. .-)
Aber vermutlich gibt es da auch dutzende Buecher drueber.
Olaf
Speicherdrossel schrieb:> Hallo,>> für eine Projektarbeit im Studium muss ich...> Könnt ihr Bücher oder Dokumente vorschlagen,...
Hmm... eigentlich sollte so etwas bereits in deinen
Vorlesungs-Mitschriften stehen.
Was die eigentliche Herangehensweise zur Durchführung bei der schnellen
Fourier-Transformation betrifft, da gibt es eine Menge an Zeugs im
Internet u lesen - von hilfreich bis nonsense. Und die eigentliche FFT
ist bei µC nicht anders als bei anderen Plattformen.
Zum Thema 'Nachlesen' fällt mir im Moment nur die Dsp-Guide ein, such
einfach man danach, es gibt das als PDF zum Ausdrucken und Schmökern.
Ist vielleicht das beste, was man für Grundlagen so findet und ohne
Kosten lesen kann.
W.S.
>für eine Projektarbeit im Studium muss ich ein periodisches Analogsignal>im Frequenzspektrum untersuchen. Die digitale Signalverarbeitung soll>mit einem Mikrocontroller und integriertem 12 Bit ADC erfolgen. Dahinter>findet eine FFT statt.
Die FFT ist eine Erfindung aus dem letzten Jahrtausend, deshalb nimmt
man am besten einen fertigen Algorithmus, damit du dich auf das
eigentliche Problem in der Projektarbeit konzentrieren kannst.
Am besten nimmst du dieses Arduino Framework und besorgst dir eines dort
aufgeführten SM32 Boards:
https://github.com/stm32duino/Arduino_Core_STM32
Dann eine der FFT Libraries laden
https://github.com/kosme/arduinoFFT
und die Firmware an das Problem anpassen.
Sebastian schrieb:> Die FFT ist eine Erfindung aus dem letzten Jahrtausend, deshalb nimmt> man am besten einen fertigen Algorithmus, damit du dich auf das> eigentliche Problem in der Projektarbeit konzentrieren kannst.
Dein Beitrag riecht nach Erziehung zum copy&paste-Künstler.
Bedenke mal, daß das eigentliche Problem beim Studium darin besteht, die
Dinge verstehen zu lernen und nicht, wo man einen fertigen Kram für
ein fertiges Brettl herbekommt.
W.S.
Hallo!
Der Algorithmus von TI übergibt der Funkion fft() ein input-Array mit
den Abtastwerten und gibt die Ergebnisse in komplexer Darstellung in
selbiges Array zurück. Die Real- und Imaginärteile sind hintereinander
gereiht.
Problem gelöst, habe es also hinbekommen.
Gruß
Sehr gut erkannt, es ist ein in place Algorithmus.
(Wie auch immer 'hintereinander gereiht' zu verstehen sein mag.)
"Hinbekommen, also Problem gelöst." Das ist doch erfreulich.
@ 17.05.2022 20:31
Sehr interessanter Kommentar! Auch wenn der Algorithmus aus dem letzten
Jahrtausend kommt.
Sonst könnte man auch z. B. 'Quick Sort' als 'antiquiert' und sehr viele
andere wichtige Algorithmen so bezeichnen...
Niemand wird gezwungen, solche (eigentlich) rekursiven Algorithmen
verstehen & nachvollziehen zu wollen.
Speicherdrossel schrieb:> Eigenschaften des ADC:> - 12 Bit deltasigma> - 200 ksps
Empfehle hier immer kS/s als Einheit, auch wenn man Samples mit Siemens
verwechseln könnte. Es gibt allerdings auch das ebenso komische kSPS.
Das Abtastintervall wird zwar zur Darstellung des Spektrums benötigt,
aber in diesem Zusammenhang würde mich interessieren, wie schnell der
FFT-Code mit wieviel Stützstellen auf einem µC ausgeführt wird. Wieviel
Spektren schafft man also pro Zeit? Käme man an eine Echtzeit-FFT heran
oder brauchte man dazu doch spezielle H/W wie Signal-Prozessoren oder
gar FPGA?
Xeraniad X. (xeraniad)
>@ 17.05.2022 20:31>>Die FFT ist eine Erfindung aus dem letzten Jahrtausend, deshalb nimmt>>man am besten einen fertigen Algorithmus>Sehr interessanter Kommentar! Auch wenn der Algorithmus aus dem letzten
<Jahrtausend kommt.
>Sonst könnte man auch z. B. 'Quick Sort' als 'antiquiert' und sehr viele>andere wichtige Algorithmen so bezeichnen..
Du hast natürlich Recht, Quicksort ist genauso wie die FFT davon
betroffen und man nimmt einfach die fertigen Libraries:
https://github.com/luisllamasbinaburo/Arduino-QuickSort
Xeraniad X. schrieb:> Niemand wird gezwungen, solche (eigentlich) rekursiven Algorithmen> verstehen & nachvollziehen zu wollen.
Die FFT nachzuvollziehen ist ja nun so schwer nicht. Es sind ja nur 2
Dinge, einmal das Prinzip der Filterung mit Sinuswellen um die Signale
in Frequenzen zu zerlegen und dann die Art dem Umsetzung. Ich müsste mir
das mit der butterfly-Bildung allerdings auch wieder ansehen, um es
jemandem erklären zu kennen.
..."nachzuvollziehen ist ja nun so schwer nicht"...,
jedoch habe ich Respekt vor den {nicht trivialen} Leistungen von z. B.
- Gerald Goertzel, 1958 und
- James-William Cooley & John Wilder Tukey, 1965,
die diese Algorithmen {zu dieser Zeit} erarbeitet haben.
Ich möchte solche Algorithmen nicht nur "verstehen", sondern sie
herleiten bzw. z. B. mittels "vollständiger Induktion" bewiesen haben,
bevor ich behaupte, etwas nachvollzogen zu haben.
(& nein, ich werde hierzu nix mehr posten)