KX134 accelerometer and Raspberry Pi Pico Arduino example

In this article we connect the ever popular KX134 accelerometer to a raspberry Pi Pico and we will then display readings via the serial monitor window. We are using the Arduino IDE.

Lets look at the sensor first

Features

  • Measurement Range: ±8g, ±16g, ±32g, ±64g (User Selectable)
  • High Resolution (8 or 16-bit)
  • User-Configurable Output Data Rate (ODR) up to 25600Hz
  • User-Configurable 3-stage Advanced Data Path featuring low-pass filter, low-pass/high-pass filter and RMS calculation engine
  • Wide range of built-in sensing functions
    • Free Fall
    • Directional-Tap / Double-Tap
    • Device Orientation & Activity Algorithms
  • Low Noise: 130µg/√Hz (varies based on ODR, power mode & other settings)
  • High-Resolution Wake-Up & Back-to-Sleep Detection with a configurable threshold as low as 3.9mg
  • 512-byte FIFO buffer that continues recording data while being read
  • Selectable Low-Power or High-Performance operating modes
  • Low Power with Integrated Voltage Regulator
    • High-Performance Operating Current Consumption (400Hz ODR + Wake-Up Detection): 148µA
    • Low Power Operating Current Consumption (0.781Hz ODR + Wake-Up Detection): 0.53µA
    • Standby Current Consumption: 0.5µA
  • Self-Test Functionality
  • Digital I2C up to 3.4MHz and Digital SPI up to 10MHz
  • 2x Qwiic Connectors
  • SPI available on PTH Header Pins
  • I2C Address: 0x1E (0x1F alternate)

 

 

Parts Required

Name Link
Raspberry Pi Pico
KX134
  • Aliexpress link
  • Ebay link
Connecting cables

 

Schematic/Connection

Here is a layout in fritzing to show this

Code Example

I used the Sparkfun KX13X library and  this is the default example which worked, there are several examples to experiment with

#include <Wire.h>
#include <SparkFun_KX13X.h> // Click here to get the library: http://librarymanager/All#SparkFun_KX13X

//SparkFun_KX132 kxAccel;
SparkFun_KX134 kxAccel; // For the KX134, uncomment this and comment line above

outputData myData; // Struct for the accelerometer's data

void setup()
{

  Wire.begin();

  Serial.begin(115200);
  Serial.println("Welcome.");

  // Wait for the Serial monitor to be opened.
  while (!Serial)
    delay(50);

  if (!kxAccel.begin())
  {
    Serial.println("Could not communicate with the the KX13X. Freezing.");
    while (1)
      ;
  }

  Serial.println("Ready.");

  if (kxAccel.softwareReset())
    Serial.println("Reset.");

  // Give some time for the accelerometer to reset.
  // It needs two, but give it five for good measure.
  delay(5);

  // Many settings for KX13X can only be
  // applied when the accelerometer is powered down.
  // However there are many that can be changed "on-the-fly"
  // check datasheet for more info, or the comments in the
  // "...regs.h" file which specify which can be changed when.
  kxAccel.enableAccel(false);

  //kxAccel.setRange(SFE_KX132_RANGE16G); // 16g Range
  kxAccel.setRange(SFE_KX134_RANGE16G);         // 16g for the KX134

  kxAccel.enableDataEngine(); // Enables the bit that indicates data is ready.
  // kxAccel.setOutputDataRate(); // Default is 50Hz
  kxAccel.enableAccel();
}

void loop()
{
  // Check if data is ready.
  if (kxAccel.dataReady())
  {
    kxAccel.getAccelData(&myData);
    Serial.print("X: ");
    Serial.print(myData.xData, 4);
    Serial.print(" Y: ");
    Serial.print(myData.yData, 4);
    Serial.print(" Z: ");
    Serial.print(myData.zData, 4);
    Serial.println();
  }
  delay(200); // Delay should be 1/ODR (Output Data Rate), default is 1/50ODR
}

 

Output

Move the sensor in various directions to test

X: 0.0273 Y: -0.4626 Z: -0.8560
X: 0.0073 Y: -0.4831 Z: -0.8623
X: 0.0595 Y: -0.4431 Z: -0.8535
X: 0.0063 Y: -0.4758 Z: -0.8799
X: -0.0229 Y: -0.2689 Z: -0.6803
X: -0.0605 Y: -0.3026 Z: -0.9199
X: -0.1147 Y: -0.4197 Z: -0.9062
X: -0.7745 Y: -0.2235 Z: 0.3777
X: -0.2991 Y: -1.1151 Z: -0.4099

Links

https://github.com/sparkfun/SparkFun_KX13X_Arduino_Library

https://fscdn.rohm.com/kionix/en/datasheet/kx134-1211-e.pdf

Related posts

ADXL313 accelerometer and Raspberry Pi Pico Arduino example

STTS22H temperature sensor and Raspberry Pi Pico Arduino example

KX132 accelerometer and Raspberry Pi Pico Arduino example

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Read More