Hi, I just started with arduino and need a little help.
I want to use an old computer power supply to power an arduino uno.
When I switch off the power supply the voltage doesn't immediately drop to 0v, it just slowly decreases from 9v (regulated down from 12.2v to take load off the uno's internal regulator) to 0v.
It takes roughly 4 seconds to drop from 9v to 0v.
Therefore I'm not sure if this could negatively affect the arduino (or the data it sends to connected components) over time, because I read that it runs unstable below 7v.
So is this a problem, or does the voltage still drop fast enough to not affect the arduino at all?
Maybe I'm overcautious, but I don't want to damage my arduino or other components and I couldn't find related threads or information.
I can't suggest a solution, but I have a suggestion for a different approach. I used an ATX power supply's 5V into the USB. It's the same "guaranteed" 5V as you would get from the PC's USB outlet, so it's within the limits. I just cut the flat USB connector off a printer cable, and wired it into the PSU; other end has the square gizmo for a printer / Uno.
Thanks for the quick reply,
I'm not so much concerned about the limits while being switched on, because the uno's recommended input voltage is 7 to 12v (therefore I regulated the voltage to 9v).
The part that I'm concerned about is switching it off.
Even if i used a 5v connection via the USB input it would still be affected by the slowly decreasing voltage that this PSU has during shut down.
Applying your suggestion would probably reduce the time it needs to go to 0v and therefore reduce potential damage.
I'll probably do that if it stays uncertain whether or not this voltage drop could do any harm.
(My plan was to use the empty computer casing as a lamp and have the arduinos USB port permanently connected internally so i can use the front panel USB connector to update my Sketch without opening the casing. Therefore it would be ideal not to use the USB port for power input. You couldn't know that though ;))
Thanks though regardless, I'm one step/idea closer to connecting it safely.
There is a potential problem, I think, with Arduinos that have the USB Interface in another ATmel chip. Like current UNOs. I have heard that slow power down and glitches can corrupt the USB chip, and you would have to reload it.
I have also experienced this with older FTDI USB-based Arduinos. In that case the bootloader is corrupted and you need to re'burn' the bootloader. I saw this especially in classes where students were breadboarding stuff.
I'm not sure I have a good answer/solution. Other info or opinions wanted!
The BOD (brown-out detector) voltage can be reprogrammed via the ICSP header. I think the default
value is rather low for 5V operation as its compatible with 3.3V too.
Once the supply drops below the BOD level the chip simply drops cleanly into reset mode I believe,
finessing issues with low supply voltage.
Another approach is to add a dummy load to the power supply, like an automotive indicator bulb,
which will discharges its capacitors much faster.
Thanks for your fast replies, and possible solutions!
Good to know that this slow voltage drop can lead to failure or damage!
I did a little research on brown-out detection and as far as I understood it should solve any problems if I changed the BOD level to 4.3V.
To accomplish that I could use a second arduino (that I might need anyway), or I could burn the adjusted bootloader to a separate ATmega328P chip on a breadboard and then replace it with the one on my arduino.
My main sources: https://www.arduino.cc/en/Tutorial/ArduinoISP
Arduino Uno brown-out detection
No need to burn the bootloader! Just burn the fuses. avrdude can be run directly to do this.
Put a switch in the DC out lead, switch your DC OFF first.
Or use a multi pole switch to turn your mains off, use one of the extra poles to operate a relay and use its NO contacts to switch the DC OFF when you switch the mains OFF.
Just a thought.
Thanks for the advice! I used both methods by now, because I bootloaded a new chip and then only changed the fuses of the existing one.
(when burning the bootloader I was slightly confused at first: The standard extended fuse setting was 0xFD (B11111101) instead of 0x05 (B00000101) as suggested everywhere on the internet, but I still changed it to 0x04 (B00000100) as suggested by the tutorial. then I bootloaded the chip and inside of the arduino IDE avrdude gave me an error massage saying something like: failing - this code is deprecated, you probably want to use 0xfc instead of 0x04 (double check with datasheet first). Then I looked at the efuse settings in the chips data sheet and translated the hexadecimal code (seen above) to binary.
I came to the conclusion that the last three bits (that are essential for BOD) stayed the same and the rest changed from 0s to 1s. I then replaced 0x04 with 0xFC (B11111100)and everything worked, as well as the blink sketch to test functionality.
So I guess I successfully changed the BOD level to 4.3V. I just thought that was interesting, because I couldn't find any reference to this change whatsoever.
I also noticed that the ATmega328p that came with the arduino uno has a high fuse setting of 0xD6, even though the arduino uno standard bootloader setting is 0xDE, which is kind of weird.
Thanks for this idea!
I might use a multi pole switch and elegantly hide it on the back of the computer casing instead of plugging a headphone's plug into the front panel audio jack as I intended before.