Muon + M404 quiescent current in various sleep modes?

Hi,

Are there any preliminary measurements or data on the quiescent current of the Muon while it is in various sleep modes, such as hibernate and stop modes?
Additionally, I would like to know the quiescent current and voltage values needed to calculate the power demand in milliwatts (mW) during these sleep modes, assuming a typical Li-Po battery voltage range.

On a Muon and M404 setup (MUON404).

Thanks!

There are no current measurements yet.

With the 3V3_AUX (LoRa and Ethernet) powered down it should basically be just the M-SoM but I can't guarantee that yet.

1 Like

Hi Rick, is 3V3_AUX powered down by default or should we do something in the user firmware?
Thank you,

If you use setup.particle.io to set up your Muon, it will be enabled automatically.

If you want to do it manually through code, the instructions are here.

The explanation from that page is:

Devices using the Particle Power Module include a 3V3_AUX power output that can be controlled by a GPIO. On the M.2 SoM breakout board, this powers the Feather connector. On the Muon, it powers the Ethernet port and LoRaWAN module.

The main reason for this is that until the PMIC is configured, the input current with no battery connected is limited to 100 mA. This is insufficient for the M-SoM to boot when using a peripheral that requires a lot of current, like the WIZnet W5500 Ethernet module. The system power manager prevents turning on 3V3_AUX until after the PMIC is configured and the PMIC has negotiated a higher current from the USB host (if powered by USB).

This setting is persistent and only needs to be set once. In fact, the PMIC initialization normally occurs before user firmware is run. This is also necessary because if you are using Ethernet and enter safe mode (breathing magenta), it's necessary to enable 3V3_AUX so if you are using Ethernet, you can still get OTA updates while in safe mode.

After changing the auxiliary power configuration you must reset the device.

1 Like

Thank you, Rick.

For a specific project where I'm not using LoRa or Ethernet, I’m looking to power them down. I couldn’t find a way to do this in the documentation—could you provide some guidance?

Thanks!

Follow the manual instructions for setting, but set auxiliaryPowerControlPin(PIN_INVALID). You'll need to reset the device then it will not turn on the power at boot.

Note that this will also make the 40-pin expansion connector 3V3 not powered.

1 Like

Does it kill the 3v3 on the QWIIC (3.3V I2C) connector too? Thanks

Qwiic is also on 3V3_AUX.

The other option for Ethernet and LoRa is to put in them in sleep mode in software. I don't have a code example, but it should be possible.

1 Like

Hey, thanks for the tip and all the info.

I went to the datasheet and the power consumption of the ethernet chip WIZnet W5500 in POWER DOWN MODE (sleeping) doesn't look good for low power devices: 13 mA .

For low power setups with Muons, I believe the best approach would be to deactivate the 3v3_AUX, which unfortunately means we won't be able to use the QWIIC connector. Additionally, the 3v3 on the 40-pin expansion can't be used either.

Thanks

You can still use 3V3_AUX peripherals, just not during sleep, if you want to conserve power.

Disable system management of the pin using auxiliaryPowerControlPin(PIN_INVALID).

Then just treat D7 as a regular GPIO. Set pinMode(D7, OUTPUT). Doing a digitalWrite(D7, 1) will turn on 3V3_AUX and 0 will turn it off.

If you're only awake for a short period of time such as to read a sensor and go back to sleep, the added power consumption during wake time will probably not be that significant.

oh, that's majestic.
I understood that one somehow couldn't do that because of the need for reset:

So, from what I'm reading, I infer:

  • users can disable 3v3_AUX by settings above + a reset
  • after that reset, users can momentarily power on 3v3_AUX and use it

is this correct?

PS: I still don't see what the device reset is doing here, but must be some internal mechanism.

Thanks

Yes, that is correct.

The reason a reset is required after changing the power manager setting is that the power manager enables 3V3_AUX at boot, before user firmware runs, and also in safe mode.

However if you are not letting the power manager control 3V3_AUX, you can turn it on and off as desired, because it's just a GPIO (D7 on the Muon, D24 on the M.2 SoM breakout board) that controls a load switch (TPS22918) on the power module.

I like that flexibility.

Another question I have is the following:

  • is there a way to find out if a device has already deactivated 3v3_AUX and reset?

This will help a program to decide whether it needs to execute the disable 3v3_AUX routine at boot or not. Otherwise I need to go use flag stored in nonvolatile memory for this, which I prefer not to.

Thanks a ton!

This seems to work for me:

#include "Particle.h"

SYSTEM_MODE(AUTOMATIC);
SYSTEM_THREAD(ENABLED);

SerialLogHandler logHandler(LOG_LEVEL_INFO);

void setup() {
    waitFor(Serial.isConnected, 10000);
    delay(2000);

    particle::SystemPowerConfiguration powerConfig = System.getPowerConfiguration();
    if (powerConfig.auxiliaryPowerControlPin() != PIN_INVALID) {
        Log.info("power control was enabled on pin %d, disabling", powerConfig.auxiliaryPowerControlPin());

        powerConfig.auxiliaryPowerControlPin(PIN_INVALID);
        System.setPowerConfiguration(powerConfig);

        Log.info("disabled, resetting device");

        delay(1000);
        System.reset();
    }
}

void loop() {
}


2 Likes

Awesome, thanks so much.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.