Reduce power consumption of standard GPS setup

Hi there! I'm using a really standard setup of a 3700 mAh LiPo connected to the Arduino MKR GSM 1400 with the MKR GPS Shield connected via I2C. Building just another bike tracker. With - so far - terrible battery life.

My current troubles are as follows: The board in deep sleep, with really nothing going on apart from the onboard LED, consumes about 10 mA. That's not too bad, but way more than I had hoped for. And then it gets worse: As soon as I connect the GPS Shield, pretty much no matter what I do with it (including turning it as off as far as I managed to do with Wire.end() and myGNSS.poweroff(0) using the SparkFun_u-blox_GNSS_Arduino_Library), the power consumption is raised to about 40 mA, which leaves with me barely 4 days of battery life, even when doing absolutely nothing.

Apart from a new appreciation for the energy efficiency of smartphones, I gained nothing and am just about to give up on this project (in this configuration).

I'm looking for explanations for the relatively high power usage of 10 mA of the board itself (where is that going? Why isn't it more optimized?) as well as for the Shield. I have also searched for means to just cut the power to the I2C port, but that doesn't seem trivially possible, or is it?

Unless somebody can convince me otherwise, I'll consider this a dead end and am looking for options to create a setup that can be efficiently powered down. Any hints?

Arduino boards are not intended for low power or battery operation. But it is easy to modify an Arduino Pro Mini for battery power, by removing the power LED and the voltage regulator. Or make a bare bones Arduino and follow this excellent low power tutorial.

There is nothing you can do about the GPS module power consumption except power it down, or power the entire system up and down at regular intervals, using a TPL5110 power timer.

Do not connect powered MCUs via their I/O pins to unpowered modules, as that can lead to malfunction and serious damage to either component.

1 Like

Not to connect the shield via an I/O pin is a valuable hint, as that was my next plan๐Ÿ˜….

But, since the thing can be communicated with via UART, powering it using the 5V pin in series with a switch, possibly a MOSFET, should still be an option, right?

As you can see, I'm a clueless beginner. Well, I studied material science, so I'm semi firm on the semiconductor basics and I'm an experienced programmer, though not on the system level. Do you have any literature to recommend that would give me a birds eye view on the Microcontroller topic?

How to save power for the GPS, depends on the model of GPS.

Most GPSs have a software backup mode, whereby you can send a command to turn the receiver mostly off and the current will be 1mA or maybe less. Details of how to do this will be in the datasheet of the GPS.

Alternativly you can turn the power off to the GPS via a MOSFET. Then the power consumption can be in the 25uA region when the GPS is off.

In both the above methods as long as there is a backup voltage supplied to the GPS, it will retain its settings and satellite information and will aquire a new fix on power up in 2-10 seconds but sometimes longer. This is called 'hot fix' mode.

In addition mose GPS have various tracking modes whereby bits of the GPS are turned on-off by internal timers and this can also reduce power consumption quite a bit, but not down to the sub 1mA regions mentioned above.

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