6DOF IMU 4 Click Board
6DOF IMU 4 Click Board
The 6DOF IMU 4 Click Board™ is an advanced 6-axis motion tracking Click Board™, which utilises the ICM-20602, a high-performance integrated motion sensor equipped with a 3-axis gyroscope and a 3-axis accelerometer. There is a MEMS on each axis, sampled by a 16-bit A/D converter (ADC). Data streams from each axis are fed to a signal processing engine, offering calibrated readings of each axis over the I2C or SPI interface. A FIFO buffer with 1kb of memory allows MCU firmware optimisation.
Packed with a set of powerful options, the 6DOF IMU 4 Click Board™ represents an ideal solution for developing Motion Tracking applications.
Features such as low power consumption, high precision of motion detection, high shock tolerance up to 20,000 g, a programmable full-scale range for increased accuracy allow the 6DOF IMU 4 Click Board™ to be used for the development of different types of motion detection and MotionTracking™ applications: motion-based game controllers, 3D and gesture controllers, IoT applications, wearable motion sensing applications, and similar applications.
How Does The 6DOF IMU 4 Click Board™ Work?
The 6DOF IMU 4 Click Board™ is based on the ICM-20602, a high-performance, 6-axis MEMS MotionTracking™ IC from TDK Invensense. It is an advanced, integrated microelectromechanical gyroscope and accelerometer sensor (MEMS). The ICM-20602 is produced using the patented CMOS-MEMS fabrication platform, specialised in MEMS production and its integration with accompanying logic sections, on a wafer level. This allows very high integration and tiny dimensions at an affordable cost. The IC contains a separate accelerometer and gyroscope MEMS on each axis. The output of each MEMS is processed and digitised by a separate sigma-delta 16-bit A/D converter (ADC).
Three-axis gyroscope MEMS can be programmed to measure the rotation of each axis in four different ranges of rotational speed (degrees per angle, DPS): ±250, ±500, ±1000, and ±2000. Three-axis accelerometer MEMS can be programmed to measure the acceleration along each axis in four different acceleration ranges: ±2g, ±4g, ±8g, and ±16g. You can select an optimal range for both properties depending on the application requirements.
The ICM-20602 incorporates a powerful programmable interrupt engine. The interrupt engine can generate a signal on the interrupt pin for several interrupt sources, including FIFO Buffer overflow, Data Ready, I2C Master Error, and I2C Slave Error. The interrupt is routed to the INT pin of the mikroBUS™.
A FIFO buffer helps to further reduce the processing load, offering temporary storage for the output data. The MPU6050 features a FIFO buffer with a capacity of 1024 bytes. The user can select which data will be stored in the FIFO buffer: gyro data, accel data, temperature readings, and additional sensor readings. Once the FIFO buffer is full, it will start discarding the oldest data, allowing new data to be written. The FIFO buffer overflow condition can be used to trigger an interrupt, alerting the host MCU about its status.
Synchronisation with an external digital signal is possible over the FSYNC pin. This pin is routed to the PWM pin of the mikroBUS™, labelled as SYN. The ICM-20602 can be programmed to trigger an interrupt on the FSYN pin activity. The polarity of the signal pulse applied at the FSYN pin can also be programmed.
The 6DOF IMU 4 Click Board™ supports SPI and I2C communication interfaces, allowing it to be used with various MCUs. The communication interface can be chosen by moving SMD jumpers grouped under the COM SEL to an appropriate position (SPI or I2C). The slave I2C address can also be configured by an SMD jumper when the Click board™ is operated in the I2C mode: an SMD jumper labelled as ADD SEL is used to set the least significant bit (LSB) of the I2C address. When set to 1, the 7-bit I2C slave address becomes 0b1101000x. If set to 0, the address becomes 0b1101001x. The last digit (x) is the R/W bit.
The 6DOF IMU 4 Click Board™ uses both I2C and SPI communication interfaces. It is designed to be operated only with 3.3V logic levels. A proper logic voltage level conversion should be performed before the Click board™ is used with MCUs with logic levels of 5V.
SPECIFICATIONS
Type | Acceleration,Gyroscope,Motion |
Applications | It is a perfect solution for developing different types of motion detection and MotionTracking™ applications: motion-based game controllers, 3D and gesture controllers, IoT applications, wearable motion sensing applications, and similar applications. |
On-board modules | ICM-20602, a high-performance, 6-axis MEMS MotionTracking™ IC from TDK Invensense. |
Key Features | Six independent MEMS (one on each axis), sampled by a dedicated 16-bit ADC, external synchronisation pin, output data filtering, selectable accel and gyro ranges for increased precision, a FIFO buffer with 1kb of memory, etc. |
Interface | I2C,SPI |
Compatibility | mikroBUS |
Click board size | M (42.9 x 25.4 mm) |
Input Voltage | 3.3V |
PINOUT DIAGRAM
This table shows how the pinout of the 6DOF IMU 4 Click Board™ corresponds to the pinout on the mikroBUS™ socket (the latter shown in the two middle columns).
Notes | Pin | Pin | Notes | ||||
---|---|---|---|---|---|---|---|
NC | 1 | AN | PWM | 16 | SYN | External Sync | |
NC | 2 | RST | INT | 15 | INT | Interrupt | |
SPI Chip Select | CS | 3 | CS | RX | 14 | NC | |
SPI Clock | SCK | 4 | SCK | TX | 13 | NC | |
SPI Data OUT | SDO | 5 | MISO | SCL | 12 | SCL | I2C Clock |
SPI Data IN | SDI | 6 | MOSI | SDA | 11 | SDA | I2C Data |
Power Supply | 3.3V | 7 | 3.3V | 5V | 10 | NC | |
Ground | GND | 8 | GND | GND | 9 | GND | Ground |
ONBOARD SETTINGS AND INDICATORS
Label | Name | Default | Description |
---|---|---|---|
LD1 | PWR | - | Power LED indicator |
JP1, JP4 | COM SEL | Left | Communication interface selection: left position I2C, right position SPI |
JP5 | ADDR SEL | Left | Slave I2C address LSB selection: left position 0, right position 1 |
Software Support
We provide a library for the 6DOF IMU 4 Click Board™ on our LibStock page and a demo application (example), developed using MikroElektronika compilers. The demo can run on all the main MikroElektronika development boards.
Library Description
The library performs a gyroscope, accelerometer and temperature measurements and controls the 6DOF IMU 4 Click board. Users also can select a desired full-scale range, offset and threshold for the desired measurement. The control of the 6DOF IMU 4 Click board can be performed by using I2C or SPI interface. For more details, check the documentation.
Key Functions
T_C6DOFIMU4_RETVAL c6dofimu4_writeByte( uint8_t regAddr, uint8_t dataIn )
- Function writes one byte data to the desired register.T_C6DOFIMU4_RETVAL c6dofimu4_readBytes( uint8_t startAddr, uint8_t *dataOut, uint8_t nBytes )
- Function performs a sequential data reading starting from the desired address.void c6dofimu4_getData( T_c6dofimu4_axis *accelOut, T_c6dofimu4_axis *gyroOut, int8_t *tempOut )
- Function performs a data reading and all necessary calculations to get accelerometer, gyroscope and temperature data.T_C6DOFIMU4_RETVAL c6dofimu4_setFSR( uint8_t gyro_resol, uint8_t accel_resol )
- Function selects a measurement full scale range.
Example Description
The application is composed of three sections :
- System Initialization - Initializes peripherals and pins.
- Application Initialization - Initializes I2C or SPI interface and performs a device reset and configurations.
- Application Task - (code snippet) - Waits until data is ready, reads all data registers, accelerometer, gyroscope and temperature data, and shows results to the UART terminal every 500ms.
void applicationTask() { dataReady = c6dofimu4_getStatus( _C6DOFIMU4_DATA_RDY_INT_MASK ); while (dataReady != _C6DOFIMU4_DATA_RDY_INT_OCCURED) { dataReady = c6dofimu4_getStatus( _C6DOFIMU4_DATA_RDY_INT_MASK ); } c6dofimu4_getData( &accel_data, &gyro_data, &temperature ); mikrobus_logWrite( "** Accelerometer values :", _LOG_LINE ); logAxis( &accel_data, &accelUnit[0] ); mikrobus_logWrite( "", _LOG_LINE ); mikrobus_logWrite( "** Gyroscope values :", _LOG_LINE ); logAxis( &gyro_data, &gyroUnit[0] ); mikrobus_logWrite( "", _LOG_LINE ); mikrobus_logWrite( "** Temperature value : ", _LOG_TEXT ); ShortToStr( temperature, text ); mikrobus_logWrite( text, _LOG_TEXT ); mikrobus_logWrite( tempUnit, _LOG_LINE ); mikrobus_logWrite( "-------------------------------------------------", _LOG_LINE ); mikrobus_logWrite( "", _LOG_LINE ); Delay_ms( 500 ); }
Additional Functions :
- floatCut - Makes to float values be rounded on two decimal places.
- logAxis - Logs axis values for the desired measured data on the UART terminal.
The complete application code and ready-to-use projects can be found on our LibStock page.
Other mikroE Libraries used in the example:
I2C
SPI
UART
Additional Notes and Information
Depending on the development board you are using, you may need USB UART Click Board™, USB UART 2 Click Board™ or RS232 Click Board™ to connect to your PC, for development systems with no UART to USB interface available on the board. The terminal available in all MikroElektronika compilers, or any other terminal application of your choice, can be used to read the message.
MIKROSDK
The 6DOF IMU 4 Click Board™ is supported with mikroSDK - MikroElektronika Software Development Kit. To ensure proper operation of mikroSDK compliant Click Board™ board demo applications, mikroSDK should be downloaded from the LibStock and installed for the compiler you are using.
Software Support
We provide a library for the 6DOF IMU 4 Click Board™ on our LibStock page and a demo application (example), developed using MikroElektronika compilers. The demo can run on all the main MikroElektronika development boards.
Library Description
The library performs a gyroscope, accelerometer and temperature measurements and controls the 6DOF IMU 4 Click board. Users also can select a desired full-scale range, offset and threshold for the desired measurement. The control of the 6DOF IMU 4 Click board can be performed by using I2C or SPI interface. For more details, check the documentation.
Key Functions
T_C6DOFIMU4_RETVAL c6dofimu4_writeByte( uint8_t regAddr, uint8_t dataIn )
- Function writes one byte data to the desired register.T_C6DOFIMU4_RETVAL c6dofimu4_readBytes( uint8_t startAddr, uint8_t *dataOut, uint8_t nBytes )
- Function performs a sequential data reading starting from the desired address.void c6dofimu4_getData( T_c6dofimu4_axis *accelOut, T_c6dofimu4_axis *gyroOut, int8_t *tempOut )
- Function performs a data reading and all necessary calculations to get accelerometer, gyroscope and temperature data.T_C6DOFIMU4_RETVAL c6dofimu4_setFSR( uint8_t gyro_resol, uint8_t accel_resol )
- Function selects a measurement full scale range.
Example Description
The application is composed of three sections :
- System Initialization - Initializes peripherals and pins.
- Application Initialization - Initializes I2C or SPI interface and performs a device reset and configurations.
- Application Task - (code snippet) - Waits until data is ready, reads all data registers, accelerometer, gyroscope and temperature data, and shows results to the UART terminal every 500ms.
void applicationTask() { dataReady = c6dofimu4_getStatus( _C6DOFIMU4_DATA_RDY_INT_MASK ); while (dataReady != _C6DOFIMU4_DATA_RDY_INT_OCCURED) { dataReady = c6dofimu4_getStatus( _C6DOFIMU4_DATA_RDY_INT_MASK ); } c6dofimu4_getData( &accel_data, &gyro_data, &temperature ); mikrobus_logWrite( "** Accelerometer values :", _LOG_LINE ); logAxis( &accel_data, &accelUnit[0] ); mikrobus_logWrite( "", _LOG_LINE ); mikrobus_logWrite( "** Gyroscope values :", _LOG_LINE ); logAxis( &gyro_data, &gyroUnit[0] ); mikrobus_logWrite( "", _LOG_LINE ); mikrobus_logWrite( "** Temperature value : ", _LOG_TEXT ); ShortToStr( temperature, text ); mikrobus_logWrite( text, _LOG_TEXT ); mikrobus_logWrite( tempUnit, _LOG_LINE ); mikrobus_logWrite( "-------------------------------------------------", _LOG_LINE ); mikrobus_logWrite( "", _LOG_LINE ); Delay_ms( 500 ); }
Additional Functions :
- floatCut - Makes to float values be rounded on two decimal places.
- logAxis - Logs axis values for the desired measured data on the UART terminal.
The complete application code and ready-to-use projects can be found on our LibStock page.
Other mikroE Libraries used in the example:
I2C
SPI
UART
Additional Notes and Information
Depending on the development board you are using, you may need USB UART Click Board™, USB UART 2 Click Board™ or RS232 Click Board™ to connect to your PC, for development systems with no UART to USB interface available on the board. The terminal available in all MikroElektronika compilers, or any other terminal application of your choice, can be used to read the message.
MIKROSDK
The 6DOF IMU 4 Click Board™ is supported with mikroSDK - MikroElektronika Software Development Kit. To ensure proper operation of mikroSDK compliant Click Board™ board demo applications, mikroSDK should be downloaded from the LibStock and installed for the compiler you are using.
6DOF IMU 4 Click Board
Frequently Asked Questions
Have a Question?
Be the first to ask a question about this.