Forum: Digitale Signalverarbeitung / DSP / Machine Learning FFT mit ADC und Mikrocontroller


von Speicherdrossel (Gast)


Lesenswert?

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!

von Patrick C. (pcrom)


Lesenswert?

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

von Jonas H. (jonas911)


Lesenswert?

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.

von Dergute W. (derguteweka)


Lesenswert?

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

von Ralf B. (Firma: BöniConsulting) (ralfib)


Lesenswert?

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+.

von Thomas W. (Gast)


Lesenswert?

Jonas H. schrieb:
> Mit fehlt einfach das Verständnis zur
> FFT, hauptsächlich der mathematische Hintergrund.

Dann fang erstmal mit dem einfachen Artikel FFT in der Wikipedia 
(https://de.wikipedia.org/wiki/Schnelle_Fourier-Transformation) an. Der 
ist nicht so schlecht.

Dann DFT (https://de.wikipedia.org/wiki/Diskrete_Fourier-Transformation) 
und wenn es Dir dann noch nicht reicht, 
https://de.wikipedia.org/wiki/Fourier-Analysis

Haengt latuernich empfindlich davon ab, was Du brauchst und welche 
Vorbildung (Mathematik) Du hast.

Gruesse

Th.

von Olaf (Gast)


Lesenswert?

> 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

von Yonas (Gast)


Lesenswert?

Meine Erachtens nach gibt es kein besser Bücher als die vom Richard G. 
Lyons. Die erste Auflage findest Du hier kostenlos: 
https://www.mikrocontroller.net/attachment/341426/Understanding_digital_signal_processing.pdf

Die zweite Auflage findest du auch im Internet einfach googeln!

von Speicherdrossel (Gast)


Lesenswert?

Hallo,

ich habe hier einen Beispielcode von TI zur FFT.

https://dev.ti.com/tirex/wizard/select?devtools=MSP-EXP430FR5994&node=APSKyczf0u6pcLkIZ2fsGQ__IOGqZri__LATEST

Mir ist nicht ganz klar, wo die Ergebnisse der FFT abgelegt werden.
Das Ergebnis einer FFT ist ja eine komplexe Zahl.

So wie ich das sehe, liegen die Ergebnisse nach der Transformation in 
dem input-Array, oder?

Grüße

von W.S. (Gast)


Lesenswert?

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.

von Sebastian (Gast)


Lesenswert?

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

von W.S. (Gast)


Lesenswert?

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.

von Speicherdrossel (Gast)


Lesenswert?

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ß

von Xeraniad X. (xeraniad)


Lesenswert?

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.

: Bearbeitet durch User
von dfIas (Gast)


Lesenswert?

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?

von Markus (Gast)


Lesenswert?

Unter https://www.fftw.org/ gibt's genug zu lesen.

von Sebastian (Gast)


Lesenswert?

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

von He. (Gast)


Lesenswert?

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.

von Xeraniad X. (xeraniad)


Lesenswert?

..."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)

: Bearbeitet durch User
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.