MKRWAN1300 high current in sleep mode

I 'm trying to power the Arduino MKRWAN100 LoRa-Node by battery. When i put the board into sleep mode i still measure a current around 1.15mA. Mutch to high but i can’t get lower :frowning:

Code-Snippet:
#include “ArduinoLowPower.h”
#include <MKRWAN.h>

modem.sleep();
uint8_t st = SLEEPTIME -2;
LowPower.deepSleep(1000 * st);

All GPIOs are defined as INPUT_PULLUP and ADC is disabled.

Was anybody able to get lower values? Any Ideas?

1 Like

Hi,
do you have checked if there are still some LEDs on the board which are on? Sometime you need to desolder the power led etc. to lower energy consumption. Sorry just an idea, because I don’t have a MKR WAN 1300 at hand at the moment.

Yes, there are two LED on that board but in deep sleep mode they are surely switched off. Must be something else. See the attached schematics: MKRWAN1300-schematic.pdf (50.2 KB)

I would say that voltage monitor on PB08 consumes that current.
Check if VBATT/2.5A is always turn on.

Check also consumption from U3 - ECC508.

ok thanks for the hint.

VBATT is always on but 3V/(680k+330k) < 3µA.

And ECC508 should have less than 150nA sleep current ( http://ww1.microchip.com/downloads/en/DeviceDoc/20005927A.pdf )

In my opinion, You did not put into sleep ECC508, or is by default in sleep mode after power on.
Check also I2C pull-ups and IO configuration on that pins and verify INPUT_PULLUP because this configuration may also consume some current.

Thank you again. I tried to put all pins into INPUT_PULLUP mode. Will have a look at the I2C bus and try to put the ECC508 into sleep explicit.

Tried very hard to put ECC508 into sleep mode - no success at all :frowning:
I found i2c device at address 0x60 but can’t send byte 0x01 plus stop as described in the datasheet.

#include <Wire.h>

void setup() {
  Wire.begin();
    
  Serial.begin(115200);
  while (!Serial);
}

void loop() {
  Wire.beginTransmission(0x60);
  Wire.write(0x01);
  byte error = Wire.endTransmission(true);

  Serial.print("result "); Serial.println(error);

  delay(2000);
}

result toggles between 0 and 2 where 2 means “received NACK on transmit of address”

TWI is tricky protocol if you have logic analyzer try to compare if everything is as ECC508 require.

You can also try to use this lib https://github.com/cryptotronix/cryptoauth-arduino and check if sleep mode works.

Hi Andreas,

Have you found a solution to your problem yet? We are also very interested in getting the MKRWAN1300 into a low power mode. What is the current consumption you achieve?

Best regards,
Sebastian

I tested a bit further, following up on the comments provided earlier. I got the I2C communication with the ECC508 working. Before talking to it you need to follow the awake procedure (pulling SDA down for a minimum amount of time). Afterwards, the chip will respond to I2C commands on address 0x60. However, putting the chip to sleep manually, does not make any difference, which suggests that the ECC508 already is in sleep from startup.

One issue I am having is that I cannot get the Murata radio to sleep. I use the function provided by the MKRWAN library (modem.sleep()), but it always returns false. All other commands to the module seem to work fine. I currently do not have access to any documentation of the AT commands to that module, which makes it a bit hard to dig deeper. Has anyone here gotten the radio to sleep (responding to the sleep command)?

I have been experimenting with it myself too.
The best I could do is 1.6mA through the battery connector.
I tried also the ECC508, but it didn’t work.
Next to that trying to put the LoRa to sleep didn’t effect it much.
The way I got the 1.6mA was with using any supported low-power library.

Any suggestions?

Have you tried to measure when powered using 5v VIN (or 3.3v VCC?) pin and GND?

@sebbad Have you make any progress with reducing the power consumption of the MKRWAN1300? I too am experiencing 1.16mA when sleeping.

@gproduct I think you have a floating input that is causing your 1.6mA. If you edit wiring.c and comment out the section to configures all gpio as inputs you should get to 1.16mA. Have you made any further progress?

I think the remaining milliamp comes from a hardware issue. The murata module has a temperature controlled oscillator, which is powered via one of its pins. It seems that this oscillator is not internally shutdown when the module goes to sleep. Instead, I have seen designs where the oscillator is powered via a GPIO of the host controller allowing to disable the oscillators power supply. In the arduino design, however, the oscillator is directly connected to the power supply.

I have posted a similar question in the Arduino forum, and am quite surprised (and disappointed) that the designers of this module do not comment on this. I hope this will issue will be considered in a future revision of this platform.

1 Like

@sslupsky – replying here instead of continuing the discussion on github :wink:

I haven’t made extensive research for low power, but I doubt I would make it better than you.
As @sebbad mentions the current draw most probably comes from the Murata module, and we have no impact on that.

I decided to workaround the problem with a TPL5110 and I am very optimistic with that – I need to control power anyway for my sensors.

Linked to that I have submitted some simple merge requests to support “ABP after OTAA” and externalize additional data through the Library.
It is pending review, but if you are interested my Library and firmware are available here.
The firmware is labeled 1.1.6-B02.

It is working fine for me, I am still looking at one additional feature: currently there is (afaik) no way to know when a send is complete (unless you ask packet confirmation which I don’t want), so I need to wait a couple of seconds before cutting power to ensure the packet is sent.

Hi @Amedee, You are likely aware now that there is a hardware design problem with the existing board that prevents it from achieving a sleep current below 1.15mA. I dropped off a couple boards today to have them modified to correct the defect. I should get them back later today.

Hi @sebbad, The Arduino guys got back to me today about this and acknowledged the issue with the VDD_TCXO pin. They are planning a v2 release but I have not heard when that will be available.

I dropped off a couple boards today with a guy that has an Oxford laser to have them modified to correct the defect. I should get them back later today to test them.

@Amedee, @sebbad There is another problem with the MKRWAN1300 related to the power supply for the Murata module. VDD_USB needs to be connected to the same supply as VDD_MCU.

The good news is that with the modifications to VDD_TCXO and VDD_USB I was able to achieve a sleep current of about 8.5uA.

2 Likes

@sslupsky Great to hear that 8.5µA are possible!

Could you please tell us the modifications you have done?

I assume the currennt measurement was done while powering the board by battery!?

Is it possible to do these changes without expensive tools?

Sorry, a lot of questions, but i realy like the board but suffer from the bad deep sleep values.