The PS_ON# line of a standard ATX PC power supply needs to be pulled to ground to turn the supply on. The signals on an ATX supply are 5v logic according to the standard. I'm trying to re-purpose an old PC power supply and I need to control it with a 3.3v logic device (GPIO on a Raspberry Pi). What would be the right way to connect the PS_ON# signal to the 3.3v pin so I can use it to turn the power supply on and off.

I've tried a resistor voltage divider but that didn't work because it always pulls the signal low and I'm afraid that hooking the 5v PS_ON# directly to the pin will fry the 3.3v chip. Is there an easy way to do this that I'm missing or do I need a special part to deal with the difference in voltages?


2 Answers 2


Use a NPN transistor. PS_ON to a 1k resistor at the collector, 1k resistor at the base, emitter to ground. Voltage at the base can be different than the collector.

Update: Further research shows the PS_ON tends to have a pull-up resistor to 5vsb. In that case, adding a 1k to the collector creates a resistor divider. If too high a ratio, then the input signal might not cross to a Input Voltage Low. You can size down the resistor, or omit it.

  • \$\begingroup\$ I don't think that will work. I'm not a EE but for what ever reason using a high resistor value in line with PS_ON# causes it to not work right. \$\endgroup\$
    – Pete
    Jan 24, 2014 at 4:57
  • \$\begingroup\$ @Pete I updated \$\endgroup\$
    – Passerby
    Jan 24, 2014 at 5:42
  • \$\begingroup\$ The max current for PS_ON is 1.6mA so I think that the base resistor value can be safely increased to 4k7 - 10K. adding a 1k to the collector creates a resistor divider the internal and external pullup resistors are both connected to the 5v supply and will be in parallel so they just form a stronger pullup, not a divider. That being said there is of course no reason to use the external pullup when there is already an internal one. \$\endgroup\$
    – alexan_e
    Jan 24, 2014 at 9:32
  • \$\begingroup\$ @alexan_e the internal pullup isn't internal. It's a pullup to the 5v, while the resistor on the collector would be in series with it, not in parallel. \$\endgroup\$
    – Passerby
    Jan 25, 2014 at 22:11
  • \$\begingroup\$ @Passerby Here is a schematic what I say is that R1 and R2 are in parallel and form a stronger pull-up. When you said PS_ON to a 1k resistor at the collector you didn't mean the collector resistor R2? Did you mean a resistor between PS_ON and the collector? \$\endgroup\$
    – alexan_e
    Jan 26, 2014 at 12:25

The cleanest way would be to use a comparator with an open collector output (pulled up to 3.3V with a resistor). A voltage divider on one of the inputs and a positive feedpack from the output (to create some hysteresis to prevent swinging) and you're set. But I'm not sure if you want to use another IC.

Otherwise you can just use (as mentioned) a transistor/resistor combination (don't forget the pull up on the collector of the NPN transistor). I'd suggest to use 3 4.7k resistors and one small signal transistor.

2 Of the 4.7k resistors as "voltage divider" from the PS_ON to ground and one resistor as pull up at the cathode to 3.3V.

  • \$\begingroup\$ open collector output (pulled up to 3.3V) why pulled up to 3v3 and not 5v? don't forget the pull up on the collector of the NPN transistor why use an external pullup when there in a pull-up internally? 2 Of the 4.7k resistors as "voltage divider" from the PS_ON to ground what is the purpose of this divider? \$\endgroup\$
    – alexan_e
    Jan 24, 2014 at 13:41
  • 1
    \$\begingroup\$ @alexan_e oh, after reading the question one more time I see the problem. I somehow confused the direction of the signal. Thought, it was from 5V to 3.3V. My bad! :( \$\endgroup\$
    – kruemi
    Feb 4, 2014 at 14:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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