While there are many factors that can affect how long an Espruino Puck battery will last, we are able to determine some basic limits with some simple math.
The Puck is designed to be a self contained IoT device running on its own power in the smallest space possible. The common CR2032 watch battery is the appropriate power supply choice as it’s physical size mimics the footprint of the Puck itself. With that choice brings with it some physical limits.
Batteries are rated on their capacity and their performance detail may be obtained from the manufacturer specification data sheet. [will open in a new tab]
From the upper right hand corner:
Nominal Voltage: 3.0 Volts
Typical Capacity: 240 mAh (to 2.0 volts)
(Rated at 15K ohms at 21°C)
We also can visually see this data laid out on a graph on the left hand side:
Continuous Discharge Characteristics
Load: 15K ohms – continuous 21°C (70°F)
Typical Drain @ 2.9V: 0.19 mA
What does this all mean? We have a 3.0 volt battery that has a capacity of 240 milli-Amp hours of charge. This battery will provide a continuous supply of 190 micro-Amps for 1263 hours at room temperature. ( 240mAh / 0.19mA = 1263h == 240,000 / 190 = 1263 Remember 1mA milli-Amp == 1000uA micro-Amp )
With that constant drain we can expect the battery to last seven weeks. ( 1263h / 168h/wk = 7.5 wk == 1263 / 24 = 53 dy )
We know that:
The number of hours in a
Mo 730 (30.41 days)
Yr 8760 (365 days)
1mA milli-Amp == 1000uA micro-Amp
Now that we have some baseline data, we can relate this to how an Espruino Puck will perform.
http://www.espruino.com/Puck.js#power-consumption [will open in a new tab]
Under the heading ‘Power Consumption’ is a nice table we may use to determine the battery life expectancy.
We’ll just use a couple of the listed limits:
At idle not doing anything – 3uA
Connected via BLE – 200uA
Simply divide the battery capacity by the current drain required of the circuit.
Lets convert these current drains to hours of operation:
Given: 240mAh == 240,000uAh
Time in hours:
Note that at idle battery internal resistance will drain before this limit is met
At idle: 240,000 / 3 = 80,000 / 8760 = 9 yr
Bluetooth: 240,000 / 200 = 1,200 / 24 = 50 dy
100% CPU: 240 / 4 = 60 = 2.5 dy
All LEDs: 240 / 10 = 24 hr
See: http://forum.espruino.com/conversations/304791/#comment13631305 Puck using NRF.sleep() in ver 1v92+ [will open in a new tab]
http://forum.espruino.com/conversations/297334/ Battery lifetime and lifetime of other components? Posted on Tue 13th, December 2016 [will open in a new tab]
By knowing the draw or current drain and dividing that into the ampacity of the battery will provide the number of hours we will be able to run in that continuous mode. Remember to watch those units.