Skip to content

Designing a clickwheel ​

Years ago when I tried to do that project the first time, I stumbled across this article, it was good and all but all I wanted was the footprint. Texas Instruments produced some sicence about it, but I'm not gonna read that, I would feel like my crappy design will never work. And then finally there is this guy that gives you the whole PCB, already printed, or you can grab his design and modify it.

Well I went for my own way.

The tool ​

I just wanted to be able to test different things and see, so I just made a simple tool that draws a SVG, with some UI to change the params of the wheel, and a button to export it as a PNG. Kicad can import whatever PNG and use it in his layers.

Then I wanted to see wether it will actually work or not, so I made a second tool that simulates your finger touching the pads, and computes how many pixels of each pads does it touch. This way I could set my params right so that I could anticipate/simulate what will happen when interracting with the wheel and it will make it easier to design my code, find magic numbers in the interpolation etc.

You can find it here.

The design ​

Here is the JSON of the design I picked for now.

json
{
  "outR": 19,
  "inR": 7,
  "numPads": 4,
  "numCurves": 7,
  "gap": 0.24,
  "offset": 0,
  "strokeWidth": 0.2,
  "roundness": 0.7,
  "W2": 15
}

My reasoning:

  • With big fingers it is verry rare to touch more than 2 pads: easier interpolation.
  • The 4 cardinal points give almost 100% touch on their corresponding pad.
  • It seems like it is not too sensitive to radial movement: with other designed it seems like moving the finger with a not perfect circular movement would create noise, while here not that much

Not sure it is right, we'll see in a furhter blog post, once I'll have tested it how it actually works.