RAK4631 + RAK19007 + ADS1115 power consumption


I’m on a quest to reduce my power consumption with a RAK4631, RAK19007, and ADS1115. With just the RAK4631 + RAK19007 I’m able to achieve ~30uA (using a power profiler) which is what I would expect with all the usual power saving tricks (low power mode, calling sleep in the loop, turning off 3V3_S).

However, when I attach an ADS1115 (both a custom circuit and Adafruit breakout board) I am getting ~500uA to ~1mA current draw.

When I measure the voltage of 3V3_S when WB_IO2 is off and the device is sleeping, its measuring around 0.2V.

I understand people likely can’t provide advice for the ADS1115 (unless you have experience with it). However, I’m curious to know why even after turning off 3V3_S there still seems to be such large current draw? I am using Ver. C of RAK19007. Using my limited knowledge of circuits, wouldn’t only a really small leakage current be allowed to flow if 3V3_S was turned off?

Also, I tried to find the schematics of the RAK19007 Ver. C but it seems like only Ver. B is available. Is it possible to get the updated schematic?


Welcome back to the forum @csomori
On your ADS1115, are there pull-up resistors on the I2C lines?
If yes, try to remove them, they are not required, the RAK19007 already has pull-ups on the signals.
Are you using INT outputs of the ADS1115? If yes, do they have a pull-up or pull-down? How do you setup the GPIO on the Core module where the INT is connected?

During some experiments I had to remove RAK19007 pull-ups resistor to get very low power consumption. Some ICs draw current throught i2c lines if there are pulled up. In this case I add pull ups resistors on my custom module which are tied to 3V3_S, so if IO2 is low, modules are powered down as i2c lines.

@beegee : it could be cool to be able to choose on RAK19007 (and other boards) where i2c lines are pulled up (with a solder jumper typically)

Amazing this did the trick! Back down to ~30uA. I had made up my circuit using a resistor array across the I2C, INT, and ADDR pins so by removing the array I removed the pullup/down resistors on all of them.

Thats good to know re: pullup resistors on the 19007, I didn’t think it would make that much of a difference. Thanks very much for your knowledge and quick response

edit: so investigating further, I removed just the I2C pullup resistors and the current draw dropped from ~1mA to ~350uA. Then I disconnected the INT pin connected to IO4 and nothing changed. Then I removed the INT pullup resistor and it finally dropped to ~30uA. In hindsight I should’ve just used the internal pullup resistor on IO4 rather than using an external one.

Also to answer your question on how the GPIO core module is setup when INT is connected, I had an external pullup resistor on my custom board. I tried a number of software tricks before removing the resistor (setting to output, input, and input_pullup) and none of them changed the current draw.

So in summary, for I2C just use the RAK19007 integrated pullups. For the INT pin connected to IO4, I should probably use the Core’s internal pullups (using setPin(WB_IO4, INPUT_PULLUP)).

Thats good to know! Interestingly though my I2C pins are pulled high using 3V3_S, so I’m still unsure why that much current is pulled when 3V3_S is turned off. It would be good to be able to select either “internal” or “external” pullup resistors because if you want to interface a breakout board using the qwiic system, most of those boards will have pullup resistors on them.

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