Testing UNO Board's Input Resistance Directly

Hi I'm new to arduino!

Documentations give me the input impedance of a given PWM I/O pin however I still want to measure this with multimeter.
Documentation also says (if I am reading it correctly), that both I/O modes only provide and read up to 5V. My multimeter continuity mode I know provides 10V > V > 5V.

So I suppose the current isn't the problem, but I'd like to avoid shorting anything on my board. Would this actually short anything?

(I wanted to run my continuity tester /or ohmeter through a pinmode in INPUT mode)

you can measure voltage divider w/. and w/o. connected Arduino and then calculate difference.

1 Like

You can measure the resistance of an ordinary resistor with your meter, but the input resistance of an input pin is VERY high. A continuity tester would show it as infinite unless you applied a voltage that would destroy the arduino.

Why do you want to know this?

Not sure where you seen this information but the datasheet for the ATmega328P does not specify an input impedance for any pin

@jim-p
I was looking Here

@johnerrington looking to do more detailed stuff with the arduino. It's always nice to know at least ball park parameters to any direct interface.

I see no mention of I/O impedance or resistance on that webpage.

Do you mean the intenal pull-up resistor?

a safe way at trying to measure the input-resistance is:

confige the IO-pin as input.

Then measure the current that flows in if you connect the IO-pin to +Vcc (beeing 5V on a 5V microcontroller or beeing 3.3V on a 3.3V microcontroller)

As this input-resistance is really high the current will be in the microampere-range

So if your multimeter can only measure 0,01 mA it might be that a testcode indicate IO-pin = HIGH but the display still shows 0,00 mA

For testing the INPUT_PULLUP-mode you would configure

pinMode(myIOpin,INPUTPULLUP);

and then connect DMM in current.measuring mode from O-pin to GND to measure the current through the pull-up-resistor.

best regards Stefan

I hooked up an Arduino Uno and measured as described above.
My multimeter has a microampere-mode

The display showed 0,1 µA
This means input-resistance
5V / 0.0000001 A = 50.000.000 Ohm = 50 Megaohm

So all you have to be worried about is
That, with such a HIGH input-resistance even a 1 inch short wire that is free floating acts as an antenna that will make the state of the IO-pin switch randomly between HIGH and LOW.

Free floating means if the end of the wire is connected to nothing.

And this is the reason why mechanical switches shall always be used in mode INPUT_PULLUP.
The pullup-resistor connects to +Vcc to have the IO-pin on a well defined potential (instead of free floating)

In INPUT_PULUP-mode I measured 134 µA.
5V / 0.000134 A = 37000 Ohm.

best regards Stefan

Each of the 14 digital pins on the UNO can be used as an input or output, using pinMode(),digitalWrite(), and digitalRead() functions. They operate at 5 volts. Each pin can provide or receive 20 mA as recommended operating condition and has an internal pull-up resistor (disconnected by default) of 20-50k ohm. A maximum of 40mA is the value that must not be exceeded on any I/O pin to avoid permanent damage to the microcontroller.

You are mis interpretating the above specification:

Then 20ma is:
Output when the I/O is driven high as an output
Input (aka sink, aka current going into the pin) when the I/O is driven low as an output.

The 20k to 50k is when you have enabled the internal input pull up resistor.

The input without the internal pullup can draw up to 1 µa.

You should not use a multimeter in the ohms function to try and verify this specification. Many multimeters can put up to 9v on your device being tested.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.