Forum: Digitale Signalverarbeitung / DSP / Machine Learning Dauer FFT berechnen


von Skywalker88 (Gast)


Lesenswert?

wenn ich eine 512 Punkt FFT ausführe, wie kann ich die Zeit berechnen 
wie lange der µC dafür benötigt ?? klar hängt mit dem Takt zusammen und 
sonst ?? Ich glaube ich stell mich heute ein wenig dämlich an

: Verschoben durch Admin
von Benedikt K. (benedikt)


Lesenswert?

Skywalker88 wrote:
> Ich glaube ich stell mich heute ein wenig dämlich an

Ja. Die Frage lässt sich so nämlich nicht beantworten, ohne einen 
konkreten Prozessor oder eine konkrete Implementierung.
Hier mal 2 Beispiele:
http://elm-chan.org/docs/avrlib/avrfft.zip
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en023598

von Gast (Gast)


Lesenswert?

Nicht nur mit dem Takt,
sondern auch mit der CPU-Type/-Architektur
und der Software.
So pauschal ist die Frage also gar nicht
zu beantworten.
Oder vielleicht doch: es hängt mit allem
zusammen. :-)

von Johnny (Gast)


Lesenswert?

> wenn ich eine 512 Punkt FFT ausführe, wie kann ich die Zeit berechnen
> wie lange der µC dafür benötigt ??

Wenn Du ein Oszilloskop hast, dann gehts ganz einfach. Setze vor der 
Berechnung einfach ein I/O. Nach der Berechnung setzt Du das I/O wieder 
zurück. Mit dem Oszilloskop brauchst Du jetzt nur noch messen, wie lange 
der Puls ist und weisst sehr genau, wie lange die Berechnung dauert.

Alternative, falls Du kein Oszilloskop hast: Verwende einen internen 
Timer. Resette ihr vor der FFT-Berechnung und nach der Berechnung liest 
Du den Zählerstand ab. Mit dem Zählerstand lässt sich dann die Zeit 
einfach berechnen.

von Allegron S. (allegron)


Lesenswert?

Hallo Leute,

könnt ihr mir vielleicht sagen, wie lange ich für eine FFT brauche bei 
einer Abtastung von 100kHz, einem 16bit AD-wandler und einem Messzetraum 
von 3s.
Das alles soll ein µP mit 16 oder 32 Mhz von Atmel machen.

von Michael (Gast)


Lesenswert?

Du hast aber schon oben gelesen, dass das auch (nicht nur) von der 
Implementierung der FFT abhängt? Das kann man nicht so einfach 
beantworten.

von Kevin K. (nemon) Benutzerseite


Lesenswert?

du willst eine FFT über 300.000 Messwerte machen? schonmal drüber 
nachgedacht, dass du die Messwerte nicht mal so eben in den RAM 
reingequetscht bekommst?

von Anja (Gast)


Lesenswert?

Interessanter Ansatz: 100kHz * 3s = 300000 Messwerte a 16 Bit = 600000 
Byte RAM alleine für die Messwerte (vorausgesetzt sie sind "real" und 
nicht "complex"). Und das alles in einem Atmel mit 16-32 MHz.

von Allegron S. (allegron)


Lesenswert?

Ja Leute und das viermal, weil ich vier AD habe. Habe ausgerechnet das 
ich 2MB RAM bräuchte und der µP alleine 6,6 µs über den SPI benötige um 
den RAM zu füllen. Also bleiben mir sage und schreibe 3,4 µs bevor die 
nächsten Werte kommen.
Leider muss die FFT komplex sein weil ich die Phasenverschiebung der 
einzelnen signale untereinader brauche... kann ich nicht nur die 
komplexen werte benuten und die realen wegfallen lassen?
Und ja wenn es geht einen µP von Atmel weil ich nur einen debuggertool 
von AVR hab. Wenn ihr andere ideen habt oder Erfahrungswerte, wie ich 
die nötige rechenleistung,zb über einen multiplexer oder ähnliches 
extern auslagern könnte, dann her damit :-)

von Benedikt K. (benedikt)


Lesenswert?

Allegron S. schrieb:

> Und ja wenn es geht einen µP von Atmel weil ich nur einen debuggertool
> von AVR hab.

Kurz gesagt: Vergiss es.

Ein dsPIC benötigt für eine 256 Punkt FFT etwa 20000 Takte. Für 300000 
Punkte bräuchte er als rund 20 Millionen Takte, was etwa 0,5s bei 40MHz 
entspricht.

Ein AVR benötigt für eine 256 Punkt FFT etwa 250000 Takte. Für die 
300000 Punkte bräuchte er also 275 Millionen Takte. Bei 20MHz wären das 
14s.

Damit kannst du in etwa abschätzen was du für einen Controller brauchst, 
vor allem wenn das ganze 4x parallel ablaufen soll...

Dazu kommt allerdings noch das Problem, dass die Routinen bei beiden 
Controllern auf den internen RAM optimiert sind. Mit externen RAM wird 
das ganze also nochmal deutlich langsamer.

von Allegron S. (allegron)


Lesenswert?

Danke ... das bedeutet das ATmega wohl hier definitiv fehl am Platz ist
Die 0,5s sind zudem zu langsamm. Hast Du eine idee wie ich das am besten 
realisieren kann?
Mit FPGA und DSP hab ich nicht so die Ahnung oder hat da jemand schon 
etwas gemacht in dieser Richtung?

von Benedikt K. (benedikt)


Lesenswert?

Muss es denn unbedingt ein µC sein?
Die einfachste Lösung wäre die Daten in einen PC zu schaffen und den 
rechnen zu lassen. Der sollte dies dann in kürzester Zeit erledigen 
können.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

FFT über 300000 Punkte? Ich bezweifle dass das zu irgend etwas gut ist. 
Erklär doch erst mal was du eigentlich erreichen möchtest.

von Purzel H. (hacky)


Lesenswert?

Ich wuerd mal mit einem AVR32 beginnen und die FFT ueber eine sinnvolle 
Anzahl Punkte machen. Worum geht es denn ?

von Allegron S. (allegron)


Lesenswert?

Ein µP muss es schon sein, denn des PC ist schon mit Labview und der 
Kreuzkorrelation gut beschäftigt.

Wichtig ist, das die FFT sogut wie in Echtzeit erfolgt und ohne 
Interrups vom PC. Die Messdauer von 3s muss schon sein und die 
problematik wurde so von Comsol theoretisch durchgespielt.

Abtastung von 300kHz deswegen, weil das Ausgangssignal im Bezug auf das 
EIngangssignal sich recht schnell verändert, nicht kosntant bleibt und 
die Phasenverschiebung soll in Beziehung untereinander gebracht werden. 
Recht verzwickt :)

Lese gerade das Datasheet vom AT94KAL FPSLIC (AVR mit FPGA). Hat jemand 
damit schon Erfahrungen gemacht? Verwendet oder die Simulationsprogramme 
für den FPGA angewendet?

Es muss leider auch ein 8-bit µP sein da ich nur das AVR debuggertool 
davon habe. Bin da leider in meinen Randbedingungen etwas eingeschränkt.

von Mark B. (markbrandis)


Lesenswert?

Allegron S. schrieb:
> Es muss leider auch ein 8-bit µP sein da ich nur das AVR debuggertool
> davon habe. Bin da leider in meinen Randbedingungen etwas eingeschränkt.

Die Tools sollten sich nach der Aufgabe richten. Man hämmert Nägel ja 
auch nicht mit dem Schraubendreher ein. Selbst wenn es in manchen Fällen 
klappen könnte, wenn man einen großen Schraubendreher mit flachem Ende 
hat und ihn herumdreht ;-)

von Simon K. (simon) Benutzerseite


Lesenswert?

Allegron S. schrieb:
> Leider muss die FFT komplex sein weil ich die Phasenverschiebung der
> einzelnen signale untereinader brauche... kann ich nicht nur die
> komplexen werte benuten und die realen wegfallen lassen?

Wie rechnet man denn die Phasenverschiebung (ArcTan(Komplex/Real)) ohne 
Realteil aus?

von Allegron S. (allegron)


Lesenswert?

Ich nehme die Alternative mit dem umgedrehten Schraubenzieher.

Ich weiß es ist schlecht, aber ich bekomme einfach keine andere 
Entwicklungsumgebung von meinem Fachbreich. Würde auch liebendgern einen 
AVR32 mit 64-bit SPI-Bus programmiere, aber ich sehe da wenig 
Bereitschaft zu.

Ist aber nicht so und deswegen wäre es schön wenn mir jemand seine 
Erfahrungen in bezug auf AVR mit FPGA berichten könnte.

@ Simon K.: Wahrscheinlich garnicht ohne Realteil, danke für den 
Hinweiß. Kommt mal vor wenn man sich schon Stunden damit 
auseinandergesetzt hat ;-).

von D. B. (deadbuglabs)


Lesenswert?

FFT im FPGA mit 4096 Punkten habe ich gemacht. Pro Taktzyklus ein Punkt. 
Bei 10 MHz bräuchtest Du also 400µS. bei 100MHz nur noch 40 µS. Du 
könntest allerdings alle 4 Kanäle parallel abarbeiten, einen ausreichend 
großen FPGA vorausgesetzt.

300000 Punkte sind verdammt viel. Sollte das überhaupt machbar sein, 
bräuchtest Du 300000 Takte, also bei 1MHz 0,33 Sekunden. bei 100 MHz 3 
Millisekunden.

So gesehen, nicht machbar. Ohne Signaleigenschaften und Vorhaben kann 
Dir wahrscheinlich keiner weiterhelfen.

von Gebhard R. (Firma: Raich Gerätebau & Entwicklung) (geb)


Lesenswert?

Mit 300000 Punkten kann man sowieso keine FFT rechnen, müssen immer 2^n 
Punkte sein. Egal, die Anforderung ist auf jeden fall zu überdenken, ich 
fürchte, daß das nicht mal ein Blackfin schafft. Mit deinem AVR wirst du 
ebenfalls nicht mal die Rohdaten zum PC schaufeln können.
Da hat wohl wer nicht nachgedacht.

Grüße

von Mark B. (markbrandis)


Lesenswert?

Wenn das Ganze eine Studienarbeit, Diplomarbeit etc. ist, dann muss es 
dazu auch eine schriftliche Beschreibung geben. Wie wäre es, diese mal 
hier zu posten? Namen von Personen/der Hochschule kann man ja 
herauslöschen, wenn man will.

von Allegron S. (allegron)


Lesenswert?

Hallo Leute,

das ganze ist eine Projektarbeit, die wiederum ein Teil vom 
Gesamtprojekt ist. Es sollen vier Temperatursignale gemessen und ihre 
Phasenverschiebung untereinander mittels FFT bestimmt werden. Die 
Eingangssignale werden jeweils von Simulink und Mathlab individuel 
gerechnet, sogesehen als arbitrary.

Die AD Wandler sind jeweils 16 bit, die FFT soll auf einem µP erfolgen 
und dann per ENC zum gebracht werden. Der µP richtet sich leider nach 
dem debugger aus, denn wir haben nur bei uns im Fachbreich einen 8-Bit 
von AVR.

Die Taktgeschwindigkeit begrenzt den SPI. Bei 25MHz und 2 AD sind das 
1024 kbyte die er in 1,28µs (mit 262144=2^18=4^9 Punkten) transportieren 
kann.

Meine Überlegung wäre nun mit einen FPGA zu arbeiten von AVR. Würde den 
AT94K40AL nehmen, einen passenden Algorithmus wie Radix-4 und einer 
Blocklänge von 16 parallel einlesen.

@ D.B.: Kannst Du mir sagen welchen µP Du benutzt hast, welchen 
Algorithmus und könntest Du mir den schicken? Ich müsste pro Punkt FFT 
unter 10µs kommen.
Das sollte der FPGA doch schaffen, es sind doch nur 2*16 und er hat 
internen Multiplier. Datasheet ist bei Atmel, AT94K40AL

@ all:
Meine Idee ist es den FPGA soweit so konfigurieren, das er die FFT der 
beiden AD wandlers jeweils direkt zwischen dem Abtasten errechnet und 
vom ENC verschickt wird.
Dann ist die anzahl der Punkte im Messzeitraum vollkommen egal. Das 
sollte doch vielleicht lösbar sein.

Vielen Dank erstmal für die ganzen Infos und ja ich weiß das ganze ist 
der reine Wahnsinn, vor allem würde ich gerne einen µP wie AVR32, DSP 
oder von Silicon Labs nehmen. Dafür haben wir aber leider nicht die 
Boards oder die Tools und ich bin froh das ich keine Kreuzkorrelation 
machen muss ;-)

von Wolfgang M. (womai)


Lesenswert?

> Ein dsPIC benötigt für eine 256 Punkt FFT etwa 20000 Takte. Für 300000
> Punkte bräuchte er als rund 20 Millionen Takte, was etwa 0,5s bei 40MHz
> entspricht.
>
> Ein AVR benötigt für eine 256 Punkt FFT etwa 250000 Takte. Für die
> 300000 Punkte bräuchte er also 275 Millionen Takte. Bei 20MHz wären das
> 14s.

Selbst diese Abschaetzung ist leider VIEL zu optimistisch (genauer 
gesagt falsch); der Rechenaufwand einer FFT steigt nicht linear mit der 
Anzahl N der Messpunkte (wie oben angenommen), sondern ungefaehr mit 
N*log2(N). Wie oben bereits erwaehnt braucht normale FFT auch eine 
Potenz von 2 als Datensatzgroesse, ich nehme mal 256K (=262144) als 
naechste Naeherung fuer 300000. Unter der Annahme dass die angegebenen 
Taktzahlen fuer 256 stimmen:

256*log2(256) = 2048

262144*log2(262144) = 4718592

dsPIC:

20000 Takte * (4718592/2048) ~ 46 Millionen Takte, d.h. ca. 1 sec bei 40 
MHz.

Mal ganz abgesehen vom gigantischen Speicherbearf fuer die 
FFT-Transformation eines so grossen Datensatzes, das sprengt vermutlich 
jedes Mikrocontrollersystem; wohl besser, die Daten auf einen schnellen 
PC zu schaufeln und dort zu bearbeiten. (oder noch besser, ein grosses 
FPGA it ausreichend RAM, aber das klingt nach "etwas" Aufwand).

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

- 100 kHz Abtastrate
- 300000 Punkte-FFT in 3.4 µs
...und das um die Zeitverschiebung zwischen Temperatursignalen zu 
messen? Entweder ist das ein Witz, es geht um eine äußerst ungewöhnliche 
Spezialanwendung, oder die Spezifikationen sind ganz einfach Mist. Ich 
tippe auf letzteres. In jedem Fall ist das mit den hier im Thread zur 
Schau gestellten Kenntnissen nicht umzusetzen.

von Allegron S. (allegron)


Lesenswert?

Hallo, ich glaube da wurde etwas falsch verstanden.

Es sollen nicht 300.000 Werte/Punkte in 3,4µs zur FFT umgewandelt 
werden, sondern nur ein oder zwei Punkten.
Die 300.000 Punkte entstehen nur über den Messzeitraum von drei Sekunden 
und das lässt sich varieren.
Kann ich auch zwei FFT gleichzeitig ablaufen lassen?
Was ich meine, ist mit dem FPGA im AVR möglich zwei Punkte á 16 bit mit 
FFT zu machen innerhalb diesen 3 bis 8µs ?

von D. B. (deadbuglabs)


Lesenswert?

Mit welcher Frequenz ändern sich denn die Temperatursignale?

von Allegron S. (allegron)


Lesenswert?

Das sind Temperaturimpulse mit variierenden Amplituden und Breiten.
In diesem Sinne keine kontinuierlichen Frequenzen, dazu kommt das die zu 
messenden Temperaturimpulse unterschiedlich abweichen zum 
Eingangsimpuls. Das heißt die Übertragungsfunktion verändert sich und 
deswegen die hohe Abtastung, damit man jede kleinste änderung erfassen 
kann.

von Jay J. (webchen)


Lesenswert?

ich unterstütze ihn mal, denn ich arbeite mit ihm an den Projekt.

Die Temperaturen können sich ändern, müssen aber nicht.

Die Temperaturen ändern sich jeweils auch mit 100kHz.

Was bei mir im kopf noch rumschwirte war folgende Frage: Ist es 
vielleicht möglich die FFT während des Betriebs, quasi über sagen wir 
mal 15 Messwerte zu berechnen?
Kann man dann anschließend dann immer weiter machen, so immer über 
nennen wir das mal "Pakete", sprich alle 15 Messwerte eine FFT ?

Das würde das Datenvolumen klein halten, und die berechnungdauer 
verkleinern. So jedenfalls mein Gedankenweg. Lieg ich damit richtig?

von Michael O. (mischu)


Lesenswert?

Mal so eine Frage:
Warum benötigt der PC zur Berechnung der Kreuzkorrelation Spektraldaten?
Ich dachte, dass die Kreuzkorrelation zwischen zwei Zeitsignalen 
erfolgt?!
http://de.wikipedia.org/wiki/Kreuzkorrelation

Reicht es denn nicht aus, wenn der Atmel quasi einen Datenpuffer (FIFO) 
darstellt und mit voller Geschwindigkeit sampelt? Die Korrelation macht 
eh der Rechner - dann ist doch nur das I/O zu realisieren.

von Gebhard R. (Firma: Raich Gerätebau & Entwicklung) (geb)


Lesenswert?

>Die Temperaturen ändern sich jeweils auch mit 100kHz.

Wie geht das??? Explosion einer Atom-Bombe????

von Mano W. (Firma: ---) (manow)


Lesenswert?

Gebhard Raich schrieb:
>>Die Temperaturen ändern sich jeweils auch mit 100kHz.
>
> Wie geht das??? Explosion einer Atom-Bombe????

Würd mich dann aber auch mal interessieren.

Da passt doch was nicht: einmal mit 100kHz abtasten und das zu messende 
Signal hat die gleiche Freq.

von Mark B. (markbrandis)


Lesenswert?

Wie gesagt, die komplette Aufgabenbeschreibung hier posten. Ansonsten 
artet der Versuch, Hilfestellung zu geben, langsam in Zeitverschwendung 
aus.

von Stefan Kunz (Gast)


Lesenswert?

Ich muss Mano Wee recht geben bei einem Signal von 100kHz brauch man 
2,5x Abtastrate also 250kHz. Wenn man nach "Industriestandart" geht 
sollte man die 10x, also 1MHz Abtastrate, nehmen um das Signal 
rekonstruieren zu können.

Wie schon erwähnt ein AVR ist damit überfordert allein weil er keinen 
16bit Multipizierer hat. Ein DSP oder Cortex-A8 könnte das packen.

von Mark B. (markbrandis)


Lesenswert?

Stefan Kunz schrieb:
> Ich muss Mano Wee recht geben bei einem Signal von 100kHz brauch man
> 2,5x Abtastrate also 250kHz.

Herr Nyquist sagt aber 2 und nicht 2,5 ;-)
Die Frage ist, ob 100 kHz die höchste vorkommende Frequenz in dem 
Ursprungssignal ist. Anscheinend ja? Dann kommt es, wie Ihr schon sagt, 
nicht hin wenn man mit der gleichen Frequenz abtastet.

von Wolfgang M. (womai)


Lesenswert?

Herr Nyquist sagt 2, aber nur, wenn der Datensatz unendlich lang ist :-) 
Fuer endlich lange Datensaetze braucht man mehr. Das beste, was man so 
in der Praxis sieht, ist ca. 2.5 - z.B. Tek- oder Agilent-Oszilloskope. 
Die verwenden aber trickreiche digitale Filter (clever modifiziertes 
sin(x)/x), damit es auch praktisch funktioniert.

von Mano W. (Firma: ---) (manow)


Lesenswert?

> Herr Nyquist sagt aber 2 und nicht 2,5 ;-)

Reale Filter haben keine beliebige Steilheit. Die Grenzfrequenz ist das 
1,28-fache der gewünschten Grenzfrequenz (Dämpfung um 80 dB) => 
Abtastung mit 2,56-fache der gewünschten Grenzfrequenz.

von Mark B. (markbrandis)


Lesenswert?

Okay. Dann hätten wir also in diesem Beispiel eine Abtastfrequenz von 
256 Kilohertz. Und das, wo doch die Anforderungen auch so schon sehr 
sportlich sind ;-)

von Mark B. (markbrandis)


Lesenswert?

Tja, da kam dann wohl nix mehr :-(

Wenn man sieht, wie viele Leute hier nach Hilfe fragen, aber in der 
Beschreibung des Aufgabenstellung große Lücken lassen, dann möchte man 
fast um eine Vorlesung in "Germanistik für Ingenieure" bitten. 
Schwerpunkte: Textverständnis, Schilderung von Sachverhalten, Aufsätze 
und Hausarbeiten über "Wie man ein Problem richtig beschreibt"...

von Helmut S. (helmuts)


Lesenswert?

Mark Brandis schrieb:
> Tja, da kam dann wohl nix mehr :-(
>
> Wenn man sieht, wie viele Leute hier nach Hilfe fragen, aber in der
> Beschreibung des Aufgabenstellung große Lücken lassen, dann möchte man
> fast um eine Vorlesung in "Germanistik für Ingenieure" bitten.
> Schwerpunkte: Textverständnis, Schilderung von Sachverhalten, Aufsätze
> und Hausarbeiten über "Wie man ein Problem richtig beschreibt"...

Vielelicht war es ja nur ein Hobbyelektroniker. Da muss man etwas 
toleranter sein. An einen angehenden Ing. darf man natürlich höhere 
Ansprüche stellen.

von Allegron S. (allegron)


Lesenswert?

Hey Leute, jetzt entspannt euch erstmal und es tut mir leid das ich mich 
solange nicht gemeldet habe, aber ich bin halt auch recht busy im 
Moment.

Erstens, ich bin im 5 Semster und studiere Elektrotechnik und 
Informationstechnik B.sc., da hat man auch noch nicht so die Ahnung und 
man erarbeitet sich das meiste noch.
Zweitens kann ich nicht so viel über das Projekt sagen, weil das ein 
Teilprojekt ist, das wiederum ein Teil der Arbeit von zwei Doktoranten 
ist und wird von der wissenschaftlichen Forschungsstiftung unterstützt. 
Es erübrigt sich also, das ich hier keine genauere Details gebe, zudem 
man es schon bemerkt haben könnte, das man nicht ohne Grund das 
komplette Thema breit tritt.
Also verzeiht mir das ich nicht alles gesagt habe und kann.

Zum Thema der Problembeschreibung kann ich nur sagen, dass einige Leute 
meine Beiträge wohl etwas besser lesen sollten und auch ALLE Beiträge. 
Zudem habe ich erstmal ganz allgemein mit der Frage angefangen, wie 
lange man bei einer Abtastung von 100kHz mit einem 16bit AD-wandler 
braucht, um  eine FFT auszurechnen. Wenn ich die Antwort gewusst hätte, 
bräuchte ich sie hier nicht stellen und ich bin froh das mir soviele 
geantwortet und verschiedene Hinweise gegeben haben. Dieses Forum ist 
echt der HAMMER!

Jedenfalls fasse ich nochmal das zusammen was ich mit euch und so 
gelernt habe und verbessert mich wenn ich falsch liege.

Um eine FFT mit einem sinnvollen Algorithmus zu rechnen, als 
Butterflyeffekt braucht man eine 2^n oder 4^n oder eine 8^n Abtastrate. 
Das hat was mit dem RADIX Algorithmus (siehe wiki) zu tun. Bei 4 und 8 
variiert man nur die Blocklänge, zb bei 4 kann man Blöche der Länger 4, 
16, 64, 256, 1024, 4096 benutzen. Das spart zusätzlich noch Zeit.
Ursprünglich wollte ich 100kHz nehmen, bei einer Messdauer von 1s bis 
3s, was eine Anzahl der Messpunkte bei nur einer Sekunde von 100.000 
Werte entsprechen würde. Schlechte Anzahl für das RADIX system, also 
nehmen wir theoretische als maximale Abtastfrequenz 2^16 oder 4^8 =65536 
Werte. Das macht eine Frequenz von 65536Hz=65,5kHz.

Hinzu kommt leider noch die O()= N*log2(N) Notation, welche den 
nichtlinearen Rechenaufwand einer FFT bei hohen Werten wirklich 
bestimmt. Hier ein großen Dank Wolfgang M., weil ich das vorher noch 
ganricht wusste und nur kannte aus Operating systems and 
computernetwork.
Die Rechnung mache ich hier nicht nochmal, weil sie zu einem oben gut 
erklärt ist und ich morgen das sowieso nochmal ausarbeiten muss für 
meinen Prof. Kann das aber gerne als Datei anhängen für alle 
Interessenten.

Dann der logische Hinweiß von Simon K, das ich um den Winkel einer 
Phasenverschiebung auszurechnen, Realteil und Komplex brauche. Lag wohl 
daran das es schon extrem spät war und den Wald vor lauter Bäume nicht 
mehr sah.

Nun kommen wir zur SPI und der Dauer für die FFT. Da muss ich mich bei 
Kevin, Anja und Bendikt bedanken, das sie ein paar Rechenbeispiele 
gezeigt haben und ich recht gut verstanden habe wie das zusammen hängt. 
Da hat auch Wolfgang M. wieder ein super Beispiel mit dem DsPIC 
gebracht, was mir vollkommen klar werden ließ, wie ich das zu rechnen 
haben. Ein großes Dankeschön, das war ein Top Beispiel und Vergleich.

Es wurde mir also klar das ein AVR mit 20MHz einfach keine Chance hat, 
auch nur im Ansatz in Realtime eine FFT durchzuführen. Der SPI ist zu 
langsamm, weil der mit der Taktgeschwindigkeit gekoppelt ist und alleine 
die Zeit die benötigt wird um die FFT auszurechnen und dann noch in 
einem externen RAM zu speichern, welcher ca 8MB haben müsste...das ist 
einfach unmöglich. Selbst wenn ich einen internen Multiplexer gehabt 
hätte, würde mir das nichts bringen, weil ich mit meinem Programmertool 
nur 8-Bit Strukturen programmieren kann.

Jetzt ist man an einem Punkt, wo man sich überlegt was man als 
Alternative machen könnte. Die Möglichkeit zu finden, das Problem 
trotzdem noch zu lösen und das bei den gegebenen Rahmenbedingungen. 
Nicht einfach den Kopf in den Sand zu stecken, zu schreien das geht 
alles nicht und dann nicht wirklich versuchen an diesem Problem mit 
weiter mit zu denken.
Alternativen braucht man dann und andere Wege,  bzw Trick, das finde ich 
macht einen pipecleaner aus (für alle die was mit dem Begriff anfangen 
können).
Da finde ich hat D.B. mir mit dem FPGA super Infos gegeben und ich 
konnte noch eine andere Sache ausprobieren.
Nachdem ich mit Atmel einige Infos ausgetauscht hatte, ist es möglich 
mit dem integriertem FPGA beim AT94K40 eine FFT innerhalb von 10µs durch 
zu führen. Der FPGA arbeitet mit 100MHz und hat über 40.000 Gatter. Die 
Entwicklungssoftware hab ich mir runter geladen und ein paar Gatter 
konfiguriert. Schon eine recht komplzierte Sache, aber nicht unmöglich!

Wie ihr seht habe ich wirklich alles Versucht. Werde das morgen in 
meinem Bericht ausarbeiten und dann einreichen.

Aktuell sieht es so aus, das wir die Werte einfach nur mit dieser 
genannten Abtastfrequenz über den Ethernetworkcontroller in das Netzwerk 
einbinden und die FFT in Labview rechnen. Das ist zwar ärgerlich, aber 
Aufgrund das alles andere den Zeitrahmen extrem sprengt und bei National 
Instrument eh ein paar FGPA Schlitten bestellt sind, sagt mein Bereich 
das wir diverse andere Applicationboards oder entwicklungsumgebungen 
nicht kaufen werden.

Ich hoffe, das ich eure Fragen soweit umfassend beantwortet habe und 
danke euch für die vielen Antworten!

Bestimmt werde ich noch einige Fragen haben zu anderen Themen, deswegen 
bitte ich euch diesen Artikel als positives Feedback zu betrachten und 
lasst die destruktiven Kommentare, welche zb. am Ende erfolgten einfach 
weg. Klar kann ich einige verstehen die neugierig sind, aber man kann 
dann nochmal objektiv genauer nach Fragen. Zudem ich mich von einer 
Person schon recht angegriffen fühle und das ist nicht okay. Das könnte 
man besser machen ;-)

Danke euch, habt noch einen schönen Abend und ich arbeite hier mal 
weiter.

von Michael L. (Gast)


Lesenswert?

Hallo Allegron,

ein wenig mehr hättest Du wahrscheinlich gelernt, wenn Du uns gesagt 
hättest, was Du eigentlich machen willst.

Die Aufgabe, Temperaturdaten mit 100kHz abzutasten, mutet sonderbar an, 
da Temperaturänderungen meist sehr viel langsamer vonstatten gehen. Es 
kann natürlich sein, daß Du die außergewöhnlichste Spezialanwendung von 
einer Spezialanwendung hast. Viel wahrscheinlicher ist aber, daß Dein 
Betreuer von dem Thema keine Ahnung hat, oder daß Du ihn gründlich 
mißverstanden hast.

Es bringt Dir gar nichts, wenn wir Deine halbgare Lösung zuende kochen 
und würzen sollen, wenn Du noch nicht einmal sagen kannst, was sich im 
Topf befindet.


Gruß,
  Michael

von Mark B. (markbrandis)


Lesenswert?

Hm, könnte es vielleicht um eine Explosion gehen oder sowas in der Art? 
Ich versuch mir gerade etwas vorzustellen, bei dem sich Temperaturen so 
schnell ändern können.
Bei einer Explosion freilich bräuchte man schon ziemlich robuste 
Sensoren ;-)
Vielleicht wird das Ganze aber auch aus sicherer Entfernung mit einem 
Infrarot-Detektor abgetastet, oder so... hm.

von Wolfgang M. (womai)


Lesenswert?

Also ich hab fuer's Diplom an einer sogenannte Drahtexplosions-Apparatur 
gearbeitet - im wesentlichen ein Draht, der durch Entladung aus einer 
riesigen Kondensatorbank innerhalb von Mikrosekunden auf mehrere tausend 
Grad aufgeheizt wird. Da bekommt man also durchaus so schnelle 
Temperaturaenderungen im Labor auch ohne spektakulaere "richtige" 
Explosion. Allerdings erfolgt hier die Temperaturmessung ueber 
Aufzeichnung der Strahlungsintensitaet und nachfolgendes Postprocessing 
der Daten, also nicht in Echtzeit.

von Stefan H. (stefanhennig)


Lesenswert?

> Zweitens kann ich nicht so viel über das Projekt sagen, weil das ein
> Teilprojekt ist, das wiederum ein Teil der Arbeit von zwei Doktoranten
> ist und wird von der wissenschaftlichen Forschungsstiftung unterstützt.
> Es erübrigt sich also, das ich hier keine genauere Details gebe, zudem
> man es schon bemerkt haben könnte, das man nicht ohne Grund das
> komplette Thema breit tritt.
> Also verzeiht mir das ich nicht alles gesagt habe und kann.

Wenn das irgendetwas ist, das von irgendeiner (nicht der) 
Forschungsstiftung gefördert wird, muss es einen entsprechenden Antrag 
auf Fördermittel gegeben haben. Und wenn diese Stiftung nicht irgendwas 
privates ist, ist dieser Antrag öffentlich, spätestens dann, wenn die 
Mittel genehmigt sind (kenn's nur von der DPG). Also lass die 
Geheimniskrämerei. Du wurdest im Forum übrigens nicht gebeten, die 
gesamte Geschichte der Metrologie auszubreiten/breitzutreten, sondern 
einfach nur darum, mal eine Projekt-/Aufgabenbeschreibung als Datei 
anzuhängen. Diese Projektbeschreibung gibt es, sonst gäb's keine 
Förderung.

Ich bin kein Meister der Zeitreihenanalyse, aber ich denke mal, 
grundsätzlich wären Angaben zu interessanten Frequenzbereichen und 
Auflösungen auf der Frequenz- und Werteachse sinnvoll.  Daraus müsste 
sich eine sinnvolle Zahl der FFT-Punkte bestimmen lassen und so weiter, 
und so weiter.

Dass die Temperaturen mit 100kHz gesampled werden bedeutet ja noch 
nicht, dass sie auch mit dieser Rate verarbeitet werden müssen. 
(Dezimierung/Downsampling, heißt das Stichwort, wenn ich mich recht 
erinnere). Und was mit dem Frequenzspektrum, das Du errechnen willst, 
geschehen soll ist auch nicht klar, wäre aber nützlich zu wissen.

Wenn's Dir übrigens vorkommt, als wollten wir Dich hier über Deine 
Arbeit aushorchen, dann ist da auch was dran. Ich zahl Steuern (und bin 
zahlendes DPG-Mitglied). Man will doch auch was sehen für sein Geld. ;-)

von Chris S. (hondaracer1)


Lesenswert?

> Wie rechnet man denn die Phasenverschiebung (ArcTan(Komplex/Real)) ohne
Realteil aus?

Das mit dem woertchen komplex haben hier wohl einige missverstanden
arctan( im(z)/re(z) )

complex = re(z) + j*im(z)


Die Projektbeschreibung haette mich auch mal interessiert, denn deine 
angaben zur Projektarbeit teilweise sehr seltsam ich versteh allerdings 
warum du das hier nicht posten willst, haette ich bei meiner 
Projektarbeit auch nicht so einfach gemacht.

Du hast geschrieben das du eine FFT in echtzeit ueber ca.3sekunden 
machen willst/musst/sollst. Wen interessiert der Zeitraum wenn das eh in 
echtzeit erfolgen soll? Ausser du willst 3 sekunden lang daten sammeln, 
und dann die fft machen waehrend du wieder neue Daten sammelst

naja thema hat sich ja sowieso schon erledigt ;-)

von Mark B. (markbrandis)


Lesenswert?

Chris S. schrieb:
> Die Projektbeschreibung haette mich auch mal interessiert, denn deine
> angaben zur Projektarbeit teilweise sehr seltsam ich versteh allerdings
> warum du das hier nicht posten willst, haette ich bei meiner
> Projektarbeit auch nicht so einfach gemacht.

Und hier die Preisfrage für 50 Cent: Warum nicht?

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.