of the increase between 3V and 5V — nearly nine
times the consumption.
A proportional increase in current as voltage
increases shouldn’t really be a surprise. If you go
back to principles and consider Ohm’s Law, it
makes sense. Ohm’s Law states that I = V/R. If we
assume a constant resistance (R), then as the
voltage (V) increases, so will the current (I). Of
course, there must be other factors at play within a
complicated integrated circuit that contribute to
this increase, but at a very simplistic level it’s
something that we should expect.
How Low Should I Go?
So, to reduce current consumption, we need to lower
the voltage. However, you usually can’t simply drop the
voltage to the microcontroller’s minimum. There are a few
things to consider when choosing the voltage that you
want to run your project at. In embedded systems, there
are always trade-offs and/or complications, and this is no
different. Here are three things to consider:
Other Modules and Components: In many projects,
you’ll need to connect the microcontroller to other
modules and components, and so need to consider their
limitations. The LM35 temperature sensor, for example,
only operates between 4V and 20V. So, it wouldn’t be
much good in a low power project. If you want to drop
below 4V ( 3.3V is a common voltage), then you’ll need to
find another part. In the past, I’ve used the LM60 from
Texas Instruments which operates from 2.7V. Of course, as
soon as you start switching parts out, you risk heading
down the rabbit-hole of price vs. precision vs. operating
voltage vs. features ... you get the picture!
So peg the non-negotiable parameters down and
work around those. In the September 2015 article, you
may remember that one of the reasons I choose the
MCP79400 as a real time clock over the more popular
Maxim DS1307 is that the DS1307 only operates at 5V,
whereas the MCP79400 operates over a range of 1.8V to
5.5V. I can therefore use it in low power applications.
Battery Performance: You probably know that a
battery’s voltage rating is “nominal.” Commonly, it will
start out higher than the rated voltage and will then drop
below the rated level. Figure 2 shows the voltage over
time of a standard Duracell Coppertop AA 1.5V battery
under a constant current load. Under a 5 mA load, nearly
half the battery’s life is spent below the 1.3V level.
You need to plan for this voltage degradation, and
ensure that your microcontroller and accompanying
components are still able to perform at the voltages that
Post comments on this article and find any associated files and/or downloads at
January 2016 55
Figure 1: Extract from MCP79400 datasheet: power
consumption vs. voltage.
Figure 2: Extract from Duracell AA datasheet:
voltage over time under load.
AVR microcontrollers have certain settings that aren’t
accessible through code, but need to be configured using a
programmer. Atmel calls these “fuse bytes” or simply “fuses”
— a name that has caused much confusion.
Fuse bytes control a range of settings that you’re not
likely to use in your projects — many are related to how the
MCU is booted, reset, or programmed — as well as a set of
useful ones, for example, that control the BOD trigger level
and specify the clock source and its speed.
If you have a programmer that integrates with Atmel
Studio, you can take a look at the fuses in the Device
Programming dialog (from the Tools menu). If your
programmer doesn’t natively work with Atmel Studio, then
you’ll need to use an external program like AVRDude (which
you’re likely already using to program your microcontroller).
It’s beyond the scope of this article to dive into detail, but
there is a fair amount of online resources available. Take a
look at the Resources box for a detailed online article that I