IMU Effect on Low Power

Hi all,

I've successfully been able to reduce the power consumption of the board by cutting the 3.3V jumper and following the instructions on the post here. The sleep mode and current consumption work as expected (under 100uA), until I try to use the IMU on the board. Adding the following sections of code make the sleep current of the device jump to about 500uA.

The sleep mode and current consumption work as expected, until I try to use the IMU on the board. Adding the following sections of code make the sleep current of the device jump to about 500uA.

if (!IMU.begin()) {
Serial.println("Failed to initialize IMU!");
while (1);
}

IMU.end();

I'm making sure to include the lines below, which should take care of powering down the sensor, and the I2C lines. Any thoughts or anyone else experiencing this problem?

digitalWrite(PIN_ENABLE_SENSORS_3V3, LOW); // turn off sensors
digitalWrite(PIN_ENABLE_I2C_PULLUP, LOW);

Try making the PIN_ENABLE_I2C_PULLUP pin an input. If that works, there is a current flowing trough the pull-ups to ground. The IMU.begin function configures the I2C pins, maybe the IMU.end does not reverse all settings and just disables the I2C peripheral.

I'm experiencing the same problem. All power down actions done, including the SYSTEMOFF instruction at the end. Still reading 500 uA when USB powered and powered on a Coin Cell ~300 uA. This should at least be below or around 30 microamps. Some hints or help would be appreciated. It seems as if the LSM9DS1 is still drawing some current even though power to the device is switched off.

Here's my code (delay(10) is still a test leftover...);

// Turn off power to peripherals
  digitalWrite(PIN_ENABLE_SENSORS_3V3, LOW);
  //digitalWrite(PIN_ENABLE_I2C_PULLUP, LOW);
  pinMode(PIN_ENABLE_I2C_PULLUP, INPUT);
  // Leds off
  digitalWrite(LED_BUILTIN, LOW);
  digitalWrite(LED_PWR, LOW);
  digitalWrite(LEDB, HIGH);
  // Enter system OFF, after wakeup the chip will be reset, and code execution will run from the top 
  delay (10);
  NRF_POWER->SYSTEMOFF = 1;