0

BNO055 Stopped Working
Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.

BNO055 Stopped Working

by cornerstonerobotics on Wed Jun 10, 2015 4:43 pm

Hello, my BNO055 breakout board that I received June 4 just stopped working. I was told to post my problem here in hope for a refund.

I received the breakout board last Thursday June 4. I've been using it pretty regularly and have been successfully running tests on it since then. Today, I had it plugged in and it simply stopped working. Note that I was not making any changes while it stopped working. I've never dropped it, been rough with it, or done anything that could break a chip like this. I ran several tests to make sure that it is this chip that is the problem. (I quintuple-checked all the wiring, switched out the Arduino board, wires, and breadboard, etc.)

The reason I know it's not working is that the rawdata example program only returns "Ooops, no BNO055 detected ... Check your wiring or I2C ADDR!". This code is below.

Here's a link to some images I took of the board and its wiring: http://imgur.com/a/7sW6b

This is my order number, note that I'm only requesting a refund for the BNO055: 799497-5516180929

Please let me know if any more information is required.

Thank you,
Cornerstone Robotics

Code: Select all | TOGGLE FULL SIZE
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BNO055.h>
#include <utility/imumaths.h>

/* This driver reads raw data from the BNO055

   Connections
   ===========
   Connect SCL to analog 5
   Connect SDA to analog 4
   Connect VDD to 3.3V DC
   Connect GROUND to common ground

   History
   =======
   2015/MAR/03  - First release (KTOWN)
*/

unsigned long time;
double zax;
double ax;
double vx = 0;
int i = 0;
int m = 0;
int m1 = 0;
int p;
int o;

/* Set the delay between fresh samples */
#define BNO055_SAMPLERATE_DELAY_MS (100)

Adafruit_BNO055 bno = Adafruit_BNO055();

/**************************************************************************/
/*
    Arduino setup function (automatically called at startup)
*/
/**************************************************************************/
void setup(void)
{
  Serial.begin(9600);
  Serial.println("Orientation Sensor Raw Data Test"); Serial.println("");
  pinMode(13,OUTPUT);
  /* Initialise the sensor */
  if (!bno.begin())
  {
    /* There was a problem detecting the BNO055 ... check your connections */
    Serial.print("Ooops, no BNO055 detected ... Check your wiring or I2C ADDR!");
    while (1);
  }

  delay(1000);

  /* Display the current temperature */
  int8_t temp = bno.getTemp();
  Serial.print("Current Temperature: ");
  Serial.print(temp);
  Serial.println(" C");
  Serial.println("");

  bno.setExtCrystalUse(true);
  calibrate();
}

void calibrate(void) {
  time = millis();
  digitalWrite(13, LOW);
  m1 = 100;
  i = 0;
  p = 0;
  o = 1;
  Serial.println("Calibrating...");
  do{
    imu::Vector<3> accel = bno.getVector(Adafruit_BNO055::VECTOR_LINEARACCEL);
    ax = accel.x();
  } while(ax == 0);
  while (i == 0) {
    imu::Vector<3> accel = bno.getVector(Adafruit_BNO055::VECTOR_LINEARACCEL);
    Serial.println(accel.x());
    ax = accel.x();
    zax += ax;
/*   ay = accel.acceleration.y;
    zay += ay;
    az = accel.acceleration.z;
    zaz += az;
    gx = gyro.gyro.x;
    zgx += gx;
    gy = gyro.gyro.y;
    zgy += gy;
    gz = gyro.gyro.z;
    zgz += gz; */
    m = millis() - time;
    p++;
    if (m > m1) {
      if (o == 0) {
        digitalWrite(13, HIGH);
        o = 1;
      } else {
        digitalWrite(13, LOW);
        o = 0;
      }
      m1 += 100;
    }
    if (m > 9999) {
      i = 1;
      zax /= p;
   /*   zay /= p;
      zaz /= p;
      zaz -= 1;
      zgx /= p;
      zgy /= p;
      zgz /= p; */
    }
  }
}
/**************************************************************************/
/*
    Arduino loop function, called once 'setup' is complete (your own code
    should go here)
*/
/**************************************************************************/
void loop(void)
{
  // Possible vector values can be:
  // - VECTOR_ACCELEROMETER - m/s^2
  // - VECTOR_MAGNETOMETER  - uT
  // - VECTOR_GYROSCOPE     - rad/s
  // - VECTOR_EULER         - degrees
  // - VECTOR_LINEARACCEL   - m/s^2
  // - VECTOR_GRAVITY       - m/s^2
  imu::Vector<3> euler = bno.getVector(Adafruit_BNO055::VECTOR_EULER);
  imu::Vector<3> accel = bno.getVector(Adafruit_BNO055::VECTOR_LINEARACCEL);
  imu::Vector<3> accel1 = bno.getVector(Adafruit_BNO055::VECTOR_ACCELEROMETER);
  int8_t temp = bno.getTemp();
  /* Display the floating point data */
  Serial.print("X: ");
  Serial.print(euler.x(), 4);
  Serial.print(" Y: ");
  Serial.print(euler.y(), 4);
  Serial.print(" Z: ");
  Serial.print(euler.z(), 4);
  Serial.print("");
  Serial.print("\tX: ");
  ax = accel.x() - zax;
  vx += ax;
  Serial.print(vx, 4);
  Serial.print(" Y: ");
  Serial.print(ax, 4);
  Serial.print(" Z: ");
  Serial.print(accel.x(), 4);
  Serial.print("");
  Serial.print("\tCurrent Temperature: ");
  Serial.print(temp);
  Serial.println(" C");
  Serial.println("");

  /*
  // Quaternion data
  imu::Quaternion quat = bno.getQuat();
  Serial.print("\tqW: ");
  Serial.print(quat.w(), 4);
  Serial.print(" qX: ");
  Serial.print(quat.y(), 4);
  Serial.print(" qY: ");
  Serial.print(quat.x(), 4);
  Serial.print(" qZ: ");
  Serial.print(quat.z(), 4);
  Serial.println("");
  */

  //delay(BNO055_SAMPLERATE_DELAY_MS);
}

cornerstonerobotics
 
Posts: 8
Joined: Mon Oct 20, 2014 3:35 pm

Re: BNO055 Stopped Working

by adafruit_support_mike on Thu Jun 11, 2015 12:16 am

Your soldering looks good and the connections are correct.

As a sanity check, test the voltages at the 3vo, SDA, and SCL pins.

adafruit_support_mike
 
Posts: 60677
Joined: Thu Feb 11, 2010 2:51 pm

Re: BNO055 Stopped Working

by cornerstonerobotics on Thu Jun 11, 2015 11:29 am

I get 3.28 V from 3vo and 4.86 V from SDA and SCL when it's all plugged in. When I remove the SDA and SCL wires, I get 4.83 V, so not much of a difference.

cornerstonerobotics
 
Posts: 8
Joined: Mon Oct 20, 2014 3:35 pm

Re: BNO055 Stopped Working

by adafruit_support_mike on Thu Jun 11, 2015 8:55 pm

Those are the expected values.

It could be a problem with the chip, or with one of the mosfets in the level shifter. Either way, it's not a highly DIY-able issue to fix.

Send a note to support@adafruit.com with a link to this thread and the folks there will get you a replacement BNO055 breakout. (#2472)

adafruit_support_mike
 
Posts: 60677
Joined: Thu Feb 11, 2010 2:51 pm

Please be positive and constructive with your questions and comments.