Hi, I'm using this gyroskope sensor in a real-time environment to judge Roll, Pitch and Yaw of a telescope.
I'm using foc data and no fifo, but I'm reading the sensordata slightly quicker than the refresh rate and using sensortime to discard duplicate values.
DPS is 125, ODR at 50Hz.
My system is at resting position, but the sensor data keeps jittering at +-100ST. Now If I'm integration all values, all three position values keep drifting.
See pictures attached. Any ideas what I can improove?
raw x,y,z data
integrated x,y,z data, constant temperature
Solved! Go to Solution.
Thanks for your inquiry.
BMG250 has noise from ADC. The noise level is +/-0.07dps at 200Hz ODR. At +/-125dps full scale range the sensitivity is 262.4LSB/dps. So the noise level at 50Hz ODR = +/-0.07dps * 262.4LSB/dps = +/-18LSBs. Please check your system to find out the reason why you got +/-100LSB noise.
In addition, if you want to integrate BMG250 raw data over time to get pitch/roll/yaw angles, you need to implement a high-pass filter to filter out the noise when BMG250 is at rest. Then those angles will not diverge over time.
I propose 200Hz ODR so that you can verify if you can get clean data from BMG250 or not. If yes, then you can implement your own low pass filter such as moving average to reduce the noise further. Then you can implement your own high pass filter so that BMG250 x/y/z data should be around 0dps when it is at rest. In addition, you can also set a small dead zone for example +/-0.5dps to detect if BMG250 is at rest or not. If x/y/z data are within +/-0.5dps range, then it means that BMG250 is at rest and you can manually set them to 0dps so that your integration over time for Euler angles doesn't diverge over time when it is at rest.
yes, using now odr 200Hz, thus 5ms readout, 2000DPS, 20* moving average, 2nd order IIR 25Hz, Final Integrator stage gives
for a handmove turn of 90°. Seems like that I need to downsample this result a bit, but effectively it seems to do its job.
Thanks a lot,