Bei dieser schönen 60er-Jahre Uhr war der Synchronmotor defekt (lief nur selten an, Versatz von 2h pro Tag). Ein Ersatz für diesen war nicht zu finden, daher die High-Tech-Variante.
-
Synchronmotor durch Schrittmotor ersetzen
-
Zeit via NTP über einen ESP holen
-
Das Ganze so, dass es ein 1:1 Ersatz zu dem montierten Motor wird
-
Einen Schrittmotor finden mit passendem Ritzel und passender Größe.
-
Der Schrittmotor mit passendem Ritzel ist für max. 5V ausgelegt, die üblichen StepSticks brauchen 8V.
-
Alles in das Gehäuse bekommen.
-
Erste Tests zeigten, dass für eine Minute eine unterschiedliche Anzahl an Schritten benötigt wird.
-
Keine Möglichkeit, das Umspringen der Minuten zu erkennen.
-
Spontane Abschaltungen bei Netzbetrieb.
AliExpress sei Dank: Stepper-Motor mit 12 Zähnen und Modul 0,25.
Natürlich gibt es was von Trinamic auf Basis des TMC2225 Datasheet. Zum Beispiel hier.
Millimetergenaues Ausmessen, KiCad, Aisler:
Aufgrund des doch sehr beschränkten Platzes, blieb nur die Möglichkeit übrig, die bestehende Glimmmlampe auszubauen und stattdessen eine kleine Reflex-Lichtschranke (TCRT-5000) anzubringen. Diese löst recht zuverlässig auf, wenn sich ein Blatt der Minuten-Anzeige im Fallen befindet.
Ein 100uF Kondensator auf der 5V Schiene wirkt Wunder:
Kleines C++ Projekt mit platformio auf Basis der Bibliotheken: WiFiManager, AceTime, ESP_DoubleResetDetector.
Lösung ist straight-forward: Intern wird die vermutlich angezeigte Zeit (durch das Zählen via IR-Reflex-Lichtschranke) mit der via NTP empfangenen Zeit verglichen und solange der Stepper-Motor aktiviert, bis diese übereinstimmen.
Dabei eine Sonderbehandlung für kleine Abweichungen (bis 10 Minuten wird einfach gewartet, bis die Zeit übereinstimmt) und in der Nacht (z.B. Bei der Sommer-/Winterzeit-Umstellung müssten 23 Stunden nach vorne gestellt werden).
Über eine minimale Web-Oberfläche kann bei Stromausfall oder ähnlichem die tatsächlich angezeigte Uhrzeit angegeben werden. Code siehe Quellcode.