Voltage regulator supplying 3.3V with lowest quiescent current suggestions

Hi.

I was wondering if I could ask for some suggestions on voltage regulator (in a through hole package, not surface - too small for my fingers :slight_smile: )

I’m trying to minimise the current draw of an transmitter when idle. With help from this forum, I’ve now setup to sleep my Arduino Mini Pro (3.3V) when not in use and wake with a press on a keypad.

To keep the size of the transmitter down, I’m trying to set this up with a 9V alkaline battery. I’ve also been searching for a regulator with the lowest quiescent current, that can handle the above (and say between 300 to 500mA max current). I’ve ordered 4 and tested 2 so far (with an ordinary meter under no load):

  • MAX604CPA. It says it has a quiescent current of 10uA, but I measure it as 11.8uA
  • MCP1825S-3302E/AB which handles 500mA and goes down to 12uA - but I measured 14uA
  • ROHM BA33BC0T which handles 1A and goes down to 10uA
  • MCP1702-3302E/TO which handles 250mA and goes down to 2uA

Before I ontinue with one of the above, can someone tell me if I’m on the right track, or if there is any better option you would suggest?

What transmitter? Any reason you can't use 2-3 AAAs without a regulator?

~10uA is fine, most 9V batteries probably self-discharge at a higher rate than that.

Jiggy-Ninja:
What transmitter? Any reason you can't use 2-3 AAAs without a regulator?

I originally experimented with 3xAA batteries, but found the NRF wasn't transmitting. It seemed to need more "power".

For running the step however, in theory 3xAAA and a 9V are close in size. Capacity is 1000 and 500mAh respectively. Normal discharge for alkaline so is said to be around 0.3% monthly, so technically either sound good. So not sure why the 3 didn't work for me. Current availability too low?

Still interested however if anyone has suggestions on low quiescent regulators.

Don’t forget that Alkaline cells have a significant voltage drop. They start at 1.5V-1.55V, but at the end of their life, the cell voltage is as low as 0.8V, so 3xAA in series will give 4.5V in the beginning, but expect to get something around 2.4V from the same 3 cells at the end of their life. Reference: http://data.energizer.com/PDFs/E91.pdf

If you plan to have your project running for months, do not go to the rechargeable batteries, as they have a significant self-discharge. Alkaline still a very goo cost-benefit!

Also, all regulators you’ve listed are LDOs, which basically “burns” the extra voltage, converting it to heat. If you’re after better efficiency, have a look on switching regulators… is very likely you won’t built the circuit yourself, but you can get read-to-use modules:

[Pololu - Step-Up Voltage Regulators](http://" Pololu - Step-Up Voltage Regulators")
Pololu - Step-Down Voltage Regulators

Other option is to look for an Arduino board ready be powered by batteries, like this one: Whisper Node - AVR - Wisen this is not based on the NRF24l01, but on the RFM69, which is considerably more efficient transmitter in terms of range and power-efficiency running at sub-GHz.

The nRF24L01+ has an absolute maximum supply voltage rating of 3.6V. If the modules didn't have a regulator on it, a 3 cell alkaline battery will exceed that easily.

There's basically no way a 9V PP3 will have higher current capacity than comparable AA or AAA cells. Some of them are actually made with 6 AAAA cells connected in series inside the can.

If you want the best bang for your buck, the ATmega328P and nRF24L01+ can both run to a minimum supply voltage of 1.9V, so if you have nothing else that needs a special voltage you can run them straight off 2 AAAs until they're almost flat.

There is a caveat in that running the ATmega328P at that low a voltage requires underclocking it to 4 MHz or lower, so you have to step a bit off the beaten path. You need to:

  1. Program the CLKDIV8 fuse.
  2. Recompile the pro mini bootloader for the new, slower speed and reupload it to the chip. (requires another Arduino board to act as the programmer)
  3. Create a boards.txt entry with a custom F_CPU for the new speed.

None of these things are impossible or even very hard once you get used to them.

Are there any other chips or modules in your project that might require more than 2V? Depending on their usage and current requirements, there are other things you might try instead of increasing the battery voltage. A boost converter is also an option.

HC7333 with similar ratings as your last one?

musskopf:
...all regulators you've listed are LDOs, which basically "burns" the extra voltage, converting it to heat. If you're after better efficiency, have a look on switching regulators...

I did try a switching regulator similar to the "Pololu 3.3V, 500mA Step-Down Voltage Regulator D24V5F3". During non use, it drew 210uA. In comparison, the best regulator I've found to date draws 2uA. Given my transmitter will sleep each time after a key press, it will be off more than it's on, so power consumption during off state is more important - hence the thought of using an LDO.

musskopf:
...the RFM69, which is considerably more efficient transmitter in terms of range and power-efficiency...

I did hear about this transmitter. Better range would be good, but I'm worried about power need (mA) as well as having to update my code from the nFR - not an easy task for me (novice).

Jiggy-Ninja:
nRF24L01...maximum supply voltage rating of 3.6V...If you want the best bang for your buck, the ATmega328P and nRF24L01+ can both run to a minimum supply voltage of 1.9V, so if you have nothing else that needs a special voltage you can run them straight off 2 AAAs until they're almost flat.

I realise the max voltage is 3.6 and the lowest is 1.9 for the nRF. However, for some strange reason, when I ran the unit off 4 x AAA, it transmitted well (with a DC-DC step down regulator). When however I used 2 x AA, it didn't transmit. So I doubt somehow it will work at 1.9V. I tried to run the arduino at 3.3V (as a test) and the transmitter at 2V - didn't transmit.

Jiggy-Ninja:
Are there any other chips or modules in your project that might require more than 2V? Depending on their usage and current requirements, there are other things you might try instead of increasing the battery voltage. A boost converter is also an option.

I thought of a boost converter, but I thought it would draw too much current. And not, it's simply an ardunio mini pro 3.3V and NRF in the hardware (other than something to control the voltage).

ElCaron, can't find details on the HC7333 you suggested.

That is because I messed up the model. It is HT7333 http://www.angeladvance.com/HT73xx.pdf

Moderator edit: Language.

cjcj:
I did try a switching regulator similar to the "Pololu 3.3V, 500mA Step-Down Voltage Regulator D24V5F3". During non use, it drew 210uA. In comparison, the best regulator I've found to date draws 2uA. Given my transmitter will sleep each time after a key press, it will be off more than it's on, so power consumption during off state is more important - hence the thought of using an LDO.

And now you know why switching regulators aren't always a good choice. A switcher's efficiency is terrible at very low loads compared to a low Q LDO.

I realise the max voltage is 3.6 and the lowest is 1.9 for the nRF. However, for some strange reason, when I ran the unit off 4 x AAA, it transmitted well (with a DC-DC step down regulator). When however I used 2 x AA, it didn't transmit. So I doubt somehow it will work at 1.9V. I tried to run the arduino at 3.3V (as a test) and the transmitter at 2V - didn't transmit.

That doesn't match my experience. I did a school project once that had 3 pairs of nRF24 + ATtiny84 running off a single CR2032 and they all worked flawlessly with a fresh battery (nominal 3V). I can't remember if we ever tested it down to 2V supply though, but 2 x AAA cells should have far more oomph in them than a coin cell.

What module are you using? The black boards we were using are probably the most common, but there are other modules out there that use the same chip that might have a regulator on them already.

I thought of a boost converter, but I thought it would draw too much current. And not, it's simply an ardunio mini pro 3.3V and NRF in the hardware (other than something to control the voltage).

Forgot the boost converter then, I only brought it up as an option if there was anything else you were using that needed more voltage than a pair of batteries provided.

There are low power switching regs though, like this Microchip one that quotes less than 20 uA parasitic current draw with no load. That'll give you a few years of standby usage even with rechargeable AAs. Only problem is it's a SOT23-6 package.

You need to check the regulators data sheets more carefully.

A lot of low current low drop out regulators have a very low maximum input voltage.

At least one of the regulators you quoted could be fried if you connect it to a 9V battery.

I am just now reading "9V block". That is terrible, with an LDO, it immediately lowers the efficiency to less than 40%. Why is nobody suggesting a LiPo? The HC7333 I suggested is also very low dropout, so it will stay above 3V for a very long time, probably almost as long as it is advisable to discharge a LiPo.

Jiggy-Ninja:
...I did a school project once that had 3 pairs of nRF24....What module are you using? The black boards we were using are probably the most common

Great to catch up with someone who have used these. The first unit I bought was from YourDuino and at the same time I bought a pair from (ebay) to compare. They both seemed to work the same.

Jiggy-Ninja:
There are low power switching regs though, like this Microchip one that quotes less than 20 uA parasitic current draw with no load. That'll give you a few years of standby usage even with rechargeable AAs. Only problem is it's a SOT23-6 package.

This regulator sounds good too, but it has an Iout of only 175mA at 3.3V out. From this LINK, I read that the average current to run the NRF is 15mA, but has bursts of up to 250mA. If this is the case, I'll have to select a suitable LDO, or switching regulator.

srnet:
You need to check the regulators data sheets more carefully...At least one of the regulators you quoted could be fried if you connect it to a 9V battery.

Thanks srnet. Yes the MCP1825 only handles 6V - it's just it had a good quiescent value of 0.41mA so I wanted to test it at 6V.

ElCaron:
I am just now reading "9V block". That is terrible, with an LDO, it immediately lowers the efficiency to less than 40%. Why is nobody suggesting a LiPo?

The remote is for my soccer club. For that reason I'm trying to steer away from not readily available power sources (hence alkaline) and chargers. The 9V was because it has an easy connector in the remote and suits most small control boxes (as does 2xAA's). I just thought that the 2 x 1.5 = 3V is too low for the NRF.

I think my best option is to now experiment with the Arduino Mini Pro and connect an adjustable power supply to both the Arduino Mini Pro (3.3V then lower it until it doesn't work), and then do the same with the NRF24L01 (3.3V and lower until it doesn't work). Then knowing the "real" cut off points of these 2, I can look as supply regulator options. I have some homework for the weekend...

What capacitors were you using when you were testing it with the LDO? The wikispaces link contains a few comments on there of people using 10 uF capacitors near the power input of the module, and that improved it's function. If you're just using 100 nF ceramics near the output of the LDO, that won't be enough. If the buck module you bought has larger output capacitance than your LDO, that may be why it worked, not because the current limit it larger. Since buck modules have an inductor in series with the power flow, they usually have worse transient performance than a linear regulator when the load current changes, so they need relatively large amounts of output capacitance compared to a linear one.

It's been a few years since that project, but I remember us having to add a tantalum capacitor to our prototypes to fix some reliability issue. Our nRFs might have been crashing with just battery power too.

If you didn't have an electrolytic of about 10 uF or larger near the power input of the nRF module, try that with unregulated battery power and see if it helps.

Jiggy-Ninja:
What capacitors were you using when you were testing it with the LDO?

I started off using an an LM7805 with a 10uF electrolytic on the input and the same set on the output. Soon found it drained the battery too quickly. Then with the buck module, I think I kept the same setup (no knowing any better) when testing.

Jiggy-Ninja:
If the buck module you bought has larger output capacitance than your LDO, that may be why it worked, not because the current limit it larger. Since buck modules have an inductor in series with the power flow, they usually have worse transient performance than a linear regulator when the load current changes, so they need relatively large amounts of output capacitance compared to a linear one.

I'm not that fluent in capacitor values, but what you're saying makes sense. So if I even used an 100uF at the output voltage, would that help even more. Does it sort of "store" the voltage for spikes in current?

Tantalum capacitor - not to sure what these do, or how that assist. I'll have to do some reading

I did hear about this transmitter. Better range would be good, but I’m worried about power need (mA) as well as having to update my code from the nFR - not an easy task for me (novice).

@cjcj, the RFM69 should use less power than most of the nRF24 modules, with a peak power during transmit of around 50mA. Here some scope capture from a the power consumption during TX, around 2ms for each 8 bytes message sent using different TX power:


(source: https://bitbucket.org/talk2/whisper-node-avr/overview)

Regarding code, there’s not much change, you basically build your “payload” as a string of bytes and send it to the driver (www.airspayce.com/mikem/arduino/RadioHead/classRH__RF69.html).

Anyway, independent of the radio module, what are your requirements:

  1. How long do you expect the solution to run without changing batteries? A month? two years?
    2a. How often do you required to transmit message? If it’s not time based, estimate how many times in an hour.
    2b. How much data you need to transmit every time? A few bytes only?
  2. Do you have the requirement to receive messages too on the battery nodes? if yes, can you implement pooling instead of do you need immediate receiving?
  3. Do you have size constraints?
  4. How far do you need to transmit?
  5. What else are you going to run in the solution? Any sensor or device? If yes what is the consumption and the voltage requirements of those devices?

A few questions, but depending on the requirements you might find out if you need a 1A regulator or a 100mA will do the trick. Also, if the application will only transmit a few bytes every 1 minute or so, the 500mAh of a 9V battery should last from 1 to 2 years if you can get the sleep current down to 20uA or less in case you don’t need to keep your radio in RX mode (Oregon Embedded - Battery Life Calculator).

musskopf:
RFM69 should use less power than most of the nRF24 modules... Anyway, independent of the radio module, what are your requirements...

Thanks so much for the interest / help. The RFM's do sound good, but it is a bit of work for me to re-code - it took me a few months to figure it out for the nRF. However I will also consider it. As far as requirements, they are:

  • Our soccer club is moving to a larger ground with multiple fields, so I offered to help build 2 scoreboards - what a mistake that was!
  • The remote needs to have a range of around 200m
  • There are 18 games per team/annum, and maybe 10 games per ground per weekend, so 180 games. Each game between resetting times, scores, testing, timing, scoring, maybe 30 presses. so say 6,000 presses per year
  • My "guess" is that each press will keep the Arduino awake for say 3 second(?). I'll know more accurate time during this weekend testing. So 3sec x 6000 = On full time for 5 hours per year. However transmit (higher current draw) time might be a fraction of this
  • With each key press, 3 bytes get transmitted. A "~" for the start, then the key press number, then a "*" for the end
  • There is no return communication setup - just sending
  • Not sure what you mean by size constraints
  • Only other "wishlist" is an led that indicates low voltage - high rapid blink low current?? I suppose it would also be good to blink the LED once with each key press. Green for good and maybe red if the battery is getting flat??In a deep sleep setting, I've measure with an arduino mini pro 3.3V to go as low as 0.3uA.

I have a spreadsheet that I used for predicting battery life of my LoRa trackers based on a Pro-Mini. LoRa devices are supported by the Radiohead library.

I measured all the currents and times, transmit and sleep etc. Then assumed a data payload of approx 64 bytes at a relativly slow data rate, 1,500bps and at 10mW. The good line of sight range (hill top to hill top) at this data rate would be around 150km with simple 1/4 wave wires.

Assume your running your transmitter from 2xAA Lithiums direct (3200maHr) no regulator on the Pro Mini needed. Say you wake up from sleep via an interrupt when the switch is pressed.

At 6000 transmissions a year, 16 per day, I get a battery life of 14 years.

You dont need the stupid range that LoRa is capable off, so you could run it at minimum power, 2mW and a higher data rate of say 15,000bps for shorter transmissions. At those settings the radio transmission is only using 0.2% of the total power budget, so battery life is almost totally dependant on the devices sleep current.

Hi @cjcj

The "size constrains" I was thinking about the physical dimensions. But I don't believe it matters for you after the explanation. Now 6000 TX/year, it seems that you'll be sending very little data and not very often.

To simplify your calculation, I would say that your usage could be split in three parts:

Part A: entering the command/score in a Keypad. That can be done with sleeps between each keypress, but honestly, it should be much easier to code everything to run at 1MHz and wake-up the transmitter node on the first key press and give some time for the user press the keys.

Part B: would be the transmission itself, where the MCU wake-up the Radio, fills the Radio buffer and "sends" the message. You could even have a local LCD showing the message to be sent/updated on the score board and a button to transmit it.

Part C: all at sleep.

For the "Part A", if you have a look at the ATmega328p datasheet (http://www.atmel.com/Images/Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-328P_datasheet.pdf), on page 379, you'll see that the MCU consumes less than 1mA (0.6mA actually) when running at 1MHz. For a keypad only and one or two LEDs, that's more than enough!

Now, for the radio - "Part B" - I haven't measured it, but if you're transmitting only a few bytes, it should take less than 10ms. Don't worry about re-transmission, as it would be just a matter of pressing the "send" button again.

Finally, I'm assuming the score-board will be a RX only node, plugged into "mains", so it'll be always listening.

Here some calculations - you might need to adjust according to your finds/tests:

Part A - MCU Running at 1MHz + some pull-ups or what ever is necessary for your Keypad, buttons, etc - rounding up to 5mA for 3 seconds
Part B - MCU Running and Radio Transmitting - 100mA for 10ms
Part C - Sleeping, 1uA for the MCU without anything running + 20uA for the Regulator + Radio at sleep - lets round it up to 0.03mA (30uA). Now, let's suppose that instead of 16 presses a day, you have 24 presses a day, one per hours, to simplify the maths.

Here the maths for the average consumption... the idea is to bring all numbers down to the same units. In this case Ill use milliseconds (ms) and milliamps (mA). Also, you need to know the duration of your cycle, where after that period everything starts to repeat, in this case it's 1h (3600 seconds or 3600000 milliseconds).

Part A: 5mA * 3000ms = 15000mA*mS
Part B: 100mA * 10ms = 1000mA*ms
Part C: 0.03mA * (3600000ms - 3000ms - 10ms) = 107909.7mA*ms

Average: (15000mAms + 1000mAms + 107909.7mA*ms) / 3600000ms = 0.0344193611111111mA or 0.035mA

Now, considering you have a 9V, which has a 500mA/h capacity, and you're using an LDO to down it to 3.3V, well, you get no more than the 500mA/h as all excess energy will be burned out as heat. Also, a 9V battery will be aroung 4.8-5V by the end of its life... But that still probably good enough for your project, specially as the capacity seems to improve on slow discharge profiles: http://data.energizer.com/PDFs/522.pdf - see first chart.

Taking everything above, the 9V battery would last around: 500mA/h / 0.035mA = 14285h = 595 days = 1.6 years. Considering the battery will self-discard 2-3%/year you might wish to round thing up a bit more and take of 10% of that. Giving you a final figure of 1.4 years.

So, I gave a bit of "fat" on all parts of your project, specially at the sleeping current. At the end, if replacing the battery every year is something acceptable you might even be able to attach a little LCD to display the data locally before sending the message to the score-board!

The pitfall might be some leaks... You just need to make sure there's no current leak on the circuits. Using a Mosfet to power things-up, including the Keypad, battery monitor (voltage divider) and radio might be an alternative to eliminate current leaks.

Make sure you also test the Radio range, pick a slower speed in case you have trouble and follow previous suggestion of adding a nice 10uF ceramic capacitor very close to the RF module. Hope the example above helps you.

cjcj:
I started off using an an LM7805 with a 10uF electrolytic on the input and the same set on the output. Soon found it drained the battery too quickly. Then with the buck module, I think I kept the same setup (no knowing any better) when testing.

What capacitors did you use testing with the 2 x AAA setup?

Based on the excellent set of posts by musskopf and srnet, it's clear that a 9V PP3 + LDO setup will have a very long battery life. The only downside would be that PP3s are more expensive and less common to have around than AA or AAA cells, but with a multi-year battery life it's not that big of a deal.

I'm not that fluent in capacitor values, but what you're saying makes sense. So if I even used an 100uF at the output voltage, would that help even more. Does it sort of "store" the voltage for spikes in current?

Tantalum capacitor - not to sure what these do, or how that assist. I'll have to do some reading

The problem is that wires and PCB traces have inductance, which resists changes in current. It's roughly analogous to mechanical inertia. Inductance increases with the length of the wire. It's usually not a problem because the inductance of a normal wire or trace is so small, but for chips that require rapidly changing currents (such as digital chips with several MHz clock frequency), the impedance can become significant, and it's one example of when you need to consider the reality of how physical circuits differ from the naive ideal in the schematic.

Capacitors across the power supply provide a local reservoir of charge that high-frequency surges of current can be drawn from. The closer the capacitor is physically to the chip, the lower inductance the path is from the cap to chip, so voltage isn't affected as much. The chip gets the current it needs without its power supply browning out, and the capacitor can get it's change replenished with the more average current coming over the higher-inductance path from the power supply.

This is why it is recommended that every digital chip has a 100 nF ceramic as close as possible to each power pin. Chips that switch higher power, like digital radio transmitters, need to have larger capacitance values to effectively supply charge for the larger current pulses.

Don't be too worried about the fact that I mentioned a tantalum capacitor, that's just what the instructor had available that day in class. An electrolytic with low leakage and low ESR or a multi-layer ceramic will be just fine.

My "guess" is that each press will keep the Arduino awake for say 3 second(?).

That is way too long I think. Flashing an LED and going back to sleep should be able to be completed in well under 1 second. I'd be rather surprised if it took more than 100 ms. You don't need it to wait around for anything, just transmit, blink, and go back to sleep immediately.

Only other "wishlist" is an led that indicates low voltage - high rapid blink low current?? I suppose it would also be good to blink the LED once with each key press. Green for good and maybe red if the battery is getting flat??

This is trivially easy if you power the chip directly from a couple of batteries, even though it requires rewriting analogRead to change the one bit of stupidity in it. The internal 1.1V bandgap source can be used as an input to the ADC, not just a reference. Read the bandgap as an input with the reference set to VCC, and some algebra can let easily figure out the applied VCC voltage.

If you use 9V + LDO though, that won't work because VCC is regulated and won't change. You need to divide the voltage down from the battery, and that presents a problem. Too little resistance in the divider drains the battery, but too much resistance interferes with the ADC reading. The best method here would be a lower resistance divider network with a MOSFET to switch it off when you don't need to read the battery voltage.