Learn different ways to reduce the current draw for your next Arduino project.
All this talk about how “mind bendingly low” the power consumption is on Ambiq Micro's Apollo3 Blue microcontroller used on The SparkFun Edge reminded us to reflect back on some data gathering we did previously on some other of our very popular boards: the Arduino Pro Mini 5V and Arduino Pro Mini 3.3V. In fact, we just released some new starter kits for these boards a few weeks ago!
While the tutorial linked below was written back in 2016, the release of these starter kits shows how applicable it is today, especially if you're just getting started or aren't yet ready for the SparkFun Edge. If you are working with something like the SparkFun RedBoard, Arduino Pro Mini or any other kind of microcontroller, check out our tips for reducing Arduino power consumption, and see which ideas can be applied to your project to decrease the power consumption and increase the battery life!
As a reminder, The SparkFun Edge board currently measures ~1.6mA at 3V, and 48MHz and can run solely on a CR2032 coin cell battery for up to 10 days. For comparison, in our Reducing Arduino Power Consumption tutorial, we used an ATmega328 with Arduino Optiboot (Uno) on a breadboard to eliminate all the power hungry components. Spoiler alert: even with that bare-bones approach, the microcontroller pulled between 13.92-3.87 mA, depending on Vcc and clock speed.
Do you have additional ideas to reduce power consumption? Check out others' tips and share your ideas on SparkFun's forums at the power management page.
I'm glad to see power management getting at least a little consideration! It harkens back to my "pet peeve" with the ATmega chips: No on-board Real Time Clock and no "deep sleep" mode. There are many processors on the market that can have incredibly low power requirements in "deep sleep" mode. Many applications can admit to having the CPU "awake" down around 0.1% of the time -- say one millisecond every second, or maybe half a second once a minute. This means that the average power is just over 1/1000 of the "normal" power -- under these conditions even an application that would kill off a set of AA batteries in an hour with the CPU awake all the time could last for a couple of months spending most of the time in "sleep" mode. (Note that it's also useful to have a system with a relatively wide input voltage range, so you can eliminate the losses incurred by voltage regulators, and also have to use care in selecting "peripheral chips" so that they have very low quiescent power.)
By the way, this is NOT something new -- I worked for a while on a unit that would run for months on 3 flashlight batteries, and was based on an 80C85. This was back in the early 1990s.
Although the Apollo3 Blue has incredible low power processing capabilities, many interesting, very useful applications need very little data processing, but low power consumption is all-consuming consideration.
More recently, I've also been examining the ESP32, as it has a not-very-accurate "Real Time Counter" (they call it a "Real Time Clock", but it's basically just a counter that can be set to "wake up" the CPU at a certain count) -- not great, but it can be useful to generate some "minimum checkin" rate.
One other related little historic sidelight: Most PC operating systems today actually "halt" the CPU when there's nothing else to do. The RTC wakes it up at least once a millisecond. One of the things that Windows 95 was attacted for by the Linux community was that W95 used an "infinite do-nothing loop", keeping the CPU running, and wasting power (and making the computer run hotter). Linux, and later Windows XP, would halt the CPU.
The AtMega CPU's can be used in very low-power applications. The Sparkfun BigTime watch kit is a great example. I built these with my kids, and they are still "ticking" on the original CR2032 after more than 3 years. Take a look at the clocking options in Atmel's full datasheet for the AVR. There are many. You can have a 32kHz external oscillator (as does the BigTime kit), and still have access to multi-MHz clock frequencies on a dynamic basis as processing needs demand.
The various Arduino platforms that use AVR's are not so optimized. It would be nice to have a Pro Mini sku with a 32kHz crystal, for instance :-)
BTW, kudos to Sparkfun for adding the power isolation solder bridge, which can remove the LDO regulator and the LED from the circuit if they are not wanted/needed in the application. The previous version of the Pro Mini did not have this. I didn't notice the change until just now.