A Touch Scroll Wheel via OpenSCAD

Recent experiments with the Arduino CapSense library led [Bryan] around the Internet looking for interesting applications. He hit upon a very cool touch scroll wheel made entirely with PCB traces, but the geometry – three interleaved zig zags is impossible to build in the decidedly ungeometric Eagle PCB package. One thing leads to another and now [Bryan] has a cap touch wheel Eagle part designed entirely in OpenSCAD.

The touch scroll wheel implementation [Bryan] found came from an ST touch controller datasheet and used oddly-shaped patterns to create a capacities sensor. Eagle is terrible for designing anything that isn’t laid out at a 45 degree angle, so he fired up OpenSCAD to draw these triangles. Importing into Eagle was another challenge, but a quick Ruby script to convert a DXF file into a set of coordinates for Eagle’s POLYGON command made everything very easy.

It’s arranged this way so that you get an interpolated position between sensors. If you had only three ‘pie’ wedges then you’d get full signal when your finger is anywhere on the main part of the wedge, then a rapid drop-off as it left one wedge and moved onto the next wedge. Similarly, you’d get a rapid increase in signal as your finger arrived on the next wedge.

This is fine if you have many sensing wedges around the circle. Maybe 8 or 12 or 16 would be a nice number. But in that case you will have 8, 12 or 16 traces, I/O pins and capacitive sense circuits, which costs money.

By physically interleaving the sensors like this you can get away with fewer sensors (therefore cheap) and you can interpolate the finger position by looking at the relative values of the two sensors that are detecting a signal (the third one gives you a handy ‘no touch’ baseline).

If your PCB software can do arcs, with just a little math you can do this – I managed with a 20 year old version of TANGO and it took all of 5 minutes to duplicate it. [3 points describe a circle, or an arc.]