3

I located the two pins that are responsible for powering up the PC. They are connected to the Power On button and one pin has an output of 5 V while the other is the ground.

So far so good, the problem is when I connect the 5 V one to the Arduino VIN and a ground cable from the PC power source to the Arduino GND, instead of powering my board, the PC starts and then promptly stops, as if I pressed the power button and did not release it.

It seems that electricity passes through the Arduino without powering it. I tested the VIN and GND pins with a normal breadboard power source and they are not broken, as the board starts up with no problem.

Why is the computer starting up instead of powering the Arduino? How can I use my Arduino to start up the PC?

My plan was to power the Arduino with the 5 V pin and send a digitalWrite(somePin, HIGH) for a short amount of time to the ground pin from the PC that would normally be connected to the power button, thus "closing" the circuit like the normal case button would.

6
  • Please edit your post (click "edit") and add context and a question. You have listed some things you have done but have not said what you want to do or what your question is. Jul 18, 2017 at 4:38
  • 1
    Also asked at forum.arduino.cc/index.php?topic=489895
    – per1234
    Jul 18, 2017 at 5:01
  • I located the two pins that are responsible for powering up the PC - where did you locate them?
    – Nick Gammon
    Jul 18, 2017 at 8:27
  • and send a digitalWrite(somePin, HIGH) for a short amount of time to the ground pin - you want to send 5V to ground? Why?
    – Nick Gammon
    Jul 18, 2017 at 8:28
  • 1
    I think this is actually a valid question - while it takes some knowledge of the PC power supply to understand it, editing that into the question for clarity to unfamiliar readers would come pretty close to putting the answer into the question. One could, however argue that it is off-topic as it is about the PC power supply, not really about Arduino. Jul 23, 2017 at 22:32

3 Answers 3

3

The two pins aren't +5V power and ground.

One of them will be what you think, the other will be a signal wire with a pull up/down.

So if the ground wire really is ground then the other wire is the button input and is pulled up with a resistor, probably in the 10k region.

You can't power an arduino with a ~10k resistor in series with the power, it's just not going to work. But it will pull enough current to make it look like the button is pressed all the time.

What you need to do is:

1) Find out which pin is the signal pin. The easiest way to do this is find some other ground point on the computer (e.g. from one of the HDD power connectors) and measure the voltage from that to the button wires when the button is pressed. If both wires go to 0V then it's the wire that's normally +5 that is the signal, if they go to +5 then it's the wire normally at 0V that's the signal.

2) Fine a real power source. Most PC power supplies have an always on supply that will be at 5V when the PC is off. Use that to power the arduino.

3) Now you know which wire is the signal wire and have a usable power source you can connect the signal wire to one of the arduino pins and drive it to the correct state. Ideally you'd do this via an open collector type interface so that you don't get two different things pulling to very slightly different idle levels.

0

The signal you found is called PS_ON and it is an active_low input which should be momentarily grounded by a switch to toggle the PC power supply's on/off state.

Trying to use this instead as a power source for the Arduino loads it, causing it to drop, the Arduino to brown out and release it, and then the process repeats.

As @Andrew mentioned, you need to find the 5v standby power supply output, and use that as the Arduino's power source instead. This is called VSB. Since it is already regulated to 5V, you can't pass it through the Arduino's Vin as it will not meet the regulator's dropout voltage needs. Instead you should route it in as an external 5v source, much as done with the USB power input.

To activate the signal, you'll then want to use a digitalWrite() to briefly set the output low (not high).

However, when you are not driving it low, rather than driving it high (to a voltage potentially higher than the power supply pulls it up to), what you should do is simulate an open collector output by changing the pin mode to an input, without pullup.

-1

I suspect that you plan won't work. The Arduino's digital pins only support 20-40mA. I think you would be better using the Arduino to control a transistor or relay and interfacing that with the switch.

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.