3.3v input to Arduino digital pin

Apart from Arduino Due, all Arduino's that I am aware of have an ATmega running @ 5V(DC). Check the Arduino product page Arduino Nano where it clearly states "Operating Voltage (logic level) 5V". Apart from that many Arduino boards have a 3V3 regulated output that can be used to supply an external circuit when required.

External circuit output voltage \$V_{OH}\$

When you attach a logic circuit to this 3V3 power rail, the outputs usually swing between near 0V to near 3V3 (unloaded) but you have to check the specific datasheet for exact voltages (usually called \$V_{OL}\$ and \$V_{OH}\$. It is clear from the above that any ATmega will have no problem recognizing a '0' signal, doubt comes with a logic '1'.

So the real question is: Does ATmega recognize 3V3 as a logic '1'? Again the answer is in the datasheet for the ATmega on your Arduino.

I didn't check all variations of ATmega that Arduino's come by, I picked the first datasheet I found: ATmega168. Chapter 29 has "Electrical characteristics". The symbols for "Input high voltage" you want to check are labeled \$V_{IH}\$ and there seems to be plenty of choice ( |1|2|3), but if you read carefully you'll notice that only the first two lines are relevant for GPIO pins on Arduino.

Input HIGH sensitivity \$V_{IH}\$ for Arduino's ATmega.

  • Condition at the bottom for \$V_{IH}\$ is met: \$V_{CC}=2.4V - 5.5V\$, the ATmega has a 5V supply, so let's continue focussing at the bottom of those boxes
  • Minimum \$0.6V_{CC} = 0.6 × 5V = 3.0V\$
  • Maximum \$V_{CC}+0.5V = 5 + 0.5 = 5.5V\$

To answer your question: Will 3V3 logic outputs (or the regulated 3V3 supply rail) work with standard Arduino inputs?

  • yes it is safe to connect 3V3 from the Arduino board to an input, because the voltage is lower than 5.5V;

And when attaching external circuitry:

  • yes; as long as the output \$V_{OH}\$ of the external circuit is higher than 3.0V.

Word of warning: Be aware that the controller pin must be configured as INPUT, otherwise you may exceed maximum current for the pin and you'll damage the controller. When experimenting it is safer to connect a \$330\Omega\$ resistor in series with the inputs.

Glossary

Let's throw in a short, slightly trivial glossary while I'm busy:

  • \$V_{OH}\$ Voltage Output High
  • \$V_{OL}\$ Voltage Output Low
  • \$V_{IH}\$ Voltage Input High
  • \$V_{IL}\$ Voltage Input Low

It is safe to input 3.3V to an microcontroller input pin which has a 3.3V supply. It's not safe to supply over the microcontrollers supply (usually VDD + 0.3V) unless it is specifically noted that you can do (for instance some pins on a 3.3V micro may be "5V tolerant")

3.3V microcontroller with 5V tolerant pins example:

5V tolerant example

All this information will be in the datasheet under the electrical specifications.

Tags:

Arduino

3.3V

5V