Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Building a touchscreen using two wire meshes

  1. Jul 29, 2015 #1
    Hi all,

    I'm planning on building a touchscreen/pad. I am planning on using two sets of wires each separated by a small gap. One will be in the x direction the other in the y. the top wires will be wired to positive and the lower wires to negative, so that when the pad is touched two wires will enter in contact closing the circuit.

    The signal will be extracted from each wire and processed through a computer. Due to my lack of background in electrical engineering (apologies for that) I have absolutely no idea how to get my electrical signal to the computer. And even more how I will do that for 100s of wires (each wire spaced by 1mm and being 0.1mm thin I expect to cover a surface of at least an A4 sheet).

    Anyone has any suggestion ? The aim of this hobby project is to learn, so I am open to suggestions. Even things to look into would be useful... the problem is that I don't even know what I'm looking for (microcontrollers ??, I have no clue).

    Thanks a lot,

  2. jcsd
  3. Jul 29, 2015 #2


    User Avatar
    Gold Member

    I don't think that will work properly, and there is this problem with 100's of wires, 1 mm spaced.

    Instead you could make a capacitive sensor with 3 wires, arranged like this ( only sensed y-direction shown ):

    --------------------------------------- supplied by high frequency voltage ( phase = +90° ).
    Finger placed here: X
    --------------------------------------- Sensor wire.

    --------------------------------------- Supplied by high frequency voltage ( phase = 0° ).

    Now, due to capacitance in your finger, the sensor wire will mostly sense the voltage in upper wire ( maybe the voltage sensed has a phase = 80° ). If you move your finger downwards, the sensed phase will be maybe 20°. In this way you can calculate where about the finger is placed, without needing a "contact" between wires. The x-position could be sensed by voltages with phase = 180° and 270°.

    Another idea is to substitute the wire arrangement by a sheet of semiconducting material. ( I know it's used as membrane in electrostatic loudspeakers ). Attach some wires at the sides of the sheet. When you touch the sheet at some position, the electric field in the sheet will be distorted. Sense the distortion and let the computer calculate the position.

    Processor? Maybe a DSP which is quick to handle Fourier transforms, included phase shift.
    Last edited: Jul 29, 2015
  4. Jul 29, 2015 #3
    Thank you Hesch,

    I'll have a look into that (I haven't understood all your post but I least I've got something to look into :smile: ). I think I struggle with how the sensing part works. Also would this be able to handle multi-touch as well as single touch ?

  5. Jul 29, 2015 #4


    User Avatar
    Gold Member

    If you have 100 vertical driver wires, and 100 horizontal sensor wires, individually driven and sensed you can indeed determine where they are pressed together. It's a mechanical nightmare though.

    google IMAGES for "touch screen technology" and look at and study the resistive, capacitive and optical methods for touch screens. You should understand all the various existing technologies before embarking on your own methodology.

    Here is 8 pages about the iphone touch screen http://electronics.howstuffworks.com/iphone1.htm
  6. Jul 30, 2015 #5


    User Avatar
    Gold Member

    I think that if you walk in others footsteps, you will overtake nobody. To develop ones own methodology is simply fun, and you learn a lot, even if it doesn't work.

    Sorade could buy a ready made touch screen, and it will work. But it's not fun, and Sorade will learn nothing.
  7. Jul 30, 2015 #6


    User Avatar
    Gold Member

    I guess it doesn't make sense to go to school and learn either. Or even try your idea since you thought of it.

    A microcontroller such as an Arduino will allow you to write code to scan an array. When you determine what the coordinates are of the activated point, you can communicate that to whatever wants to know.

    Here is an example that just scans the rows and columns utilizing an Arduino's IO ports

    That design does it to light LED's, but the same principle can drive the rows and sense the columns to determine the activated switch.

    To expand on that you need to use muxes and decoders to expand the IO capabilities of the Arduino.
    There are many different logical architectures that can be utilized to deal with expansion.
    Last edited: Jul 30, 2015
  8. Jul 30, 2015 #7


    User Avatar
    Gold Member

    Yes, that's how a keyboard works, and there is nothing "new" in this technology.
    By use of some distance capacitive sensor, the number of wires could be decreased (much), and mechanical problems with closing up wires do not exist. Furthermore there is a lot to learn. As a start, Sorade could make a HF-oscillator, connect it to two wires and move a finger in between. And well, yes, then he should connect an oscilloscope probe to the sensor wire and see what happens. Next step is to develop a program that will calculate the phase shift ( oscillator phase vs. sensor phase ). Then calibration by programming some look up table:

    (x,y) phase shift → (x,y) position.

    In short: Long time with a lot of fun and learning.

    No, by only 2x3 wires, you will find the mean position as of two touches.
    Last edited: Jul 30, 2015
  9. Jul 30, 2015 #8
    Thank you for all your suggestions. I had a look at some of the things you suggested and I think it will take me time to get the final product, but I'm still very interested (and in the mean time I'll still have my IR multitouch table to play with :wink: ).

    I had a look at self-pcap and mutual-pcap and I am not sure how they manage to put a sensor at each intersection of row and column and still have the whole thing to be transparent in the case of the m-pcap. Second point is ... some of these technologies still require a fair amount of rows and columns (like in the link you gave me 8*8), so how would you connect all that to a micro-controller ? I still haven't found one with a 1250 connections (say for a screen of 800mm*450mm) (I imagine there is a clever way to do it but I'm not sure what it is).

    Other point... since I will have an LCD screen in front of my touchscreen (which is unlikely to be transparent, hence why it's at the back), would the current circulating through the LCD give me false touches do you think ?

    My other crazy idea was to use a layer of La Rochelle Salt between the LCD and the touchscreen so that when I press the LCD which will bend slightly, the La Rochelle Salt layer will generate a tiny charge enhancing the signal of the finger.

    I have ordered a bunch of wires, tape and all to be able to try things out with a multimeter for the moment. I'm trying to think at what is feasible for the final product, even though I still have a lot of work before getting there.

    Thanks again for your advice, and explaining your knowledge in simple words... (I stuggle so much when I see "sensing layer" on websites, I feel like : "okay it senses, but how ?")
  10. Jul 30, 2015 #9
    I would suggest that you scale back the size to start - say a 32 x 32 .. and see how it works out. Your idea / concept is similar to how the first touch screens I used worked~1980 at U of Delaware. We had seen nothing like it, crude but functional.
  11. Jul 30, 2015 #10
    Thanks, I was also thinking I could try and link it up with a crude optical setting like the ones below:

    1309ledsweb_design2.jpg 1309ledsweb_design3.jpg
    That would allow me to benefit from the precision of the capacitive screen while being able to filter out the false blobs.

    If anyone know where I could find some open source code I could try and tailor my build to that would also be great (I might write mine in the future but I already have a lot to do with the hardware). I've posted this request in the following thread to keep the forum clear: https://www.physicsforums.com/threads/optical-touch-screen-code.825527/

  12. Jul 30, 2015 #11


    User Avatar
    Gold Member

    You might want to read about "parallel IO expansion", "arduino parallel IO expansion". Or maybe just "IO expansion" in general. You should understand those simple concepts.

    But none of that will solve a 1250X1250 array.

    I suppose the most common and robust technique is shift registers. for example, CCD camera arrays use shift registers to produce video.

    You can put 1 bit into a 1250 bit shift register and clock it to drive 1 horizontal line at a time.But for every horizontal line you drive, you need to scan all 1250 vertical lines.

    Reading the output shift register can be hardware intensive. For example, in your case, there are 1250X1250 points ~= 1.5 million
    If you wanted to read all the lines every 60ms, You would have to shift 1250X1250 bits in 60ms which is 26Mhz. If you used 8 157 bit shift registers, you could reduced that to a new 8 bit value every 8/26Mhz = 300ns. These sort of frequencies need dedicated hardware.

    There are touch screen controller chips out there, but I have not had any experience with them. I expect they are generally proprietary designs, like for the iphone, etc. Try googling "touch screen controller IC". There are some smaller array controller around to give you ideas.
  13. Jul 31, 2015 #12
    Thanks for your help. I will have a look into that as well. :)
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook