That is a real primitive question.

a) Many MCUs and SOCs are able to work @3V (-/+ 0.3V)

b) This is voltage of 2 AA (or AAA) batteries

And the real question is:

What is the legitimate way to power a circuit with a MCU @3V with 2AA batteries?


  • Do you have to use a step up (boost) converter? Why?
  • Or would you prefer any other topology?
  • What is the drawbacks of powering directly from battery without boost converter?
  • 1
    \$\begingroup\$ Single design questions are required! \$\endgroup\$ – Leon Heller May 18 '15 at 17:07
  • 2
    \$\begingroup\$ What are you trying to achieve? Leave off the potential solutions for a while and concentrate what would be ideal as a power solution. \$\endgroup\$ – Andy aka May 18 '15 at 17:56
  • \$\begingroup\$ Quite a number of MCUs can work with as little as 1.8V and won't require any regulation at all when running off 2 AAs. \$\endgroup\$ – Ignacio Vazquez-Abrams May 18 '15 at 18:49
  • \$\begingroup\$ @IgnacioVazquez-Abrams But he has more that just a µC -- his LEDs certainly won't work at 1.8v, not sure about the 900 MHz RF. \$\endgroup\$ – tcrosley May 18 '15 at 18:56
  • \$\begingroup\$ A simple PWM booster may be enough for the LEDs. The RF... could be tricky. \$\endgroup\$ – Ignacio Vazquez-Abrams May 18 '15 at 19:15
  1. Originally, all microcontrollers were designed to work off of 5v. Then 3.3v logic was introduced, and microcontrollers came out running off of that voltage. Since then, those have been the two standard voltages, with 3.3v becoming the most popular. Although many microcontrollers can go down to 2.7 or 2.6v or even lower, IMO it is best to run them off of 3.3v since a lot of peripherals are designed to do so also.

  2. You want to use a boost regulator, like the MAX756 with an output of 3.3v at 300 mA. It will take the AA batteries output, and keep the Vdd of the microcontroller constant at 3.3v as the batteries discharge. It is available in single quantities for $5.43 at Digi-Key in an 8-pin DIP package.

enter image description here

Fresh AA batteries start out anywhere from 1.50v to 1.65v. which works out to 3.0v to 3.3v for two of them. These means the battery voltage will never exceed the boost voltage of 3.3v.

  1. As far as reading the battery voltage, since the Vdd of the microcontroller will be above the battery voltage, then you can feed the battery voltage directly into an analog input of your microcontroller and read it with the ADC.

  2. If you are concerned you could put the batteries in backwards, then you can put a Schottky diode between the batteries and the input to the boost regulator.

  3. As far as pullup resistors go, if the circuit is designed to ground the resistor with the button, as shown below, then there will be no current drawn when the switch is open.

enter image description here

  • \$\begingroup\$ Thanks for the answers. Really worked for me. I understand that a boost converter is a must when using 2 AA batteries. But I think Max756 is a little expensive. I found that TI TPS61261 fixed output is cheaper. What do you think? \$\endgroup\$ – user2542253 May 21 '15 at 8:59
  • \$\begingroup\$ @user2542253 The TI part should be fine. I generally don't recommend SMT parts since they can be difficult to work with for most people. It wasn't clear whether you were doing a "one off" or making a product. \$\endgroup\$ – tcrosley May 21 '15 at 9:05
  • \$\begingroup\$ I am newbie trying to make a pre-product. \$\endgroup\$ – user2542253 May 21 '15 at 9:13
  • \$\begingroup\$ @user2542253 Unless you are going to make a PCB right away, you will find making a hand-wired prototype with the TI part in the WDFN package difficult. You could mount it upside down, "dead-bug" style, and solder thin (30 gauge wirewrap) wires to the pads. But I would use the Maxim part (which comes in a DIP) for doing a prototype, and the TI part for production. \$\endgroup\$ – tcrosley May 21 '15 at 9:20

1-) Would you prefer a higher voltage than the MCU's working voltage? Why?

  • Using a higher voltage allows you to use a cheap linear regulator to supply the MCU voltage.
  • Using a higher voltage allows you to increase the number of batteries and thus capacity.

AA battery voltage drops as it is used. For 2 AA batteries you need a boost converter to create the 3.3V the MCU needs. Fresh AA batteries start at around 1.6V but drain to about 1V at the end of their life.

2-) There are many battery management IC's around. Would you use any circuit/IC (regulation etc.) between battery and MCU or would you directly connect battery and MCU?

You would use a boost converter. e.g. http://www.ti.com/lsds/ti/power-management/step-up-boost-converter-products.page

Personally I use an LTC3525-3.3V but they are getting a little bit expensive.

3-) How would you read battery voltage? I am about the use Atmega's internal reference 1V1.

Use the 3.3V VCC as the reference and read the battery voltage directly on one of the ADC pins.

4-) Do I have to use a diode for reverse voltage?

Not if you are using a boost converter with reverse voltage protection.

5-) Usually, buttons are used with a 10K pull_up, which will draw 300uA when button is pressed. Does it draw current even if it is not pressed? Do you a higher resistor?

No, it does not draw current if not pressed an the MCU pin is set to input. The MCU has internal pull up resistors that you can use anyway, so you don't need the 10K pullup resistor. If you are going for really low power and have some open-collector / button that IS often on, you could put a 220K pullup resistor and turn the internal pullup resistors off.

My circuit consists of an Atmega328p, a 900Mhz RF, 2 buttons and 3 leds. It draws 60mA at a normal load. I try to keep it real short by sleep modes.

ATMega328P uses about 6mA when running and can be less that 100uA when sleeping.

If you are actually using an Arduino board then IIRC another 10mA is used by the linear regulator and more by the USB-Serial converter chip. Using a boost converter will therefore save you a lot of power.

If you have your own custom board then your power worries are due to something else, probably the 900Mhz RF. I would look there for savings. If it is an XBee, set it up to sleep cycle.

  • \$\begingroup\$ Thanks for the answers. MY whole universe was in a hot dense state. Now I understand that the proper way to power a 3V circuit from 2AA batteries is to use a boost(step up) converter. This way + I have a proper battery reading by MCU's ADC. More durable, stable. The LTC3525 is really expensive I think. I would like to use TPS61261 single Vout; it is cheaper. \$\endgroup\$ – user2542253 May 21 '15 at 8:42
  • \$\begingroup\$ @user2542253 The TI series are pretty good I believe. You might want to look at the TPS61221 (or TPS61291 for large loads) as they do not have the current limiting feature and may be slightly cheaper with less external parts. Our design still uses the LTC3525 but we are in the process of testing with the TPS series. \$\endgroup\$ – geometrikal May 22 '15 at 2:45

1) Don't go outside of the voltage spec of the MCU otherwise damage or mal operation can result.

2) A 1.5 volt battery actually delivers more than 1.5 volts when fresh, it can be 1.6V. 2 fresh batteries provides 3.2 volts.

3) So in theory your 2 AA batteries could power the microcontroller and be within the tolerance of the voltage range the MCU can handle. But batteries drian and the voltage drops.

4). Recommendation: use a power management chip and keep the voltage nice and stable throughout the entire life of the battery as it discharges.


To answer your question 5: Yes you can have a higher value of resistor for R1. The higher you go, the lower the current when S1 is pressed. This is obviously better for longer battery life if S1 is depressed for long periods of time.

But, the logic input needs current in order to function correctly, so there is an upper limit to the value of R1. If it's too high the circuit won't work properly. But there is usually quite a wide variation of the value of R1 that can be used.

You might be able to calculate the highest possible resistance if you know the technical specs of the input. If you can't do that, look around at what kind of values other designs are using for this kind of implementation.

  • \$\begingroup\$ Thanks for the answers. I think I will go with the internal pullups. ----And sorry that I have to edit the topic because it is thought that very broad question. \$\endgroup\$ – user2542253 May 21 '15 at 9:01

Not the answer you're looking for? Browse other questions tagged or ask your own question.