Powering 3.3V project using Li-Ion

I'm using a Li-Ion 1200mAh battery to power my project which has an Arduino Pro Mini and a few components like PA6H GPS, HM10 bluetooth, pager motor and Pololu QTR-8A reflectance sensor. Since PA6H and HM10 both run on 3.3V, I got the 3.3V/8MHz Pro Mini. I also got TP4056 to charge the Li-Ion and Sparkfun LiPower to convert it to 3.3V.

The problem I ran into is that LiPower only gives a meager 200mA and when I added it all up, it comes to max 300-350mA(25mA GPS + 50mA Bluetooth + 100mA QTR-8A + 85mA motor + 40mA LEDs + miscellaneous) for my requirement.

I looked into using a commonly available ultra-low dropout regulators(more than 200mV dropout will waste battery) and most give 150-200mA output current, such as MCP1700. Others are a bit uncommon and not available in India. The international shipping from mouser/digikey itself will be way more than the part.

  1. Is it a good idea to use 2 MCP1700s to get the current I want? Or should I push for a single regulator only?
  2. How to implement UVLO and turn LDOs off if battery drops below 3.3V + dropout voltage? Can I use KA75330 3.3V Voltage Detector? If so, how to prevent it from oscillating on-off?
  3. I also want to turn off power to bluetooth, L293D etc so they do not drain the battery from their quiescent current. Is it better to use a transistor or a mosfet?
  1. Depends, but using a LDO is a heck most wasteful than a buck-boost converter like the LiPower. And note you can't parallel them. You need to make 2 power rails.
  2. That's a cool thing about a KA75330, it has hysteresis.
  3. It all depends. Most more modern modules have a sleep/ultra low power mode. Just put it into that and you're done

Also note, a lot of stuff you use doesn't care that much about the voltage level. The Pro Mini can work directly on the battery. So can the Pololu QTR-8A. And even the PA6H can go up to 4,3V although that is the absolute max. But what you could do is only power the stuff that needs 3,3V from the converter and the rest (pro mini and QTR-8A) directly from the battery. You only need to pay attention to the data connections between the two. Use a level shifter or voltage divider in between.

  1. I read that a buck-boost is preferred for high voltage difference between input and output. For low voltage difference, as in this case, isn't an LDO preferable?

  2. It has detecting voltage of 3.3V and hysteresis voltage of 50mV. That means it will shut down when voltage drops below 3.3V and only enable the output when it rises above 3.35V? If so, I also have NCP300LSN33T1 available which has 165mV hysteresis. Will that be better?

  3. The device will be about 90% time in sleep mode and only 10% time in active mode. That's why I'm concerned about components draining the battery in sleep. Want to straight away shut them down so I can get as much sleep time as possible. The only components to drain power should be GPS's backup(7uA) and voltage comparaters(DW01 in TP4056: 3uA and other is KA75330). The Arduino should also initially go to sleep for an hour and if not woken up again within 1 hour, shut itself down.

I didn't want to power PA6H GPS directly because the datasheet says:
"The main DC power supply of the module, the voltage should be kept between from 3.0V to 4.3V.
The Vcc ripple must be controlled under 50mVpp (Typical: 3.3V)"
Since the motor is PWM'd and directly connected to battery as well, it might cause ripples. Could I prevent that with a few caps(1uF and 0.1uf?) on the PA6H voltage and ground pins?

I was planning on powering QTR-8A directly too but with changing voltage, the IR LED will change intensity and that may cause change in the analog values. I'll have to try that out and try to make do without putting a regulator for it by measuring white/black value ranges for 4.2 and 3.3V. Thanks for the suggestion. That might help shave off 100mA from the regulator.

I will be running the arduino with its on-board regulator removed. Will that work fine with direct battery connection?
Level shifter is only required for arduino connection with components running on regulated 3.3V?

  1. Depends a bit on the load. The quiescent current of a boost may be higher. But they are a heck more efficient :slight_smile: And most converters you can disable via a pin.

  2. Again, depends on the application and what ripple / bounce back you expect. But you can also drop the IC and let the Arduino do it :slight_smile: Then you have full control. The Arduino can also control mosfets and the boost converter to shut down for example.

  3. If you put the Arduino to deep sleep there really is no need to shut it down :slight_smile: For the other components, haven't looked at there sleep current. Keep in mind that any other solution you make will also draw a little bit of current.

For the ripple, high PWM frequency and caps caps and caps. Ripple/noise like that will pass through most regulators as well without caps.

About the QTR-8A, best fix would be to remove the resistors inline with the leds and replace it with a constant current source. Although 2 in series does not leave an awful lot of room but a simple two transistor one with IR leds should work just fine. Alternative would be to compensate in software. If the Arduino is already monitoring the battery voltage that isn't to hard either :slight_smile:

Yes, Arduino isn't really picky about the voltage, especially at 8MHz. Will run fine (and within spec) from 2,4V to 5,5V :slight_smile:

Level shifting is needed when you run the two things of different rail. For example a sensor at 3,3V fixed and the Arduino at the direct battery voltage (which is higher). No need to amplify the signals from sensor to Arduino (if one way) but you will need to lower the voltage from Arduino to sensor with a resistor divider, level shifter or diode trick. If you need bi-directional use a level shifter (or the diode trick with open drain).

  1. So I'll use the Sparkfun LiPower buck-boost, since I already have that. They haven't broken out the IC's enable pin and fixed it to VCC :roll_eyes: . Will have to do a bit of trace cutting and soldering.

  2. I just saw this amazing Arduino trick.
    This seems perfect. No resistor divider current leakage and no extra parts. And 0.1V accuracy!!! Since it requires Arduino to run from Vbat, your suggestion fits perfectly with this!

  3. What you say is correct. I don't really need to turn off the arduino. I checked out this post and he manages to run the Arduino Pro Mini 3.3V/8MHz at 3.58mA for active state and 4.5uA for sleep.
    He references Nick Ganmmon's blog on reducing it to 100nA! :astonished: Haven't finished reading it yet though:

By diode shifting, do you mean something like this?

All correct :slight_smile:

  1. Forgot about that (and how it work 100%) but if it's accurate it saves you parts :slight_smile:

  2. Yep, if you turn most off an Arduino is pretty low power :slight_smile:

And yes about the diode. Depending on the device and/or bi-directionality you do or do not need pull ups. If you understand the design you can figure it out :slight_smile:

Thanks a lot for your help septillion!!! :slight_smile:
I'll update you when the project gets completed...