This is a follow-up to my Ring Clock project.
After running reliably for a couple of months, the minute face stopped working. It would still move, but it would lose time and sometimes twitch. After ruling out things like a defective stepper motor or broken driver, I decided I wanted to go back and get the motor driver's fancy serial control working. It's a novel 1-wire interface that provides bidirectional communication, and it (a) gives the ESP32 a lot more options for controlling the driver, and (b) gives the ESP32 diagnostic facilities to help figure out what the problem is. That, combined with help from Claude Opus, led me to discover the flaw in my original design... the motor driver (TMC2209) does not work very well with just 5 volts. I mean, it can, but you need to hook it up differently and my breakout board doesn't support that. And there's a voltage drop over the long cable I'm using, so the clock wasn't even getting 5 volts, it was closer to 4v.
After doing some reading, I was surprised to learn that my "5v stepper motors" don't really need to run at 5v. They're actually perfectly happy with a lot more than that, as long as their current doesn't get too high. You can compute that limit from the values on the label (5V / 25Ω = 200mA), and as long as the driver gives them less than that, they're fine.
So I decided the solution was to switch to a 12v supply. That would give the driver plenty to work with, and as side benefit it would lower the voltage drop on the wire. That's far too much voltage for an ESP32, so I needed to add a regulator, and I picked an MPM3610 because Adafruit sells a nice breakout board for it. With that, the motor driver can get VM=12v and the controller can get VUSB=5v. Everyone's happy.
I amended the PCB design, including the MPM3610 buck converter and the serial interface, but I also added voltage dividers on two of the analog inputs so the ESP32 can monitor the supply voltages itself. I added a readout on its web interface, so now I can check the voltages while the clock is hanging on the wall, without even using a meter.
Sent it off to PCBWay, this time asking them to use a blue board. Here it is partially assembled: resistors, one TMC2209, and the buck converter, but no ESP32 yet.
The new serial control allows the firmware to adjust how much current the motors get, and it turns out they hardly need any at all. They seem to work fine at just 31mA. That allows them to run much cooler than before, which will hopefully be good for longevity.
The clock is now re-assembled and hanging on the wall again, peacefully telling the time. Fingers crossed that it works better now.
Questions or comments? Email me at .
2026 Sept 28
