Capacitive Sensor Design

by ohneschuh in Circuits > Arduino

38291 Views, 310 Favorites, 0 Comments

Capacitive Sensor Design

DSC_0730.JPG

Capacitive sensors are an elegant way to control an Arduino using the Capacitive Sensing Library. But the sensitivity and error tolerance depend strongly on the hardware (sensor) design. I found a design guideline here and tested different setups which mostly work well if the Arduino was powered by battery. But the sensor signal changes dramatically if I connect the Arduino to a power supply.

Actually I found a design for five (and more) sensors which works well powered with battery and power supply.

Materials and Tools

132129_DSC_0359_rwntk_4928x3264.JPG

For a the five button sensor you need:

  1. Wire - 6 pieces, long enough to reach the Arduino
  2. Five washers - outer diameter 10 mm, connected to the receive pins
  3. Aluminum sheet - 135 x 30 x 0.2 mm³ - connected to ground
  4. Plywood or similar - 130 x 30 x 5 mm³
  5. For a breadboard setup five needles

Also, not shown, some tools and stuff:

  1. Cutter
  2. Soldering gun
  3. Drills - 2 and 3 mm
  4. Double-sided tape
  5. Superglue

Prepare the Plywood

132157_DSC_0389_rxmph_4928x3264.JPG
capacitiveSensor_plywood.png

The plywood sheet is the base of the sensor field. Drill the holes like seen in the drawing. For each button you have to drill a big (3 mm) and a small (2 mm) one. The small one is for the sensor wire and the big one for the status LED. The rectangular hole is for the grounding of the aluminum sheet.

I tested different layouts and the one with 2 cm distance from button to button works best. As you see I used a longer piece of plywood to possibly extend the number of sensors.

Cut the Grounding Plate

132178_DSC_0429_rtssk_4928x3264.JPG
capacitiveSensor_metalSheet.png

To get a better signal of the sensors (lower noise to signal ratio) you need a grounding like explained here. For this you have to cut the aluminum sheet like shown in the drawing. The small strip on the right side is to attach the wire for grounding.

Prepare the Washers As Receive Contacts

132152_DSC_0384_rjatx_4928x3264.JPG
132152_DSC_0384_rjatx_4928x3264_det.JPG

The washers will be connected to the receive pins at the Arduino. Therefore you have to solder the wires to the washers. Unshielded wires work for me. At different setups shielded ones could be better.

Join Aluminum Sheet and Plywood

132101_DSC_0449_rmtyl_4928x3264.JPG
132198_DSC_0452_rewca_4928x3264.JPG

Glue the grounding plate with two double-sided tape strips to the plywood. Pay attention to center all holes in the aluminum and the plywood correctly.

Insert the Washers to the Plywood

132217_DSC_0473_rsxij_4928x3264.JPG

I used superglue to fix the washers on the plywood. But you can also use other adhesives. Keep care that there is no contact between the washers and the ground plate.

Needels As Breadboard Contacts

132225_DSC_0482_rszqf_4928x3264.JPG
132229_DSC_0486_rjugy_4928x3264.JPG

If you want to use the sensor field for a breadboard setup it is useful to have some pins on the wires. I use the top part of needles and solder the wires to the heads.

Cover the Sensor Field

DSC_0717.JPG

Because it should be a capacitive sensor field I covered it. For the first trials I use a piece of cardboard and some red dots to mark the sensor positions.

Test the Sensor Field

DSC_0730.JPG
DSC 0742

To test the sensors I wrote a small Arduino program.

Wiring the sensor and the Arduino:

  • Send Pin: D2
  • Receive/Sensor Pin 0-4: D2-D7
  • Ground: GND
  • One 10 MΩ from send pin to every receive pin

The buttons are connected as explained in the CapSense documentation.

The serial output can be switched using the debug variable:

  1. int debug = 1: continuous serial output of the five sensor values
  2. int debug = 0: output only the key-press event (c0-c4). This can e.g. used by a Python script.

The video shows the output of the program in debug mode. Note that there are influences between each sensor press to the other sensors. This has to be filtered by the software.