Relying on Arduino internal input protection against high voltages


I'm attempting to monitor inputs with an Arduino that will frequently go above Vcc. I know it's considered good practice to protect inputs with, for example, a zener diode. But to simplify things, I'm considering using high resistors, and connecting them directly to the input pins, assuming the internal protection mentioned in the AVR datasheets will do its job. If the input resistor is high enough that even at max voltage only a fraction of a milliamp will flow into the pin, is there any conceivable way that the Arduino could sustain damage?

The only drawback I can think of is a slower response, as the input capacitance will take longer to stabilise, but this isn't an issue in my application.


I'll probably get trounced for this, but I'd say go for it and try it out. The worst that can happen is you would damage a $3 chip.

Also, keep in mind that if your series resistor is too high, the input leakage current may affect your measurements, however you can probably compensate for that.

A better approach might be to use a simple voltage divider that brings the maximum expected voltage down to under 5V.

Atmel has an application note (AVR182: Zero Cross Detector) where they do exactly that as a way of detecting the zero cross point of mains voltage. Give it a read.

Atmel AVR182 Zero Cross Detector.pdf (95.1 KB)

Atmel has an application note (AVR182: Zero Cross Detector) where they do exactly that as a way of detecting the zero cross point of mains voltage. Give it a read.

Nice will give that a try my self.

These type of parts have several sets of specs.

One set is the "working" levels. In this case, voltage.
The spec could says 5v for this.

There is a second spec called "Absolute Max".

You can rarely exceed the "working" voltage, but you should never exceed the "Absolute Max" voltage.

Reading the manufactures datasheet will have both specs.

A typical 5V part may have an "Absolute Max" of 5.5V.
Only reading the datasheet will tell you for sure.

Thanks, Jiggy-Ninja, that makes me confident it shouldn't be a problem.

From the article:

To protect the device from voltages above VCCand below GND, the AVR has internal clamping diodes on the I/O pins (see Figure 1). The diodes are connected from the pins to VCC and GND and keep all input signals within the AVR’s operating voltage (see Figure 2). Any voltage higher than VCC+ 0.5V will be forced down to VCC + 0.5V (0.5V is the voltage drop over the diode) and any voltage below GND - 0.5V will be forced up to GND - 0.5V.

By adding a large resistor in series, these diodes can be used to convert a high voltage sinus signal down to a low voltage square wave signal, with amplitude within the AVR’s operating voltage ± 0.5V. The diodes will thus clamp the high voltage signal down to the AVR’s operating voltage.

Note that at the top of page 4, it says the current to be clamped should be kept under 1mA.
"The series input resistor is a 1 M? resistor. It is not recommended that the clamping diodes are conducting more than maximum 1 mA and 1 M? will then allow a maximum voltage of approximately 1,000V."

I wouldn't want to be messing with 1000!

It should perhaps be mentioned that a 1 megohm resistor rated for 1 kV is not your average component. :smiley: