GebraBit

GebraBit ICM20948 Motion Tracking Module Overview

متن سربرگ خود را وارد کنید

BLOG

GebraBit ICM20948 Motion Tracking Module Overview

  1. Home
  2. »
  3. Blog
  4. »
  5. GebraBit ICM20948 Motion Tracking Module Overview

Motion tracking assists in tracking the movement of objects and transferring the sensed data to an application for further processing. Motion tracking includes capturing the motions of objects matching with its stored motion template. This has a wide range of applications such as in military, entertainment, sports, medical applications, validation of computer vision and robotics. Furthermore, it is also used in film making and in video game development. In many areas, motion tracking is often called motion capture, whereas in film making and games, motion tracking is commonly called match moving.

Motion tracking sensors

The Gyroscope measures angular velocity using the Coriolis Effect. When a mass moves in a certain direction with a certain speed and an external angular rate is applied as shown in the green arrow below, a force such as the red-blue arrow shown, causes the mass to move vertically.

So, similar to the accelerometer, this displacement causes a change in capacitance that is associated with a specific angular rate.

Gyroscope

The structure of the micro-Gyroscope is something like this. A mass that is constantly moving or oscillating and when an external angular rate is applied, the flexible part of the mass moves and undergoes vertical displacement.

An accelerometer is a device that measures the vibration, or acceleration of motion of a structure. The force caused by vibration or a change in motion (acceleration) causes the mass to “squeeze” the piezoelectric material which produces an electrical charge that is proportional to the force exerted upon it. Since the charge is proportional to the force, and the mass is a constant, then the charge is also proportional to the acceleration. These sensors are used in a variety of ways from space stations to handheld devices, and there’s a good chance you already own a device with an accelerometer in it. For example, almost all smartphones today house an accelerometer. They help the phone know whether it undergoes acceleration in any direction, and it’s the reason why your phone’s display switches on when you flip it. In an industry setting, accelerometers help engineers understand a machine’s stability and enable them to monitor for any unwanted forces/vibrations.

 

An accelerometer works using an electromechanical sensor that is designed to measure either static or dynamic acceleration. Static acceleration is the constant force acting on a body, like gravity or friction. These forces are predictable and uniform to a large extend. For example, the acceleration due to gravity is constant at 9.8m/s, and the gravitation force is almost the same at every point on earth.

The theory behind accelerometers is that they can detect acceleration and convert it into measurable quantities like electrical signals.

An overview of the ICM20948

ICM20948 device

The ICM20948 is a multi-chip module (MCM) consisting of two dies integrated into a single QFN package. One die houses a 3-axis gyroscope, a 3-axis accelerometer, and a Digital Motion Processor™ (DMP). The other die houses the AK09916 3-axis magnetometer from Asahi Kasei Microdevices Corporation. The ICM20948 is a 9-axis MotionTracking device all in a small 3×3×1mm QFN package.

The gyroscope has a programmable full-scale range of ±250 dps, ±500 dps, ±1000 dps, and ±2000 dps. The accelerometer has a user-programmable accelerometer full-scale range of ±2g, ±4g, ±8g, and ±16g.

Other key features include on-chip 16-bit ADCs, programmable digital filters, an embedded temperature sensor, and programmable interrupts. The device features I2C and SPI serial interfaces.

Specification

Applications

  • Number of Axis: 9-Axis
  • Output type: Digital-I2C or SPI
  • Accelerometer FSR: ±2, ±4, ±8, ±16(g)
  • Accelerometer Sensitivity SF: 16384, 2048 (LSB/g), 4096, 8192
  • Accelerometer ADC:16-Bit

  • Gyroscope FSR: ±250, ±500, ±1000, ±2000(dps)

  • Gyroscope Sensitivity SF : 131, 16.4 (LSB/dps), 32.8, 65.5

  • Gyroscope ADC: 16-Bit

  • Magnetometer FSR: ±4900 µT

  • Magnetometer Resolution: 16 Bit

For more specifications, please refer to the Datasheet

  • Smartphones and Tablets
  • Wearable Sensors
  • IOT Applications

GebraBit ICM20948 Module Key Features

  • User-selectable interface protocol (I2C or SPI)
  • User-selectable I2C address (AD0)
  • Auxiliary I2C interface
  • Access to all data pins of the sensor
  • 1V8 Voltage Regulator
  • 1V8 Output Voltage
  • On Board, ON/OFF LED indicator
  • Pin Compatible with GEBRABUS
  • It can be used as a daughter board of GebraBit MCU Modules
  • Featuring Castellated pad (Assembled as SMD Part)
  • Separatable screw parts to reduce the size of the board
  • Package: GebraBit small (36.29mm x 32.72mm)
  • Schematic (.pdf)

GebraBit ICM20948 module

GebraBit ICM20948

After the explanations mentioned above , due to QFN package and lack of access to sensor pins, you have noticed that, the user needs a starter circuit and driver for the hardware development and of course the software development of the ICM20948 sensor. For the convenience of users, this work has been done by implementing the ICM20948 sensor circuit and providing access to the communication and power supply signal pins, with the ability to select the I2C or SPI communication protocol and the operation voltage and logic level of the communication protocols.

GebraBit ICM20948

It is enough to put the GebraBit ICM20948 module in the BreadBoard, then you can set up the GebraBit ICM20948 module by applying the proper voltage and choosing the I2C or SPI communication protocol, with any Arduino, Raspberry Pi, Discovery board, and especially the GebraBit STM32F303 or GebraBit ATMEGA32 module and receive the data. we recommend using GebraBit microcontroller development modules.

Introduction of module sections

ICM20948 sensor

It’s the main IC of the following module, which is placed in the center of the module and its circuit is designed.

Communication Protocol Selection Jumpers

If the 0R resistors of all Selector Jumpers are to the left side, the I2C protocol is selected. 

If the 0R resistors of all Selector Jumpers are to the right side, the SPI protocol is selected. 

by default,I2C protocol is selected. 

AD0 SEL jumper

If the I2C protocol is selected, the state of AD0 SEL jumper, determines the I2C address of the sensor (0 => 0x68 or  1 =>0x69).

The 0R resistor is set to 0 and the address 0x68 is selected (by default).

1V8 XC6206P182MR-G regulator

The regulator which used on this module converts the “5V” voltage to “1.8V”. The output of this regulator is accessible on the “1V8” pin.

power LED

By applying voltage to the module via the corresponding pin, the LED of the module will be lit.

GebraBit ICM20948 Module pins

Supply pins

  • 5V:This pin is the main power supply pin of the module and provides the on-board regulator input voltage.
  • 1V8: If the regulator is assembled on the module, the “1.8V” output voltage of the regulator will be available through this pin, otherwise, this pin can provides the main power supply to start the module by applying a “1.8V” external voltage. It also can supply the logic level of the sensor digital communication (I2C or SPI) 
  • GND: This is the common ground pin for power and logic level of the sensor.

I2C pins

By using the on-board embedded Jumper selectors, you can choose the type of module communication  . If the 0R resistors of all the Jumper Selectors are to the left side, the I2C protocol is selected. AD0 SEL jumper status is the I2C address of the sensor (0x68 or 0x69 ).

  • SDA: This pin is the I2C communication data pin, which is connected to the corresponding data pin in the microcontroller (processor). According to the state of the VDIOSEL jumper, you can use the logic level with a voltage of “1V8” or “3V3”.This pin is pulled up with a 10K resistor.
  • SCL: This pin is the I2C communication clock pin, which is connected to the corresponding clock pin in the microcontroller (processor). Depending on the state of the VDIOSEL jumper, you can use the logic level with a voltage of “1V8” or “3V3”. This pin is pulled up with a 10K resistor.
  • AUX SDA: This pin is the I2C master serial data which is intended to connecting to external sensors. This pin is connected to the corresponding data pin in the microcontroller (processor) and is pulled up with a 10K resistor.
  • AUX SCL: This pin is the I2C Master serial clock, which is intended to connecting to external sensors. This pin is connected to the corresponding data pin in the microcontroller (processor) and is pulled up with a 10K resistor.

 

NOTE: Since the logic level of GebraBit ICM20948 module is “1.8V” and the logic level of development modules is “5V”, it is necessary to convert the two logic levels to each other by the Logic Level Converter module.

SPI pins

The type of communication with the module can be selected by using the on-board embedded Selector Jumpers. If the 0R resistors of all the Selector Jumpers are to the right side, the SPI protocol has been selected. The state of the “AD0 SEL” jumper has no effect in this case.

  • SDI (MOSI): This pin is used to send data from the microcontroller (processor) to the module (sensor). The abbreviation of this pin is derived from the Latin phrase Serial Data In / Microcontroller Out Sensor In.
  • SDO (MISO): This pin is used to send data from the module (sensor) to the microcontroller (processor). The abbreviation of this pin is derived from the Latin phrase Serial Data Out / Microcontroller In Sensor Out.
  • SCK: This pin is the clock pin for SPI communication, which is considered as an input for the sensor and is connected to the corresponding clock pin in the microcontroller (processor).
  • CS: This pin is the Chip Select pin for SPI communication with the module (sensor), which is selected by applying LOW voltage (0V), the module (sensor) for SPI communication. This pin is input type for the sensor.

If you want to use several GebraBit ICM20948 modules at the same time, it is enough to connect the “SDO”, “SDI”, “SCK” pins of all modules and the microcontroller (processor) and assign a unique pin to each “CS”.

NOTE: Since the logic level of GebraBit ICM20948 module is “1.8V” and the logic level of development modules is “5V”, it is necessary to convert the two logic levels to each other by the Logic Level Converter module.

Other pins

  • INT: Interrupt pin for ICM20948 sensor, according to the datasheet , the user can set the interrupt conditions, the modes and methods of the interruption, etc.
  • FSY(FSYNC): This pin is used to synchronize the sensor with an external source. For more information, read the datasheet of the sensor. By default, this pin is connected to the ground with R3 resistor. To use Pin, R3 resistor must be removed (disassembly) from the module.

Connect to the processor

I2C connection with GebraBit STM32F303

First, make sure that the I2C protocol is selected by using the on-board jumpers then for I2C connection of GebraBit ICM20948 and GebraBit STM32F303 microcontroller module, after defining SDA and SCL on pins PB9 and PB8 (for convenience in STMCUBEMX), follow the below steps:

please note that Since the logic level of GebraBit ICM20948 module is “1.8V” and the logic level of the GebraBit STM32F303 microcontroller module is “3V3”, it is necessary to convert the two logic levels to each other through the Logic Level Converter module.

  • According to the above description, Connect the “1V8” pin of the ICM20948 module to the “3V3” output pin of the microcontroller module through a Logic Level Converter.(the yellow and green wires)
  • Connect the “GND” pins of the ICM20948 module to the “GND” pins of the microcontroller module as shown in the below picture. (the black wires).
  • Connect the “SCL” and “SDA” pins of the ICM20948 module to the PB8(SCL) and PB9(SDA) pins of the microcontroller module through the Logic Level Converter module. (blue wires).

You can see how to connect the above mentioned steps in this picture: 

SPI connection with GebraBit STM32F303

First, make sure that the SPI protocol is selected by using the on-board jumpers, then for connecting GebraBit ICM20948 module to the GebraBit STM32F303 microcontroller module with SPI protocol, after defining “SDI”, “SDO”, “SCK”, and “CS” on pins PB5, PB4, PB3, and PC13 ( For ease of work in STMCUBEMX) make the connections as shown below:

Since the logic level of GebraBit ICM20948 module is “1.8V” and the logic level of the GebraBit STM32F303 microcontroller module is “3V3”, it is necessary to convert the two logic levels to each other through the Logic Level Converter module.

I2C connection with GebraBit ATMEGA32A

First, make sure that the I2C protocol is selected by using the on-board jumpers then for I2C connection of GebraBit ICM20948 and GebraBit ATMEGA32A microcontroller module, after defining “SDA” and “SCL” on pins PC1 and PC0 (for convenience in STMCUBEMX), follow as shown in the below picture:

please note that Since the logic level of GebraBit ICM20948 module is “1.8V” and the logic level of the GebraBit ATMEGA32A microcontroller module is “3V3”, it is necessary to convert the two logic levels to each other through the Logic Level Converter module.

SPI connection with GebraBit ATMEGA32A

First, make sure that the SPI protocol is selected by using the on-board jumpers, then for connecting GebraBit ICM20948 module to the GebraBit ATMEGA32A microcontroller module with SPI protocol, after defining “SDI”, “SDO”, “SCK”, and “CS” on pins PB5, PB4, PB3, and PC13 make the connections as shown below:

Since the logic level of GebraBit ICM20948 module is “1.8V” and the logic level of the GebraBit ATMEGA32A microcontroller module is “3V3”, it is necessary to convert the two logic levels to each other through the Logic Level Converter module.

I2C Connection with ARDUINO UNO

First, make sure that the I2C protocol is selected by using the on-board jumpers, then follow the below steps to connect the GebraBit ICM20948 module to the ARDUINO UNO via I2C :

Since the logic level of GebraBit ICM20948 module is “1.8V” and the logic level of the ARDUINO UNO board is “5V”, it is necessary to convert the two logic levels to each other through the Logic Level Converter module.

  • Connect the “1V8” pin of the ICM20948 module to the “5V” output pin of the ARDUINO UNO board as shown in the below picture. (red wire)
  • Connect the “GND” pin of the ICM20948 module to the “GND” pin of the ARDUINO UNO board (black wire).
  • Connect the “SCL” pin of the ICM20948 module to the A5 pin of the ARDUINO UNO board (SCL). (blue wire)
  • Connect the “SDA” pin of the ICM20948 module to the A4 pin of the ARDUINO UNO board (SDA). (blue wire)

You can see how to connect the above mentioned steps  in this picture:

SPI Connection with ARDUINO UNO

First, make sure the SPI protocol is selected using the on-board jumpers, then follow the below  steps to connect the GebraBit ICM20948 module to the ARDUINO UNO via SPI:

Since the logic level of GebraBit ICM20948 module is “1.8V” and the logic level of the ARDUINO UNO board is “5V”, it is necessary to convert the two logic levels to each other through the Logic Level Converter module.

  • Connect the “1V8” pin of the ICM20948 module to the “5V” output pin of the ARDUINO UNO board as shown in the below picture . (red wire)
  • Connect the “GND” pin of the ICM20948 module to the “GND” pin of the ARDUINO UNO board (black wire).
  • Connect the “SDI” pin of the ICM20948 module to the D11 pin of the ARDUINO UNO board (SDI). (blue wire)
  • Connect the “SDO” pin of the ICM20948 module to the D12 pin of the ARDUINO UNO board (SDO). (blue wire)
  • Connect the “SCK” pin of the ICM20948 module to the D13 pin of the ARDUINO UNO board (SCK). (blue wire)
  • Connect the “CS” pin of the ICM20948 module to the D10 pin of the ARDUINO UNO board (CS). (blue wire) 

You can see how to connect the above mentioned steps in the below picture:

این مقاله را با دوستانتان به اشتراک بگذارید!

Be the first to write a review

Please help the Gebra team to improve the quality by sending comments and ratings

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

Shopping cart
Start typing to see posts you are looking for.

Sign in

No account yet?