05-07-2020 10:13 PM
Hi,
Is it possible to synchronize multiple IMUs (any of Bosch chips) to sample at the same frame? Or gyroscopes at least? What I want is to compensate for the zero-offset and random-noise with measurements from multiple sources, but the measurements must occur at the same time (approximately). I know that for example, BMI088 can be synchronized internally - a gyroscope with an accelerometer.
If it's not possible, maybe there are other solutions to that problem? And I don't mean Kalman or Madgwick filtering - that is a further step.
Thanks. J.
05-08-2020 04:13 PM
Hi,
Thanks for your inquiry. Absolutely synchronizing multiple IMUs is not possible, because each IMU has its own internal ADC conversion time and low pass filter group delay time. And your MCU needs time to read multiple IMUs data one by one through either I2C or SPI interface. If you want to synchronize multiple BMI088 chips at 100Hz for example, then you can set both accel and gyro to 1000Hz sampling rate. Therefore, at every 10ms time interval your MCU can read each IMU data through SPI interface one by one to get fresh and almost synchronized data.
Thanks.
05-08-2020 10:59 PM
Hi, thank you very much for your reply.
@FAE_CA1 wrote:If you want to synchronize multiple BMI088 chips at 100Hz for example, then you can set both accel and gyro to 1000Hz sampling rate. Therefore, at every 10ms time interval your MCU can read each IMU data through SPI interface one by one to get fresh and almost synchronized .
Do you mean a 100Hz sampling rate?
@FAE_CA1 wrote:And your MCU needs time to read multiple IMUs data one by one through either I2C or SPI interface.
I can use a cheap FPGA for that task to read the IMUs parallelly, no worry.
@FAE_CA1 wrote:read each IMU data through SPI interface one by one to get fresh and almost synchronized data.
What if I synchronize each of them internally, then start them up at the same time - using FPGA for example. Won't the drift away in time? I mean, is the internal clock's error specified?
05-11-2020 04:02 PM
Hi,
The 100Hz sampling rate is the timer of your MCU or FPGA for your application for example. Then you can set IMU both accel and gyro to 1000Hz output data rate (ODR) internally. Therefore, every 10ms when your MCU or FPGA reads IMU data, you can always get fresh data from multiple IMUs.
IMU has ODR tolerance parameter specified in the datasheet. For example BMI088 gyro has typical +/-0.3% ODR tolerance. This means that each IMU will have its own clock. Even if you start or enable multiple IMUs at the same time, after a few while they will have different rate. Similarily if you align multiple clocks at the beginning, a few days or months later they will have different time displayed.
Thanks.