Self balancing or collision detection is just two applications where accelerometers, gyroscopes and IMUs sensors are used to measure the different mechanical phenomenon such as acceleration, vibration, tilt, orientation in space, angular velocity, pitch or rotation. In this article, I explore a long list of sensors, tutorials and guides in order to give a complete overview about accelerometer, gyroscope and IMU sensor.
The suite of sensors with different measurements including acceleration, tilt, angular velocity, and other mechanical phenomenons are used in different devices including smartphones, gaming consoles, toys, but especially in robotics to measure the balancing, monitor the motion, or as a detector for collision or vibration.
If an accelerometer sensor is designed to measure the acceleration and tilt, a gyroscopic sensor to measure angular velocity and orientation, the 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.
The accelerometer sensor measure acceleration in two different units including meters per second squared, or when the acceleration felt as weight, in G-forces. Inside this tiny sensor is a small systems that bend when a momentum or gravity force is applied. The amount of bend has a proportional value in the output signal.
The advantages of the accelerometer sensor include a high accuracy in applications with noises, as well the acceleration measurement down to zero Hertz. The biggest disadvantage of this sensor is the limited high frequency where the sensor works.
The gyroscope sensor is inexpensive and measure in degrees per second or revolutions per second the angular velocity. Is frequently used in robot applications for balancing in order to send corrections to motors, or for drones to stabilize the flight. This tiny sensor uses a disc with a large heavy rim designed to resist movement when is spun on its axis.
The IMU or Inertial Measurement Unit is a sensor designed to contain other two types of sensors. An IMU sensor can be used instead an accelerometer or gyro sensor, but first should be set the tolerance for errors. The biggest disadvantage of this sensor is the error in measurement.
All these sensors are tiny and very cheap as components for a wide range of measurements. The calibration of a sensor is a method aiming to reduce the errors in the sensor outputs, while the performance increasing as well as accuracy.
A list with a wide range of accelerometer sensors and tutorials that show you how to interface and program the sensors.
Starting with a list of sensors and finishing with a collection of tutorials, in this chapter is available a series of accelerometer sensors as well as tutorials to start learning how to interface an accelerometer sensor and how to add code in order to read information from these tiny components.
OSEPP Accelerometer Sensor Module – sensor with 3-axis and high resolution measurement of up to +/- 16 g. The sensor provides measurements in less than 1.0 degrees of inclination.
MMA7260Q – triple-axis accelerometer sensor with three analog output channels and selectable range.
ADXL330 – triple-axis accelerometer sensor and range between -3g to + 3g. The features include a very low noise and a low power consumption.
ADXL335 – one of the most powerful tripled-axis accelerometer sensor from ADXL series capable for measurement range between -3g to + 3g. It has triple-axis MEMS accelerometer with extremely low noise and power consumption. The sensor has a full sensing range of +/-3g.
Memsic 2125 – dual-axis accelerometer sensor with a range between -3g to + 3g designed to measure the acceleration, rotation, tilt, and vibration of a robot.
In the following are available a series of tutorials to interface and programs to read the data from accelerometer sensors.
- Guide: Gyro and Accelerometer Kalman filtering, with the Arduino – comprehensive guides how to use Kalman filtering together with the Arduino board, gyro and accelerometer sensors;
- Accelerometer Sensor Module – code lines example for an OSEPP accelerometer sensor;
- A new homebrew DIY breakout board PCB for the ADXL345 accelerometer – tutorial with schematic connection for ADXL345 accelerometer and Arduino Duemilanove board;
- The quadcopter : how to compute the pitch, roll and yaw – tutorial programming Arduino board interfacing 3-axis accelerometer sensor for orientation in space of a quadcopter;
- Interfacing MMA7260 Triple Axis Accelerometer with ATmega32 – AVR Tutorial – tutorial how to interface, setup hardware and programming MMA7260 3-axis accelerometer with AVR microcontroller;
- Using an accelerometer with an AVR microcontroller – guide how to interface an ADXL330 accelerometer sensor with AVR microcontroller;
- Interfacing an accelerometer with a Basic Stamp – scheme and programming lines to interface BS2 microcontroller with dual-axis Memsic 2125 accelerometer;
- Connecting an Accelerometer to the ADC – guide for a basic ADC program to determine the G force of an accelerometer;
- Reading Accelerometer Data with Microcontroller – good example how to interface an accelerometer sensor with Atmega 8535 microcontroller;
- The Accelerometer: Introduction – tutorial to interface an accelerometer sensor with PIC microcontroller in order to measure the acceleration;
- Accelerometers and Arduino ADXL345 – An Introduction – guide how to setup and programming Arduino board interface with ADXL345 triple-axis accelerometer;
- iPhone Tutorial – Reading the Accelerometer – the smartphones are very useful tools to control robots. Using the accelerometer sensor located into the device, robots could be controlled with simple movements. This is a good tutorial to indicate accelerometer movements of an iPhone;
- iOS Programming Recipe 19: Using Core Motion to Access Gyro and Accelerometer – guide how to create an application to indicate the G and rotation of an iPhone;
- ADXL345 accelerometer breakout board + Arduino and Processing – programming lines and scheme to interface an ADXL345 accelerometer breakout board with an Arduino board;
- ADXL345 input 3-axis digital accelerometer Linux driver – comprehensive tutorial how to build a driver Linux compatible for ADXL345 accelerometer sensor;
Below is a list with a wide range of gyroscope sensors and tutorials in order to interface and program the data information from the sensor.
Starting with a list of sensors and finishing with a series of tutorials, in this chapter is available a series of gyroscope sensors as well as tutorials and guides to start learning how to interface and how to programming electronic boards to display the information from gyro sensors.
OSEPP Gyroscope Sensor – three-axis gyroscope sensor Arduino compatible with a high robustness.
Grove – 3-Axis Gyro – high shock tolerance 3-axis gyroscope sensor for a wide range of applications.
InvenSense ITG-3200 – triple-axis gyroscope sensor with serial interface and digitally-programmable low-pass filter.
LPY530AL – dual-axis gyro sensor with two different analog outputs. High accuracy in measurement of angular velocity or pitch and yaw axes.
L3GD20 – easily configurable with an Arduino board, L3GD20 is a three-axis gyroscope sensor with voltage regulator included.
ITG-3200 – optimized sensor for a wide range of applications including motion-based remote control with measurement on three axes.
IDG300 – dual-axis gyroscope sensor optimized for high performance in industrial applications.
Lego Mindstorms NXT Gyro Sensor – sensor designed to be integrated in Lego NXT applications.
ADXRS613 – very small board with MEMS gyroscope.
Above are available a series of gyroscopic sensors with a wide range of features and designed for integration in many applications especially in robotics. Below is available a collection with tutorials and guides to understand how to interface and programming different gyro sensors with electronic boards.
- Playing with an Arduino and sensors – guide how to interface Arduino Nano with different sensors including IMU or gyroscope sensors;
- Using the L3G4200D gyroscope with the Arduino – step by step this tutorial helps you understand how to interface and how to code Arduino board to measure the angular rate of motion;
- Arduino, Gyroscope and Processing – comprehensive tutorial for interface, setup and programming Arduino board to read analog output from Gyroscope XV-8100 sensor;
- The Balancing Robot – guide how a gyro sensor can be used in a real application for a self-balancing robot;
- The L3GD20 3-Axis Gyro – comprehensive technical material to interface Arduino board with L3GD20 3-axis gyro sensor;
- Gyroscope Module 3-Axis L3G4200D – comprehensive tutorial to interface and write programming lines to the Arduino board connected with L3G4200D 3-axis gyro sensor in order to determine the yaw, pitch, and roll;
- Gyor sensor as a rotation sensor – guide how to use the triple axes ITG-3200 gyro sensor to measure the rotation;
- Arduino, Gyroscope and Processing – step by step tutorial to interface and code the Arduino board with gyroscope model XV81-000;
- Gyroscope calibration helper 01, for AVR Atmega, Arduino and other micro – guide how to calibrate a gyroscope sensor using different electronic resources in order to increase the accuracy of measurements;
- Measuring Tilt Angle with Gyro and Accelerometer – guide how to use gyro and accelerometer sensors to measure tilt angle of a robot;
- Getting the angular position from gyroscope data – impressive example how to measure the angular position for a drone using a gyroscope sensor and Arduino board;
- Triple Axis Gyro Breakout ITG-3200 Quickstart Guide – tutorial from Sparkfun series where a gyro ITG-3200 breakout board is interfaced with an Arduino board;
- Programming the VEX Gyro in ROBOTC – an example of how to code a gyro sensor to determine the rotation of a ROBOTC platform;
A list with a wide range of IMU sensors and tutorials including how to interface and write the program to read the information readed by the sensors.
In this chapter are available a series of IMU sensors as well as tutorials and guides to start learning how to interface and how to add programming lines for electronic boards to display the information from IMU sensors.
AltIMU-10 Gyro, Accelerometer, Compass, and Altimeter – inertial measurement unit sensor with up to ten independent measurements for pressure, magnetic, rotation, and acceleration in order to calculate the altitude and orientation of the robot;
IDG500/ADXL335 – IMU board with IDG500 dual-axis gyroscope and ADXL335 accelerometer sensors that provide tilt and pitch measurement on five axes.
Ultra-Thin IMU – board with LPR530AL, LY530ALH and ADXL335 sensors included and six-axes measurement for pitch, roll, or yaw.
ITG3200/ADXL345 – IMU board with ADXL345 accelerometer and ITG-3200 MEMS gyro sensors that provide measurements on six axes.
Ding and Dent – a wide range of measurements for this IMU sensor that include ADXL345 accelerometer, HMC5843 magnetometer, and ITG-3200 gyro sensors while providing measurements for orientation and location for a total of nine degrees of freedom.
From simple to advanced sensors, above is available a list with IMU sensors used in robotics for orientation or location measurements. Below a series of tutorials and guides are written to understand how to setup, interface, and write programming lines to display the measurements of IMU sensors.
- Programming Arduino To Read IMU – programming Arduino Deumilanove tutorial in order to print the values from Razor 6DOF accelerometer/gyro sensor;
- Balancing robot for dummies – step by step tutorial to build a balancing robot using five axes IMU sensor;
- Razor 6DOF and Arduino – guide how to interface and code Arduino board to display measurement of 3 gyroscopes and 3 accelerometers included in IMU sensor;
- Tutorial: Building an AHRS/Head-tracker using the “9DOF Razor IMU” or the “9DOF Sensor Stick” by SparkFun – comprehensive tutorial to setup, programming lines, and calibration for an Attitude and Heading Reference System (AHRS);
- A Guide To using IMU (Accelerometer and Gyroscope Devices) in Embedded Applications – comprehensive guide to understand what is and how works IMU sensors;
- My first 6 DOF IMU Sensors Fusion Implementation: ADXL345, ITG3200, Arduino and Processing – tutorial how to interface and program Arduino board and IMU board with ADXL345 accelerometer and the ITG3200 gyroscope sensors;
- Connecting to Sparkfun’s 9DOF “Sensor Stick”: I2C access to ADXL345, ITG-3200, and HMC5843 – setup, interface and code for Arduino board and 9 DOF IMU sensor that include the ADXL345 accelerometer, ITG-3200 gyroscope, and an HMC5843 magnetometer;
- Introducing the QuadHybrid – a stable, maneuverable and cheap flying robotic platform – tutorial how to use for a drone an IMU sensor in order to ensure stability for the robot;