Quadrocopter #5: Schwingungserfassung

Hallo zusammen,

für alle unwissenden, das Thema lautet: „Aktive Schwingungsminderung an einem Quadrocopter“. Damit der Aktor an der richtigen Stelle eingesetzt wird, müssen die vorhanden Beschleunigungen an der Drohne analysiert werden.

Dafür werden folgende Komponenten benötigt:

Beschleunigungssensor: Adafruit LIS3DH    (5€-10€)   Der Beschleunigungssensor gehört Preis Leistungsmässig zu den guten MEMS Beschleunigungssensoren. Die Charakteristik des Beschleunigungssensors habe ich ebenfalls charakterisiert. Auf diese Werde ich im späteren Posts eingehen.

Spannungsversorgung: Akku  (10€)

SD Speicherkarte (5€-10€)

Speicherung der Daten: Adafruit Feather M0 Adalogger  (20€ -25€)  Der Vorteil bei dem Adafruit Feather M0 Adalogger ist, dass dieser bereits eine SD Speicherkarte welche über SPI angeschlossen ist. Für die Größe ist das Board ziemlich Leistungsfähig (48 MHz, 32 bit Architektur). Im Vergleich dazu ein Arduino Uno  welcher mit 16 MHz getaktet ist und über eine 8 bit Architektur verfügt.
Auf der Suche nach anderen Varianten bis ich auf die Boards von Teensy gestossen. Der Vorteil bei diesen Boards ist, dass diese sehr klein sind (kleiner als Feather M0) und dass die Bibliothek von Arduino teilweise kompatibel sind. Ein Beispiel ist ein Teensy 3.6 welcher einen 32 bit 180 MHz ARM Cortex-M4 Prozessor besitzt.

Sonstiges wie Kabel, Kabelbilder, Klettband, Button 2€ – 10€

 

Verbindung vom Sensor zum Feather M0:

Die Verbindung kann man über SPI oder I2C gestalten. Ich habe mich für SPI entschieden, da diese schneller ist als I2C. Der Vorteil von I2C ist, sobald mehrere Komponenten über die Schnittstelle angesprochen werden, dann gestaltet sich die Kommunikation einfacher. Ein kleiner Nachteil von SPI Verbindung ist, dass 2 Kabel mehr benötigt werden. Dieser Nachteil kann in Kauf genommen werden, da die Geschwindigkeit eine primäre Rolle spielt,

Die genaue Verdrahtung von I2C und SPI lässt sich hier einsehen.

Im Gesamten braucht ihr noch einen Button für das starten und Stoppen der Aufnahme. Damit es auf die Drohne kommen kann, ist es entscheidend das Gewicht minimal zu halten, also keine zusätzlichen Gehäuse oder Sonstiges. Das Gesamte inclusive einen Button zur Steuerung sieht dann wie folgt aus:

2017-10-06 11.16.15 2017-10-06 11.16.20

 

 

 

 

 

 

 

Anbringung an der Drohne sieht wie folgt aus

2017-10-06 11.16.26

 

Schließlich kommen wir zur Software. Ich habe dafür einige Funktionen programmiert (Kalibrierung, Akku Überwachung, Zeiteinstellung über Serielle Schnittstelle usw.). Bei Der Speicherung der Daten wird vorerst nur der Timer genutzt welcher entsprechend einen Interrupt auslöst mit der eingestellten Frequenz. Einige wichtige Anmerkungen hab ich für euch noch, benutzt auf jeden fall NICHT die SD Library sondern die SdFat library für die Speicherung der Daten. SD Library hat es nicht geschafft die Daten binär mit 800 Hz auf der Speicherkarte zu speichern.

Hier wichtigste Datenblätter zu Konfiguration des LIS3DH Sensors.

Datenblatt 1

Datenblatt 2 

Der Sensor besitzt bereits sehr viele integrierte Funktionen wie z.B. Hochpass, interrupt durch Beschleunigung, Freier Fall Detektion, Temperatursensor usw.

Wer die Funktionsweise des Sensors nicht direkt interessiert, der sollte in der LIS3DH Bibliothek am Ende der begin Funktion folgenden Code benutzen:

 

// normal/high and all axes
writeRegister8(LIS3DH_REG_CTRL1, 0b00000111);

// High-pass filter with lowest ft, normal mode filter, interrupt 1 and 2 enabled
writeRegister8(LIS3DH_REG_CTRL2, 0b10111011);

// DRDY on INT1
writeRegister8(LIS3DH_REG_CTRL3, 0b00010000);

// high res & BDU enabled +- 2g
writeRegister8(LIS3DH_REG_CTRL4, 0b10000000);

// Frequency rate (after REG 3 to synchronise DRDY)!
setDataRate(LIS3DH_DATARATE_LOWPOWER_5KHZ);

 

Die Register sind hiermit wie folgt konfiguriert:

Normal mode mit 1344Hz, Hochpassfilter, Interrupt wird ausgelöst am Interrupt PIN sobald neue Daten verfügbar sind, +-2g.

Der Code dazu ist auf GitHub von mir veröffentlich. Wie schon erwähnt einhaltet der Code viele weitere Funktionen. Diese sind dazu da, damit weitere Funktionen leichter implementiert werden können mit Hilfe der Nutzung der vorhandenen Funktionen.

 

 

Vorheriger Post

 


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.