1

Some days ago I saw this device called Touch Board. It looks a bit like an Arduino (in fact it's based on Arduino). You can connect conductive materials to it, like aluminium foil. The board is able to detect when you touch this material.

How does this work? How would you make this yourself (with a standard Arduino if possible)?

pipe
  • 13,748
  • 5
  • 42
  • 72
Kevin
  • 223
  • 1
  • 3
  • 8

2 Answers2

2

It is likely using parasitic capacitance. In the case of the Touch Board it is using a dedicated (Proximity Capacitive Touch Sensor Controller) chip called the MPR121 by NXP (which was Freescale (which was Motorola)). Using a dedicated chip will likely result in more dependable operation then using the built in touch switch features of some embedded micro processors.

Some of the ATmega328P (the processor used on an Arduino Uno) pins contain a small circuit centered around a capacitor. Software is used to charge and discharge the capacitor. The time to do this is recorded. If you add parasitic capacitance (for example, touch the embedded micro processor pin with your finger) you change the overall capacitance enough to make a difference in the charge / discharge cycle. The software can then react as you (the programmer) see fit.

This type of sensor is tricky to dependably decode. For instance, if you are wearing gloves the effect is reduced. This is one reason why you don't see this type of sensor often in outdoor applications.

Occasionally more complex software is used to combat false touch events. Also, additional sensors, such as optical proximity sensors, are used to validate or even invalidate touch events. For instance when you hold a capacitive touch screen phone to your face, the phone invalidates all touch events. Usually due to a optical proximity sensor on the face of the phone.

Someone has written a Capacitive Sensing Library for the Arduino. You can get it here.

A likely more complete and Atmel centric touch-switch software solution can be found here. It is called QTouch and is likely incompatible with the Arduino SDK.

st2000
  • 3,228
  • 9
  • 12
1
  • Touch IC | Freescale MPR121

source

Ignacio Vazquez-Abrams
  • 48,282
  • 4
  • 73
  • 102