This weekend I opened up one of the cheap-but-funky thermometers/hygrometers from Lets Make Time and replaced the thermometer mechanism with the Arduino-controlled Switec X25.168 stepper. The thermometer and hygrometer are installed in identical one-part plastic housings with no screws or seams, so it wasn’t clear how to crack them open. I used a Dremel to cut away the back panel giving access to the thermometer mechanism, but to my surprise the dial face was still firmly locked in place. After a bit of poking around I discovered that I could push the whole assembly out forward - in fact the plastic lens is only held in by friction, and the dial and mechanism are held in by the lens. No cutting was required. #LFMF
This turned out to be important because after careful measurement I realized that the motor would have to be mounted snugly against the the back of the housing to leave the drive shaft protruding enough to attach a needle. The plastic panel I cut away would have been ideal to screw the motor to. Starting again with an undamaged housing, I gently pried out the plastic lens, removed the face and mechanism. This time I only cut away enough plastic on the back to allow the drive shaft to pass through.
The needle and the bi-metal thermometer coil came off the face easily enough, but the mounting for the coil is a crafty two-piece deal that mounts through the centre of the dial. It appeared to be assembled a bit like a rivet, and a couple of solid blows from the back with a punch released it cleanly from the dial face.
I originally intended to use screws to secure the stepper to the back of the housing, but there isn’t much tolerance for positional error, which made me nervous. Instead I used the conical rivet-thingy to precisely align the motor drive shaft in hole in the dial and held it all in place while I hot-glued it to the back of the case. Alignment was spot-on the the motor seems to be solidly secured. So far so good.
Next I wired up the Arduino and zeroed the motor against the low stop and put the needle on. There were some unexpected complications at this point. The motor has a sweep of 315 degrees, but this dial only allows about 230 degrees of needle movement. I modified the library to support a soft range limit to avoid exceeding 230 degrees, while still running through a full 315 degrees during reset.
While trying to calibrate the dial I found the needle slipping at times, especially under vibration caused by the power-on reset or slow stepping. With the needle slipping calibration was impossible. I tried applying the smallest drop of hot glue I could manage to the back of the needle. That really didn’t work - the tiny irregular mass between the needle and the dial face would sometimes bind against the dial face, causing more problems.
I believe the needle hole is dished a little, so I removed the needle, cleaned the glue away, and smacked it with a hammer to flatten out the dish and close up the hole. That worked a little too well and I had to ream the hole out a bit with a thumb tack. Now the needle is nice and snug, no slippage.
So here’s how it looks assembled. Calibration is slightly out, but I’m going to make a new dial face anyway, so no need to sweat about that.