Where is the leakage? [RAK19007]

Hi,
I have confirmed that my RAK4631 module consumes ~12uA stand alone in sleep mode.
I’m feeding it via the 3.3V input at J2

When adding the RAK19007 (no additional sensors) the consumption goes up to ~0.5mA at J2 and from the BAT input I measure ~0.6mA.
The RAK19007 at BAT without any extra modules is measured to ~0.1mA.
I have tried to understand if this is expected, but according to data sheet the leakage should be much lower.
An explanation would be much appreciated!

Multiple possible causes:

If you feed 3.3V through J2 on a RAK19007, you supply through a pin that is behind the voltage regulator. Not sure what that can cause. It is better to supply through P1 with 3.7-4.2V or P2 with 5V.

Without setting the LoRa transceiver into Sleep mode, it is in Standby mode (default after power up), which is causing 0.6mA consumption compared with 1.2uA consumption in Sleep mode.

Other consumers that cannot be switched off
(1) The I2C lines have 4.7k Ohm pullups, that can cause 0.7 mA already, depending on the state of I2C SDA and SCK
(2) There is a voltage divider on VBat with 1M Ohm and 1.5M Ohm that can cause 0.002 mA\

Here is a measurement of RAK19007, RAK4631, LoRa P2P mode, LoRa transceiver in sleep mode (RX disabled) with my Low-Power-PIO example code:

Thanks @beegee

Ok, I will continue to debug with feeding from P2, I agree.

Im testing now with the low-power sample code and have the same results.

Regarding sleep after TX, maybe Im missing something here?? Would anything from RAK19007 trigger the module from not going in to sleep mode?

I2C pull-ups might cause this if the module it self draw current in sleep mode or not actually going in to sleep mode of course. But else it should not add any extra in this scale.

How did you setup the example?
This example has to be setup with AT commands.
You have to set it into LoRa P2P mode with AT commands.

AT+NWM=0
AT+PRECV=0
ATC+SENDINT=0

First set’s LoRa P2P.
Second disables receive.
Third disables automatic sending.

This has to be done once, the settings are stored in the flash and used after power on or reset.

The code defaults to LoRaWAN. If the device cannot join the LoRaWAN network it will have higher consumption as well.
In LoRaWAN I get same consumption after the device has joined the LoRaWAN network and is set to Class A.

1 Like

I’m running in LoraWan mode and its joining Ok and TX interval is working.

My measurements on the stand alone module (in LoraWan) is working with my settings, so after TX it goes down in sleep mode (~12uA), but when connecting the RAK19007 it behaves differently on consumption.

So will your settings proposals really help me here, or was it more to close down and confirm if the consumption will change?

Some follow up, still confused :upside_down_face:

Maybe my statement above (on 12uA) was not correct, due to wrong Vbat feed etc.!?

So lets start over:

  • What I’m trying to achieve is to lower the power consumption as much as possible with a battery fed RAK4631 + RAK19007 + RAK1904 using LoraWan Class A.
  • My code is using the xSemaphoreGiveFromISR() interrupts, this is based on the examples/DeepSleep-nRF52/DeepSleep-nRF52.ino (yes Arduino based now)
  • I have put the LIS3dh in low-power mode and disabled the internal pull-ups
  • I don’t see any savings disabling the debug info via serial??
  • My current consumption using 3.3V fed to battery connector on RAK19007 is ~0.6mA measured with a Fluke85.

Is this as expected or am I missing something? It seems that that the transceiver never goes in to sleep to me.
Reading the forum its a bit confusing if the p2p has been used to reach this really low figures or not…

is not for really for RAK4631. It was running on RAK4631 a long time ago, but now it requires some changes to compile for RAK4631.

Once the changes are done it works fine and I am getting still 26uA sleep current with that example whether I use the RAk1904 accelerometer or not.

This is the code. I am guessing you miss something in the setup of the accelerator, specially this one:

	// Set low power mode
	data_to_write = 0;
	acc_sensor.readRegister(&data_to_write, LIS3DH_CTRL_REG1);
	data_to_write |= 0x08;
	acc_sensor.writeRegister(LIS3DH_CTRL_REG1, data_to_write);
	delay(100);

	data_to_write = 0;
	acc_sensor.readRegister(&data_to_write, 0x1E);
	data_to_write |= 0x90;
	acc_sensor.writeRegister(0x1E, data_to_write);
	delay(100);

DeepSleep-nRF52.zip (7.6 KB)

1 Like

Thanks @beegee for coming back on this!

Hmm, strange, testing the DeepSleep-nRF52.zip above on 4631+19007 and I still get 0.6mA (compiled in Arduino IDE).
I did only change to LORAMAC_REGION_EU868, and the device address stuff.
The device joins Ok

11:12:57.426 -> OTAA joined and got dev address 01136E78
11:12:57.940 -> Wakeup event 3
11:12:57.940 -> Joined network

Compiling issue??

It must be something else. I compiled on Arduino IDE as well.

In which Sensor Slot do you use the RAK1904?
Slot A and Slot B are not good for this sensor.
Slot C or Slot D are ok.

In this latest test I removed it, else I have it on Slot C.
(Iv got 0.6mA with and without the RAK1904.)

Maybe you damaged something on the Base Board.
This:

Is not a good way to supply because:

Could be you damaged the voltage regulator on the RAK19007.

I have no other idea at the moment. In my measurements I used a RAK19007 and a RAK4631 and supplied through the correct input connectors.

Ill change HW and test, good input!

Did not help.

Tested on different RAK19007 ver. C and Iv got the same results.
Also tested on one RAK19009 (fed bare-boon, no power modules) and got ~0.5mA
Also tested different RAK4631, no change.

Are you sure your tool to measure is good?
I am using a PPK2. Very nice tool and goes down to the nA range.

I have thought about it and will see if I have any errors there. According to spec it should work.
I will try with a shunt resistor(0.6mA over 200ohm → 0.12V) to compare if my 0.6mA is correct.

edit: it shows very much the same as Iv got with the Fluke

Could there be that we are using different libraries somehow?

My output from compiling verbose…

Using library SPI at version 1.0 in folder: /.arduino15/packages/rakwireless/hardware/nrf52/1.3.3/libraries/SPI 
Using library Wire at version 1.0 in folder: /.arduino15/packages/rakwireless/hardware/nrf52/1.3.3/libraries/Wire 
Using library SX126x-Arduino at version 2.0.29 in folder: /Arduino/libraries/SX126x-Arduino 
Using library SparkFun LIS3DH Arduino Library at version 1.0.3 in folder: /Arduino/libraries/SparkFun_LIS3DH_Arduino_Library 
Using library Adafruit TinyUSB Library at version 1.7.0 in folder: /.arduino15/packages/rakwireless/hardware/nrf52/1.3.3/libraries/Adafruit_TinyUSB_Arduino 

I don’t think that the libraries have anything to do with your power consumption.

I am using the same library versions.

1 Like

@beegee finally I think I know the root cause to why it draws more than expected. :slightly_smiling_face:

I did hook up a power supply to the P1 battery connector instead of a battery so I can adjust input voltage.
The current goes up as son as I go below ~3.4V and I did now get ~25uA at >3.6V. Obviously my battery had low voltage ~3.5V.

I didn’t know this behavior, and I would like to understand why this happens?

I am seeing the same effect if the input voltage is going below 3.6V.

There are “misleading” information in the datasheet of the SGM6036.
In the Features they claim “1.8V to 5.5V Input Voltage Range”. But reading through the rest of the datasheet, it looks like this range is for the 1.0 and 1.2V fixed output versions of the regulator and not for the 3.3V fixed output version.

The rest of the datasheet refers to a voltage input of 3.6 to 5.5V, e.g. in the ELECTRICAL CHARACTERISTICS and in the TYPICAL PERFORMANCE CHARACTERISTICS.

Ok, that might be one of the problems on RAK19007 giving me that 0.1mA extra, but it seems like the RAK4631 module also needs >3.5V to be able to go in to deep sleep with really low consumption??
I did test to feed it separately with a RAK19009 fed on Vbat and VDD with <3.5 to 3.6V.

Maybe I’m doing it wrong to test the 4631 standalone?