Buck-Boost troubles: 5v output becomes 20v+ if input drops below 3.5v

Hi everyone. I’m having a bit of an issue with my Buck-Boost, and I hoped that someone could give me some advice.

My project is powered by a 6v battery pack, which is connected directly to lots of servo motors. I also have an Arduino and other modules connected to the same battery via an XL6009E1 based buck-boost controller (to achieve a stable 5v output).

In the worst case situation, with all servos drawing maximum current, there is potential for the voltage to drop below 5v, and possibly further, hence the buck-boost to provide stability. However, during testing of the buck-boost I’ve found that if the input voltage falls below 3.5v, the output value can exceed 20v!

My concern is that I can’t guarantee the input won’t fall below this with a spent battery pack etc, and I want to avoid a self-destruct scenario where all the 5v components get wiped out with high voltage!

Therefore, I have the following questions:

  1. Am I just being incredibly dumb by missing something obvious, adopting the wrong solution or just fundamentally misunderstanding something?
  2. If no to the above, what is the best way of protecting everything in this low input voltage = high output voltage scenario?

As a hack, I've increased the output voltage of the buck-boost, and placed a LM7805 on the output. But I'm sure there must be a better solution.

Thanks in advance for any suggestions!

Is that with a load on the output then?

The XLSEMI datasheet for that chip specifies the minimum input voltage to be 5V:

I suspect you are simply operating it outside its designed range. Having said that, I note that the Banggood module claims a minimum operating voltage of 3V, although the "best" minimum is 5V. The behaviour in those circumstances may be undefined, or it may simply shut down. It looks like the former applies to your module.

Good point, no. I just tried a quick experiment using a small DC motor as load (~0.17 amp). Motor span and voltage remained at 5v until input voltage was at 3.5, whereupon output voltage was just 0.2v. So this seemed quite reassuring. However, I then tried increasing the input voltage again. Until the input voltage reached 4.5v, the output remained 0.2v but the amps increased up to about 1.6 at 4.4v. Any idea why this would be?

The module I'm using it on is a DSN6000AUD (which claims to have a 3.8v min). It shouldn't have to go below this, and if it does it's fine if it stops working (i.e no output). However,I was worried that I was reading such high voltage from it in this state. As @runaway_pancake pointed out I wasn't testing it under load, and the behaviour seems safer in this instance. So it might be number 1: me doing something dumb! :slightly_smiling_face: Still curious why it seems to gobble lots of current until it gets back up to 4.5v again.

As I suggested, if you go below the specified input voltage, anything might happen. I haven't had one output a very high voltage like yours did, but I have had one which went into some kind of lock-up when I reduced the input voltage low enough. It suddenly started to draw loads of current, and would probably have gone pop if my bench PSU hadn't gone into current limiting mode.

If you run it below the specified input voltage (or above it) you cannot take any behaviour for granted. A clean shut-down is only guaranteed if that behaviour is specified in the data sheet for the module you've bought.

Your experiment with a load on it is hopeful - perhaps no harm will come. Personally I'd consider adding another battery in series, so the Vin droop is less likely. Also, maybe further tests to confirm a reliable shutdown when the batteries go flat.

No, to be honest, but it sounds like a non-recoverable situation. An increase in current like you've described won't allow the battery voltage to recover, so it will probably stay in this mode until the battery is flattened, or something on the module overheats and dies.

Can you procure one with a guaranteed under-voltage protection for Vin?

Curious as to the results vs. a purely resistive load.

If you can take a look at the output, it sounds like it is oscillating badly. It also sounds like the load is an inductive load. Adding some bulk capacitance on the input and outputs will probably help, High frequency bypass would not hurt either.

@SteveThackery Thanks for your thoughts. I guess there does seem to be some cause for optimism. Hopefully, based on what I've seen, a low voltage situation in my case will cut voltage to the Arduino, which will also put the servos in hold mode which should be enough to bring the voltage back to above 4.5v again (which seems to be enough to unlock it).
Thanks for the suggestion of another battery. Unfortunately this might be a bit tricky due to size constraints. Similarly, not sure how much choice I have in terms of modules. This seems to be the only common one I've found so far.

@runaway_pancake Sorry to be dumb, but any idea what I might be able to use as a resistive load? Google says lightbulbs, heating elements etc but I don't think I have anything like that to hand.

@gilshultz Thanks for the suggestions. Apologies for being a noob, but in terms of 'bulk capacitance, do you mean something like a 1000-10,000 uF Electrolytic capacitor? Similarly, is the 'High frequency bypass' a small ceramic capacitor? I assume I just put these straight across the input and output terminals? What change in behaviour might I expect? Thanks!

1 Like

Resistors.

Ok, on reflection a silly question: forgive my ignorance. :slightly_smiling_face: Is there any particular value I should use to get a meaningful result?

I would imagine a value that draws a somewhat similar current to the real circuit?

No need to apologize, we were all noobs at one time, it was just called something different. Keep this up and you will have to trade in your noob badge:-) You have the idea, generally anything above 10 uF would qualify (subjective answer) as a bulk capacitor. You scored again, the ceramic is about the best you can use. I generally use around 100nF but it is to some extent circuit dependent. You can always try. You got three for three, as close as possible to the input and output terminals. I generally also place them at the input of my board if the leads are much more then 6".

@runaway_pancake @SteveThackery Sorry, should have put more thought into this. So to test a 1 A, 5v I'd need 5 ohms of resistance that can handle 5 watts of power. Looks like I can order either a potentiometer or wirewound resistor to do this job.

I was thinking 50Ω, 100Ω.

Thanks for the tips. Will give the bulk capacitor and ceramics a go, and will keep in mind your advice to put 100nf ceramic capacitors on the input and output terminals of my boards going forwards. :slightly_smiling_face:

1 Like

You mean a wirewound potentiometer - specifically rated at least 1 W per Ohm, or 5 W resistor. :face_with_raised_eyebrow: