[GUIDE] Using Arduino Nano for battery-powered projects

Since Arduino Nano is very small in size and cheap, it might be a good choice for a battery-powered project.
Clones are abundant on ebay and other websites for around 4USD and mostly come with CH340 series USB/TTL adapter, instead of the original FT232.

To see how effective it is as a battery-powered platform, I made some measurements and would like to share my results.

First, to save power, you will need a boost converter (or DC-DC converter) instead of using siz AA batteries or 9V batteries on VIN pin. The on-board converter is a 1117-5.0 linear regulator that is not very efficient. I recommend something like this:

You can also find some similar boost converters on ebay for less.

You can use two AA batteries to power the converter and get 5V output. Supply it to 5V on Nano. I measured currents on the battery side (@3V), not the 5V side, since I was trying to estimate battery life. I also measured currents on the USB side in case I use a power bank.

When Arduino is sleeping with POWER_DOWN sleep mode, the whole board consumes 15.5mA @3V from the battery. If you are using USB to power it (say you use a power bank), it consumes about 18.5mA. This is definitely not good enough for batteries. Even with a gigantic 20,000mAh power bank, the maximal time is 45 days. The efficiency of the boost converter and activities (other than sleeping) will reduce this to just a handful of days.

Next, the power indicator LED consumes a lot of current, if you want to use batteries, such as two AA batteries. You will need to remove the chip resistor next to it.

My clone has a 1kohm resistor in series with the LED. Once removed, the consumption went down from 15.5mA to 8.8mA (@3V). The resistor I removed was the 3rd one from the right side of the white reset button:


This is 50% saving, which is good and easy to do. You just hold your iron on the chip resistor until it is hot enough to remove it. Having a pair of tweezers helps a lot. Your project may now last weeks on two AA batteries.

After this, you will have to remove the 1117-5.0 regulator to get more power saving. This step is difficult. I used a hot air rework station to carefully heat up the regulator and removed it with only a little damage on the male headers' plastics. If you don't plan on putting the regulator back, get a small flush wire cutter and just cut out the regulator at the pins. This should do:

The wide tab might be difficult to cut but once you cut the three small pins, you can just hold your iron on the wide tab and remove it.

Once removed with the Arduino put to sleep, only 0.74mA of current is consumed at 3V on the battery. This will project into months of operation, if you are logging data at moderate rate.

So if some of you thinks this is not really what a "pico" processor promises, then I am sorry to tell you that the Nano just wasn't designed for battery operation. The CH340 consumes a certain amount of power even when sleeping. About 0.15mA at 5V so it could translate to 0.25mA at 3V. Its pull-up and pull-down resistors also cost similar amount of current draw. There is no way to remove the CH340 chip and still use the USB port. Using an arduino mini will solve this problem since it has no USB chip.

On a data logger I designed around ATMEGA1284P, I used FT232 but it will not receive power from the battery. The power consumption is about 0.4mA when sleeping. Not as low as it can go but good enough for 6 months.

So the conclusion is to at least remove the LED's resistor if not 1117-5.0 regulator as well. If you want to use AA batteries etc. get a boost converter.

Then, if you have other devices, such as sd card, rtc, sensors, you need to power them with a transistor so you can but their powers when arduino goes to sleep.

Hope this helps. I'll write about parasitic power and how you eliminate it another day.

Thanks.

4 Likes

Noted. Thanks

Weedpharma

Great post.

have you given any thought to using he internal oscillator and getting rid of the external ?
running slower, but using less power.

Dave,

Thanks. I'll experiment on those as well. My experience has mostly been interacting with 5V sensors so I've not tried 3.3V either, which should reduce power consumption as well. I should probably first try the internal oscillator at 8MHz and load code via ICSP to see how much power is saved. I'll post next week.

I've been designing data loggers for a while. The most recent design is kind of unique. The real reason I did the measurements was to see whether I should add a transistor to turn off peripherals on this data logger, which uses arduino nano. My initial tests were without removing components because I thought that would turn away some beginners that don't know how to remove these surface components. So I went ahead and did the design without the transistor. Now I see that removing the resistor (or even brute-force destroy it with a wire cutter) or even the regulator (cutting it out) would be quite doable for beginners, I've modified my design. The design is based on all thru-hole components cheaply available on ebay and elsewhere that spells cheap. The point is to make the design available for any beginners to assemble. My other designs are all surface-mount and with 1284P, lots of memory compared with 328P :slight_smile:

Here is a link to a "recipe" I posted on seeed.cc:

http://seeed.cc/Open-Source-Data-Logger-p-1845.html

Think about it. One noob + 20 USD + 30 minutes assembly = data logger with various projects they can do.

Cool write-up Liudr! This summer I began making low power devices based on a naked Tiny85. Of course they need to be programmed externally, but they run well using the 1MHz internal oscillator at 3 volts. For my application, this is plenty fast enough. I've also been using the Narcoleptic library (GitHub - brabl2/narcoleptic: Sleep library for Arduino (compatible with arduino-tiny core)) as suggested by Simon Monk in Programming Arduino Next Steps. The library he points to in the book does not work with the Tiny85, but the one I've linked here does. It's a cool library, especially as it gives delay() a reason to exist.

Typically, my devices - toys actually (see here) draw microamps while sleeping if the I2C peripherals are shut down during sleep, and a handful of milliamps when running. I use slices of sleep even while running to keep the overall current low (something Narcoleptic does very well.)

Your writeup gives me lots of ideas for using a more complex board for more complex programs. I've not used a nano before, but you've given me reason to look into it!

ps, here is my generic, low power Tiny85 schematic. The resistors are optional, and reduce the drain by a few microamps if omitted:

it would seem that a pro-mini would not have the usb interface and, except for it's very odd pin-out, might be very useful as a platform for beginners.

as a note, I have two NANO's that suffered horribly at the ham-fisted user shorthing out power. both work great when fed with 5v on the 5v pin, but since the diode is burnt, both need some TLC to replace the diode, or some 'Jason' type slashing and hacking with sharp tools.

also as a note, for a beginner, many are not familiar with braid and it's solder sucking abilities. once the chip has been removed, it can be used to clean up the mess. but, lots of solder makes a large heat sink and makes it easier to un-solder chips.

I long for the day that the energy savings gets to far advanced that it goes negative and starts to charge the battery when sleeping.

liudr:
Here is a link to a "recipe" I posted on seeed.cc:

http://seeed.cc/Open-Source-Data-Logger-p-1845.html

Think about it. One noob + 20 USD + 30 minutes assembly = data logger with various projects they can do.

I designed an alarm board. uses a NANO, 2 relays for alarms, has I2C for RTC and SPI for SD card.
I used a chip socket to allow the NANO to plug in, low profile compared to the headers.
ditto for the RTC and SD card. have pins available for a LCD.

had 10 made from iTead for their low cost of $20. and it has found uses in data logging my furnace, outdoor temps.
getting ready to swap out my sprinkler controller.

next iteration will have 433 mhz to receive the rain gauge readings and have a WIFI. all in less than 10m x 10mm
had to go to a small LCD as the 16x2 was too thick.

I have one that uses push connect terminals to fast connections. funny that you can spend more on connectors than everything else !

Just an update:

The sparkfun boost converter consumes about 0.03mA or 30uA of current at 3.0V when there is no load. I'll make another update when I finish testing with internal oscillator at 8MHz Dave recommended.

Hello, i know its an old post, but i will try anyways :slight_smile:

It's a very nice guide, but i just don't understand, do you connect the 5V output from the dc-dc booster, to the Vin pin on the Nano, or the 5V pin?!?

could you please help me, thanks :smiley:

DC-DC converter output connects to 5V pin.

Hi,

I've removed the same parts that you have mentioned. My results are a little different. Just thought I'd post results here if anyone is planning on doing the same thing.

  1. Without removing anything, the nano at 5v supplied to the 5v pin uses 22ma.

  2. Without removing anything and putting it in to sleep mode using the following function, I get 10ma at 5v
    LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
    The library I used: GitHub - rocketscream/Low-Power: Low Power Library for Arduino

  3. After removing the voltage regulator (I didn't desolder it, I just cut it off with edge cutters) and putting it into sleep mode as per point 2, I get 3.6ma at 5v

  4. After removing the power led, again I did not desolder the led, I just cut it off with edge cutters.
    I get 0.23ma in sleep mode.

I'm currently working on a datalogger project running on a 9v battery. Voltage is then brought to 5V through a switching regulator (LM2594 from texas instrument).

I can clearly see and understand how to reduce power consumption from what people wrote here, but I still don't get something.

How come getting rid of the linear regulator helps drawing less current if (from what I understood coming from you folks) we do not even bring the voltage to VIN pin on the arduino nano ???

Isn't it right to say that if we do not use the linear regulator, it draws 0 mA or does it have some kind of quiescent current going through it ???

Isn't it right to say that if we do not use the linear regulator, it draws 0 mA or does it have some kind of quiescent current going through it ???

Hi, quite old topic, but very useful! Thanks, liuzengqiang.
Olilabrute, yes your suspision is correct. I check on my nano. I connected it to 3xAAA to 5V pin. With linear regulator, current consumption was 1.69mA (power-down mode). After desoldering 1117 it drop down to 0.23mA what give ~1.5mA of quiescent current.

Update.
I soldered out the CH340 (I've got a clone of Arduino nano) and the current consumption further dropped down up to 0.052mA (52 microAmps)!

Of course, I soldered out PWR led, shut down all peripherals (except Watchdog) and set all pins to input when sleeping, except one pin (D4) which drives low to shut down DC step-up converter (S7V8A) which supplies DRV8838 and DC motor. This is a project of fish food dispenser which activates once or twice per day.

One note. After soldering out 1117 regulator, it is need to make a wire between 5v pin and VCC of ISP connector in order to program the chip using Arduino software (option burn chip using programmer). In addition, the RST is connected to DTR of CH340 pin. After desoldering CH340 it is better to make a wire between pin 1 and 13 of CD340 pads (i.e. rst cap connected to GND).

For PCB layout of arduino nano CH340 version, take a look on https://www.instructables.com/id/Arduino-Nano-ATmega238PCH340G-v30-PCB-layout/.

I have used a deep sleep mode as well as some hardware modifications to bring the power usage (in power-down interrupt sleep) to 60.000 times less than the normal (non power save) usage.

Going from:

12.000,0 uAh to about 
     0,2 uAh in POWER DOWN INTERRUPT MODE and
     4,4 uAh in SLEEP MODE

Check out instructions at this YouTube link

References to the GitHub code can be found here

I achieve the low power by:

  • Desoldering the VReg
  • Desoldering the power LED resistor
  • Desoldering the USB Driver
  • Using a USB FTDI programmer to program the Chip
  • Disabling the watchdog, the ADC and setting all input pin's to INPUT (except the interrupt pin)

Cool! I'm glad my post is useful either for comparison or as a guide to your projects.