I'm looking into designing a power supply for an RPi that can take both USB and battery at the same time, but only pull power from one of the sources. I'm not quite sure how to go about it, I was thinking of using some mosfet switching circuitry but when simulating I was getting some pretty large voltage drops across the Fet temrinals.

My other solution was just having both input power supplies go through a diode and into a buck/boost converter that outputs 5v. I'd really like to keep it as efficient as possible, and couldn't find much online regarding multiple power input switching, so any help or pointing in the right direction would be great. I'd also like to avoid having the battery draining when it's connected to power, so would rather a switching circuit that turned off the other power supply.


If your intention is to run from battery until USB is plugged in, and the battery voltage is less than USB power (5V +/- 5%), then you might want to look at ideal diode controllers.

I have used this in the past (LTC is not the only company making this sort of thing, it is just what I happened to use in the past).

There is a nice overview of them at this link

If you want to always switch to USB power and the battery voltage may be higher, then you would need to sense the USB power and use a couple of FETs to control the power path. I would not expect you to have large losses in the FETs, incidentally. This approach may need you to insert some dead time between the switches; i.e. a break before make switch.

You could, of course, use a battery charge controller which usually permit the system to automatically drive the circuit from the charging source while recharging the battery (should you be using a rechargeable battery). You will need to take care to not exceed the USB current draw limits; charge current <= USB(Imax) - I(circuit).



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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