Arduino FFT

Ich habe vor, aus einem Analogsignal (0...5V) das Frequenzzpektrum zu untersuchen. Die erwartete Frequenz liegt zwischen 50 und 300Hz. Der Analogwert soll mit einem Timer-Interrupt (1ms pro Abtastwert über 8,192 Sekunden; entspr. 2^13 oder 8192 Sampelwerte) gesampelt und in einem Array abgelegt werden. Danach möchte ich von diesem Array eine FFT machen und Hauptfrequenz, max. Amplitude bei dieser Frequenz, sowie den Mittelwert des Sampel-Arrays ausrechnen.

Könnte dies mit einem Arduino zeit- und speichertechnisch abgedeckt werden? Wie ist die max. mögliche Sampelfrequenz des ADC? Hat jemand so etwas schon mal probiert oder Erfahrungen mit Spektrumsanalyse bzw. FFT gemacht?

Ich habe auch schon überlegt, einen TEENSY 3.5 oder 3.6 einzusetzen. Der TEENSY3.6 wird ja mit 180 MHz getaktet. Dort ist die Schwachstelle aber das Multiplexen der 24 AI mittels zwei ADC.

Im Voraus vielen Dank.

Nein Für ein Array von 8192 Int werten brauchst Du 16kRAM. Nur der Arduino DUE hat mindestens soviel. Teensy ist sicher eine gute Wahl. Wenn Du mehr analoge Eingänge brauchst dann nimm einen Analogmultiplexer vom Typ 74HC4067.

Grüße Uwe

Beim TEENSY könnte ich ja sogar den RAM-Inhalt eines kompletten Sampels (8192 INT-Werte) nach Abschluss der Messung auf eine SD-Karte (Sockel ist schon auf dem TEENSY vorhanden) umkopieren. Danach das ARRAY mit den Messwerten der nächsten Messung (Kanal 2) füllen und wieder umkopieren. Bis alle Messwerte auf SD liegen. Danach zurück in den RAM und pro Kanal die FFT des ARRAYs ausführen. Da habe ich eben dann nur alle 2 Minuten (10 mal 8,x Sekunden messen und umkopieren, zurückkopieren, FFT ausführen und Werte ausgeben) gültige Werte, ich denke aber, das sollte reichen. Leider gibt es zum TEENSY bisher kaum Literatur bzw. Erfahrungen.

Hi

In einer Millisekunde vergeht für den µC schon eine ganze Menge Zeit.
Wenn der eigene Speicher nicht ausreicht: FRAM, gibt’s auch mit SPI, wenn der angebotene Speicher oder die Geschwindigkeit trotzdem nicht ausreicht.
Selber habe ich hier I²C FM24C256 (256kbit => 32kB).
Bisher aber auch nur ‘sinnlos’ vollgeschrieben bzw. ausgelesen …

MfG

Edit
256kbit = 32kB … korrigiert

Hallo,

DUE ist eine gute Wahl für Ihr Projekt :)

Könnte dies mit einem Arduino zeit- und speichertechnisch abgedeckt werden? Wie ist die max. mögliche Sampelfrequenz des ADC? 1 Msps max

Hat jemand so etwas schon mal probiert oder Erfahrungen mit Spektrumsanalyse bzw. FFT gemacht?

https://github.com/dujianyi/ardFFT

Grüße