Making the Bulbdial clock touch sensitive

We never thought about it before, but having the controls on the bottom of a clock is a bit of an inconvenience. [Alex Whittemore] mutes the LEDs on his clock each night and after a while, decided he should make the mute button into a touch strip on the case. You’ll remember that the Bulbdial clock uses colored LEDs to create the effect of a sun-dial, casting colored shadows for each hand of the clock. It makes sense that this would put off a pretty good amount of light at night. [Alex’s] original thought was to use a capacitive touch sensor but complexity and cost were in his way. What he ended up with is a resistive touch switch based off of two metal strips. He used metal repair tape but suggests copper foil as he was unable to solder to tape. When your finger touches the two strips it completes the circuit for the base of a transistor, which in turn grounds the mute button on the clock. Cheap, simple, and illustrated in the video after the break.

e91: holycrapholycrap best idea EVER. I’d have to etch a board to get the high number of contacts required without losing my mind, but hey, maybe it’s an excuse to do some toner transfer. It’d require another micro and serial to talk to the arduino, which I wanted to avoid, but for that it might be worth the hassle.

Andrew: rtfa. Yes, I know you can. I even mentioned it as my initial before-anything thought. Problems are 1. it’s a pain in the butt to get RIGHT, and at the level of abstraction that Arduino provides for coding, it’d be (really hard) to get the timing, and 2. I had no spare gpio. That’s the biggest issue of this whole problem. I could add another micro, and use one of it’s GPIO to manage the button’s pin, but then that’d be a whole extra unnecessary level of complexity, and it’d OBLITERATE my low part count and almost nonexistent cost.

I’m more interested in the neat protoboard setup. It looks like solid pins are soldered to the jumper wires, so they no longer deform uselessly after a single insertion. I might have to make some of these…

I once attended a seminar on using freescale touch sensors, so I have a fairly good idea of how to design this. If you’re using a freescale part, it’s the only extra component you need, and it interfaces over a bus.

There’s no need for 60 IO. All you need is 3-4 circuits, alternately connecting each of the radial traces. The setup works kind of like a quadrature encoder, with 1-2 extra inputs for better accuracy.

You don’t even need 60 traces. You only need 8-10. The touch controller chip uses analogue interpolation to give a smooth 360 degree location. This is exactly how apple’s touch wheel works.

To make things even easier, there’s no need for a separate board. You can print the traces directly underneath the other components without having to worry about interference.

Rachel: are you suggesting that for the sake of implementing the idea e91 had? Certainly sounds like a nice solution. Do you know if the freescale parts were resistive or capacitive?

Also, I’m not sure what you mean “analog interpolation” but I can imagine that if you lay out 8 circular traces, concentric around the perimeter of the face and with selective solder masking, you could resolve 256 individual finger locations, which yes, is more than enough to uniquely identify 60 minutes.

Peterson: You could do that. But keep in mind, I have NO pins left on the arduino. I have the digital pin that the switch uses, and that’s it. I could use an op amp and a comparator to get a useful 0/1 out of the photocell, thresholded at some desirable light level, but then that doesn’t ACTUALLY solve my problem, does it? I don’t want the thing to be dim at night. At its dimmest, it’s still too bright to fall asleep with. But if it turns off at night, then it becomes useless when i’m in the room but still not going to sleep. The only reasonable solution to the problem is me manually controlling display on/off, and I feel I’ve implemented the easiest AND cheapest method to do so.

Yes, it’s for e91’s idea. It’s difficult to explain what I mean, but I’ll try again. Imagine two pads next to each other, each connected to a separate input. Since each input gives you an analogue value of the proximity of your finger, combining the two values will give you a linear value of where your finger is along the two pads.

I see what you’re saying now: it’s capacitive, and can resolve some range of capacitances for the finger being from the center of one pad to the center of the next. Sounds like a good plan, I could even just add an i2c bus header between the chronodot and the board to make things nice and modular.