Can the power consumption of MAX30101 & MAX32664 be reduced to 0 with the I2C command?

Hi!

We are investigating how to reduce the power consumption of this module to 0 when the microcomputer goes deep sleep. As a result of reading the code of the library, I found that the LED of the module can be turned off with the following command, but it still consumes about 8mA.

bioHub.max30101Control (DISABLE);

Is there any other way to reduce the power consumption of the module to 0 with the I2C command?

Should I turn off the I2C power line in the electronics?

Please let me know if you have any ideas that will solve this problem!

Thank you in advance,

Yuichiro

The datasheet shows that the MAX30101 uses 2.5µA in “shutdown mode”, but the MAX32664 doesn’t seem to have a lower-power or shutdown mode so that will have a continuous draw. Can you shut down the power to the sensor when the controlling microprocessor goes into sleep mode? I’m currently playing around with my max30101 (by writing my own library) and it is a pretty nifty device!

Thank you Arnd!

Your advice has shown that it is difficult to bring the power consumption of this module close to zero.

After some trials, I came up with a way to power down the I2C line using a photo relay controlled by the MCU.

Thank you for your precise comments. I intend to measure the heart rate of students in class with this module. The combination of MAX30101 and MAX32664 is really suitable for such applications.

Yuichiro

どういたしまして, yuichiro-san! (I grew up in Kobé)

Yuichiro:
Is there any other way to reduce the power consumption of the module to 0 with the I2C command?

Should I turn off the I2C power line in the electronics?

Please let me know if you have any ideas that will solve this problem!

Which microcontroller are you using? I am using a Thing Plus C and I do power down the qwiic bus before putting it into deep sleep. The qwiic bus power is connected to GPIO 0 so it’s simply a matter of setting that pin low:

Serial.println(“Turning off qwiic power”);

digitalWrite(0, LOW);

gpio_hold_en(GPIO_NUM_0);

gpio_deep_sleep_hold_en();

esp_deep_sleep_start();

I found I had to call gpi_deep_sleep_hold_en() in order to keep the value held while the chip is in deep sleep.

In setup() I make sure power is enabled to the bus:

Serial.println(“Turning on Qwiic power.”);

gpio_hold_dis(GPIO_NUM_0); // disable the hold on the pin that was put when we went to sleep

pinMode(0, OUTPUT);

digitalWrite(0, HIGH);