ADXL362 Accelerometer

Contents

Description

ADXL362 sensor chip; top view, bottom view.
FIG 1 - ADXL362: [Left] top view, [Right] bottom view

The ADXL362 from Anaolg Devices is described in the datasheet (Page 1) as an ultra-low-power, 3-axis MEMS Accelerometer that consumes less than 2µA at a 100Hz output data rate and 270nA when in motion triggered wake-up mode.

This accelerometer is described as being suitable for use in hearing aids, home healthcare devices, motion enabled power saving switches, wireless sensors and motion enabled metering devices.

The ADXL362 measures acceleration with a capacitive type sensor.

The values in the following table have been sourced from the product datasheet.

Parameter DIS3DH
Package and size 16-lead LGA package, footprint 3mm x 3.25mm x 1.06mm.
Operating voltage range 1.6V to 3.5V
Supply current (typically)
100Hz ODR
Normal operation: 1.8µA
Low Noise mode: 3.3µA
Ultra Low Noise mode: 13µA
Standby: 0.01µA
Cross axis sensitivity Typically ±1.5%
Nonlinearity
% of full scale
Typically ±0.5%
Zero-g level offset accuracy XOUT, YOUT   -150mg / +150mg
ZOUT               -250mg / +250mg
Measurement ranges ±2g, ±4g, ±8g
Default is ±2g.
Output resolution 12-bit
Sensitivity (typically) 1 mg/LSB (±2g)
2 mg/LSB ((±4g))
4.255 mg/LSB (±8g)
Output data rate (ODR) 12.5Hz to 400Hz in 6 programmable steps
Serial interfaces SPI with clock speeds 1MHz to 8MHz

Using the ADXL362's SPI Interface

SPI is the only interface offered by this accelerometer. The datasheet's instructions for its use are quite clear and simple. Allowable clock speeds are 1MHz to 8MHz. Burst read and writes are permitted.

Writing to ADXL362 registers

  • Write the write instruction byte 0x0A
  • Write the first register's address
  • Write 1 to n data bytes

Reading ADXL362 registers

  • Write the read instruction byte 0x0B
  • Write the first register's address
  • Read 1 to n data bytes

During burst (multiple bytes) read or writes, the ADXL362 automatically increments the register address after each byte read or written.

Acceleration Sampling Options

This accelerometer has a useful set of sampling options that the user may choose to configure.

Operating modes

  • Standby

    Very low current consumption mode (typically 0.01 µA) where data conversions are stopped but the SPI interface is still available. This is the default mode after the power-up sequence has completed.
  • Wake-up Mode

    This mode is designed for simple detection of absence or presence of motion. This makes it suitable in applications such as motion-activated on/off switches. Power consumption is very low, typically around 0.27 µA current draw.
  • Measurement mode

    This mode is the normal operating mode of the ADXL362. Acceleration data is read continuously and output at an output data rate (ODR) that is user selectable between 12.5Hz and 400Hz. Current consumption is typically less than 3 µA. Acceleration values are available at 12-bit resolution.

Additional User Selections

  • Acceleration ranges

    Ranges available: ±2g, ±4g, ±8g. Default is ±2g.
  • Output data rate (ODR)

    The output data rate is user selectable from 12.5Hz to 400Hz in six discrete steps (12.5, 25, 50, 100 (default), 200, 400).
  • Noise modes

    There are three noise modes which trades off a small increase in power consumption for a lower noise signal; Normal, Low noise, Ultra low noise. Normal noise mode is the power up default.
  • Antialiasing filtering

    The ADXL362 has antialiasing filtering with a two-pole low-pass filter installed at the input to the ADC (analog digital converter). This can be user set to either ½ of the ODR or ¼ of the ODR.

Measuring Acceleration

The ADXL362 measures both static and dynamic acceleration. Acceleration is reported in units of g where 1g = 9.81 m/s2 i.e. the acceleration due Earth's gravity.

The raw acceleration value for each axis is read from two 8-bit registers. The two bytes are combined to a single binary 12-bit representation. This is converted from its Two's Complementary format to a signed integer.

This is then scaled by simple division with the divisor being the sensitivity (LSB/g). The sensitivity depends upon the measurement range. The float type result is the acceleration value in units of g.

There is a data ready interrupt that is asserted when fresh 3-axis acceleration data becomes available. This can be obtained by reading the DATA_READY  bit in the STATUS  register or assigning the interrupt to either of the INT1 or INT2 pins.

FIFO Queue

The FIFO is a queue mechanism (First In - First Out) that when activated automatically begins storing datasets of raw 3-axis acceleration values. Optionally, temperature can also be added to the dataset.

The FIFO buffer is quite large. It can hold a maximum of:

  • 170 sample sets of of concurrent 3-axis data; or
  • 128 sample sets of concurrent 3-axis and temperature data

The FIFO gives the microcontroller host "breathing space" to carry on with other tasks as the sensor continues to produce acceleration samples. A configurable interrupt (FIFO_WATERMARK) is available that will alert the host when the FIFO buffer is full (or near full). At this time the entire FIFO contents can be burst read and processed.

The microcontroller reads the FIFO by firstly writing the FIFO read command 0x0D. Then the contents of the FIFO are burst read.

There are three interrupts associated with the FIFO:

  • FIFO_READY : Indicates that there is at least one sample available in the output buffer.
  • FIFO_WATERMARK : Indicates that the FIFO contains at least a user defined number of samples in the buffer.
  • FIFO_OVERRUN : Indicates that the FIFO buffer has overflowed, such that new data is replacing unread data.

These interrupts may be mapped to the INT1 or INT2 pins at the user's discretion.

Sensor Generated Interrupts

DATA_READY and FIFO interrupts have been discussed. In addition to these the ADXL362 offers two additional interrupts that have a level of user configurability.

The ADXL362 has built-in logic that detects activity and inactivity. The status of these interrupts can be read from the ACT  bit and INACT  bit respectively in the STATUS  register.

These interrupts can be assigned to either of the INT1 or INT2 pins.

Activity is triggered by the presence of acceleration above a threshold for at least a given amount of time.

Inactivity is triggered by the lack of acceleration above a threshold for at least a given amount of time.

The datasheet gives an excellent discussion with examples of how these two simple activity based interrupts can be used to build more complicated scenarios such as free-fall detection.

Temperature Sensor

The ADXL362 has an integrated temperature sensor. The temperature can be read as a 12-bit value using the same process as obtaining acceleration data from two 8-bit bytes. The 12-bit value is converted from its Two's Complement form to a signed integer.

The signed integer is scaled to degrees Celsius with the supplied sensitivity (0.065 °C/LSB) from the datasheet.

ADXL362 Chip ID

The datasheet lists four ID/identification values that each ADXL362 chip has written to non-volatile memory during the manufacturing process. These are:

  • Analog Device ID: 0xAD
  • Analog Device MEMS device ID: 0x1D
  • Device ID: 0o362
  • Product revision ID: beginning with 0x01 and incrementing for each subsequent revision.

ADXL362 MicroPython Driver

An ADXL362 MicroPython driver specifically written for the BBC micro:bit has been developed as part of this series on MicroPython for the micro:bit. The driver webpage also provides a detailed description of the driver's methods and properties with sample code.

The driver implements the base functionality:

  • Setting ODR, measurement range (FS), power mode and low noise mode.
  • Acceleration readings and data ready status.
  • Temperature reading.
  • Chip ID/identification.

The FIFO and Activity/Inactivity interrupts are not available in this driver.