I use X-NUCLEO-IKS01A3 expansion board on F207ZG nucleo for a robot car project. I used HelloWorld_IKS01A3 project as template which uses all the sensors of the board. For my project I need to measure the acceleration in all axes. I ran the program and I observe that I get different values without moving my robot car. Shouldn’t I get just zeros ?
Could this be noise of the sensors? That is the most obvious explanation.
basically all MEMS sensors are characterized by 0-level offset by design. In case of accelerometer we talk about the linear acceleration zero-g level offset, in case of gyroscope we talk about the angular rate zero rate level. You can find all these information in the datasheet of the relative components. For LSM6DSO for example we have a zero-g level offset equal to +/- 20 mg and an angular rate zero rate equal to +/- 1 dps. It means that if you put your board on a flat surface you should see for accelerometer +/- 20 mg on two coordinates and more or less 1000 mg on the other coordinate (take into account that the board on a table “feels” the gravity force that normally is about 1g=1000mg ~ 9.81 m/s^2 on the Earth surface). Regarding the gyroscope instead if the board is stationary (no rotations), you should see +/- 1dps on all coordinates. Obviously, even if you leave your board still on the table, you will find some small changes in the values due to noise and vibrations. Anyway, from the outputs that you can see, it seems that more or less the values of all sensors are inside the specs of their datasheets. For your information, when all the coordinates of the accelerometer go close to 0, it means that you are in free fall condition.