Maker.io main logo

Designing for Lower Power Projects

210

2026-08-25 | By bekathwia

Microcontrollers Test Equipment Multimeter Other Equipment Wearables

Today we’re exploring how to make your circuit use as little electricity as possible.

In past episodes of my Electronics with Becky Stern YouTube series, we’ve covered topics like addressable LEDs and microcontroller selection, and this post focuses on choosing components and writing code to conserve power and make your projects last longer.

Long Live the Battery - And how to calculate its life

It’s possible to design circuits that can run on battery power for weeks, or even years. Think about smoke detectors - you’re supposed to swap out the battery every year for safety, but they could technically last even longer. Your Bluetooth mouse seems to last forever on a single charge, and continuous glucose monitors are designed to run for a full week on one tiny coin cell battery. But how do we actually do that?

Let’s start with what uses electricity in a circuit. Some big power hogs include motors, LEDs, and radios, but microcontrollers and sensors draw current too. The more current your circuit draws, the bigger the battery you’ll need to last for the same amount of time. The units we typically use for current are milliamperes, or milliamps, and for battery capacity, it's milliamp-hours, which is a measure of the total charge a battery can store.

Image of Designing for Lower Power Projects

(Total circuit current draw in mA) x (ideal runtime in hours) = minimum battery capacity in mAh

You calculate the circuit’s current draw based on the component specs from the datasheet: add up the milliamps that each component uses. Multiply the total milliamps by the ideal runtime in hours, and the result is the approximate battery capacity you’ll need.

Image of Designing for Lower Power Projects

For example, here’s an Arduino Uno and three LEDs. The Arduino specs say it draws between 30 and 50 mA, and the LEDs' datasheet says they typically draw 20 mA each. So, 20 times three plus 50 equals 110mA. Notice I used the top of the Arduino’s range, since our goal is to be able to power the device under any of its normal conditions. It’s always ok to have extra capacity in your power supply; better than not enough. So, for this circuit, that’s a pretty small value, so I’d shop for a power supply that can provide at least 150mA, but most likely find a wider selection at a higher value like 250.

To calculate the battery we’d need, let’s say for eight hours, multiply our 110mA by eight hours to get 880mAh. So that’s the minimum capacity of any battery we should choose. It’s ok to go bigger, just not smaller. If you’re using this formula to shop for a battery, add at least 20% more margin than you need, since real life is a bit messier than the math. So, I’d shop for a battery with a capacity of at least 1100mAh.

For a deeper dive on battery calculations, watch this dedicated video about Amp Hours, and check out the DigiKey battery life calculator to help with your next project. You can measure your circuit’s actual current draw with a benchtop power supply or a multimeter. Each of which have their own dedicated episode in this series.

Reducing Power Consumption

Now let’s talk about ways to reduce a circuit’s power. First up is hardware choice, of course. For instance, if you want your project to have a display, consider that an OLED or LCD will always draw about the same amount of power, but an e-ink display only draws power when the image is updated. So, if you can tolerate the constraint of no backlight, this would be a favorable choice in terms of battery life.

Image of Designing for Lower Power Projects

Fun fact: an e-ink display will keep its last image even after it powers down, which is why they are great for things like price labels at the grocery store or conference badges. You can look for power savings in your microcontroller selection, too. Some microcontrollers are way more efficient than others.

Image of Designing for Lower Power Projects

And generally, you’ll want to do as little power conversion as possible, because linear voltage regulators and resistors dissipate excess voltage as heat, which is a waste if you’re trying to conserve charge from a battery. So, your power supply should match your circuit voltage, if possible. And if you have to use them, you can save power by using switching regulators over linear ones, which are much more efficient because they don’t waste as much power as heat. But there are many factors at play when it comes to what parts you choose, so you should expect to make some tradeoffs based on what’s right for your project.

Now here are some ways to reduce power consumption through code. For LEDs, you can adjust your code to reduce brightness and optimize the animation. For example, if you have a circuit with a group of RGB LED pixels, each could draw a maximum of 60mA, if all three LEDs are on. If you remember your additive color theory, they’ll mix to white if I program all three red, green, and blue LEDs to be maximum brightness.

But if you only turn on the red LEDs, they’ll each draw 20mA. And if you turn the brightness down by about half, they’ll each draw way less, let’s say 10mA. And if I write a program to randomly twinkle only one or two LEDs at a time, and the rest stay off, it’ll draw even less power.

The microcontroller draws the same 50-ish milliamps while awake and running code, regardless of the LED brightness or animation. And if white is really the color you’re after, you can save power by using RGBW LEDs, which have a fourth LED inside that’s just white– and uses less power than having all three of the others on at once. And it creates a better-quality color output at lower brightnesses because there isn’t any mixing of wavelengths that would lead to gamma correction issues. So you can see how just with color and brightness, you can cut down a large amount of your current draw without sacrificing too much. This idea of turning things on only some of the time is called ‘duty cycle’.

Say I want to use my circuit for a Halloween costume. Instead of looping your animation constantly, you can use the buttoncycler NeoPixel sample as a good starting point for a program that executes your animation once on button press, then is idle the rest of the time, which saves on battery life.

My next tip, while we’re on the topic of LEDs, is to turn off any onboard LEDs you’re not using. For example, Gemma M0’s built-in multi-color LED is programmed under the hood to show specific colors depending on its status, and you can add in your own code to disable it while your program’s running.

As a last resort, you can also physically remove any onboard LEDs that are getting in the way of your efficiency-maxxing. But I don’t recommend this type of intentional destruction– there’s probably a way around the issue through choosing a different output pin than the one attached to the built-in LED, or choosing a different board entirely.

Wireless uses a lot of power. If I test my ESP32 with Wi-Fi turned off versus with the Wi-Fi code running, I can see that much more current is being drawn just by running that Wi-Fi code. So, the strategy for power saving is to turn wireless off when not in use, and send data to the cloud less often.

Sleep modes can make a big difference, too. A microcontroller uses a different amount of current depending on whether it’s active, idle, or asleep. For example, a wireless sensor node might follow a pattern of sleep, wake, measure, transmit, sleep. We did a whole episode on sleep and interrupts earlier in the series too, so watch that video for more.

Finding a Battery that Fits

My advice for battery selection is to measure your circuit, then choose a battery that fits your electrical needs while hopefully also fitting inside your size constraints.

I like little coin cell holders for tiny loads, but since coin cell batteries can’t supply high current, they would be terrible for anything with a motor.

If your LEDs flicker or your microcontroller board keeps resetting, it could be a sign your battery’s not able to keep up. Radios and LED animations can spike higher current draws for short bursts, and it's important that your battery can handle those peaks.

Image of Designing for Lower Power Projects

Rechargeable lithium cells can deliver high current, and if you’re a beginner, you can just stick to USB battery packs, which step up the voltage and provide some extra safety features. Their downside is that if your circuit doesn’t draw enough current constantly, they’re designed to shut off automatically.

But if you’re more advanced, you may want to choose a bare lithium battery to fit inside your small project enclosure and power a 3V board. Just be sure to observe the precautions we’ve covered in previous episodes– don’t abuse or short these batteries, and be sure to store them safely.

Image of Designing for Lower Power Projects

I much prefer to use alkaline packs for most of my battery-powered projects, because they’re affordable, safer, available as rechargeable nickel-metal hydride too, and configurable to many common voltages just by adjusting the number of 1.5V cells in series. So, for a small Arduino project, I might use this three-times triple-A (3xAAA) holder, which is 4.5V and about 1000mAh, or if needed, bump up to a three-times double-A (3xAA) holder, which is still 4.5V, but has a capacity of about 2000mAh. The voltage adds up with batteries in series, but the current remains the same as a single cell. And you can get alkaline battery holders with built-in switches and different wire connectors, and even if it doesn’t come with the right connector, there’s always some adapter that will make it connect to your circuit however you like.

Número de parte del fabricante 4988
BATT HLDR COIN 2 CELL 12" LEADS
Adafruit Industries LLC
Número de parte del fabricante MN35
DIGITAL MINI MULTIMETER
FLIR Extech
$25.99
Ver más Details
Número de parte del fabricante 1403
DC PWR SPLY 100W TRIP OUT 20V/5A
Global Specialties
$390.00
Ver más Details
Número de parte del fabricante TI223
MOBILE THERMAL IMAGER FOR ANDROI
Klein Tools, Inc.
$322.01
Ver más Details
Número de parte del fabricante 3501
ADAFRUIT GEMMA M0 - MINIATURE WE
Adafruit Industries LLC
Add all DigiKey Parts to Cart
Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.