ATX PSU: best method for a power on reset for PSU powered Arduino?

OK, my server rack temp monitor project runs off of an ATX computer power supply. the arduino hangs at startup, so i was thinking it needs a power on reset from the Power Good wire on the ATX PSU.

now, the power good signal is 5V, so if i use one of the inverting hex schmitt trigger (SN74HC14) chips i have on hand to drive a transistor that pulls reset to ground when the power good is low. i don't have a schematic yet, but i want to know if my thinking is on track so i can prototype it after work today.

basic idea is this:
(ATX Power Good) --> (SN74HC14) --> (1Kohm) --> (small NPN transistor) --> (Arduino Reset, to ground)

I will draw a proper schematic later if needed, but i just wanted to convey the basic idea on what i think will work, based on what i have available for parts.

Keep in mind, i have just started my morning coffee, so my train of thought may not be fully "on the rails". :wink:

Thanks in advance for any assistance. :smiley:

~Travis

After reading your post multiple times... You want to reset the arduino after the PSU is fully working, is that correct?
If so... why? What is the problem with the current setup?

lg, couka

And the second part of couka's question is "and when your circuit generates the reset, when is it going to release reset so the Arduino can run?" I have not played with the "power good" signal, but I would suspect that if that is it's purpose, then it should not need a schmidt trigger on it - it should be clean - the bigger problem (if that is your problem - slow rising power can indeed cause odd things) is generating a pulse instead of just an inverted signal (which is what a schmidt trigger would do - just inverts the signal with hysteresis on the input). Now my coffee is ready and I need to go get my morning cup to see if I am awake !! :slight_smile:

OK, did a little bit of snooping and found a number of references on the "power good" signal THIS ONE seemed pretty good. Note the reference to the cheap supplies that may just tie the "power good" signal to the 5v bus instead of doing what it is supposed to - wait until supply voltages are correct then set "power good". What you may have been thinking of is a oneshot (instead of a schmidt trigger) to generate a reset pulse to the Arduino which would be easy to construct with an RC network basically on the base of a small npn transistor so that the rising edge of "power good" turned the transistor on (pulling the reset down for the arduino) then as the capacitor charges, the transistor turns back off again (you also need a resistor from the base to ground to make sure it turns off). You need some sort of "one shot" because the "power good" signal goes true and stays there - you want a pulse when it goes true. You may just be able to use the "power good" signal direct to control the arduino reset since it is supposed to stay low until power is stable (that assumes it really is a "power good" signal, not just a wire from the 5v as indicated may be true for cheap supplies.

What you are missing is that the "power good" is not a pulse, but a level - low when bad, high when good - without some sort of oneshot in the string you have, when it goes good, the arduino goes into reset ... and stays there.

No, you are right. For some reason, I had it fixed in my head you wanted to generate a reset pulse when "power good" went true. I think more coffee is required or a brain reboot (mine).

" I think more 'coffee' is required or a brain reboot (mine)"

0xcoffee, what does a hex number have to do with this?

That would be 12,648,430 in decimal which is a LOT of coffee !! (or for us old farts, 60,177,756 in octal :slight_smile: )

travis_farmer:
Or in a binary representation of decisions to drink coffee, 110000001111111111101110, it is only 16 cups (or sips, depending on how you look at it). :wink:

maybe coffee, i heard brain reboots are bad for the non-volatile memory. :wink:

~Travis

Yeah, but for us old folks, sometimes a reboot is needed! Anyway, one consideration in your idea is what are you going to power the schmidt trigger (not the signal, the Vcc for the chip) with when the power supply is coming up? Until it is stable (power good), your supply for the IC is in limbo. This may not be an issue for you because it will reset the Arduino in the end, but it is worth considering during the power on phase.

That sounds like a good plan and should solve the problem.

No, you were right, it was my brain that seems to have dropped a bit somewhere :slight_smile:

Which Arduino are you using? It should already have a brown out circuit set to hold the processor in RESET below some level. You probably just need to change that setting.

For some reason, even though the ATmega2560 has a minimum recommended voltage of 4.5V no matter what speed it's ran at, the Brown Out detector is set to 2.7V. You have a couple options:

  1. Write the efuse to 0xFC using AVRDude and an external ISP programmer. A second Arduino board can be used as an ISP with the ArduinoISP sketch.

  2. Use an external voltage supervisor circuit, such as an MCP100-460.

That MCP100 is just one example I found that's cheap and easy to use. It just needs the power connections, and it provides a reset output according to fixed thresholds. If you go up to the breadcrumbs and click the Supervisory Circuits link, Mouser has 26,500 devices of various packages and features. Some of them will have adjustable thresholds, hyteresis, time delays, or even a watchdog circuit.