Magnetuhr «Geduldsuhr»

Uhr ohne Zeiger: Eine Stahlkugel wandert magnetisch angetrieben einmal in zwölf Stunden ums Zifferblatt

Abgeschlossen
Magnetuhr «Geduldsuhr»

Die Magnetuhr zeigt die Zeit ohne Zeiger und ohne Display: Eine Stahlkugel liegt in einer Nut im hölzernen Zifferblatt und wandert Minute für Minute weiter. Angetrieben wird sie von einem Permanentmagneten, der hinter dem Zifferblatt rotiert und die Kugel durch das Holz hindurch mitnimmt. Sichtbar ist nur die Kugel – der Mechanismus bleibt vollständig verborgen.

Den Namen „Geduldsuhr“ verdankt sie ihrem Ablesetempo: Die Kugel braucht zwölf Stunden für eine volle Runde und bewegt sich jede Minute um genau eine Minutenteilung weiter. Wer die Uhr beim Weiterrücken beobachten will, muss warten können.

Dies ist Version 2 aus dem Jahr 2022. Konstruktion, Elektronik und Arduino-Programm sind vollständig dokumentiert und stehen zusammen mit den CAD-Modellen zum Download bereit.

Technische Daten

AnzeigeStahlkugel im Zifferblatt, magnetisch mitgenommen
Umlaufzeit12 Stunden pro voller Umdrehung
Schrittweite1 Minute = 1/720 Umdrehung des Rotors
MikrocontrollerArduino Mega 2560 Rev 3
ZeitbasisEchtzeituhr DS3231 mit Pufferbatterie
MotorNema-14-Schrittmotor
TreiberPololu A4988, 3200 Mikroschritte pro Umdrehung
GetriebeSchneckentrieb 1:18, selbsthemmend
Schritte je Minute80 Mikroschritte (= 1/40 Motorumdrehung)
VersorgungNetzteil 230 V / 12 V, 4 A
Bedienungzwei Taster für Korrektur vor- und rückwärts
MaterialHolzgehäuse, 3D-Druck-, CNC- und Drehteile

So funktioniert die Anzeige

Hinter dem Zifferblatt sitzt ein Mitnehmer mit eingebautem Permanentmagneten. Er dreht sich langsam und zieht die Stahlkugel, die vorn in einer kreisrunden Nut liegt, magnetisch mit. Weil die Kraft durch das Holz hindurch wirkt, gibt es keine Durchführung, keine Achse und keine sichtbare Mechanik auf der Vorderseite – nur eine Kugel, die scheinbar von selbst wandert.

Das Zifferblatt trägt eine Laserbeschriftung mit Stunden- und Minutenteilung. Abgelesen wird die Stunde an der Position der Kugel, so wie man sonst den Stundenzeiger liest.

Antrieb und Untersetzung

Die Rechnung hinter der Bewegung ist der Kern des Projekts. Der Rotor soll sich in einer Minute um 1/720 Umdrehung weiterdrehen – zwölf Stunden entsprechen 720 Minuten und einer vollen Runde.

  • Ein selbsthemmender Schneckentrieb mit 1:18 übersetzt die Motordrehung ins Langsame. Der Motor muss sich also um 18 × 1/720 = 1/40 Umdrehung drehen.
  • Der A4988-Treiber läuft mit 3200 Mikroschritten pro Umdrehung. Eine Vierzigstel-Umdrehung sind damit exakt 80 Schritte – eine glatte ganze Zahl, sodass sich über den Tag kein Rundungsfehler aufsummiert.

Dass die Schnecke selbsthemmend ist, erledigt nebenbei ein Problem, das sonst Strom und Nerven kostet: Das Getriebe hält die Position von allein. Der Schrittmotortreiber muss zwischen zwei Minuten nicht bestromt bleiben, um den Rotor zu halten. Im Programm wird der A4988 deshalb nur für die 80 Schritte freigegeben und danach sofort wieder abgeschaltet – das vermeidet das typische Sirren eines dauerhaft bestromten Schrittmotors in einem Wohnraum.

Aufbau und Hauptkomponenten

Im Gehäuse sind sechs Baugruppen untergebracht:

  • Arduino Mega 2560 – liest die Echtzeituhr aus und steuert den Motor
  • Platine – verbindet die Arduino-Pins mit Treiber und Echtzeituhr und bringt einen separaten DC-Eingang für die Motorspannung mit
  • A4988-Schrittmotortreiber
  • Echtzeituhr DS3231 mit eigener Pufferbatterie
  • Nema-14-Schrittmotor mit Schneckentrieb
  • Magnetrotor – der Mitnehmer mit dem Permanentmagneten

Die Trennung von Logikspannung und Motorspannung ist bewusst so gewählt: Der Arduino wird über seinen eigenen Eingang versorgt, der Motor über einen separaten 12-V-Anschluss. Damit schlagen die Stromspitzen beim Anfahren des Schrittmotors nicht auf die Versorgung des Mikrocontrollers durch.

Platine

Die Platine ist eine einseitig kupferbeschichtete Leiterplatte (35 µm), deren Leiterbahnen auf der eigenen CNC-Fräse gefräst statt geätzt wurden. Sie nimmt die Echtzeituhr, den Treiber, die Steckverbinder für den Schrittmotor, den DC-Eingang für die Motorspannung und die Anschlüsse für die beiden Taster auf.

Arduino-Programm

Das Programm ist bewusst schlank gehalten. In der Hauptschleife wird nur geprüft, ob die Echtzeituhr eine neue Minute meldet – und wenn ja, fährt der Motor 80 Schritte. Die Zeit selbst wird nicht im Arduino gezählt, sondern kommt aus dem DS3231. Das ist der Grund, warum die Uhr auch nach Wochen noch stimmt: Ein Arduino allein hätte längst Sekunden verloren.

void loop()
{
  // Minute aus der RTC lesen und bei jeder neuen Minute
  // den Schrittmotor um genau eine Minute weiterdrehen
  minute = myRTC.getMinute();
  if (minute != LastMinute)
  {
    Step1MinuteCW();
    LastMinute = minute;
  }
}

void Step1MinuteCW()
{
  digitalWrite(6, LOW);    // Treiber aktivieren
  digitalWrite(4, LOW);    // Richtung: im Uhrzeigersinn
  for (stepCounter = 0; stepCounter < steps; stepCounter++)
  {
    digitalWrite(5, HIGH);
    delayMicroseconds(stepdelay);
    digitalWrite(5, LOW);
    delayMicroseconds(stepdelay);
  }
  digitalWrite(6, HIGH);   // Treiber wieder abschalten
}

Zwei Taster sind als Interrupt-Eingänge ausgeführt und dienen der Korrektur: Der eine schiebt die Kugel eine Minute im Uhrzeigersinn weiter und setzt gleichzeitig die Sekunden auf null, der andere eine Minute zurück. Damit lässt sich die Anzeige nach dem Einschalten auf die tatsächliche Kugelposition bringen, ohne die Uhrzeit in der RTC anzufassen.

Der vollständige Sketch steht unten zum Download bereit und ist in der Dokumentation Zeile für Zeile kommentiert.

Teile und Fertigung

Die Stückliste umfasst rund 40 Positionen, die sich in vier Gruppen aufteilen. Diese Mischung ist typisch für ein Werkstattprojekt: Was schnell gehen muss, wird gedruckt; was genau sein muss, wird gefräst oder gedreht.

  • 3D-Druckteile – Bügel für Schrittmotor und Getriebe, Lagerhalterungen, Halterung für die DC-Buchse, Halter für Treiberplatine und Arduino
  • CNC-Teile – Zifferblatt mit Laserbeschriftung, Rückwandteile mit Ausschnitten für Arduino und Taster, Plexiglasscheibe als Rückwandabdeckung sowie die Leiterplatte selbst
  • Drehteile – Wellen und Lagersitze
  • Kaufteile – Schneckengetriebe, Schrittmotor, Kugel und Permanentmagnet, Lager, Treiber, Echtzeituhr, Arduino, Steckverbinder, Taster und DC-Buchse

Unterlagen und Download

Die Dokumentation enthält Konzept, Konstruktionszeichnungen, Schaltplan, Platinenlayout, die Untersetzungsrechnung, den kommentierten Arduino-Sketch und die vollständige Stückliste mit Fertigungsart je Teil.

Hinweise für Nachbauer

Der kritische Punkt ist das Zusammenspiel von Magnetkraft, Wandstärke des Zifferblatts und Gewicht der Kugel. Ist der Abstand zu gross oder der Magnet zu schwach, bleibt die Kugel im oberen Bereich der Nut zurück, wo sie gegen die Schwerkraft mitgenommen werden muss. Hier lohnt es sich, mit Reststücken zu probieren, bevor das fertige Zifferblatt gefräst wird.

Ebenfalls beachten: Der Schneckentrieb muss selbsthemmend sein. Ein nicht selbsthemmendes Getriebe würde bedeuten, dass der Motor dauerhaft bestromt bleiben müsste – mit Abwärme und hörbarem Sirren rund um die Uhr.

Verwandte Projekte aus derselben Werkstatt: die 4. CNC-Achse und der Teilapparat, beide ebenfalls mit Schrittmotor und Untersetzung.