The clock is relatively compact and gets driven using a stepper motor. Because this happens every 60 seconds only, the clock is totally quiet, and even in the switching moment whisper-quiet. The clock mechanics is built using fischertechnik, a German construction kit.
On its rear side, it features a stepper motor:
The stepper motor is from the first fischertechnik plotter kit, but any standard stepper should work. It has a Z10 (a gear wheel with 10 teeth) attached, which drives the black Z25 (which is, by the way, a very rare fischertechnik part which has never made it to marked - see here if you need a tip how to construct a n:5 gear reduction using available standard fischertechnik parts). One can just turn this big wheel using a thumb to set the clock at any time - including when it is running.
At the bottom side there is a Netduino 3 micro controller running nanoFramework (https://nanoframework.net/) and so is most comfortably programmable using Visual Studio and C# (.net):
Underneath there is an Adafruit Motor Shield V2.3 driving the stepper motor. Because I have pre-cabled all my Adafruits, the unused cables just end in empty lamp sockets. The clock sits on springs so that not even a small vibration gets transferred to the tabletop as a potential resonating body.
Driving the minute handThe axis with the Z25 on in also carries another Z10 with a chain going around a Z20 on the axis of the minute hand. This results in a gear reduction of 10:25 * 10:20 = 1:5. This allows using exactly four stepper motor steps for switching from one minute to the next. Its coils are then in the same state again, so that you can set the clock freely just by turning the Z25 manually, and it will continue at an exact minute position, not in some in-between setting.
The clock's software is super simple: Just a timer, firing every 60 seconds and turning the stepper by four steps. This is sample https://github.com/steffalk/AbstractIO/blob/master/source/AbstractIO.Samples/Sample10StepperMotorClock.cs, into which the actual Netduino objects get passed in Sample10StepperMotorClock
of https://github.com/steffalk/AbstractIO/blob/master/source/AbstractIO.Netduino3.Samples/Netduino3SamplesMain.cs - see https://github.com/steffalk/AbstractIO.
The minute axis sits lightly in the Z10 of the stepper motor for additional guiding. It carries a sprocket with 22 fine teeth. The not fully visible black intermediate gearwheel in the middle of this image is a 31082 "Rastachse + Zahnrad Z28 m0, 5" and serves only for the correct turning direction of the hour hand. The gear continues with a 31050 "Metallachse 50 + Zahnrad Z44 m0, 5", on whose axis there is a second Z22 sprocket.
This is the gear as viewed from the other side:
The last-named Z22 sprocket turns another Z44 axis (resulting in a gear reduction of two times 22:44, that is 1:4, counting from the minute axis):
Finally, the gear reduction of 1:4 is supplemented by a combination of a Z10 onto a Z30 (sitting on a freewheel) to the needed 1:12 between minute hand and hour hand, which is simply an I-strut 15, attached to the Z30 using a "Statikstopfen":
In this video, the little program was changed so that it switches every second instead of every minute. You can also see how one can set the time quite easily while the clock is running, because the stepper motor does not get any current between two periods:
Although the timing is only realized by a standard nanoFramework/.net System.Timer object, even after several days the clock did not show any notable error. The timing on the Netduino 3 seems to be quite accurate and well serving for a clock.
Comments