# Water as touch surface

Tags:
1. Dec 8, 2016

### hackhard

an idea for my new project
construction - a cubical bowl of tap water , 2 sheet electrodes for 1 pair (y-axis pair)of opposite face(square wave 10Hz 10vpp), 2 sheet electrodes for the other pair (x-axis pair)(similar square wave lags by half cycle )
left hand touches adc pin. right hand touches water surface.10v drops linearly with normal distance from pulse electrode
process adc input for realtime x-y coordinates of touch (maybe z also if added 3rd pair electrodes at surface and floor)
so water surface can be used as touch pad .
will this work?

2. Dec 8, 2016

### Staff: Mentor

The 2-D version could work. What is important about the water/liquid to make this work?

3. Dec 9, 2016

### Baluncore

With your system the body will pick up lots of interference and electrostatic discharge that will get into the ADC.

There are similar 2D positioning systems that inject signal current or noise into a point on a resistive sheet. The edges of the sheet are tied to virtual earth with op-amps that convert each edge current to a voltage. Those four voltages are a function of the sheet x–y position where the current is being injected.

4. Dec 9, 2016

### hackhard

will this work with water in place of resistive sheet

5. Dec 9, 2016

### Baluncore

Yes, but the water should be shallow.
You may need to add some salt to the water to make it more conductive.

6. Dec 10, 2016

### hackhard

adding salt to water will cause electrolysis , so it disrupts uniform composition of water.
voltage drop will not vary linearly with normal distance from pulse electrode
perhaps something else can increase the conductivity of the water

7. Dec 10, 2016

### Baluncore

Then use an AC probe signal, or maybe a DC voltage below the disassociation voltage of NaCl in H2O.

8. Dec 10, 2016

### hackhard

yeah, at high frequency ac 1kHz salt water must behave more or less like resistor due to negligible capacitive reactance.
but how can i sense ac voltage and convert it to digital?

9. Dec 10, 2016

### Baluncore

How you do it will depend on why you need to do it.
What are you really trying to do ?

10. Dec 10, 2016

### hackhard

what did you mean by

11. Dec 10, 2016

### Baluncore

Can you explain why you think capacitive reactance would be negligible.
What is the dielectric constant of water ?

Do you need to sense the voltage at a point on the sheet, or do you need to inject a current into the sheet at a point?

How will you place electrodes at the edges of the sheet ?
What will you do where they meet at the corners ?

Unless you can write a specification you are only dreaming.

12. Dec 14, 2016

### hackhard

80.4

13. Dec 14, 2016

### hackhard

alright , it wont

14. Dec 14, 2016

### hackhard

I need to sense the voltage at a point on the sheet.
copper wires attached to sheet at its edge
the sheets are separated at the corners

15. Dec 14, 2016

### Baluncore

That would suggest that capacitive reactance would be 80.4 times greater than with air between the electrodes.

If you freeze the water it will be much less, IIRC about 3.5, but will the ice be conductive?
See; Dielectric properties of brine-wetted snow on first-year sea ice.
https://cartel.recherche.usherbrooke.ca/Documents/Langlois_Alex/Geldsetzer_etal_2009.pdf

What conductive liquids are there that have low dielectric constant and are safe?

16. Dec 9, 2017

### hackhard

I did it , I built a water touchpad sensor to track the position of my right index fingertip on a water surface! . Here's the Youtube video link -

17. Dec 10, 2017

### Tom.G

CONGRATULATIONS!

While others were telling you why and what you couldn't do, you did it! A needed characteristic of a scientist.
KEEP AT IT!

18. Dec 10, 2017

### hackhard

Here's the Arduino c++ code for the project DIY Water Touchpad -
Code (C):
/* Project Title- DIY WATER TOUCHPAD
Author- Sumit Aich
Project Summary- The basic idea behind this sensor is the use of a parallelopiped water container
as a water potentiometer device. It is similar to a 3-pin slide pot used in electronic circuits,
with the 2 aluminium electrodes equivalent to the 2 end pins of a slide pot,
and the right index fingertip is equivalent to the middle pin (voltage output) of a slide potentiometer.
*/

#define ELECTRODE_0  2  //left water electrode
#define ELECTRODE_1  3  //right water electrode
#define SENSOR_ADC   0  //right index fingertip (Vout of water potentiometer)
#define OFFSET_0     1  //left offset pin
#define OFFSET_1     2  //right offset pin
#define BAUDRATE 2000000

long offset_0,  //voltage at left offset pin
offset_1,  //voltage at right offset pin
m, m1; //horizontal displacement of fingertip from OFFSET_0 pin (range from 0 to 50000)

void setup() {
pinMode(ELECTRODE_0, OUTPUT);
pinMode(ELECTRODE_1, OUTPUT);

//set both water electrodes to +5V to pause electrolysis for a while
digitalWrite(ELECTRODE_0, 1);
digitalWrite(ELECTRODE_1, 1);
Serial.begin(BAUDRATE);
analogReference(DEFAULT);

}

void loop() {

//Phase 1
//swap polarity of voltage drop across water
digitalWrite(ELECTRODE_0, 0);

//check whether fingertip is inside or outside water
digitalWrite(ELECTRODE_0, 1);
{
m = 51000;
}
else {
m =  constrain((50000 * (read_0 - offset_0) / (offset_1 - offset_0)), 0, 50000);
}
Serial.print('$');//format requirement for SerialPortPlotter.exe Serial.print(m);//print horizontal displacement of fingertip from OFFSET_0 pin (range from 0 to 50000) Serial.println('\;');//format requirement for SerialPortPlotter.exe /*this delay is just a frequency restriction imposed by SerialPortPlotter.exe otherwise, it is not required if you are NOT using SerialPortPlotter.exe. */ delay(10); //Phase 2 //swap polarity of voltage drop across water digitalWrite(ELECTRODE_1, 0); offset_0 = analogRead(OFFSET_0); offset_1 = analogRead(OFFSET_1); read_0 = analogRead(SENSOR_ADC); //check whether fingertip is inside or outside water digitalWrite(ELECTRODE_1, 1); if (analogRead(SENSOR_ADC) != 1023) { m = 51000; } else { m1 = constrain((50000 * (offset_0 - read_0) / (offset_0 - offset_1)), 0, 50000); } Serial.print('$');//format requirement for SerialPortPlotter.exe
Serial.print(m);//print horizontal displacement of fingertip from OFFSET_0 pin (range from 0 to 50000)
Serial.println('\;');//format requirement for SerialPortPlotter.exe

/*this delay is just a frequency restriction imposed by SerialPortPlotter.exe
otherwise, it is not required if you are NOT using SerialPortPlotter.exe.
*/

delay(10);

}

19. Dec 10, 2017