Use Advanced, Long-Life IMUs with Extended Availability to Ensure Industrial Device Longevity

By Stephen Evanczuk

Contributed By Digi-Key's North American Editors

As developers look to build robotic systems, smart power tools, asset tracking devices, and other motion-based industrial products, inertial measurement units (IMUs) play a key role in providing data needed to manage performance, safety, and more. Manufacturers of these long-life industrial products depend not only on the performance capabilities of IMU devices but also on their long-term availability. An emerging class of industrial IMUs with long-term availability offers developers a solution able to meet both performance and availability requirements.

This article discusses IMUs from Bosch Sensortec and STMicroelectronics that are designed to ensure accurate measurements in harsh industrial environments as part of the manufacturers' 10-year longevity programs. This article also looks at software development boards from those industrial IMU device manufacturers, as well as Adafruit Industries, that facilitate rapid development of IMU-based designs.

What are IMUs?

IMUs are sensing devices that combine an accelerometer and gyroscope to provide the data required to detect linear and rotational movement in six degrees of freedom. Built with microelectromechanical systems (MEMS) technology, the accelerometer and gyroscope sensors in advanced IMUs, such as Bosch Sensortec's BMI088, are integrated with dedicated signal chains and analog-to-digital converters (ADCs) and logic to provide a complete motion detection system in a single package (Figure 1).

Diagram of Bosch Sensortec's BMI088 IMUFigure 1: Advanced IMUs such as Bosch Sensortec's BMI088 integrate sensors, signal chains, and logic to provide a complete motion detection system that readily integrates with host processors through standard serial interfaces. (Image source: Bosch Sensortec)

With their extensive integrated functionality, IMUs integrate easily into system designs, typically requiring little more than an I2C or SPI connection to deliver digital results to a host processor.

Industrial IMU performance and stability

Industrial IMUs such as Bosch's BMI088 are designed specifically to provide the temperature stability and vibration robustness required to withstand operation in harsh environments where constant thermal stress and mechanical vibration or shock can degrade the performance of less hardy devices. The BMI088 integrates a 16-bit triaxial accelerometer and a 16-bit triaxial gyroscope that deliver a resolution of 0.09 milligravities (mg) and 0.004 degrees per second (°/s), respectively. The device supports gyroscope measurements at multiple full scale angular rates from 125°/s up to 2,000°/s. As with most devices in this class, the BMI088 supports operation across the full industrial temperature range from -40 to +85°C. Going beyond many devices in this class, the BMI088's accelerometer supports a full-scale measurement up to 24 grams (g), providing additional protection from signal clipping at high vibration levels often found in industrial applications.

At the same time, the device meets requirements for high temperatures or rapidly changing temperatures common in industrial environments. The BMI088 accelerometer exhibits a sensitivity temperature drift of only 0.002 percent per Kelvin (%/K) and zero-g offset temperature drift of less than 0.2 mg per Kelvin (K). Similarly, its gyroscope has a temperature coefficient of offset (TCO) of only 0.015°/s per K and temperature coefficient of sensitivity (TCS) of 0.03%/K.

Despite their high-performance characteristics, MEMS-based IMUs typically consume minimal current. For example, the BMI088's accelerometer consumes 150 microamps (mA) in normal mode, while its gyroscope requires 5 milliamps (mA). As with most low-power devices, developers can switch the BMI088 to a low-power mode during periods of inactivity. In low-power suspend mode, accelerometer and gyroscope current drops to 3 mA and 25 mA, respectively. In fact, the BMI088 gyroscope offers a deep suspend mode that consumes less than 5 mA.

Low-power operation can of course be critical for battery-powered applications such as portable power tools or asset tracking devices, yet the ability to rapidly resume normal measurements is equally critical in industrial applications. In fact, the BMI088 exhibits a wake-up time from suspend (and deep suspend) mode that is significantly faster than that available with IMUs typically used in consumer applications such as wearable devices and other personal electronic products.

Support for long-life products

There perhaps is a more fundamental difference that separates requirements for IMUs in consumer and industrial devices. As with any product category, the life cycle of consumer and industrial products follow a familiar pattern of growth, maturity, and decline following introduction (Figure 2).

Graph of extended availability of mature lines of reliable productsFigure 2: Although consumer demand for the latest features typically shrinks the late stages of the consumer product life cycle, many industrial users rely on extended availability of mature lines of reliable products. (Image source: Wikipedia)

For consumers, demand for the latest feature-rich mobile products has dramatically reduced the duration of the maturity and declining phases of the product life cycle. In stark contrast to the shrinking life cycles of consumer electronics, different types of industrial equipment are often expected to remain in service for several years. A mature line of industrial grade power tools will typically gain a loyal following more for its reliability in performing its primary function than its "bells and whistles." In other industrial applications such as asset tracking or IIoT monitoring, the long-term availability of a family of devices can outweigh the need or practicality of replacing devices to support incremental feature enhancements.

To meet requirements for long-life products, developers can often find key products in semiconductor manufacturers' longevity programs, which ensure availability for a period of time typically starting with the product's introduction date. For example, Bosch offers its BMI090L IMU as part of its own 10-year longevity program. A pin compatible version of the BMI088, the BMI090L features the same functionality and performance specifications as the BMI088.

Machine learning industrial IMU

As part of its own 10-year longevity program, STMicroelectronics offers its high-performance ISM330DHCX industrial IMU. The ISM330DHCX is a member of a specialized series of iNEMO system-in-package (SiP) modules that also includes the STMicroelectronics LSM6DSOX and LSM6DSRX. These devices combine a triaxial accelerometer and triaxial gyroscope with an embedded machine learning core. (For more on the iNEMO machine learning core and its use, see "Use a Smart Sensor’s Built-In Machine Learning Core to Optimize “Always-On” Motion Tracking".)

Designed for battery-powered consumer products, the LSM6DSOX offers the lowest power consumption in this series of specialized devices. Alternatively, the LSM6DSRX is designed for virtual reality (VR), augmented reality (AR), and drone applications. It offers higher stability than the LSM6DSOX and an expanded machine learning core.

Designed for high-performance industrial applications, the ISM330DHCX builds on the capabilities of the consumer grade LSM6DSRX but offers a significantly wider operating temperature range of -40 to +105°C compared to the LSM6DSRX's -40 to +85°C. While offering a linear acceleration range up to 16 g, the ISM330DHCX features a maximum angular rate measurement range of 4,000°/s, one of the highest angular rate measurement ranges available in a device of this class. As required for industrial applications, the ISM330DHCX exhibits little temperature dependency. Its accelerometer features only 0.005%/°C in sensitivity and 0.1 mg/°C zero-g drift, while its gyroscope exhibits 0.007%/°C sensitivity and 0.005°/s per °C zero-rate drift.

As with most advanced IMUs, the ISM330DHCX integrates easily with a host processor using an I2C or SPI connection. Developers can connect the device in four different configurations:

  1. Used solely connected to a host (Mode 1)
  2. Used with the Sensor Hub feature (Mode 2)
  3. Used connected to a primary host as well as a secondary host able to read gyroscope only data (Mode 3)
  4. Used connected to a primary host as well as a secondary host able to read both gyroscope and accelerometer data (Mode 4)

In Mode 2, the ISM330DHCX can operate as a sensor hub, serving in slave mode to a host as well as a master to external sensors connected to its I2C interface (Figure 3).

Diagram of STMicroelectronics ISM330DHCXFigure 3: The STMicroelectronics ISM330DHCX can be configured to run in multiple operating modes including Mode 2, shown here, which allows the ISM330DHCX to serve as a sensor hub to external sensors, providing the combined data to the host. (Image source: STMicroelectronics)

Rapid IMU development

Since digital IMUs present minimal hardware requirements, developers can largely forgo hardware design in the early stages of development, moving immediately to software development by using a range of development boards from industrial IMU device manufacturers. For example, the Bosch Application Board is designed to accept a wide range of daughter boards including the Bosch BMI090L shuttle board. Based on an Arm® Cortex®-M4 processor, the Bosch Application Board provides multiple test points and connectors as well as a USB connection for power and development on a host personal computer.

To speed evaluation and prototyping of industrial applications based on the STMicroelectronics ISM330DHCX, developers can use the Adafruit Industries 4502 ISM330DHCX evaluation board connected to an Adafruit Industries 4382 STM32F405 Feather development board as the hardware platform.

For software development, the Adafruit CircuitPython LSM6DS github software repository supports a number of STMicroelectronics IMUs including the ISM330DHCX as well as the LSM6DSOX and LSM6DS33. As a result, developers can quickly build prototype applications using only a few lines of Python code to read data from ISM330DHCX sensors (Listing 1).

import time
import board
import busio
from adafruit_lsm6ds import ISM330DHCT
i2c = busio.I2C(board.SCL, board.SDA)
sensor = ISM330DHCT(i2c)
while True:
    print("Acceleration: X:%.2f, Y: %.2f, Z: %.2f m/s^2" % (sensor.acceleration))
    print("Gyro X:%.2f, Y: %.2f, Z: %.2f degrees/s" % (sensor.gyro))

Listing 1: Developers can use an Adafruit CircuitPython module to rapidly prototype applications able to read ISM330DHCX sensor data simply by accessing attributes of an ISM330DHCX object. (Code source: Adafruit Industries)

STMicroelectronics also provides its own ISM330DHCX-based STEVAL-MKI210V1K add-on board, which connects through a DIL 24 adaptor to the company's STEVAL-MKI109V3 development board based on its STM32F401VE microcontroller. For evaluating the ISM330DHCX with this board setup, STMicroelectronics provides a software package for Linux (STSW-MKI109L), Mac OSX (STSW-MKI109M), and Windows (STSW-MKI109W).

Although this STEVAL hardware platform focuses strictly on the ISM330DHCX, developers can turn to the STMicroelectronics X-NUCLEO-IKS02A1 expansion board for evaluating the ISM330DHCX in combination with other sensors. Along with an ISM330DHCX IMU, the X-NUCLEO-IKS02A1 expansion board includes an STMicroelectronics IIS2MDC magnetometer, IIS2DLPC low-power accelerometer, and IMP34DT05 MEMS digital omnidirectional microphone. The NUCLEO-IKS02A1 expansion board is designed to plug into an STMicroelectronics NUCLEO board such as the NUCLEO-L476RG to provide a full-featured hardware platform.

For production code development, the STMicroelectronics STM32Cube software package and associated X-CUBE-MEMS1 software add-on provide a comprehensive software platform. Along with board and device drivers, the X-CUBE-MEMS1 package provides a number of sample applications that can be run on the sensor and baseboard set or used as the basis for custom development. For example, a vibration monitoring application illustrates a simple loop that continuously reads data from the ISM330DHCX accelerometer on the X-NUCLEO-IKS02A1 expansion board (Listing 2).

while (fftIsEnabled == 0)
      if (((HAL_GetTick() - start) > 6000))
        return 0;
      IKS02A1_MOTION_SENSOR_FIFO_Get_Tag(IKS02A1_ISM330DHCX_0, &tag);
      if (tag == (uint8_t)ISM330DHCX_XL_NC_TAG)
        IKS02A1_MOTION_SENSOR_FIFO_Get_Axes(IKS02A1_ISM330DHCX_0, MOTION_ACCELERO, &acceleration);
      /* Store data */
      single_data.AXIS_X = (float)acceleration.x;
      single_data.AXIS_Y = (float)acceleration.y;
      single_data.AXIS_Z = (float)acceleration.z;
      /* Remove DC offset */
      MotionSP_accDelOffset(&single_data_no_dc, &single_data, DC_SMOOTH, RestartFlag);
      /* Fill the accelero circular buffer */
      MotionSP_CreateAccCircBuffer(&AccCircBuffer, single_data_no_dc);
      if (AccCircBuffer.Ovf == 1)
        fftIsEnabled = 1;
        AccCircBuffer.Ovf = 0;
      MotionSP_TimeDomainProcess(&sTimeDomain, (Td_Type_t)MotionSP_Parameters.td_type, RestartFlag);
      RestartFlag = 0;

Listing 2: This snippet from a vibration monitoring sample application in the STMicroelectronics X-CUBE-MEMS1 package demonstrates a simple loop for reading accelerometer data from the ISM330DHCX IMU. (Code source: STMicroelectronics)

Within this loop, the function IKS02A1_MOTION_SENSOR_FIFO_Get_Tag() calls an ISM330DHCX-specific routine, ism330dhcx_fifo_sensor_tag_get(), that returns a tag identifying the specific source sensor on the ISM330DHCX or external sensor when operating in mode 1 configuration. This tagging capability built into the ISM330DHCX provides a mechanism to easily identify multiple types and sources of data data stored in the device's 3 kilobyte first-in first-out (FIFO) buffer. In this example, the application expects an accelerometer tag, ISM330DHCX_XL_NC_TAG.

A subsequent call to IKS02A1_MOTION_SENSOR_FIFO_Get_Axes() calls the ISM330DHCX-specific routine, ISM330DHCX_FIFO_ACC_Get_Axes() for accelerometer data, or ISM330DHCX_FIFO_GYRO_Get_Axes() for gyroscope data. In this example, the call uses ISM330DHCX_FIFO_ACC_Get_Axes(), which in turn calls a low-level routine, ISM330DHCX_FIFO_Get_Data(), that performs the register-level operations needed to read FIFO buffer data and then return sensitivity-scaled acceleration data for each of the three axes (Listing 3).

int32_t ISM330DHCX_FIFO_ACC_Get_Axes(ISM330DHCX_Object_t *pObj, ISM330DHCX_Axes_t *Acceleration)
  uint8_t data[6];
  int16_t data_raw[3];
  float sensitivity = 0.0f;
  float acceleration_float[3];
  if (ISM330DHCX_FIFO_Get_Data(pObj, data) != ISM330DHCX_OK)
    return ISM330DHCX_ERROR;
  data_raw[0] = ((int16_t)data[1] << 8) | data[0];
  data_raw[1] = ((int16_t)data[3] << 8) | data[2];
  data_raw[2] = ((int16_t)data[5] << 8) | data[4];
  if (ISM330DHCX_ACC_GetSensitivity(pObj, &sensitivity) != ISM330DHCX_OK)
    return ISM330DHCX_ERROR;
  acceleration_float[0] = (float)data_raw[0] * sensitivity;
  acceleration_float[1] = (float)data_raw[1] * sensitivity;
  acceleration_float[2] = (float)data_raw[2] * sensitivity;
  Acceleration->x = (int32_t)acceleration_float[0];
  Acceleration->y = (int32_t)acceleration_float[1];
  Acceleration->z = (int32_t)acceleration_float[2];
  return ISM330DHCX_OK;

Listing 3: Designed to support multiple sensors and development boards, the STMicroelectronics X-CUBE-MEMS1 package provides device specific functions such as the one shown here, which in turn calls a low-level routine, ISM330DHCX_FIFO_Get_Data(), to perform the required register-level operations. (Code source: STMicroelectronics)

Other sample code sets in the X-CUBE-MEMS1 software package demonstrate an electronic compass, tilt sensing, sensor calibration, and data fusion using the MotionFX sensor fusion library included in the package. Combined with the NUCLEO board set, the STMicroelectronics STM32Cube and X-CUBE-MEMS1 software packages provide a comprehensive development platform to build production-ready, motion-based industrial applications.


In addition to coping with harsh operating conditions, designs for industrial products often need to support product line extended lifetimes. For motion-based industrial applications, industrial IMUs provide the combination of robust characteristics and stability required to deliver accurate measurements despite thermal and mechanical stress. The availability of long-life industrial IMUs provides developers with the ability to deliver effective design solutions for industrial product lines that depend on robust motion data and long-term device availability.

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of Digi-Key Electronics or official policies of Digi-Key Electronics.

About this author

Stephen Evanczuk

Stephen Evanczuk has more than 20 years of experience writing for and about the electronics industry on a wide range of topics including hardware, software, systems, and applications including the IoT. He received his Ph.D. in neuroscience on neuronal networks and worked in the aerospace industry on massively distributed secure systems and algorithm acceleration methods. Currently, when he's not writing articles on technology and engineering, he's working on applications of deep learning to recognition and recommendation systems.

About this publisher

Digi-Key's North American Editors