Forum: Mikrocontroller und Digitale Elektronik Spektralanalyse mit Oszi und ADXL345/Atmega


von Daniel B. (daniel10)


Lesenswert?

Hallo liebe Forenmitglieder :-)

Mich beschäftigt seit kurzem eine Frage und ob meine Idee, die ich habe, 
Sinnvoll ist.

Erstmal zur Vorgeschichte:
Ich habe einen RC-Hubschrauber, genauer gesagt einen T-Rex 450 Pro.
Den habe ich mir gebraucht gekauft gehabt und komplett zerlegt und 
wieder von Grund auf neu zusammengesetzt, nachdem Verschlissene Teile 
ausgetauscht wurden.
Nun habe ich Probleme mit Vibrationen, die den Gyro leicht beinflussen, 
also mein Heck dreht ganz leicht weg im Schwebeflug.
Habe die Vibrationen schon auf ein gutes Niveau senken können, wüsste 
jetzt aber gerne die Ursache, bzw. würde jetzt die Vibrationen mal 
messen wollen.

Da kam mir die Idee mit dem ADXL345, den ich bereits hier habe.
mit einer Bandbreite von 3200Hz deckt der einen guten Bereich ab, um 
Vibrationen am Heli messen zu können, so der Gedanke.

Erst wollte ich einem ATmega FFT beibringen, damit er das Spektrum der 
Vibrationen bezogen auf die Frequenz (richtig ausgedrückt?) anzeigen 
kann.
Nun ist das ja schon eine rect große Hausnummer, mein Vorhaben und so 
möchte ich mich langsam ran tasten.
Ich habe ebenfalls ein Picoscope 3203D, was ebenfalls Spektral-Analyse 
kann.

Jetzt zu meiner Idee:
Ich wollte den ADXL345 bei 12-Bit Auflösung mit einem Atmega in der 
höchsten Bandbreite, also 3200Hz im I2C-Modus auslesen, die drei 
Achsenwerte X,Y und Z
auf eine Achse umrechnen mit  'Wurzel aus X²+Y²+Z²'.
Diese Formel hab ich bei einem anderen Projekt mal aufgeschnappt und 
scheint hier zu funktionieren.
Den ausgerechneten Wert würde ich dann an einen DA-Wandler schicken, 
einem MCP4822 (12-Bit DAC) und dann mit dem Oszi messen.

Mir ist durchaus bewusst, das es auch analoge Beschleunigungssensoren, 
wie den ADXL335 usw. gibt, nur die haben 1600Hz Bandbreite, bzw. 
Messfrequenz.
Bei meiner Idee hätte ich auch alle Achsen zusammengefasst und es wäre 
egal, wie ich den Sensor am Heli montiere, also von der Ausrichtung der 
Achsen her.

So meine Idee.
Wurzelziehen mit dem ATmega steht ja hier im Forum beschrieben, der Rest 
ebenfalls. Mir geht es jetzt darum, ob ich nicht einen Denkfehler habe 
und ich so nichts messen könnte.

Danke schonmal :-)

von Sven B. (scummos)


Lesenswert?

Ich würde eher einen USB-Serial-Wandler an den UART vom Atmega hängen 
und die Werte an den Rechner schicken und dort fouriertransformieren. 
Das mit dem DA-Wandler klingt wirklich unnötig kompliziert.

von Wolfgang (Gast)


Lesenswert?

Daniel B. schrieb:
> Ich wollte den ADXL345 bei 12-Bit Auflösung mit einem Atmega in der
> höchsten Bandbreite, also 3200Hz im I2C-Modus auslesen,
> ...
> Mir ist durchaus bewusst, das es auch analoge Beschleunigungssensoren,
> wie den ADXL335 usw. gibt, nur die haben 1600Hz Bandbreite, bzw.
> Messfrequenz.

Du hast die Fußnote 3 nicht gelesen, oder?
"Bandwidth is the −3 dB frequency and is half the output data rate, 
bandwidth = ODR/2."

von Daniel B. (daniel10)


Lesenswert?

Sven B. schrieb:
> Ich würde eher einen USB-Serial-Wandler an den UART vom Atmega hängen
> und die Werte an den Rechner schicken und dort fouriertransformieren.
> Das mit dem DA-Wandler klingt wirklich unnötig kompliziert.

Hmm auch eine Idee :-) Hab am Laptop sogar RS232, bräuchte also nicht 
mal nen USB Wandler.
Nur hab ich keine Software, die mir das Berechnen und anzeigen könnte. 
Deswegen die Idee mit dem Oszilloskop. Und PC-Programme kann ich 
überhaupt nicht programmieren, nutze nur Assembler auf AVR's :-)

Hab mal etwas von LabView gelesen, mich damit aber nicht weiter 
beschäftigt.
Da soll man irgendwie eine Benutzeroberfläche erschaffen können, die 
einem das Anzeigen kann...

Wolfgang schrieb:
> Du hast die Fußnote 3 nicht gelesen, oder?
> "Bandwidth is the −3 dB frequency and is half the output data rate,
> bandwidth = ODR/2."

Habs wirklich nur überflogen ja, tut mir Leid :-(
Nicht Böse sein. Ehrlich gesagt, hab ich das auch nicht verstanden.
Aber bevor ich mich jetzt in Datenblätter stürze, wollte ich gern 
wissen, ob meine Idee funktioniert und ich tatsächlich messen kann.

: Bearbeitet durch User
von Sven B. (scummos)


Lesenswert?

Naja, ich würde dir raten dich einzulesen, wie du das am Rechner machst. 
Mit Python (serial-Modul und numpy.fft.rfft) ist das nicht so schwierig. 
Und das Ergebnis ist auf jeden Fall besser als mit dem Oszi (was sich 
dafür nicht wirklich eignet, der Samplebuffer ist sehr klein, viele 
Oszis machen FFT nur auf 1024 Punkten etc), und vom Aufbau objektiv 
betrachtet viel sinnvoller.

von Wolfgang (Gast)


Lesenswert?

Daniel B. schrieb:
> Wolfgang schrieb:
>> Du hast die Fußnote 3 nicht gelesen, oder?
>> "Bandwidth is the −3 dB frequency and is half the output data rate,
>> bandwidth = ODR/2."
>
> Habs wirklich nur überflogen ja, tut mir Leid :-(
> Nicht Böse sein. Ehrlich gesagt, hab ich das auch nicht verstanden.

Frei übersetzt: Der ADXL345 mit einer Abtastrate von 3200Hz kann, 
alleine schon wegen des Abtasttheorems nur Frequenzen bis 1600Hz richtig 
erfassen.

Alles was darüber vom Analogteil des Sensors kommt, taucht gespiegelt an 
den 1600Hz frequenzmäßig unterhalb als Fehlsignal auf.
Du kannst also lieber einen ADXL335 mit seinen 1600Hz Bandbreite nehmen, 
den mit einem externen Wandler (z.B. mit der Soundkarte deines PCs) 
deutlich höher abtasten und darauf deine FFT aufbauen.

von opa (Gast)


Lesenswert?

Hallo,

Anmerkungen:
- die Rotordrehzahl ist in der Grössenordnung von 1000 U/min, d.h.
  rd. 16Hz und Vielfache davon. Deshalb ist die Freq der Vib. auch
  in der Grössenordnung.  Mit der Bandbreite des Sensors solltest Du
  m.E. deshalb leicht hinkommen. Oder ist diese Überlegung falsch?
  Am Heckrotot ist die Drehzahl natürlich grösser, aber der
   grösste   Einflussfaktor ist vmtl. der Hauptrotor.

- Um die Vib. zu reduzieren musst Du auswuchten. Dazu wäre es sinnvoll,
  die Richtung der Unwucht zu messen und zu erkennen.

Vielleicht hilft auch das:
https://fpv-community.de/showthread.php?16246-Props-dynamisch-auswuchten-TheBlindHawks-Tutorial&p=549014&viewfull=1#post549014

https://diydrones.com/forum/topics/balancing-propellors-and-motors

http://embedded-lab.com/blog/automotive-vibration-data-logger-and-analyzer/

(Hab's nicht im Det gelesen)

von opa (Gast)


Lesenswert?

Vielleicht auch noch interessant:

https://learn.sparkfun.com/tutorials/piezo-vibration-sensor-hookup-guide

und die dort verlinkten Dox.

von nachtmix (Gast)


Lesenswert?

Daniel B. schrieb:
> Nun habe ich Probleme mit Vibrationen, die den Gyro leicht beinflussen,
> also mein Heck dreht ganz leicht weg im Schwebeflug.

Woher weisst du, dass das Vibrationen sind und nicht etwa Störspannungen 
durch die ja nicht gerade geringe Stromaufnahme der Motoren?

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.