Accelerometer, Gyroscope and IMU Sensors in Robotics

How do you find the best accelerometer, gyroscope, or IMU sensor for your robot? How do you know which sensor is compatible with Arduino and Raspberry Pi development boards?

I wish there had been a list detailing the accelerometer, gyroscope, and IMU sensors that can be used in robotics and are compatible with Arduino and Raspberry Pi boards.

On this page, we compiled them in a brief overview.

If you think I’ve left an important one out, please leave me a note in the comments or send me an email.

This page is still a work in progress and subjected to change in the future! This page was last edited on 14.05.2020

Before moving on to the list of sensors, we will first see what the differences are between an accelerometer, a gyroscope, and an IMU sensor.

The difference between an Accelerometer, a Gyroscope and an IMU Sensor

1. An accelerometer sensor is used to sense both static and dynamic acceleration of a robot. In other words, an accelerometer is used to sense the changes in speed when the robot is speeding up or slowing down.

2. A gyroscope sensor measures the angular momentum around each axis of your robot. In other words, a gyro sensor measures how fast the robot is spinning about the three axes of rotation: [x, y, and z] OR [roll, pitch, and yaw].

3. An IMU (Inertial Measurement Unit) sensor is used to determine the motion, orientation, and heading of the robot. An IMU sensor is a complete package that includes an accelerometer, a gyroscope, and a magnetometer sensor. The magnetometer sensor senses the earth’s magnetic field to get a compass heading to correct the gyroscope sensor.

Once we know the differences between the sensors, we go further to the list of sensors.

1. List of Accelerometer Sensors

ADXL335

ADXL335

ADXL335



  • Interface: analog
  • Current: 350 µA
  • Supply voltage range: 1.8 V to 3.6V
  • Measured acceleration: ±3 g
  • Interaxis Alignment Error: ±0.1 degrees
  • Sensitivity: ±1 %
  • ADXL335 datasheet

The ADXL335 is a MEMS accelerometer with a full sensing range of ±3g on three axes (X, Y, Z) and power consumption of 320 µA.

You can find the ADXL335 integrated into breakout modules that make more accessible the connections and readings the output of the sensor.

  • GY-61 ADXL335 on Amazon – it has an onboard voltage regulator to provide a maximum of 3.6V for the ADXL335 sensor. The breakout board can be connected at a power supply of 3-5V.
  • Adafruit ADXL335 on Adafruit and Amazon – it has an onboard regulator which takes up to 5V in and regulates it to 3.3V. This breakout board and the GY-61 ADXL335 are a perfect choice for interfacing with a 5V microcontroller such as the Arduino.
  • SparkFun Triple Axis Accelerometer Breakout on Sparkfun and Amazon – this breakout board is compatible with a maximum power supply of 3.3VDC. It works best with an Arduino Pro Mini.

All of the above breakout boards for the ADXL335 sensor are Arduino compatible. You can use it with Raspberry Pi, but you need an ADC Differential Pi board to convert the analog signal returned by the sensors into a digital signal for Raspberry Pi.

ADXL345

ADXL345

ADXL345



  • Interface: SPI and I2C digital interfaces
  • Current: 23 µA in measurement mode and 0.1 µA in standby mode
  • Supply voltage range: 2.0V to 3.6V
  • Measured acceleration: ±2, ±4, ±8, ±16
  • Interaxis Alignment Error: ±0.1 degrees
  • Sensitivity: ±1 %
  • ADXL345 datasheet

I treated the ADXL345 sensor separately from the ADXL335 because there are significant differences between these two sensors. The ADXL345 is a more advanced sensor ideal for mobile applications that run on battery. In other words, it’s perfect for robots and drones.

ADXL345 has a measuring range between ±2g and ±16 g. The sensor has an accuracy angle measurement of less than 1° and power consumption of about ten times less than the ADXL335 version when it is in sleep mode.

The ADXL345 is a digital sensor that returns values via the I2C or SPI digital protocol.

You can find the ADXL345 integrated into breakout modules that make more accessible the connections and readings the output of the sensor.

  • GY-291 ADXL345 on Amazon – it has an onboard regulator which takes up to 5V in and regulates it to a maximum 3.6V for the ADXL345 chip. The GY-291 ADXL345 has I2C and SPI communications protocols, which make it a perfect choice for interfacing with a 5V microcontroller such as the Arduino or a Linux computer like Raspberry Pi.
  • Adafruit ADXL345 on Adafruit and Amazon – The Adafruit breakout board has an onboard voltage regulator which can take up to 5V in and regulates it to 3.3V with an output pin. This is also an ideal breakout board for Arduino and Raspberry Pi boards.

2. List of Gyroscope Sensors

L3GD20H

L3GD20H

L3GD20H



  • Interface: SPI and I2C digital interfaces
  • Current: 5.0mA
  • Supply voltage range: 2.2 V to 3.6 V
  • Measured degrees per second: ±245/±500/±2000 dps
  • Sensitivity change:±2%
  • Sensitivity: 8.75, 17.50, 70.00 mdps/digit
  • L3GD20H datasheet

A gyroscope sensor measures the rotational movement in degrees per second. One of the most popular gyroscope sensors in robotics is the L3GD20H. This sensor is an improved version of the L3GD20 and L3GD4200.

The sensor can measure the rotational movement on three axes at a full scale of ±250, ±500, or ±2000 degrees per second.

The L3GD20H chip provides satisfactory accuracy for most applications in robotics. For high precision, the sensor should be calibrated for zero-rate and sensitivity.

  • L3GD20H on Amazon – L3GD20H is a small chip integrated into different breakout boards. These breakout boards are 3.6 V suitable, which makes them compatible with a microcontroller like Arduino Pro Mini.
  • L3GD20H Triple-Axis Gyro Breakout Board on Adafruit and Amazon – This breakout board has a built-in voltage regulator so you can power it from 5V. This means that you can easily interface with any microcontroller such as Arduino or a computer like Raspberry Pi.

3. List of IMU Sensors

MPU6050

MPU6050

MPU6050



  • Interface: I2C
  • Current: 3.9mA
  • Supply voltage range: 2.3V-3.46V
  • Measured acceleration: ±2g, ±4g, ±8g and ±16g
  • Sensitivity: ±2 %
  • Accelerometer filter: LOW PASS FILTER
  • Measured degrees per second: ±250, ±500, ±1000, and ±2000
  • Sensitivity change:±2%
  • Gyro filter: LOW PASS FILTER
  • MPU6050 datasheet

The MPU6050 is an accelerometer and a gyroscope sensor at the same time.

The accelerometer sensor measures the force of gravity. These measures have errors and noise. The gyroscope sensor measures the angular velocity. Also, this sensor can return the angular velocity of a robot with a deviation. All these problems are solved by combining an accelerometer with a gyroscope sensor.

The sensor combines a MEMS gyroscope and a MEMS accelerometer and uses a standard I2C bus for data transmission.

  • GY-521 MPU-6050 on Amazon – The GY-521 is a breakout board which includes the MPU-6050 chip. It has an onboard voltage regulator and supports an input voltage of 5V. The communication mode is the standard I2C communication protocol. The GY-521 board can be easily interfaced with any microcontroller such as Arduino or a computer like Raspberry Pi.
MPU9250

MPU9250

MPU9250



  • Interface: I2C
  • Current: 3.7mA
  • Supply voltage range: 2.4 – 3.6V
  • Measured acceleration: ±2g, ±4g, ±8g and ±16g
  • Sensitivity: ±2%
  • Accelerometer filter: Low Pass Filter
  • Measured degrees per second: ±250, ±500, ±1000, and ±2000
  • Sensitivity change: ±3
  • Gyro filter: Low Pass Filter
  • Magnetometer: ±4800µT
  • Magnetometer sensitivity: 0.6 µT / LSB
  • MPU9250 datasheet

The MPU9250 is even a bit more complicated than the MPU6050 sensor. The 9250 includes an accelerometer, gyroscope, and a magnetometer. This means that the sensor combines reading from the earth’s electromagnetic field with readings of gravitational force and angular velocity. All of these data makes it a compact navigation breakout board.

The sensor includes some excellent features such as low pass filtering, motion detection, and a specialized programmable processor.

  • MPU9250 on Amazon – this board has a voltage regulator and is 5V compatible. It integrates an I2C communication protocol, which makes it ideal for interfacing with an Arduino microcontroller or a Linux computer like Raspberry Pi.
  • SparkFun IMU Breakout – MPU-9250 on Sparkfun or Amazon – this breakout board is 3.6V compatible and include the I2C communication protocol. This board is ideal for an Arduino Pro Mini.
BNO055

BNO055

BNO055



  • Interface:I2C, UART
  • Current: 2.72mA
  • Supply voltage range: 2.4V – 3.6V
  • Measured acceleration: ±2g, ±4g, ±8g and ±16g
  • Sensitivity: 2%
  • Accelerometer filter: Low-pass filter
  • Measured degrees per second: ±125 to ±2000
  • Sensitivity change: ±3%
  • Gyro filter: Low-pass filter
  • Magnetometer: ±1300µT (x, y-axis), ±2500µT (z axis)
  • Magnetometer accuracy: ±2.5 deg
  • BNO055 datasheet

The BNO055 is an absolute orientation sensor from Bosch, which integrates the MEMS accelerometer, gyroscope, and magnetometer into a single chip for 3D orientation. The sensor uses a microprocessor to filter and combine the data, giving users their absolute orientation in space.

The chip has an interrupt that can notify the built-in microcontroller when a particular motion has occurred (change in orientation, sudden acceleration, etc.).

  • IMU Brick 2.0 from Tinkerforge – this breakout board includes the nine axes BNO055 sensor and provides continuous self-calibration which means zero accumulating errors and no gimbal lock. The IMU Brick 2.0 works as a USB inertial measurement unit, which makes it ideal for a computer like Raspberry Pi. It also has a ROS driver which makes it flexible for writing robot software.

9 comments » Write a comment

  1. hello..
    can you help me brother to know about accelerometer+arduino?
    do you have a tutorial about it?
    if you have it, share it for me, please..

    thx

  2. Hi Sir,

    Can you mention something about the differences between accelero and gyro sensors and also their interdependence in some cases. How to come up to a decision as to use which one for which application ?

    Thanks in advance.

    • Hi,

      “If an accelerometer sensor is designed to measure the acceleration and tilt, or the gyroscopic sensor to measure angular velocity and orientation, IMU sensor is a special one designed to combine the features of an accelerometer and gyroscope in order to display complete information about the acceleration, position, orientation, speed, etc. for a robot.”

  3. can you pls help me out to learn basics of accelerometer and to interface it with atmega 8 microcontroller.

  4. I am sorry, but “Razor 6DOF and Arduino” link does not work.
    If you happen to remember, what is the link for this solution?
    Thank you

  5. Hello,
    This post is really informative & helped me a lot.
    Could you please give me a basic guideline for placement of the accelerometer & gyroscope on the PCB.
    Is there any need to add an error correction algorithm if the unit (with accelerometer & gyroscope) is placed in the tilted position?
    Would appreciate your response.

    Thank you

Leave a Reply to Dhvinay Cancel reply

Your email address will not be published. Required fields are marked *