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.
- 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
- μHex: ATMEGA328P@8M RC
- mini-pro:ATMEGA328P@8M crystal
- Testbed: use Romeo from DFRobot
- Battery：rechargerable lithium coin LIR2032
- DHT22：Temperature and Humidity Sensor
- LCD： I2C 1602 LCD
- 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:
- Disable IO ports (set INPUT mode): because they could power the peripheral modules.
Disable feature blocks (UART I2C): must be done because these features override the IO ports.
- Shut down power out( disable mosfet )
- Disable BOD (BOD is automatically enabled after waked up)
- Goto sleep
- Recover power out
- Recover IO port's settings
- Recover feature blocks
Reference: consumption of some blocks of ATMEGA328P at 3.3V, 25 Celsius degree and Power Down mode
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.