Go Down

Topic: Mustererkennung und Frequenzmessung Arduino (Read 11955 times) previous topic - next topic

mkl0815


die rechenleistung ist auch nicht das proble, der speicher ist es, ob echtzeit oder nicht ist dabei egal, du brauchst das gesamte sample das du fouriertransformieren willst auf einmal im speicher ;)

Dann bietet sich ggf. der Arduino Mega an, der hat etwas mehr RAM. Evtl. noch mit der möglichen RAM-Erweiterung:
http://andybrown.me.uk/wk/2011/08/28/512kb-sram-expansion-for-the-arduino-mega-design/
Irgendwo hab ich das glaub ich auch schon mal als Shield gesehen.

derder

wenn nicht vor ort analysiert werden muss könnte man sich auch überlegen ein solches sample lediglich zu speichern und die FFT auf einem PC auszuführen, dann braucht man allerdings garkeinen arduino, ein richtmikrophon mit aufnahmefunktion tut es dann auch... ansonsten könnte man noch überlegen die bibliothek umzuschreiben und die daten scheibchenweise zu verarbeiten und zum beispiel eine sd-card als (laaaaaaangsamen) RAM zu verwenden, das würde die bauteilkosten in grenzen halten (SD-Karte an arduino braucht ohne shield nur ein paar widerstände), das wäre aber sicher eine riesen arbeit das zu programmieren und würde meine fähigkeiten überschreiten, möglich sollte es allerdings sein. ab einem gewissen punkt halte ich aber wieder einen kleinen computer mit soundkarte, richtmikro und ein programm wie audacity oder mathematika für sinnvoller, ein raspberry pi mit angeschlossenem monitor wäre hier sicher potent genug, muss es unbedingt ein arduino sein?

Golfer86

Es muss nicht sein, aber zumindest die FFT ist ja anscheinend problemlos möglich.

Grundidee war es ein Gerät zu haben, mit dem man durch Knopfdruck die Geschwindigkeit messen kann und sonst nichts, eben diese Einfachheit bietet ein PC nicht, da eben gerade vor Ort analysiert werden soll.

Im Endeffekt sind es ca. 7 Sekunden die eine Messung dauert, was aber wohl schon wieder zu viel ist ...

Ich werde mich erst einmal grundsätzlich mit der FFT-Analyse befassen, der eigentliche Programmcode der zur Analyse notwendig ist scheint nicht sehr umfangreich zu sein.


derder

das ist richtig, wenn die bibliothek die FFT berechnet ist der rest eigentlich leichter als er sich anfangs anhört, ein 7 sekunden audiosample kannst du im arduino vergessen, ich denke selbst im mega wirst du schon probleme mit dem reinen speichern des samples haben, das ausführen der FFT braucht nochmal längen mehr speicher. mit einem raspberry pi ist theoretisch auch ein portables gerät denkbar. an sich glaube ich aber immer noch, das die messmethode über drehzahl des motors VIEL zu störanfällig ist, du musst bedenken das auch alle umgebungsgeräusche mit aufgenommen (und fouriertransformiert) werden, soll meinen wenn nebenan einer seine gitarre genügend laut auf kammerton a stimmt kommt am ende ne frequenz von 440Hz bei raus, außerdem könntest du auch karosserievibrationen messen, die vermutlich gedämpft sind und in einer eigenfrequenz vibrieren, die nur in seltensten fällen (wenn das ganze auto laut brummt) gleich der motorfrequenz sind. ich nehme mal an du willst mal eben die geschwindigkeit eines autos bei irgendwelchen DTM-rennen o.ä. mit publikum ausmachen, das funktioniert dann alleine schon wegen des publikumslärms nicht akustisch, bzw nicht im hörbaren akustischen bereich, hier müsstest du auf ultraschall- oder lichtlaufzeit mit modulierten signalen zurückgreifen, was voraussetzt, das sich das auto gerade auf dich zu oder von dir weg bewegt, du misst dann in kurzer zeit zweimal die entfernung und berechnest daraus die geschwindigkeit. wenn es WIRKLICH mit der drehzahl des ganz bestimmten, vorher vermessenen, motors gehen SOLLTE, dann müsstest du aufgrund der umgebungsgeräusche schon auf ein Laser-Mikrophon zurückgreifen und da bekommst du wieder das problem, das du sehr wahrscheinlich als hauptkomponente die vibration der karosserie misst, wobei man da vielleicht noch in der FFT nicht ausschließlich nach der stärksten frequenz suchen könnte sondern geschickt eine auswählen, die definitiv vom motor stammt, ich weiß allerdings nicht wie weit sich die beiden dinge da überlappen...

just my 2 cents...

Golfer86

Die Messung soll unter relativ günstigen Bedingungen erfolgen, sprich auf einer Straße, wo nur das zu messende Objekt fährt, ohne Publikum bzw. sonstigen Lärm, im dümmsten Fall Vogelgezwitscher.

Selbst wenn ich die Karosserieschwingungen aufzeichnen würde, wäre das ja prinzipiell egal, da der Doppler-Effekt ja auf das gesamte bewegte Objekt wirkt.

Ich habe einen Mega, wenn ich die Abtastrate relativ weit absenke und jeweils 1s des Hinwegs und 1s des Rückwegs aufzeichne, hätte ich ja relativ wenig Verbrauch? Die Schwierigkeit liegt dann eher darin, herauszufinden wann aufgezeichnet werden soll.

derder

nagut, wenn du es aus dem dopplereffekt rausrechnen willst geht das auch, die messzeitpunkte kann man ja per tastendruck festlegen, eine seknde halte ich für sehr sehr lang, nimm ne gute abtsatrate (so schätzungsweise 4kHz) und miss mit 64 samples, also ca. 16 millisekunden (mit nem mega kannst du gerne mal mehr versuchen)

ich muss jetzt aber unbedingt noch fragen wofür du das machen willst, ich hoffe du hast ein rein akademisches interesse an dem versuch?

Golfer86

OK, es geht um eine Studienarbeit, die Frequenz kann man sicher unter 2khz bekommen, du frägst wofür ich es brauche, was könnte man damit noch anstellen?

derder

geschwindigkeitsmessungen von sich bewegenden objekten, an sich ja nichts, was es nicht schon zu kaufen gibt ;) und auch die zahl der zu vermessenden objekte ist leider recht gering, weil sie komplett an einem vorbei gefahren sein müssen :(

uwefed



die rechenleistung ist auch nicht das proble, der speicher ist es, ob echtzeit oder nicht ist dabei egal, du brauchst das gesamte sample das du fouriertransformieren willst auf einmal im speicher ;)

Dann bietet sich ggf. der Arduino Mega an, der hat etwas mehr RAM. Evtl. noch mit der möglichen RAM-Erweiterung:
http://andybrown.me.uk/wk/2011/08/28/512kb-sram-expansion-for-the-arduino-mega-design/
Irgendwo hab ich das glaub ich auch schon mal als Shield gesehen.


Hier ist die Speichererweiterung zu kaufen. Ich bin mir aber nicht sicher, ob der Arduino mehr als 64kBYTE sehen kann.
Grüße Uwe

Go Up