BMA250

$9.00 each
$8.10 per unit for buying at least 10
$7.65 per unit for buying at least 25
$7.20 per unit for buying at least 75



12 items in stock
+

DESCRIPTION

This is a breakout board for the Bosch BMA250 3-axis digital accelerometer that features selectable ranges from 2,4,8 and 16g. 

This accelerometer has built in algorithms for orientation detection, flat detection and single/double tap detection all of which can be configured to generate an external interrupt using either/both of the external interrupt pins.

FEATURES

  • 1.62 V to 3.6 V supply voltage
  • 1.2 V to 3.6 V interface (I2C/SPI) voltage
  • +/-2g,+/-4g,+/-8g,+/-16g ranges
  • 10-bit digital output
  • Output Data Rates (ODR) up to 1000 Hz
  • I2C/SPI digital output interface
  • Self-Test
  • Orientation Detection
  • Single Tap/ Double Tap Detection
  • Flat Detection
  • Standalone Mode

DOCUMENTATION

Copyright © 2014 DSSCircuits.com. All rights reserved. 

Comments   

-1 # aaron 2013-06-28 15:43
The i2c sketch is out of date, some of the read() and write() methods were not updated. Here's the corrected version:

/**********************************************************
* BMA250_I2C_Sket ch.pde ----- Sample sketch for BMA250 Accelerometer using I2C
*
* A sample sketch that shows the basic functions of the BMA250 acclerometer.
*
*
* 2011, DSS Circuits, Inc. http://www.dsscircuits.com
*
**********************************************************/

#include

#define BMA250 0x18
#define DELAY 64000
#define BW 0x08 //7.81Hz bandwith
#define GSEL 0x05 //0x03 - 2g, 0x05 - 4, 0x08 - 8g, 0x0C - 16g

uint8_t dataArray[16];
int x,y,z;


void setup()
{
Wire.begin();
Serial.begin(11 5200);
initializeBMA();
}


void loop()
{

read3AxisAccele ration();
delayMicroseconds(DELAY);
}


byte read3AxisAcceleration()
{
Wire.beginTrans mission(BMA250) ;
Wire.write(0x02 );
Wire.endTransmi ssion();
Wire.requestFro m(BMA250,7);
for(int i = 0; i < 7;i++)
{
dataArray = Wire.read();
}
if(!bitRead(dat aArray[0],0)){r eturn(0);}

int8_t temp = dataArray[6];
x = dataArray[1] >= 6;
y = dataArray[3] >= 6;
z = dataArray[5] >= 6;
Serial.print("X = ");
Serial.print(x) ;
Serial.print(" ");
Serial.print("Y = ");
Serial.print(y) ;
Serial.print(" ");
Serial.print("Z = ");
Serial.print(z) ;
Serial.print(" Temperature(C) = ");
Serial.println((temp*0.5)+24.0,1);
}

byte initializeBMA()
{
Wire.beginTrans mission(BMA250) ;
Wire.write(0x0F ); //set g
Wire.write(GSEL );
Wire.endTransmi ssion();
Wire.beginTrans mission(BMA250) ;
Wire.write(0x10 ); //set bandwith
Wire.write(BW);
Wire.endTransmi ssion();
return(0);
}



Thanks for the example though, it was the only one I could find!
-aaron
# Anders 2013-07-08 07:45
I don't use Arduino but some of the code lines posted by Aaron can't be right; assigning to dataArray without an index in the loop and the way to assign to x, y, z.
I recommend to start from the original I2C code example.
-1 # aaron 2013-07-08 18:31
Good catch Anders, I was testing you :)

somehow the was omitted in my copy/paste.

replacing the loop with this:

for(int i = 0; i < 7;i++)
{
dataArray = Wire.read();
}

should make it work correctly.

thanks!
-aaron
# scott216 2014-05-02 12:04
Is there a way for an Arduino to put the BMA250 to sleep for a few seconds then wake it up. I have a low power project and I need the Arduino (Pro-Mini) and accelerometer to draw as little power as possible.

Login

Go to top