How does it work?
6DOF IMU 7 click is based on the ICM-20649, a high-performance, 6-axis MEMS MotionTracking™ IC from TDK Invensense. It is an advanced, integrated microelectromechanical gyroscope and accelerometer sensor (MEMS). This allows very high integration and very small dimensions, at an affordable cost. The IC contains a MEMS structure hermetically sealed and bonded at wafer level. The ICM-20649 is the world’s first wide-range 6-axis MotionTracking device for Sports and other High Impact applications. It is available in a 3x3x0.9 mm 24-pin QFN package.
Many of today’s wearable and sports solutions, which analyze the motion of a user’s golf or tennis swings, soccer ball kicks, or basketball activities, require higher than currently available ±2000 dps (degrees per second) FSR for gyroscope and ±16g FSR for accelerometer to better insure that critical data is not lost at the point of high impact or high speed rotation. The ICM-20649 – 6-axis inertial sensor used on the 6DOF IMU 7 click offers the smallest size, lowest profile and lowest power in conjunction with industry leading high FSR. With an extended FSR range of ±4000 dps for gyroscope and ±30g for accelerometer, it enables precise analysis of contact sports applications providing continuous motion sensor data before, during and after impact providing more accurate feedback.
ICM-20649 devices, with their 6-axis integration, on-chip DMP, and run-time calibration firmware, enable manufacturers to eliminate the costly and complex selection, qualification, and system level integration of discrete devices, guaranteeing optimal motion performance for consumers. The gyroscope has a programmable full-scale range up to ±4000 dps. The accelerometer has a user-programmable accelerometer full-scale range up to ±30g. Factory-calibrated initial sensitivity of both sensors reduces production-line calibration requirements. Other key features include on-chip 16-bit ADCs, programmable digital filters, an embedded temperature sensor, and programmable interrupts.
The embedded Digital Motion Processor (DMP) within the ICM-20649 offloads computation of motion processing algorithms from the host processor. The DMP acquires data from accelerometers, gyroscopes, and additional third party sensors such as magnetometers, and processes the data. The resulting data can be read from the 512 bytes FIFO that is accessible via the I2C Serial Interface. The FIFO configuration register determines which data is written into the FIFO. The interrupt function may be used to determine when new data is available.
Specifications
Type
Acceleration,Gyroscope,Motion
Applications
It is a perfect solution for development of different types of motion detection and MotionTracking™ applications: sports, wearable sensors and high impact applications
On-board modules
ICM-20649, a high-performance, 6-axis MEMS MotionTracking™ IC from TDK Invensense.
Key Features
MEMS structure hermetically sealed and bonded at wafer level, 512-byte FIFO buffer enables the applications processor to read the data in bursts • On-Chip 16-bit ADCs and Programmable Filters
Interface
I2C
Feature
No ClickID
Compatibility
mikroBUS™
Click board size
S (28.6 x 25.4 mm)
Input Voltage
3.3V
Pinout diagram
This table shows how the pinout on 6DOF IMU 7 Click corresponds to the pinout on the mikroBUS™ socket (the latter shown in the two middle columns).
Onboard settings and indicators
Label | Name | Default | Description |
---|---|---|---|
LD1 | PWR | – | Power LED Indicator |
JP1 | ADD SEL | Left | Slave I2C address LSB selection: left position 0, right position 1 |
Software Support
We provide a library for the 6DOF IMU 7 Click on our LibStock page, as well as a demo application (example), developed using MikroElektronika compilers. The demo can run on all the main MikroElektronika development boards.
Library Description
The library covers all the necessary functions that enables the usage of the 6DOF IMU 7 Click board. It initializes and defines the I2C bus driver and drivers that offer a plethora of settings. The library also offers functions that allow reading of accelerometer,gyroscope and dye temperature, as well as generic read and write function that offer reading( and writing) of different lenghts of data(byte, word or user defined number of bytes).
Key functions:
void c6dofimu7_Gyroscope( float *xGyro, float *yGyro, float *zGyro, float gyroSens )
– Function is used to get angular momentum.void c6dofimu7_Accelerometer( float *xAccel, float *yAccel, float *zAccel, float accelSens )
– Function is used to get acceleration measurement.float c6dofimu7_getTemperatureC( float tempSens, float tempOffset )
– Function is used to get temperature in degree.
Examples description
The application is composed of three sections :
- System Initialization – Initializes I2C module, LOG and GPIO structures, sets INT and PWM pins as input.
- Application Initialization – Initalizes I2C driver, applies default setup and writes an initial log.
- Application Task – (code snippet)This example demonstrates the use of 6DOF IMU 7 Click board. It calculates angular momentum, acceleration measurement and temperature in degree Centigrade. Results are displayed on USART terminal.
void applicationTask() { c6dofimu7_Gyroscope( &xGyro, &yGyro, &zGyro, gyroSens ); FloatToStr( xGyro, logTxt ); mikrobus_logWrite( "X angular rate: ", _LOG_LINE ); Ltrim( logTxt ); mikrobus_logWrite( logTxt, _LOG_LINE ); FloatToStr( yGyro, logTxt ); mikrobus_logWrite( "Y angular rate: ", _LOG_LINE ); Ltrim( logTxt ); mikrobus_logWrite( logTxt, _LOG_LINE ); FloatToStr( zGyro, logTxt ); mikrobus_logWrite( "Z angular rate: ", _LOG_LINE ); Ltrim( logTxt ); mikrobus_logWrite( logTxt, _LOG_LINE ); mikrobus_logWrite( "---------------------", _LOG_LINE ); c6dofimu7_Accelerometer( &xAccel, &yAccel, &zAccel, accelSens ); FloatToStr( xAccel, logTxt ); mikrobus_logWrite( "X acceleration rate: ", _LOG_LINE ); Ltrim( logTxt ); mikrobus_logWrite( logTxt, _LOG_LINE ); FloatToStr( yAccel, logTxt ); mikrobus_logWrite( "Y acceleration rate: ", _LOG_LINE ); Ltrim( logTxt ); mikrobus_logWrite( logTxt, _LOG_LINE ); mikrobus_logWrite( "Z acceleration rate: ", _LOG_LINE ); Ltrim( logTxt ); FloatToStr( zAccel, logTxt ); mikrobus_logWrite( logTxt, _LOG_LINE ); mikrobus_logWrite( "---------------------", _LOG_LINE ); temperature = c6dofimu7_getTemperatureC( tempSens, tempOffset ); mikrobus_logWrite( "Temperature: ", _LOG_LINE ); Ltrim( logTxt ); FloatToStr( temperature, logTxt ); mikrobus_logWrite( logTxt, _LOG_TEXT ); mikrobus_logWrite( degCel, _LOG_LINE ); mikrobus_logWrite( "---------------------", _LOG_LINE ); Delay_ms( 1000 ); }
The full application code, and ready to use projects can be found on our LibStock page.
Other mikroE Libraries used in the example:
- I2C
- UART
- Conversions
Additional notes and informations
Depending on the development board you are using, you may need USB UART click, USB UART 2 click or RS232 click 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
This Click board™ is supported with mikroSDK – MikroElektronika Software Development Kit. To ensure proper operation of mikroSDK compliant Click board™ demo applications, mikroSDK should be downloaded from the LibStock and installed for the compiler you are using.
For more information about mikroSDK, visit the official page.