Dcube Tech Ventures
Published

Measurement of Acceleration Using H3LIS331DL and Arduino

H3LIS331DL is a low-power high performance 3-axis linear accelerometer belonging to the “nano” family with digital I²C serial interface.

IntermediateProtip4 hours5,101
Measurement of Acceleration Using H3LIS331DL and Arduino

Things used in this project

Hardware components

STMicroelectronics H3LIS331DL 3-Axis Linear Accelerometer I²C Mini Module
×1
Arduino Nano R3
Arduino Nano R3
×1
I²C Cable
×1
ControlEverything.com I2C Shield for Arduino Nano
×1

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Schematics

H3LIS331DL Schematic

Code

Code

Arduino
#include 
// H3LIS331DL I2C address is 0x18(24)
#define Addr 0x18
void setup()
{  
// Initialise I2C communication as MASTER  
Wire.begin();  
// Initialise Serial Communication, set baud rate = 9600  
Serial.begin(9600);
// Start I2C Transmission  
Wire.beginTransmission(Addr);  
// Select control register 1  
Wire.write(0x20);  
// Enable X, Y, Z axis, power on mode, data output rate 50Hz  
Wire.write(0x27);  
// Stop I2C Transmission  
Wire.endTransmission();
  // Start I2C Transmission  
Wire.beginTransmission(Addr);  
// Select control register 4  
Wire.write(0x23);  
// Set full scale, +/- 100g, continuous update 
Wire.write(0x00);  
// Stop I2C Transmission  
Wire.endTransmission();  
delay(300);
}
void loop()
{  
unsigned int data[6];  
for(int i = 0; i < 6; i++)  
{    
// Start I2C Transmission    
Wire.beginTransmission(Addr);    
// Select data register    
Wire.write((40+i));    
// Stop I2C Transmission    
Wire.endTransmission();
// Request 1 byte of data    
Wire.requestFrom(Addr, 1);    
// Read 6 bytes of data    
// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb    
if(Wire.available() == 1)    
{      
data[i] = Wire.read();    
}  
}  
delay(300);
// Convert the data 
int xAccl = ((data[1] * 256) + data[0]);  
int yAccl = ((data[3] * 256) + data[2]);  
int zAccl = ((data[5] * 256) + data[4]);
// Output data to serial monitor  
Serial.print("Acceleration in X-Axis : ");  
Serial.println(xAccl);  
Serial.print("Acceleration in Y-Axis : ");  
Serial.println(yAccl);  
Serial.print("Acceleration in Z-Axis : ");  
Serial.println(zAccl);  
delay(300);
}

Credits

Dcube Tech Ventures

Dcube Tech Ventures

34 projects • 16 followers
Dcube Tech Ventures Pvt Limited is collaboration of Hardware, Embedded and Software endeavour's to create the Internet of things. www.dcubestore.com

Comments