EmbeddedRelated.com
Forums
The 2024 Embedded Online Conference

Advice for the best Touch Panel A/N circuit (or resistance-to-digital)

Started by whygee April 28, 2009
Hello,

I want to digitize some sensors and a touch panel with a FPGA.
FPGA allow a certain flexibility but good external analog parts
are necessary.

In my context, the trouble comes from the screen's touch panel
(classic low-value resistor type with 4 wires). I know that it is very
sensitive to the environment (temperature, power supply,
interferences...) and drift is very annoying (1% is maximum allowable)
so precision parts are required (a good analog comparator instead
of just a digital CMOS input, low-drift capacitors etc.).

My current idea is to create a VFO where only the
touch panel resistance influences the frequency. The FPGA
counts the number of edges during 1/50s (given by a Xtal)
and this gives a ratio of the resistance, software then
scales the results.

But I also want to make it consume as little current as possible.
This seems difficult to reconcile because the higher the frequency,
the better the converter resolution, but also the more edges and
power consumption.

Does anybody know a better method that is simple,
economic, power-efficient, reliable and stable ?
What type of circuit is commonly used ?

thanks for any insight,
yg
-- 
http://ygdes.com / http://yasep.org

whygee wrote:

> I want to digitize some sensors and a touch panel with a FPGA. > FPGA allow a certain flexibility but good external analog parts > are necessary. > > In my context, the trouble comes from the screen's touch panel > (classic low-value resistor type with 4 wires). I know that it is very > sensitive to the environment (temperature, power supply, > interferences...) and drift is very annoying (1% is maximum allowable) > so precision parts are required (a good analog comparator instead > of just a digital CMOS input, low-drift capacitors etc.). > > My current idea is to create a VFO where only the > touch panel resistance influences the frequency. The FPGA > counts the number of edges during 1/50s (given by a Xtal) > and this gives a ratio of the resistance, software then > scales the results. > > But I also want to make it consume as little current as possible. > This seems difficult to reconcile because the higher the frequency, > the better the converter resolution, but also the more edges and > power consumption. > > Does anybody know a better method that is simple, > economic, power-efficient, reliable and stable ? > What type of circuit is commonly used ?
There is a note on our web site about a simple touch switch that we have used in many applications for 25 plus years http://bytecraft.com/Touch_Sensitive_Switch We have used this approach to implement a full keyboard and individual switches. No contact is needed a switch panel can (should) be covered with an insulator. Contact me offline if you have questions. Regards, -- Walter Banks Byte Craft Limited http://www.bytecraft.com
whygee <whygee@yg.yg> writes:

> Hello, > > I want to digitize some sensors and a touch panel with a FPGA. > FPGA allow a certain flexibility but good external analog parts > are necessary. > > In my context, the trouble comes from the screen's touch panel > (classic low-value resistor type with 4 wires). I know that it is very > sensitive to the environment (temperature, power supply, > interferences...) and drift is very annoying (1% is maximum allowable) > so precision parts are required (a good analog comparator instead > of just a digital CMOS input, low-drift capacitors etc.). > > My current idea is to create a VFO where only the > touch panel resistance influences the frequency. The FPGA > counts the number of edges during 1/50s (given by a Xtal) > and this gives a ratio of the resistance, software then > scales the results. > But I also want to make it consume as little current as possible. > This seems difficult to reconcile because the higher the frequency, > the better the converter resolution, but also the more edges and > power consumption. > > Does anybody know a better method that is simple, > economic, power-efficient, reliable and stable ? > What type of circuit is commonly used ?
4-wire analog resistive touch panels are usually driven so as to make them "potentiometers" (*not* "variable resistors"). So they are not generally particularly sensitive to temperature in my experience. You put a voltage across Y+ and Y-, then use an X electrode as the "wiper" of the potentiometer to read the Y position. Then switch things around to put the voltage across X+ and X-, then use a Y electrode to read off the X position. The voltage is thus independent of the resistivity of the touch screen to a first approximation. If you are going to use one instead as a variable resistor that seems to be asking for trouble. I usually use some spare analog inputs on a microcontroller and some switched I/O port pins. But you can get "stand-alone" touch screen controllers too which will enable a pure digital interface to your FPGA. Are some of your sensors analog (i.e. have you already got an ADC in the system)? -- John Devereux
Walter Banks wrote:
> There is a note on our web site about a simple touch switch > that we have used in many applications for 25 plus years > > http://bytecraft.com/Touch_Sensitive_Switch > > We have used this approach to implement a full keyboard > and individual switches. No contact is needed a switch panel > can (should) be covered with an insulator.
Thank you. However, I was maybe not specific enough : my OP was about a LCD touch pannel, this gives X,Y position.
> Contact me offline if you have questions. > > Regards, > Walter Banks > Byte Craft Limited
YG -- http://ygdes.com / http://yasep.org
John Devereux wrote:
>> What type of circuit is commonly used ? > > 4-wire analog resistive touch panels are usually driven so as to make > them "potentiometers" (*not* "variable resistors"). So they are not > generally particularly sensitive to temperature in my experience. > > You put a voltage across Y+ and Y-, then use an X electrode as the > "wiper" of the potentiometer to read the Y position. Then switch things > around to put the voltage across X+ and X-, then use a Y electrode to > read off the X position. > > The voltage is thus independent of the resistivity of the touch screen > to a first approximation. > > If you are going to use one instead as a variable resistor that seems to > be asking for trouble.
Oh then it explains why I couldn't figure a suitable method :-/ thank you very much for this explanation !
> I usually use some spare analog inputs on a microcontroller and some > switched I/O port pins. But you can get "stand-alone" touch screen > controllers too which will enable a pure digital interface to your > FPGA.
maybe from Maxim or ADi... if it's not too expensive.
> Are some of your sensors analog (i.e. have you already got an ADC > in the system)?
I need about 8 A/D with at least 10 or 12 bits at about 50 to 100Hz. Maybe an integrated 16-bit 8-channel ADC with internal MUX would work. I can even use an existing SPI bus to reduce the pin count. Or I could dedicate a dumb PIC to this task. It would sequence the measurements and serially send the results to the FPGA with a few pins. Ok so now I'm on the right tracks, thanks :-) yg -- http://ygdes.com / http://yasep.org
whygee wrote:
> John Devereux wrote: >> I usually use some spare analog inputs on a microcontroller and some >> switched I/O port pins. But you can get "stand-alone" touch screen >> controllers too which will enable a pure digital interface to your >> FPGA. > maybe from Maxim or ADi... if it's not too expensive. >
<snip>
> Or I could dedicate a dumb PIC to this task. It would sequence > the measurements and serially send the results to the FPGA with a few pins. > > Ok so now I'm on the right tracks, thanks :-)
So Maxim has the right part : MXB7946 which comes with an additional temperature sensor, battery voltage converter and a free/spare A/D chanel. Issue solved :-) yg -- http://ygdes.com / http://yasep.org
whygee <whygee@yg.yg> writes:

> whygee wrote: >> John Devereux wrote: >>> I usually use some spare analog inputs on a microcontroller and some >>> switched I/O port pins. But you can get "stand-alone" touch screen >>> controllers too which will enable a pure digital interface to your >>> FPGA. >> maybe from Maxim or ADi... if it's not too expensive. >> > <snip> >> Or I could dedicate a dumb PIC to this task. It would sequence >> the measurements and serially send the results to the FPGA with a few pins. >> >> Ok so now I'm on the right tracks, thanks :-) > > So Maxim has the right part : MXB7946 > which comes with an additional temperature sensor, > battery voltage converter and a free/spare A/D chanel.
Well that's cheating!
> Issue solved :-)
-- John Devereux
John Devereux wrote:
> whygee <whygee@yg.yg> writes: >>> Ok so now I'm on the right tracks, thanks :-) >> So Maxim has the right part : MXB7946 >> which comes with an additional temperature sensor, >> battery voltage converter and a free/spare A/D chanel. > Well that's cheating!
Is this an acknowledgement that I'm growing up ? ;-) The chip does the requested work (and even a bit more), it is not too expensive (well, in quantities), it interfaces with SPI (which I use a lot in this design), it consumes the least possible power, it has enough resolution, it takes less room than a discrete version and it requires no programming from me (unlike if I used a PIC). (Well there is some kind of SPI protocol to manage but it's well explained in the datasheet). I would be silly to not use it. However, digging in this subject taught me a lot, and I intend to reuse this with PICs, as cheap and friendly interface for gadgets that I could develop in the future :-) (where power draw and precision are not critical). regards, yg -- http://ygdes.com / http://yasep.org

The 2024 Embedded Online Conference