Data Sheet
Calibration of the CMPS14
The CMPS14 is shipped with a static factory calibration, but the module is able to automatically update its
calibration with algorithms running in the background if desired. To achieve background calibration the user
just needs to turn the functionality on and perform the required simple movements.
Changing the calibration configuration
To change the configuration write the following to the command register 0x98, 0x95, 0x99 with a 20ms delay
after each of the three bytes. You can then pass the setup byte to the command register, it takes the form:
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Calibration
config
1 x x Periodic auto
save enable
x Gyro
Cal enable
Accel
Cal enable
Mag
Cal enable
Bit 7 is always logic high
Bits 6,5 and 3 are undefined
Bit 4 enables a periodic automatic save of calibration data so manual saving is not required
Bit 2 enables the background gyro calibration – recommended to be off for very still applications
Bit 1 enables the accelerometer background calibration
Bit 0 enables the magnetometer background calibration
Gyro – calibrated by the CMPS14 being in a stationary state.
Accelerometer – calibrated by tilting the module to roughly 45 and 90 degrees on one axis.
Magnetometer – a few random movements easily calibrates the CMPS14
The level to which the CMPS14 has been calibrated can be checked by reading register 0x1E, the gyro,
accelerometer and magnetometer are allocated 2 bits each in the register. A value of 0 in the two bits reflects an
uncalibrated state, when fully calibrated this will become 3 (both bits set). There is also a complete system
calibration level. Please note the Gyro feedback does not currently work, this is a bug in the sensor itself that is
scheduled to be fixed.
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Cal status System calibration Gyro calibration Accelerometer calibration Magnetometer calibration
Storing and erasing calibration profiles
After calibrating the compass the profile can be stored so it will be automatically reloaded when the module is
ready for use again.
To store a profile write the following to the command register 0xF0, 0xF5, 0xF6 with a 20ms delay after each
of the three bytes.
If you wish to erase the stored profile write the following to the command register 0xE0, 0xE5, 0xE2 with a
20ms delay after each of first two bytes. The final byte will reset the BNO080 so a delay of 300ms is
recommended.