LSM6DSM + LIS2MDL motion sensors managed by MAX32660 motion co-processor routinely achieve 0.3 degree rms heading accuracyDesigned by Pesky Products in United States of America
What is it? This is a small (12.8 mm x 17.9 mm) breakout board for the MAX32660 motion co-processor managing the LSM6DSM 3-axis combination accelerometer/gyro, the LIS2MDL 3-axis magnetometer, and ...Read More…
This is a small (12.8 mm x 17.9 mm) breakout board for the MAX32660 motion co-processor managing the LSM6DSM 3-axis combination accelerometer/gyro, the LIS2MDL 3-axis magnetometer, and the LPS22HB barometer. The MAX32660 communicates with and manages the sensors over a master I2C bus. The MAX32660 is an I2C slave to the MCU host with scaled sensor data, quaternions, Euler angles, gravity, and linear acceleration available to the host via simple I2C registers reads.
The boards come precalibrated with accel, gyro, and mag calibration values stored in emulated EEPROM, which are read by the MAX32660 on power up. The calibrations can be updated by the MAX32660 upon commands from the host. For example, the gyro offset biases are automatically calculated on power up if the board is not in motion, and gyro calibration can be requested at any time by the host via a simple I2C command.
The sketch for the host requires that you input your magnetic declination (found here, for example) and, in some cases, vertical magnetic field strength for best accuracy. There is more discussion at the github repository on calibration and use.
The magnetometer calibration includes both soft iron and hard iron corrections and each board will deliver better than 1 degree rms heading accuracy (0.3 rms degree heading accuracy is typical) with no further user calibration. However, we know that local magnetic fields in the home or when the device is mounted in or on a vehicle (car, plane, etc) can induce additional sources of hard iron offsets so we have incorporated a dynamic hard iron corrector into the MAX32660 fusion algorithms that compensates for environmental hard iron offsets during regular motion of the sensor in the environment. This compensation isn't perfect, but it allows excellent heading accuracy to be maintained even in challenging magnetic environments.
The production boards use the 0.4-mm-pitch, 3 mm x 3 mm MAX32660GTG+ TQFN-24 package, which makes pcb production somewhat easier and more reliable than the alternative 0.35-mm-pitch 1.5 mm x 1.5 mm MAX32660GWE+ WLP-16 "flip chip" variant.
The MAX32660 motion co-processor in combination with the ST sensor suite typically achieves 0.3 degree rms heading accuracy with proper calibration. This is about 5x better than the EM7180 using the same ST sensor suite and better than any other device costing less than ten times the price!
We have been using EM Microelectronic's EM7180 motion co-processor for absolute orientation estimation with some success. The EM7180 embeds a 10 MHz ARC processor with single-precision floating point unit (FPU) optimized for fast fusion calculations using algorithms developed by PNI Corporation. The EM7180 off-loads the management of the sensors and the computationally-intensive fusion calculations from the host MCU so that accurate absolute orientation estimation in the form of quaternions or Euler angles can be read from the EM7180 by the host via simple I2C register reads. This means even a poky 8 MHz Arduino Pro Mini can obtain <2-degree accurate heading data when using the EM7180 co-processor and a suitably accurate sensor suite like the MPU9250 or LSM6DSM+LIS2MDL.
The advantages of using the EM7180 as motion co-processor include small size (1.6 mm x 1.6 mm WLCSP-16), auto gyro and magnetometer calibration, simple I2C serial output, and ultra-low-power usage. Quaternions can be updated at the rate of the gyro (up to 400 Hz guaranteed), and there is some flexibility in the form of generic user registers, fusion tuning parameters, and the ability to make use of RAM patches to allow some customization of the fusion algorithms. There is a warm start capability that allows the EM7180 to start with the last session's calibration parameters upon subsequent power up.
Disadvantages of using the EM7180 include the fixed, "black-box" nature of PNI Corp.'s algorithms stored in ROM, the need to load the sensor-specific firmware into RAM on each power up, the very small amount of free RAM that limits customization, behaviors of the fusion algorithm (especially the dynamic magnetometer calibration) that cannot be adjusted or turned off. While the EM7180 is sensor agnostic, meaning it can use the input of almost any I2C accelerometer, gyro, and magnetometer to produce fused quaternions, the drivers for the sensors have to be created and compiled using a deprecated compiler. The ~24 kBytes of compiled firmware have to be stored on an EEPROM for loading into the EM7180 RAM on each power up, or loaded from the host. Lastly, the EM7180 is designed to manage I2C sensors so that devices with SPI or UART serial interfaces cannot be used directly and require a translator.
With the announcement of MAXIM Integrated's ultra-small DARWIN family of MCUs, especially the MAX32660, we had an opportunity to design a motion co-processor that offers all of the advantages of the EM7180 with few, if any, of the disadvantages.
The MAX32660 has 256 kBytes of flash, 96 kBytes of SRAM, runs at 96 MHz and uses a Cortex M4F architecture, meaning it has four channels of fast DMA, two hardware I2C busses (one for host and one for slave sensors) that support 3.4 MHz bus speeds, 16 kB of instruction cacheing, and a single-precision floating point unit. We have been able to obtain quaternion updates at the rate of the gyro (1666 Hz) with this kind of horsepower.
There is plenty of memory to hold firmware which resides in flash and doesn't need to be loaded into the MAX32660 at each power up. Programming is via SWD port using standard tools like Eclipse, MBED, or GCC. We can hold warm start parameters in emulated 2 KByte EEPROM to reduce the need for calibration on each use.
We use our own computationally-efficient fusion algorithms to produce better heading accuracy (typically 0.3 degree rms when the sensors are properly calibrated) than we can currently obtain using the EM7180 + ST sensors. And, we can achieve faster fusion rates when needed at lower overall power usage, without the need of an external EEPROM.
Using the MAX32660 as co-processor allows us to match the size and power-usage advantages of the EM7180-based solutions with better heading accuracy while avoiding the limited memory, obsolete compiler, and non-transparency disadvantages.
About 5x better rms heading accuracy (typically 0.3 degree rms with proper calibration) than can be achieved using the EM7180 with the same ST sensors suite!
Comes pre-calibrated so you get accurate absolute orientation estimation right out of the box!
Better absolute heading accuracy than can be achieved by any other device costing less than ten times the price!
This small, low-power breakout board allows anyone to obtain superbly accurate absolute orientation estimation with even the pokiest host MCU.
Order some pcbs from OSH Park and assemble some of your own. Or order the fully assembled and tested breakout board from us and see how easy superbly accurate heading estimation can be!
|Shipping Rate||Ships From||First item||Additional items|
United States Postal Service: Standard Ground Rate with tracking
United States Postal Service: Priority Mail with tracking
Priority mail for faster delivery only available within the US.
Brad | July 11, 2020
We recognize our top users by making them a Tindarian. Tindarians have access to secret & unreleased features.
We look for the most active & best members of the Tindie community, and invite them to join. There isn't a selection process or form to fill out. The only way to become a Tindarian is by being a nice & active member of the Tindie community!