Powering Arduino from a power bank

septillion, thank you! What is the best place for an ON/OFF switch here? Is it between 1 and 2, or 2 and 3?) 1) Micro USB 18650 Lithium Battery Charger Module+Protection Dual Function.

2) 18650,3.7 V Battery

3) Mobile booster ( 3.7 to 5V DC-DC). Thanks

Between 1 and 3. Those charger/protection modules don't draw jack so no need to disconnect the battery from it. This way you can still charge the project when the switch is off.

septillion, I'm grateful to you for answering all my questions! Now I have to order all this stuff to try it out.

Old thread I know, but I finally found a power pack that doesn't turn off automatically. All the ones made by TalentCell. This one for example:

https://www.amazon.com/gp/product/B00ME3ZH7C/ref=oh_aui_detailpage_o09_s00?ie=UTF8&psc=1

I should mention that I've only tested the one in that link, but I believe they all stay on permanently. Very refereshing after fighting auto power off for so long.

is it just me, or is it strange that people want to use a power bank as a power source ?!

just because they both "provide electrical power" doesn't mean that they are the same thing.

it's all down to how they are designed to be USED ! (the bank is a portable unit to recharge your battery - the power source)

look at it this way - would you think of taking a battery charger, solder cables to it's positive and negative terminals, and then try to power something with it ?!?!

What's so strange about it? It's convenient (except for the auto power off). And there is nothing charger about a power bank, it's just a 5V voltage source. All the charging magic needs to be done in the device connected. That's why a power bank isn't called mobile charger ;) And yes, the name USB charger / phone charger when you mean this is misleading / "wrong". It's simply a USB power source.

Heading along the same path as septillion. What is the difference between a power bank and lithium ion battery and a USB charger with a voltage boost circuit (such as https://www.adafruit.com/product/2465)?

You don't need external circuit, you can use your Arduino itself for keeping the power bank running. Just put a 22R resistor between 5V of USB in and a pin (e.g. 1C) of ULN2803. Then supply signal to pin 1B of ULN2803 from Arduino for 250 ms in every 5 sec. This signal "sinks" the current provided by the power bank through the resistor. For me this configuration is working fine.

So the only external component you need is the resistor and a ULN2803. You can set the optimal timing of the signal in the sketch to find the minimal power consumption which still keeps the power bank running.

To keep it real simple, I added an LED & resistor to my circuit off to the side and it apparently draws enough to avoid the auto shut off problem. Obviously uses constant power so depending on your application this may or may not be optimal.

BabyGeezer: look at it this way - would you think of taking a battery charger, solder cables to it's positive and negative terminals, and then try to power something with it?

Don't know about soldering cables, but using the clips, I use one to test motors and stuff and to run my tyre pump. :grinning:

I've found a very simple solution, that works at least with my power bank (Silicon Power SP power S105, sold by Costco). This power bank does not switch off when it is being charged (through the micro-usb plug). So, I just make it believe it is being charged by supplying 5V to the power pin of the micro-usb cable... Since connecting directly the micro-usb input to the other usb output or the 5V pin of the arduino would draw a lot of current (charging the power bank with its own power output!), I connected a 27 ohm resistor in between (I've not tried with higher values for smaller current yet). It worked: no switching off for a whole afternoon and night while running an arduino uno measuring a chinese calliper, and very little power wasted. On the other hand, I had no luck with the pulsed load solution with my power bank...

Hi all. Found this one which is mentioned which seems to do exactly what people need: https://www.voltaicsystems.com/always-on

Paul

I had the same problem but solved it with a 555 timer and 3906 PNP transistor, this circuit draws about 200 mA for 1.6 seconds every 13 seconds, but you have to experiment a bit with the main capacitor and the resistors on the timer side of the 555 chip, because these power packs have different cut-off current settings.

See the website for the circuit diagram.

https://www.instructables.com/id/Current-Pulsing-Keeps-Power-Bank-Active/

It works fine for me!

This seems to be a recurring theme here. I guess the search does not yield clear enough results:

https://forum.arduino.cc/index.php?topic=497195.0 https://forum.arduino.cc/index.php?topic=298552.0 https://forum.arduino.cc/index.php?topic=307935.0

Keywords: Arduino Power Bank Suppress Power Bank Auto Shut Off Stop unwanted power down Inhibit power down of UBS battery

I wanted to see exactly what was happening so I hooked up my antique oscilloscope, after replacing the 47f cap with a 470pf cap to get a constant trace (see attached picture) and it shows the cycles being produced by the circuit mentioned above, just faster.

I picked up a 19000mAh powerpack for 20 Euros at Conrad Electronic, but similar to my other powerpack it is sealed. If I could open it I would probably be looking for a shunt resistor and capacitor controlling both current draw and the time until switching off. Both of which could be capped. Unfortunately opening this thing would mean destroying the nice case, not an option.

I am a bit skeptical about the 19000mAh so I am testing it first before recommending.

Usually, if it sounds too good to be true, it probably is!

IMG_4092.JPG|979x734

The power rating of those power packs is anyway misleading. The mAh rating is at the internal battery voltage of 3.7 volts and not the (stepped up) output voltage of 5 volts. But even then, 19000mAh is quite respectable.

I think Google's motto is "Go break things", so I took that to heart!

I had an old 8000mAh powerpack and was wondering what happens if I feed current from the output back to the input.

What happened was, the powerpack stayed on for five minutes, the normal cutoff was about 20 seconds.

I don't know if I have done any long-term damage, but there seems to be no short-term damage and it didn't explode or even get warm.

Zotya: You don't need external circuit, you can use your Arduino itself for keeping the power bank running. Just put a 22R resistor between 5V of USB in and a pin (e.g. 1C) of ULN2803.

This seems simple. ULN2803 is a set of transistors in an IC, right? So a single transistor could work, too. That would maybe need an extra 330R resistor. This would also need one digital pin from the Arduino. If you use a PWM pin, you can easily set the frequency and the duty cycle, like every 5 seconds a 200 ms pulse. If you don't have a spare PWM pin, you need to set up a timer interrupt, which is basically the same thing. It would have a counter counting to 25, it would put say pin 4 high when counter is 0 and low when counter is 1.

Johan_Ha: This seems simple. ULN2803 is a set of transistors in an IC, right? So a single transistor could work, too.

Johan_Ha: If you use a PWM pin, you can easily set the frequency and the duty cycle, like every 5 seconds a 200 ms pulse.

That's way to slow for the hardware PWM on most Arduino's. But it's slow so you can easily do it in code.

Johan_Ha: If you don't have a spare PWM pin, you need to set up a timer interrupt, which is basically the same thing.

Also no. Unless the Arduino is in sleep most of the time there is NO need for an interrupt.

Ok, the actual interrupt thing might be a little overkill, though it should be possible to set up an interrupt, which fires every 250 ms. If the following function would be called approximately every 250 ms, it would do the job, i.e. every 8th second a 250 ms high pulse is sent to port 4.

void keepAwake(void)
{
    static int last = 0;
    static bool hi = false;
    if (millis() - last > 8000) // cycle length 8 s
    {
        digitalWrite(4, HIGH);
        last = millis(); // record the time when pulse actually goes high
        hi = true;
    }
    else
    if (hi && millis() - last > 250) // wait until AT LEAST 250 ms has passed
    {
        digitalWrite(4, LOW);
        hi = false;
    }
}

For this to happen, one could use this library. This library is not a real interrupt library. It is based on polling. You need a timer.run() call inside your loop. The faster your loop runs, the more accuracy you get in timing the pulse. But in this case it shouldn't be very critical. If it is, just put more timer.run() calls inside your loop. Say you want the 250 ms pulse every 8 s, but your loop takes some 300 ms. Worst case is that your cycle will take 8299 ms and your pulse length will be 300 ms. This is quite unacceptable in many cases, but if the task is to keep your power bank on, it's quite ok.