How to accurately estimate the power consumption of a GPS tracking device

arduinogpsgsmlow-powerpower

I'm building a solar powered GPS tracking device using an Ieik Mini Nano V3.0 Atmega328p Board (based on Arduino Nano), Adafruit Fona GSM module, Ublox GPS module. The GPS module will transmit location data every minute and I want to calculate the battery capacity needed for two days of operation without sunlight. In order to do that I'm trying to get a better picture of the lengths of time the components will be operating at some specified current before I buy the components.

For example the Ublox GPS module's datasheet/manual says that at normal operating conditions, the working current is 40mA max and does not specify a min current. Does this mean the GPS module will draw 40mA 24 hours a day while tracking and transmitting?

The Adafruit Fona claims to draw 20-25mA on "standby", 200mA+ while running, and spikes up to 2A while calling/sending/receiving data. Since it will transmit every minute, it safe to assume it draws 25mA 24 hours a day? or do I have to factor in to 200mA+ somehow?

As for the microcontroller board, the Arduino Uno R3 operates at the same voltage range and has the same max current drawn per I/O pin (40mA) so I am relying on this experiment to perform power consumption calculations. Is it safe to assume that the board draws 40mA (for the GPS module) + 25mA (for the GSM module) 24 hours a day and round up a little?

Best Answer

This is all fairly rough but based on your numbers and some past experience:

  • 40 mA for the GPS receiver is probably a good figure to use for a start, although for most GPS receivers the maximum current is running at the maximum update rate which looks like 5 Hz for that module. You can probably save some power by setting it for a slower update rate even though you might still want the update rate to be higher than the transmission rate to capture maximum speeds for example.

  • You'll probably find the GSM module may spend about five seconds in transmit mode per minute or say 12% of it's time at 200 mA which would give an extra 24 mA on average. Maybe round that up and say the GSM module will take 50 mA. GSM modules are always a little trickier because it can also depend on how many retries are required and the transmit power needed to reach the basestation.

  • One problem I see is that page you've linked says while running an Arduino Uno the current is 46.5 mA without a load, the I/O current limit 0f 40 mA isn't related to that so you need to add on that current required by the Arduino itself. But the Nano is simpler and after a quick look at the schematic 20 mA would probably be closer the mark.

So I'd estimate as 40 + 50 + 20 = 115 mA but don't forget to take into account any conversion losses if somewhere along the line you're using a switching converter for the power supply. It's probably better for a prototype to add in say a 50% extra margin and then do some actual testing on current draw. If you don't have much in the way of test equipment just using a battery of a fairly known capacity should give you a good idea.