Separation Anxiety
I’ve separated the Switec X25 motor driver code into a separate library repository on GitHub. This will make it easier to use the driver library in other applications.
I’ve separated the Switec X25 motor driver code into a separate library repository on GitHub. This will make it easier to use the driver library in other applications.
I’ve been looking around on-line and in stores for some parts to make some classy steam-punk gauges. After a lot of searching I came across Lets Make Time here in Australia who carry clock and weather station parts at very reasonable prices. It’s always hard to gauge build quality from pictures, so I laid down some cash and bought a grab bag of stuff. The order arrived and it all looks great. It was no surprise to find the rectangular gauges are made from plastic and look a bit cheap, but I really love the retro shape and they actually don’t look too bad. I haven’t cut one open yet, but from the outside everything looks great for my purposes.
The logic in the advance()
function of the
Switec X25 library
steps the motor forward or backward one step, then computes the delay in
microseconds until the next step is due. This logic determines the acceleration curve and
maximum speed of the needle. My first cut at this
code used floating point arithmetic to model this as time/accel/velocity problem. The
motion was nice and smooth, but it was overkill, and consumes too many precious Arduino
compute cycles. When driving multiple motors, this will create an artificial ceiling on the
maximum motor speed.
I’ve rewritten that logic to use a simple lookup table instead.
This is a fairly obvious approach, but it was
reassuring to see similar approaches recommended in both the
VID 29 documentation
and the MCR MR1107 data sheet
.