Forum: Mikrocontroller und Digitale Elektronik Suche Tipps und Vorschläge für IMU Datenlogger


von peter (Gast)


Lesenswert?

Hallo,

ich möchte die Drehraten- und Beschleunigungswerte eines IMU (Inertiale 
Messeinheit) möglichst mit voller Auflösung auf eine SD-Karte 
aufzeichnen. Dazu benötige ich einen Datenlogger.

Hat das vielleicht von euch schonmal jemand gemacht?

Ich möchte mir gerne einen Datenlogger selbst bauen. Hättet Ihr da 
vielleicht eine gute Empfehlung welchen uC und IMU ich verwenden könnte?

Als IMU hätte ich mir z.B. das MPU-6050 vorgestellt (Link zum 
Datenblatt: 
https://www.cdiweb.com/datasheets/invensense/MPU-6050_DataSheet_V3%204.pdf). 
Die Datenrate für den Beschleunigungssensor ist 1000 Hz und für das Gyro 
8000 Hz.

Kann man überhaupt soviele Daten so schnell auf eine SD-Karte speichern?
Wahrscheinlich muss man da irgendwie mit Puffer arbeiten und den 
internen Speicher des uC.

Wäre super wenn ihr mir weiterhelfen könntet. Vielleicht wisst ihr ja 
sogar eine gute Website wo jemand genau das versucht.

Vielen Dank :-)

von Dennis (Gast)


Lesenswert?

Dieses Forum bietet Hilfe zur Selbsthilfe. Hier deine Antworten:

peter schrieb:
> Hat das vielleicht von euch schonmal jemand gemacht?

Ja, mehrfach (beruflich bedingt)

peter schrieb:
> Hättet Ihr da
> vielleicht eine gute Empfehlung welchen uC und IMU ich verwenden könnte?

uC: den den du kennst bzw. beherrschst. Ich nehme gerne ein STM32F030 
andere gleich ein STM32f7...

IMU gibt es wie Sand am Meer. Da du keine genauen Anforderungen hast: 
such dir selbst eines aus. Der MPU-6050 ist für Anfänger nicht schlecht.

peter schrieb:
> Kann man überhaupt soviele Daten so schnell auf eine SD-Karte speichern?

Mit Zwischenspeichern kein Problem.

peter schrieb:
> Wahrscheinlich muss man da irgendwie mit Puffer arbeiten und den
> internen Speicher des uC.

Jepp. RAM haben moderne uC mehr als genug. Mann kann aber zur Not auch 
ein externes RAM nehmen.

von Noch einer (Gast)


Lesenswert?

Nimmst du SPI und eine FAT Library, kannst du so 100 KByte/Sekunde 
erwarten.

Dann gibt es unzählige Beschleunigungen. Blockgrösse an Erase-Size der 
Karte anpassen, vorab eine grosse Datei anlegen...

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

peter schrieb:
> Die Datenrate für den Beschleunigungssensor ist 1000 Hz und für das Gyro
> 8000 Hz.

 Das ergibt 16bit alle 125ns + 16bit jede ms (falls du mit Datenrate die
 Abfragefrequenz meinst), also insgesamt 18KB/s.

 Die Schreibgeschwindigkeit (RAW, also ohne Umweg über FAT) auf SD liegt
 zwischen 180KB/s und 250KB/s mit 1bit SPI - das ist 10mal so schnell.

 Ungefähr alle 28ms wird ein Sektor mit 512Byt beschrieben, das dauert
 zwischen 2-3ms und somit ist die Mindestanforderung an den uC nur
 1KB RAM und SPI-Interface (Es geht aber auch genausogut mit Soft-SPI).
 Das Problem entsteht beim Schreiben auf SD - die mind. 2-3ms müssen in
 einem Stück abgearbeitet werden und in dieser Zeit kann der Sensor
 nicht abgefragt werden. Selbst mit SPI-Interrupt geht das nicht, da
 CS für SD die ganze Zeit auf LOW bleiben muss.
 Sollte aber die Abfrage nicht unbedingt alle 125us stattfinden, kann
 das jede MEGA ab M88 ohne Probleme schaffen.

 Oder du nimmst I2C für die Kommunikation mit dem Sensor, dann kannst
 du mal zwischendurch Sensorwerte einlesen und die SD-Card bleibt
 trotzdem selektiert.

 Wobei bei I2C mit 400KHz, 1 Byte Request und 2 Byte Answer das alles
 ziemlich knapp wird - so um die 65-75us braucht das Ganze mindestens.
 Vorausgesetzt, dass keine Register im Sensor adressiert werden müssen.
 Sollte dies der Fall sein, kannst du diese Alternative vergessen, dir
 bleibt nur noch DMA als Ausweg.
 Aber STM32F sind auch nicht viel teuerer als ATMEL, wenn überhaupt...

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.