I'm testing capacitive sensors and need some advice

Status
Not open for further replies.

christoph

Well-known member
Hi all,

I'm testing capacitive sensors to create a touch wheel and I need some advice regarding cross talk. Here is my setup with and teensy++ and 5 sensors, two are supposed to be a slider which you can ignore for now:
01_firstTest.jpg
The three "buttons" share a common send pin which is pin 12. The receive pins are, from left to right, 13, 14 and 15 and their resistor values are 470k, 330k and 470k. I couldn't find a third 470k resistor. The whole thing is built on a piece of perfboard. I attached a piece of white cardboard to that with double-sided tape, and cut the buttons out of a piece of copper tape. All is covered with clear tape.

As I understand it, a higher resistor value will make the sensor more sensitive, so the 470k buttons should be more sensitive than the 330k one. That's indeed the case in my setup as long as I touch the front: I get maximum readings of about 120 for the 330k button and 140 for the 470k buttons.

However, there is heavy crosstalk *to* the 330k button: When I touch a button that is next to the 330k button, its reading jumps up to about 30. When I touch the 330k button, the others are unaffected. This behavior doesn't change when the 330k resistor is moven to a different button: When I press one of the 470k neighbours, the 330k reading jumps to about 30.

Things get worse when I touch the back of the perfboard. In that case, only the 330k button works. That doesn't make sense to me, as that button should be less sensitive than the others.

What the heck? Is it just my wiring?

I also read that adding a ground plane behind the buttons helps in devices that don't have a ground connection. Does anybody have experience with that?

My goal is to build a slider wheel for a handheld device which has an unknown connection to ground (it might or might not be there).

Regards

Christoph
 
Have you tried the experiment of having a single touchRead() wire for each button (no additional ground or "send" pin--whatever that is)? That's the approach I've used successfully in the past, though I've only done it with two buttons roughly 0.5 cm apart for a hand-held battery-powered device. I solved the calibration problem by polling touchRead() a bunch of times at startup, but this only needs to be done once per device.
 
Status
Not open for further replies.
Back
Top