Skip to main content
CIC QMA6100P Breakout - 3-Axis Accelerometer MEMS Sensor

CIC QMA6100P Breakout - 3-Axis Accelerometer MEMS Sensor

Peter...About 2 minProductSensorMEMSAccelerometer

Overview

Note: QMA6100P is pin to pin compatible with QMA7981, QMA7981 is EOL.

The QMA6100 is a 3-Axis Accelerometer. This surface-mount, small sized chip has integrated acceleration transducer with signal conditioning ASIC, sensing tilt, motion, shock and vibration, targeted for applications such as screen rotation, step counting, sleep monitor, gaming and personal navigation in mobile and wearable smart devices.

The QMA6100 is based on the state-of-the-art, high resolution single crystal silicon MEMS technology. Along with custom-designed 14-bit ADC ASIC, it offers the advantages of low noise, high accuracy, low power consumption, and offset trimming. The device supports digital interface I2C and SPI.

cic_sen0001_qma6100p_breakout-2
cic_sen0001_qma6100p_breakout-2
cic_sen0001_qma6100p_breakout-1
cic_sen0001_qma6100p_breakout-1

Features

  • 3-Axis Accelerometer in a 2x2x0.95 mm3 Land Grid Array Package (LGA), guaranteed to operate over a temperature range of -40 °C to +85 °C
  • 14-Bit ADC with low noise accelerometer sensor
  • I2C Interface with SDR modes. Support SPI digital interface
  • Wide range operation voltage (1.71V to 3.6V) and low power consumption (2-50μA low power conversion current)
  • Integrated FIFO with depth of 64 frames
  • Built–in motion algorithm

Specifications

  • QMA6100 - 3-Axis Accelerometer Integrated 14-bit ADC & motion algorithm
  • Headers for I2C/SPI Interface, Default I2C interface
  • Headers for Interrupt, Address and so on.
  • Qwiic connector x 2, easy to debug & use
  • Dimension: 28 x 18 x 5 mm

Hardware

cic-sen0001-qma6100p-breakout-pinout
cic-sen0001-qma6100p-breakout-pinout
PinDescriptionNote
VDDPower supply voltage: 2.4-3.5V
GNDGround
SCL/SCKI2C interface Clock bus or SPI interface Clock busHad external pull-up resistor 4K7
SDA/SDOI2C interface Data bus or SPI Data outHad external pull-up resistor 4K7
SDISPI Data In
CSBSPI Chip Select
INT1Interrupt digital output 1 (totem pole or open-drain) Active low
INT2Interrupt digital output 2 (totem pole or open-drain) Active low

Default I2C interface 7 bit device address: 0x12

User Guide

It is the best choice to develop embedded drivers with embedded rust. Because the driver can be used with MCU like ESP32, also used with ARM64 Linux Application, for example raspberry pi directly.

You can download the qma6100p rust driver with git, also add your rust project with cargo - cargo add qma6100p.

The examples as below use the first one.

git clone https://github.com/xpulabs/qma6100p-rs/

Examples

Simple Read MPU-6050 Acc & Gypro Data

This example will simply read qma6100p Accelerator & Gypro Sensor Data & Temperature

use linux_embedded_hal::I2cdev;
use qma6100p::*;
use qma6100p::Qma6100p;

fn main() {
    let dev = I2cdev::new("/dev/i2c-3").unwrap();
    let mut ic = Qma6100p::new(dev, 0x12);

    let chip_id = ic.id().unwrap();
    println!("Qma6100p chip id: 0x{:02x}", chip_id);

    ic.soft_reset().unwrap();
    std::thread::sleep(std::time::Duration::from_millis(50));

    ic.set_range(Range::RANGE_2G).unwrap();
    ic.enable_accel(true).unwrap();
    std::thread::sleep(std::time::Duration::from_millis(50));
    ic.calibrate_offset().unwrap();

    loop {
        ic.get_accel_data().unwrap();
        ic.offset_values().unwrap();
        println!("X: {:.02}, Y: {:.02}, Z: {:.02}", ic.output_data.x_data, ic.output_data.y_data, ic.output_data.z_data);
        // println!("X: {:.02}, Y: {:.02}, Z: {:.02}", ic.raw_data.x_raw, ic.raw_data.y_raw, ic.raw_data.z_raw);
        std::thread::sleep(std::time::Duration::from_millis(200));
    }

}
  • /dev/i2c-3 is a i2c controller of rpi.
  • The QMA6100P's I2C Device address is 0x12. So we use new function to create a instance. Qma6100p::new(i2c)
  • id read the chip ID
  • soft_reset function will reset the chip with software
  • enable_accel function will enable accelerator
  • calibrate_offset function will calibrate the accelerator
  • get_accel_data function will get the accelerator sensor data

Use the command as below to build and run the app.

cargo build --target aarch64-unknown-linux-gnu -- example linux-qma6100p
scp -r ./target/aarch64-unknown-linux-gnu/debug/example/linux-qma6100p rpi@192.168.6.77:

After login the RPI with SSH, we can execute the app directly.

sudo ./linux-qma6100p

The terminal will print the accelerator values.

Buy it Now

AnalogLamb.Comopen in new window
Xpulabs.Comopen in new window

Resources

Documents

QMA6100P Datasheetopen in new window
Schematic

Codes

Github - qma6100p-rsopen in new window

3D Drawing

TBD

FAQ

TBD

Comments
  • Latest
  • Oldest
  • Hottest
Powered by Waline v2.15.5