Introduction: Making Low-power(0.12μA) Arduino Control Board

When make some electronic stuffs powered by battery, it is important to save the power. I look for the proper Arduino compatible control board, but there is not. So I designed a Arduino-compatible low-power controller named by μHex.

μHex power consumption is only 0.12μA@3.3V in sleep mode. When in sleep, μHex will turn off the power to the peripheral modules except for waking module. So the system is very efficient.

The features:

  • 4 switchable power supply interfaces to reduce power consumption
  • Two sleep-wake interfaces for convenient interactions with surrounding
  • Cross design in power and IO interfaces, directly supports 3 pin/4 pin sensor/actuator

Step 1: How Effective Is the ΜHex?

How effective is the μHex? I have made a comparison test between Arduino mini pro and μHex. Using LIR2032 battery, both sample temperature and humidity data and display the data on the LCD when waked up from sleep every 30 minutes. Test results shown below, the battery voltage of mini-pro falls below 2V after 5 hours but the voltage of μHex is only reduced by 0.1V after 38 hours.

Step 2: Power Consumption Test

Test Target

  • μHex: ATMEGA328P@8M RC
  • mini-pro:ATMEGA328P@8M crystal

Test Environment

  • Testbed: use Romeo from DFRobot
  • Battery:rechargerable lithium coin LIR2032
  • DHT22:Temperature and Humidity Sensor
  • LCD: I2C 1602 LCD

Test Method

  • Target: Both is in a sleep state by default. When waked up by testbed, sample temperature and humidity and then display data on the LCD. After 10 seconds, they will go to sleep again.
  • Testbed: Trigger an interrupt every 30 minutes to wake the targets, and then read the battery voltage of the targets.

Step 3: Design Principles

  • Only work if be needed
  • Reduce unnecessary conversion
  • Reduce the clock frequency

Step 4: Hardware Design

Refer to the schematic. The important is:

  • Use mosfet(T1) to control the power out, so you can shut down the peripheral modules.
  • C3 is necessary. If not, the MCU maybe been reseted when power on the peripheral modules.
  • The frequency of MCU is 8Mhz, so it can be work 2.7V-5.5V.
  • There is not any voltage conversion.

Step 5: Software Design

I have push the Arduino library microPoly Library to Github. You can download it and read it. Here I only describe the sleep process:

  1. Disable IO ports (set INPUT mode): because they could power the peripheral modules.
  2. Disable feature blocks (UART I2C): must be done because these features override the IO ports.

  3. Shut down power out( disable mosfet )
  4. Disable BOD (BOD is automatically enabled after waked up)
  5. Goto sleep
  6. Recover power out
  7. Recover IO port's settings
  8. Recover feature blocks

Reference: consumption of some blocks of ATMEGA328P at 3.3V, 25 Celsius degree and Power Down mode

Module Consumption

WDT 4.1µA

ADC 92µA

BOD 17µA

Analog Comparator 53µA

Step 6: Make ΜHex

  • You can get the eagle files, bootloader from (https://github.com/LeoYan/uHex-Low-Power-Controller) to make it under the CC BY-NC 3.0 License.
  • or You can get μHex from DFRobot (http://www.dfrobot.com/index.php?route=product/product&product_id=1266&search=uhex&description=true#.VWu0dJO1aNw)

Enjoy DIY, Enjoy yourself.

Comments

author
LeoYan (author)2015-05-31

Thanks. You can get them from https://github.com/LeoYan/uHex-Low-Power-Controller

author
ein_geweihter (author)2015-05-31

Hi, what a great project you did!

May I ask what kind of bootloader/board file you used for the 8Mhz internal clock and where I can find it?

author
Morricone (author)2015-05-08

Hi i'd like compile this measure.ino files (arduino ide 1.6.3) but it generates library error

C:\Users\HHS\Documents\Arduino\libraries\micropoly\microPoly.cpp: In member function 'void MicroPoly_class::updatePinTriggerState()':
C:\Users\HHS\Documents\Arduino\libraries\micropoly\microPoly.cpp:393:55: error: invalid initialization of reference of type 'uint8_t& {aka unsigned char&}' from expression of type 'boolean {aka bool}'
uint8_t &state = a_InterruptManager[interruptNum].state;

I don't know what is went wrong, libraries are right places, check. any helps

author
LeoYan (author)Morricone2015-05-12

Thank you. I use IDE 1.0.6. but there is a compile error on IDE 1.6.x. Now you can update the library from github. or modify: file- microPoly.cpp, Line 393:

from: uint8_t &state = a_InterruptManager[interruptNum].state;

to: boolean &state = a_InterruptManager[interruptNum].state;

author
Morricone (author)LeoYan2015-05-13

It helps, thank's a lot.

author
LeoYan (author)Morricone2015-05-13

You are welcome:) Thanks for bug report. The measure.ino use third part's libraries, you can get them from the below links:

***************************** Hardware *************************************DHT11 http://www.dfrobot.com/index.php?route=product/product&product_id=174&search=dht11&description=true I2C LCD1602 http://www.dfrobot.com/index.php?route=product/product&product_id=135&search=lcd&description=true
author
PRO DR MR BOB (author)2015-05-08

o ya thanks i didnt see it lol

author
PRO DR MR BOB (author)2015-05-06

my friend is going to try and make one and was wandering how to boot load it

author
LeoYan (author)PRO DR MR BOB2015-05-06

1, You can upload bootloader by the smt pads of uHex's back. you can using pogo pin or solder wire to it. Yes, it is not very easy:(

2, I have designed and made a pogo clip for smt pad interface. I will launch it when I finish the tutorial.

uHexISP.png
author
PRO DR MR BOB (author)2015-05-06

where is the egale schmatic i cant seem to find it

author
LeoYan (author)PRO DR MR BOB2015-05-06

you can get it from Step 6. and you can find a link to github. https://github.com/LeoYan/uHex-Low-Power-Controller

author
dan3008 (author)2015-04-20

Nice build :D I wish I was good enough at soldering to build my own :( I cant do surface mount soldering at all

author
LeoYan (author)dan30082015-04-20

Thank you:)

author
PRO DR MR BOB (author)2015-04-20

you should do a kcikstarter or somthing this is what i have been looking for but i am not willing to do smd soldering

author
LeoYan (author)PRO DR MR BOB2015-04-20

Thanks. Yeah, it is a bit hard to do smd soldering. I have authorized DFRobot to production and sale μHex. You can get it at http://www.dfrobot.com/index.php?route=product/product&product_id=1266&search=uHex&description=true

About This Instructable

2,141views

38favorites

License:

More by LeoYan:Make a shining Charm with Rainbow Loom Make a programming/test Clip by PCBMaking low-power(0.12μA) Arduino control board
Add instructable to: