I am working on a project that requires reading data from 6 IMUs simultaneously with a sampling rate 1000 Hz. Data will be stored on SD card and processed later.
My main question is: is this feasible with any of the arduino boards (the smaller the better) or is there a better uC for the task? If yes, which one would you recommend?
I am working on a project that requires reading data from 6 IMUs simultaneously with a sampling rate 1000 Hz. Data will be stored on SD card and processed later.
What IMUs? How many axis? What resolution?
Reading at that rate is not really a problem (using SPI) but most SD card readers get problems writing the data at that speed. If you store the results in a digital format without timestamps it might be possible.
What project actually needs data from 6 IMUs with a 1KHz rate?
My main question is: is this feasible with any of the arduino boards (the smaller the better) or is there a better uC for the task? If yes, which one would you recommend?
Consider hooking the unknown IMU's to STM32's Blue Pills. Two IMU's per BluePill, and send one signal from a controlling microController. The STM32's could read, at nearly the same time 3 MMU's. If you really want near same time, than use 6 STM32's.
Putting all 6 IMU's on one uController and expecting all 6 to be read at the same time is impossible, with how they are currently constructed, operating on one instruction at a time in sequential order of occurrence.
you could also use Raspberry Pi 3 B+, if you understand hardware control with python you can easily do this multitasking with single board. It's quite powerful that way. You can also do such multitasking with Arduino YUN as well but it has some limitations as well.
Idahowalker:
Putting all 6 IMU's on one uController and expecting all 6 to be read at the same time is impossible, with how they are currently constructed, operating on one instruction at a time in sequential order of occurrence.
Not impossible at all. Many of these IMU type chips are intended to store data locally and read it out at the convenience of the external processor. They can usually store more than one data sample, using a FIFO.
MaxPower1:
Hi guys!
I am working on a project that requires reading data from 6 IMUs simultaneously with a sampling rate 1000 Hz. Data will be stored on SD card and processed later.
My main question is: is this feasible with any of the arduino boards (the smaller the better) or is there a better uC for the task? If yes, which one would you recommend?
How far apart are these devices? Are they connected to the core with cables? Then they probably are only one or two meters apart.
Is there any other connection between them? Like is each IMU on a segment of a robot's arm? Then it's usually easier to measure the robot torso with one IMU and the arm segments with angle resolvers.
If it's multiple battery-operated devices with no wired connection, then there's good ways to do this, but it's going to take at least 6 Arduinos.
They will be placed on runners' legs for some measurements so uController unit should be as small and lightweight as possible. We want to have some options regarding data storage: store it on SD card or send it to PC or both.
I have experience with Arduino UNO, MEGA and DUE boards but I've never done data acquisition at this scale.
They will be placed on runners' legs for some measurements so uController unit should be as small and lightweight as possible. We want to have some options regarding data storage: store it on SD card or send it to PC or both.
I have experience with Arduino UNO, MEGA and DUE boards but I've never done data acquisition at this scale.
Easy-peasy with SPI, just use a different CS pin per sensor.
Yes, SPI rather than I2C for this sort of data-rate.
Writing to SDcard fast isn't possible using the SPI interface on SDcards. The high speed native-mode interface to SDcards is not supported by many Arduinos, note.
MarkT:
Writing to SDcard fast isn't possible using the SPI interface on SDcards. The high speed native-mode interface to SDcards is not supported by many Arduinos, note.
So 6 accelerometers * 3 axis * 2 bytes *1000 hz = 36 kByte/s. I was worrying Arduinos wouldn't cut it. Looking at specs Raspberry Pi would be a better option.