Increase digital input impedance of arduino uno

i'm working on a project that involves the skin's impedance(nearly 3 Mohm) . The Atmega 328P digital input impedance is 100Mohm. So i'm not getting accurate readings. Is there a way to increase the digital input impedance of Arduino Uno?

What impedance are you aiming for, 100Meg is >> 3Meg?

SumitAich:
The Atmega 328P digital input impedance is 100Mohm.

That's a worst case value, and a number that seems to be pulled from a hat.

Mains hum pickup will be a big issue when measuring skin resistance.

Why aren't you using an analogue input.
Leo..

larryd:
What impedance are you aiming for, 100Meg is >> 3Meg?

Yeah, but due to skin capacitance , skin itself generates small voltages which brings 3.3V input voltage to 2.9V(forbidden region). So i'm aiming at 150 Mohm input impedance, so that at least skin impedance doesn't be an issue . Will a Schmitt trigger do the job?

Explain exactly what you are trying to do.

A circuit diagram would help if you have one in mind.

Are you sure you are not confusing the floating condition of the inputs here (which can be solved by pullups/pulldowns)?

.

Wawa:
That's a worst case value, and a number that seems to be pulled from a hat.

Mains hum pickup will be a big issue when measuring skin resistance.

Why aren't you using an analogue input.
Leo..

I've already tried ADC input. But it didn't work . Touching the ADC input pin with one finger and the GND pin with another doesn't bring the ADC input reading to 0. Instead it reads the same sine wave (mean value~ 0.7V and amplitude ~0.3V) as when the other finger is not touching the GND pin.

One last time what are you trying to do?

.

larryd:
One last time what are you trying to do?


my project aims at determining the position where finger touches the resistive plate. Since the resistive plate is 100k and ADC source impedance is 10K so i'm using a digital method. The dac-r2r output(4-bit) decreases from 4.7V to 1.25V(VIL of Atmega328) and digital pin reads input for every DAC output. The first voltage for which digital input drops to LOW determines position of the finger on the plate.

Does the plate have to be resistive? I think a capacitive method would be much better for this. There are a few ways you can create a capacitive slider. One way, with chevron patterns, is show in the attached application note. This Youtube video shows a capacitive slider hand-made out of foil being read by a PIC microcontroller, which uses the finger's position on the slider to set the speed of a motor.

Jiggy-Ninja:
Does the plate have to be resistive? I think a capacitive method would be much better for this. There are a few ways you can create a capacitive slider. One way, with chevron patterns, is show in the attached application note. This Youtube video shows a capacitive slider hand-made out of foil being read by a PIC microcontroller, which uses the finger's position on the slider to set the speed of a motor.

thanks, but no the plate has to be resistive.

Are you using this outside (far away from mains power wires) and on battery power?
Leo..

Wawa:
Are you using this outside (far away from mains power wires) and on battery power?
Leo..

yes, arduino uno powered by 9v battery.

The DC input resistance of the analog pins will be way larger than 100M in practice - that's the worse case
across the full chip temperature range (leakage current increases exponentially with temperature).

Your measurement is out because the human body is part of the circuit, not due to the precision you
measure the voltage. There are leakage currents to the surroundings, large ac components on the
signals that may be clipping on the Arduino protection diodes, many many things.

I've already tried ADC input. But it didn't work .

And apparently your digital method isn't working either...

What's supposed to happen when your finger is not connected? Open inputs (digital or analog) are undefined. Is that OK in your application? You can add a pull-up or pull-down but of course that lowers the input impedance.

The dac-r2r output(4-bit) decreases from 4.7V to 1.25V(VIL of Atmega328) and digital pin reads input for every DAC output. The first voltage for which digital input drops to LOW determines position of the finger on the plate.

That's an "interesting" way to get an analog reading, but the Arduino does have an analog input. And if you don't know this, high & low are defined as thresholds of 0.6Vcc and 0.3Vcc with an undefined area in-between. (You may be able to "calibrate" your software to your particular chip, but it's not good practice to run analog into a digital input.)

Try a capacitor to filter the analog input (between the analog input and ground). Maybe start with 1uF or 0.1uF. If the readings change too slowly, use a smaller capacitor. If the readings change slowly, but are sill noisy, filtering won't help.

A capacitor can be used on the digital input too if you want to try that.

P.S.
Usually this type of "finger sliding control" or "ribbon controller" is a potentiometer, that's controlled with your finger, without your finger being part of the electrical circuit.

DVDdoug:
And if you don't know this, high & low are defined as thresholds of 0.6Vcc and 0.3Vcc with an undefined area in-between.

The digital inputs are Schmitt Triggers, so the area between the thresholds is not undefined, but gives a result of "whatever the value already is".

The digital inputs are Schmitt Triggers, so the area between the thresholds is not undefined, but gives a result of "whatever the value already is".

Just curious, is that on the ATmega datasheet?

DVDdoug:
Just curious, is that on the ATmega datasheet?

It is.

Figure 18-2 shows the Schmitt Trigger hysteresis symbol in the path of the input buffer.

Section 18.2.5 mentions it explicitly:

As shown in the figure of General Digital I/O, the digital input signal can be clamped to ground at the input of the Schmitt Trigger

SumitAich:
thanks, but no the plate has to be resistive.

Then you have a very difficult task ahead of you, and I don't think you'll have much success.

For one, high impedances like this are very susceptible to noise, and our bodies in particular are antennas for all kinds of electrical crap in the environment. Mains hum is one of the main offenses that our bodies can introduce into a sensitive electrical circuit.

Directly touching the resistive material and using the body as part of the circuit seems fraught with problems. The resistive material can be worn and weathered away by abuse, changing its linearity. Oils from your fingers and other liquid contaminants can also destroy the sensor.

In comparison, a capacitive sensor is protected by an insulating layer than can be a few millimeters thick or wood, plastic, or glass. The capacitive pads themselves are never exposed to abuse, so the sensor is as waterproof and indestructible as its covering it.

What objects are you working with that make you think you need a resistive sensor in this particular configuration?

and ADC source impedance is 10K

You know that this is rubbish don't you.

A value of 10K is the ideal source impedanc to drive the A/D converter when switching between channels. The input impedance is on a par with a digital pin.

Jiggy-Ninja:
It is.

Figure 18-2 shows the Schmitt Trigger hysteresis symbol in the path of the input buffer.

Section 18.2.5 mentions it explicitly:

...and it is characterized in section 31.7.9, Pin Threshold and Hysteresis