Bodet BT 6.30 Klappzahlen-Nebenuhr mit ESP32 Steuerung

Ich habe es schon wieder getan. Diesmal habe ich auf einem Kleinanzeigenportal eine recht günstige Bodet BT 6.30 Klappzahlenuhr mit Datumsanzeige gefunden und natürlich gleich zugeschlagen. Auch diese Uhr ist eine Nebenuhr, daher habe ich sie wieder mit einem ESP32 Mikrocontroller umgerüstet, damit sie ohne Mutteruhr funktioniert. 

Bodet BT 6.30 Klappzahlenuhr

Leider war die Uhr nicht im allerbesten Zustand. Die Front war ziemlich zerkratzt, das Logo abgebrochen und anscheinend wurden auch einmal die Wände gestrichen, ohne die Uhr vorher zu entfernen.

Im Inneren der Uhr gab es noch eine böse Überraschung. Zwei völlig verkohlte Widerstände neben zwei kleinen Akkus, was mir im ersten Moment etwas Sorgen gemacht hat, ob die Uhr überhaupt noch funktioniert. Der Vorbesitzer meinte, dass er die Uhr nur als Deko verwendet hat, also konnte er mir auch nicht sagen, ob sie noch geht. Aber bevor ich das testen konnte, musste ich erst verstehen, wie der Mechanismus überhaupt funktioniert.

Wie funktioniert diese Klappzahlenuhr?

Ein Blick in das Innere der Uhr zeigt, dass der obere Aufbau mit der Uhrzeit beinahe völlig identisch mit der Klappzahlenuhr ohne Datum ist. 

Bodet BT 6.30 Klappzahlenuhr Innenleben

Nur auf der linken Seite befindet sich eine zusätzliche Exzenterscheibe, mit der über einen Hebel alle 24 Stunden der Tag umschaltet wird. Beim Übergang von 31 auf eine 1 wird wiederum der Monat umgeschaltet. Hätten alle Monate 31 Tage, wäre die Mechanik damit schon fertig. 

Bodet BT 6.30 Klappzahlenuhr Motor

Da dies aber nicht so ist, hat die Uhr eine ausgeklügelte Mechanik, mit der gesteuert wird, wie viele Tage ein Monat hat. Da die Klappzahlen ja 31 Tage haben, befindet sich an der Seite ein Motor, der die Tage einfach weiterdreht, wenn der Monat weniger als 31 Tage hat. Über ein Zahnrad mit genau 31 Zähnen und Schleifkontakten wird erfasst, auf welchem Tag die Mechanik gerade steht.

Bodet BT 6.30 Klappzahlenuhr Kodierscheibe Monat

Auf der anderen Seite der Datumsmechanik befindet sich eine Kodierscheibe, mit der die Anzahl der Tage pro Monat gesteuert wird.

Bodet BT 6.30 Klappzahlenuhr rechte Seite

Diese Scheibe kodiert aber nicht nur ein Jahr, sondern gleich vier Jahre, damit auch die Schaltjahre richtig funktionieren. Bei jedem Monatswechsel dreht sich diese Scheibe also ein bisschen weiter und macht alle vier Jahre eine komplette Umdrehung. Damit werden zwar nicht alle Schaltjahr-Regeln abgedeckt, aber das wird erst wieder im Jahr 2100 zum Problem, daher sehe ich das sehr gelassen :-)

Bodet BT 6.30 Klappzahlenuhr Kodierscheibe Jahr

Der Motor, der das Datum gegebenenfalls weiterdreht, muss irgendwie mit Strom versorgt werden. Da es sich um eine Nebenuhr handelt, gibt es aber keine konstante Stromversorgung sondern nur Impulse mit abwechselnder Polarität. Dafür dürfte diese kleine Platine mit den verkohlten Widerständen zuständig sein.

Bodet BT 6.30 Klappzahlenuhr verkohlte Widerstände

Bei dem anderen Bauteil scheint es sich um einen Gleichrichter zu handeln, mit dem durch diese Impulse die Akkus langsam geladen werden. Das ist zwar nur eine Vermutung, macht aber meiner Meinung nach Sinn. Da ich diesen Teil aber nicht brauche, habe ich diese Platine ausgebaut.

Test der Datumsmechanik

Die Funktion der Klappzahlen konnte ich ganz einfach mit den entsprechenden Hebeln an der Uhr testen. Sie haben alle problemlos funktioniert. Für den Test des Motors habe ich probeweise eine Spannung von 3 Volt direkt an den Motor angelegt. Allerdings hat sich der Motor kein bisschen bewegt.

Bodet BT 6.30 Klappzahlenuhr Motor

Daher habe ich den Motor ausgebaut, die beiden Schleifkontakte entfernt und vorsichtig gereinigt. Zusätzlich habe ich auch gleich den Motor und die Zahnräder ein wenig mit Feinmechaniköl geölt. Und siehe da, nach dem Zusammenbau hat der Motor wieder wunderbar funktioniert.

Da jetzt klar war, dass die komplette Mechanik noch funktioniert, konnte ich mich der Elektronik widmen.

Steuerung der Klappzahlenuhr mit dem ESP32

Ursprünglich wollte ich für diese Uhr die gleiche Steuerung wie bei den anderen Klappzahlenuhren verwenden. Allerdings ist die Situation diesmal etwas anders:

  • Der Motor benötigt eine Spannung von etwa 3 Volt, die die Elektronik bereitstellen muss.
  • Bei den Klappzahlenuhren, die nur die Uhrzeit anzeigen, konnte ich die Uhrzeit einfach weiterdrehen, wenn sie vorgeht, wie zum Beispiel bei der Umstellung von Sommer- auf Winterzeit. Hier springt die Zeit von 3:00 auf 2:00, daher blättert die Uhr einfach 23 Stunden vor und zeigt dann wieder die richtige Zeit an. Das geht bei dieser Uhr nicht, da sie ja ganze 4 Jahre weiterblättern müsste, bis die Uhrzeit und das Datum wieder stimmen.
  • Ich möchte diesmal meine neue WLAN-Provisioning Bibliothek verwenden, daher brauche ich auch keine Buttons mehr am Mikrocontroller, um die Uhr auf 0:00 zu stellen.
  • Bei dieser Uhr ist auch die Wandhalterung dabei, daher muss ich keine Halterung drucken, in der ich die Elektronik unterbringen kann. 

Daher habe ich sowohl die Elektronik als auch die Software für diese Uhr neu entwickelt. 

Die Elektronik

Für die Elektronik habe ich folgende Komponenten verwendet:

  • Step-Up Konverter, der aus den 5 Volt vom USB Anschluss 12 Volt erzeugt. Zusätzlich kann dieser Konverter einen Akku laden und versorgt somit die Uhr auch bei einem Stromausfall.
  • Step-Down Konverter, der aus den 12 Volt die 3,3 Volt für den Mikrocontroller und den Motor erzeugt.
  • L293D Motortreiber zur Erzeugung der Impulse für den Schrittmotor.
  • ESP32-DevKitC V4 Modul

Die gesamte Schaltung sieht folgendermaßen aus:

Bodet BT 6.30 Klappzahlenuhr Schaltung

Die Module habe ich auf eine Lochrasterplatine gelötet und auf der Unterseite verbunden. Das Ergebnis sieht dann so aus:

Bodet BT 6.30 Klappzahlenuhr Elektronik

Auf der rechten Seite der Uhr ist genug Platz, um die Platine samt Akku unterzubringen. Dazu habe ich mir eine kleine Halterung konstruiert, die in die Stifte gesteckt wird, die zufälligerweise an dieser Stelle im Gehäuse sind. 

Bodet BT 6.30 Klappzahlenuhr Halterung für Elektronik

Die Platine wird einfach in die Halterung gesteckt und die Halterung für den Akku habe ich mit doppelseitigem Klebeband befestigt. Zuletzt müssen nur noch die Drähte verbunden werden. Für die Stromversorgung verwende ich dafür die Leitungen, die normalerweise das Signal für die Nebenuhr liefern.

Bodet BT 6.30 Klappzahlenuhr Steuerung

Was noch fehlt, ist der USB-Stecker. Dazu habe ich die Aussparung auf der Seite der Halterung verwendet und auch dafür einen kleinen Adapter konstruiert, der einfach in diese Aussparung gesteckt wird. 

Bodet BT 6.30 Klappzahlenuhr USB-Stecker

Zuletzt wird noch nach das Kabel des USB-Stecker mit der Lüsterklemme verschraubt.

Bodet BT 6.30 Klappzahlenuhr Rückseite mit USB-Stecker

Dabei müssen natürlich die Verbindungen genutzt werden, die auch in der Uhr für die Stromversorgung verwendet werden.

Bodet BT 6.30 Klappzahlenuhr Rückseite

Später steckt man die Uhr dann einfach auf diese Halterung. Somit musste ich keinerlei Löcher in die Uhr bohren oder etwas Ähnliches, damit das Original auf keinen Fall beschädigt wird.

Die Software

Wie oben schon erwähnt, entfällt diesmal die Steuerung der Uhr über die Buttons, da sich das Prinzip etwas geändert hat. Das Grundproblem bei der Steuerung ist die Synchronisation der Uhrzeit des Mikrocontrollers und der Zeit, die auf der Uhr angezeigt wird. Da es keinen Mechanismus gibt, wie der Mikrocontroller diese mechanische Zeit auslesen kann, muss sie ihm einmal zu Beginn mitgeteilt werden. In der alten Steuerung war es so, dass man die Klappzahlenuhr mit den Buttons auf 0:00 stellen musste und der Mikrocontroller das als Startwert angenommen hat.

In der neuen Steuerung ist es umgekehrt. Während des WLAN-Provisionings wird dem Mikrocontroller mitgeteilt, welche Uhrzeit gerade auf der Uhr angezeigt wird. Mit diesem Wert wird dann das Delta zur tatsächlichen Uhrzeit berechnet und entsprechend werden die Impulse geschickt, um die richtige Uhrzeit auf der Uhr einzustellen. Die Grundstruktur der Software ist daher sehr einfach:

extern "C" void app_main(void) {
    ESP_LOGI(TAG, "Application starting...");

    FlipClock clock(PULSE_GPIO_ENABLE, PULSE_GPIO_INPUT1, PULSE_GPIO_INPUT2,
                    PULSE_WIDTH_MS, PULSE_INTERVAL_MS);

    WifiProvisioner provisioner;

    if (provisioner.is_provisioned()) {
        provisioner.get_credentials();
    } else {
        provisioner.start_provisioning("BT630 Setup", false);
    }

    provisioner.connect_sta("BT630 Clock");

    while(!provisioner.is_time_synchronized()) {

        ESP_LOGI(TAG, "Zeit ist noch nicht mit dem NTP-Server synchronisiert.");

        // Warte eine Sekunde bis zur nächsten Ausgabe
        vTaskDelay(pdMS_TO_TICKS(1000));
    }
    
    clock.setTime(provisioner.get_provisioned_hour(), provisioner.get_provisioned_minute());

    // Hauptschleife: Einfach und sauber
    while (true) {
        clock.update();
        vTaskDelay(pdMS_TO_TICKS(1000));
    }

}


Die Logik zum Vergleichen der Uhrzeit und das Senden der Impulse befindet sich in der FlipClock Klasse:

void FlipClock::update() {
    time_t now;
    time(&now);
    
    time_t current_minute_floored = (now / 60) * 60;

    if (_clock_time < current_minute_floored) {
        int minutes_to_flip = (current_minute_floored - _clock_time) / 60;
        ESP_LOGI(TAG, "Uhr geht %d Minute(n) nach. Sende Impuls(e)...", minutes_to_flip);
        
        _send_pulses_internal(minutes_to_flip);
        
        _clock_time = current_minute_floored;
        ESP_LOGI(TAG, "Zeit ist wieder synchron.");
    }
}


Da eine Klappzahlenuhr nicht rückwärts laufen kann, werden nur dann Impulse geschickt, wenn die Zeit der Klappzahlenuhr hinter der tatsächlichen Uhrzeit liegt. Sollte es umgekehrt sein, wartet die Steuerung einfach, bis es wieder passt. Konkret wird man das bei der Umstellung von Sommer- auf Winterzeit sehen. Wenn um 3 Uhr die Zeit eine Stunde zurückgestellt wird, wartet die Uhr eine Stunde, bis die beiden Zeiten wieder synchron sind.

Den kompletten Sourcecode der Steuerung gibt es auf GitHub.

Feintuning

Da die Uhr optisch nicht im besten Zustand war, habe ich auch alle Teile gründlich geputzt. Die Front habe ich gefühlt stundenlang mit einer Polierpaste bearbeitet. Aber es hat sich gelohnt, es sind praktisch keine Kratzer mehr zu sehen.

Bodet BT 6.30 Klappzahlenuhr polierte Front

Ein weiteres Problem war das Logo. Dazu habe ich das Logo von Bodet einfach nachgezeichnet und ausgedruckt. Es ist natürlich nicht so fein wie das Original, aber auf die Entfernung fällt das kaum auf.

Bodet BT 6.30 Klappzahlenuhr Logo aus dem 3D-Drucker

Der 0,4 mm Nozzle ist wohl einfach etwas zu grob für so feine Strukturen. Vielleicht probiere ich es später noch einmal mit einem 0,25 mm Nozzle.

Inbetriebnahme

Die Bodet BT 6.30 ist keine Uhr, die man einfach einschalten kann und dann läuft sie. Vorher müssen noch Datum und Uhrzeit eingestellt werden. Dazu gibt es in der Uhr einige Hebel, mit denen die Fallblätter bewegt werden können.

Bodet BT 6.30 Klappzahlenuhr Technische Zeichnung

Bei der Einstellung muss eine bestimmte Reihenfolge eingehalten werden:

  1. Minuten mit dem Hebel 1 auf 00 stellen
  2. Stunden mit dem Hebel 2 auf 0 stellen
  3. Den Tag mit Hebel 3 auf 1 stellen
  4. Den Monat mit Hebel 4 auf den aktuellen Monat im richtigen Jahr stellen. Man kann entweder den Monat so lange weiter blättern, bis auch das Jahr stimmt, oder bei gedrücktem Hebel 4 mit Hebel 5 die Jahresscheibe weiterdrehen. Das eingestellte Jahr sieht man hinter dem Hebel 5 und muss entsprechend den Werten auf der Scheibe (1977, 1978, 1979, 1980)  so eingestellt werden, dass die Differenz zum aktuellen Jahr ein Vielfaches von 4 ist, also bei 2025 = 1977 +  4 * 12
  5. Jetzt mit Hebel 3 den richtigen Tag einstellen
  6. Mit Hebel 2 die Stunden einstellen
  7. Mit Hebel 1 die Minuten einstellen

Nach diesen Schritten kann das Gehäuse der Uhr geschlossen und die Stromversorgung über den USB-Stecker auf der Rückseite angeschlossen werden.

Im nächsten Schritt erfolgt die Einbindung der Uhr in das eigene WLAN. Dazu verbindet man sich mit dem Smartphone mit dem WLAN BT630-Setup. Danach erscheint auf dem Smartphone die Provisioning Seite:

Bodet BT 6.30 Klappzahlenuhr WLAN Provisioning

Hier wählt man sein WLAN aus, gibt das entsprechende Passwort und die Werte für Stunde und Minute ein, die auf der Klappzahlenuhr angezeigt werden. Nach einem Klick auf Speichern & Verbinden verbindet sich die Uhr mit dem WLAN, und nach erfolgreicher Synchronisation mit einem Zeitserver stellt sich die Uhr automatisch ein. Ab jetzt läuft die Uhr. Da die Stromversorgung mit einem Akku gepuffert ist, kann man die Uhr ganz bequem an den Platz stellen, wo sie in Zukunft hängen soll.

Fazit

Damit wäre dieses Projekt abgeschlossen und ich habe wieder ein neues Schmuckstück in meiner Wohnung. Mir gefällt diese Uhr wahnsinnig gut, ich muss nur noch überlegen, wo sie hängen soll.

Bodet BT 6.30 Klappzahlenuhr

Wie auch schon bei den anderen Uhren finde ich es sehr beeindruckend, wie langlebig diese mechanischen Uhren sind. 

Bei Fragen oder sonstigen Anregungen schreibt mir einfach eine Nachricht. Ich freue mich immer über Feedback!

Konversation wird geladen