Hi all,
first of all let me say it's a week I'm studying IMU and how to use it, so I'm totally new to this type of sensors. I've read a very intersting post (A Guide To using IMU (Accelerometer and Gyroscope Devices) in Embedded Applications. – Starlino Electronics) about how to get and handle gyroscope/accelerometer info directly from this kind of sensors and now I see what a microcontroller (an Arduino in our case) is expected to do to calculate roll and pitch (and eventually yaw).
I have few questions:
-
there are lots of breakout boards on the market, some of them provide just the sensors (like this one form Adafruit Adafruit 9-DOF IMU Breakout - L3GD20H + LSM303 : ID 1714 : $19.95 : Adafruit Industries, Unique & fun DIY electronics and kits or this one from Sparkfun https://www.sparkfun.com/products/10724), other include also a digital processor (like this one https://www.sparkfun.com/products/11028). I don't see any relevant difference in price (between $40 and $50), so I guess the real differences are in the sensors, correct? It's not so easy for me to understand what I have to look in the datasheets: info like sensitivity seems to be the same for all the boards...
-
looking at the example code provided by the manufacturers, it seems to me that the board with a DSP (or DMP as Sparkfun call it) is able to provide roll/pitch/yaw info with no need for additional code, is that correct? I have no prob with the math involved, but I've seen how much code we need to transform raw data from accelerometer and gyro and I'm a bit worried about the size of the resulting sketch I should load into the Arduino's memory. So using an IMU with a DSP on-board seems to be a good choise: is this a real concern according to you?
-
last but not least: in case of board with digital processor, I've seen there is a FIFO used to interface with the microcontroller, but it's not clear to me how often I can access this FIFO looking for updated data. Let's consider a scenario where my sketch just gets the data, throws it away and then looks for new data... just to stress the Arduino<->IMU communication. Is the IMU-DSP so 'quick' and the Arduino so 'slow' that every time I will ask for new roll/pitch/yaw data I will find something updated in the FIFO? or could I find an empty list? I don't think the IMU-with-DSP board can be the bottleneck of the architecture, but just to be sure