pushing the (power) limits.

Hi. I am running a 3.3v Arduino pro, off 4.5v of aa batteries connected to VCC. Connected to this, there is a RFID scanner, that I am powering from one of the data pins. It draws 30ma.

Looking at the specs of the arduino they recommend max of 20ma - anything more will 'exceed the related specification' - And it does, because the voltage I am reading from this pin when high 3.5v....Which is not too far from the RFID's scanners spec of 3.3v. The overcurrent is dragging down the voltage, but this is exactly what I want it to do!

So. Everything works..... BUT, is this a good idea:

1) Does running an 3.3v Arduino on 4.5v matter? (as, from what I can tell, there is no difference between the ATMEGA chips for the 3.3v and 5v versions).

2) Might running an 30ma through a pin hurt it? - (the absolute max is 40ma....which the specs says may damage it if run continuously..... but this is 30ma).

3) I also power a 10ma LCD display on another data pin. Unfortunately this to also reading about 3.5v which is making the display contrast low as its a 5v display. connecting directly to 4.5v VCC makes it perfect, however I cant switch the entire display off through software then. It seems that the RFID scanner is pulling down the voltage on this pin also... any suggestions?


It is not a good idea to power extras via IO pins. They should be powered from the regulated power on the board. It is definitely not good to use the current to cause a voltage loss via an output to regulate the external device.



How many things can you possibly do wrong?

You certainly are determined!

Nope, not a good idea.

  1. That's okay - are you powering it directly, or are you feeding the power through the regulator? If you're feeding it through the regulator, that might explain why it's only 3.5v!

  2. Not OK - I'm not too worried about the 30mA through the data pin, but the rest of that is terribad. Use a transistor, and a regulator. RF stuff often has significant current spikes, and you should not be powering a 3.3v device with something that could be up to 4.5v. You will also need a level shifter if Arduino is running at 4.5v and RFID at 3.3.

  3. Use a display that is rated to work at the operating voltage of the microcontroller (are you sure you can't just crank up the contrast? The cheap I2C LCDs usually have a contrast pot on the back to adjust, and the Nokia 5110 displays have a software contrast command. Actually, a lot of displays do... Read the docs)

Why the hell not run everything at 3.3v and save yourself all the pain? 3.3v LDO regulators are easy to get.

I want to run the Arduino in power down state, but wake up and turn everything on. I have a couple of foil plates connected to A0, and A1, which work at touch switches, but I need to turn the thing on ever 4 seconds, check for a touch, go back to sleep if no touch. If touched, then turn on the LCD / RFID. etc.

This is why I don't want to run it through a power regulator, and instead connect direct to VCC....Much lower power requirements when turned on.

Another 'thing done wrong' was I was running the sinks from the LCD, and RFID, to pins set to LOW. This was raising LOW in respect to GND to about .5 Volts. Anyhow, i've moved the LCD GND to the propper GND, and its working great now.

To be honest, Im going to carry on running it like this, as it works ok. If I burn out the Pro Mini, or the card scanner, its only a few £ to replace, so not really that worried.

You can’t safely run most peripheral devicess off data pins, then cannot handle the inrush current
of typical decoupling capacitors used in such modules. They also are not hard enough switches,
with on-resistance of about 40 ohms - so significant voltage droop will happen.

You switch peripherals using PNP (or preferrably p-channel) transistors as high-side switches - however a lot
of peripherals already have their own enable or shutdown pins you can use precisely for this