I encountered the problem of increasing drift at rest.
At an ambient temperature of 25 degrees
, the raw values of the drift along the axes are as follows:
x 3
y 0
z 5
in terms of angular speeds, at 2000 range (gyro_Deg = gyro_xRaw * 0.07; // deg/s)
x 0.21 dps
y 0.0 dps
z 0.35 dps
When the ambient temperature decreases, then at -9 degrees
the drift values along the axes are as follows:
x -22
y 13
z 57
in terms of angular speeds, at 2000 range (gyro_Deg = gyro_xRaw * 0.07; // deg/s)
x 1.54 dps
y 0.91 dps
z 3.99 dps
Moreover, my board is not oriented horizontally, as usual, but vertically - the Y axis points upward.
In the screenshots, the green
line is the X-axis
, the light blue
line is the Y-axis
, the blue
line is the Z-axis
, and the orange
line is the temperature
.
Temp.: +25
Temp.: -9
The Y-axis
remains almost at the center(about zero), and the Z-axis
goes up, and the X-axis
goes down.
As the temperature decreases, not only the median part of the angular velocity shifts, but also the drift amplitude increases.
In general, the zero offset has two components - the initial zero offset and the zero drift. The physical cause of zero drift is a change in the size of the silicon elements and pressure inside the sensor case due to temperature changes
I can’t imagine how to compensate for this.
UPD: Looks like there is a problem with the sensor.
Now I conducted a temperature experiment with another BMI160
sensor and the drift and median component are more stable with decreasing and increasing temperatures.
Apparently the sensor software from Bosch Sensortec
contains temperature correction.
Temp.: +26
Temp.: -10
At sub-zero temperatures there is even less noise and drift.