Designer Uhr aus dem 3D-Drucker mit dem Raspberry Pi: Das Zyklochron
Hätte ich von Anfang an gewusst, wie aufwändig dieses Projekt werden wird, ich glaube nicht, dass ich überhaupt damit begonnen hätte. Wie ich auf die Idee gekommen bin, kann ich leider nicht mehr sagen. Plötzlich war dieses Bild von einer Uhr vor meinem geistigen Auge. Der Beginn einer sehr spannenden Zeit.
Die Idee
Wie schaut dieses Bild nun aus? Im Grunde sehr simpel. Es sind zwei hintereinander stehende Ringe für Stunden und Minuten die irgendwie von einem Mechanismus mit Rollen bewegt werden. Der Durchmesser ist etwa 30 cm und die Breite ungefähr 3 cm. Und diese Ringe sollen keine feste Verbindung mit dem Antrieb haben. Wahrscheinlich kann man sich da jetzt noch nicht viel darunter vorstellen, aber das wird im Laufe des Artikels noch klarer werden.
Jetzt hatte ich also eine vage Idee im Kopf, aber wie geht man so ein Projekt an? Je länger ich darüber nachdachte, umso mehr Fragen tauchten auf. Woher bekomme ich die Ringe? Die Antriebsrollen? Welche Motoren? Wie wird die Uhr gesteuert? Mit welcher Mechanik? Anfangs erschien mir das mit meinen Mitteln ziemlich aussichtslos.
Ringe
Von allen Fragen erschienen mir die Ringe am einfachsten. Welches Material soll ich nehmen? Ich habe mich für Holz entschieden, da mir das am einfachsten zu bearbeiten schien. Grundsätzlich soll die Uhr aber mit jedem Werkstoff funktionieren, egal ob Holz, Aluminium, Acryl oder Glas. Eine erste Suche nach Holzringen in Google und auf Amazon war ernüchternd. Jede Menge Schmuck oder Ringe zum Basteln, aber nichts das sich für meine Uhr eignen würde. In meiner Verzweiflung habe ich mich sogar schon mit Oberfräsen beschäftigt und dutzende Videos auf Youtube angeschaut. Nach langer Suche bin ich endlich auf eine deutsche Firma gestoßen, die Komponenten für den Lautsprecherbau anbietet. Unter anderem auch frei konfigurierbare MDF Holzringe. Für einen Prototyp reicht das aus. Eine Woche später waren die Ringe da. Allerdings waren sie so grob gefräst, dass ich sie dann noch stundenlang schleifen musste.
Mechanik
Die Mechanik war deutlich schwieriger. Vor allem weil ich nicht die geringste Ahnung hatte, wie ich das bauen soll. Wieder habe ich zunächst Amazon bemüht und nach Rollen gesucht. Davon gibt es von Transportrollen über Möbelrollen bis zu Schwerlastrollen alles Mögliche, nur wie sollen die Ringe darauf stehen und wie werden sie angetrieben? Tatsache war, mit meinen Möglichkeiten konnte ich das nicht umsetzen. Aber dann kam mir doch noch die rettende Idee. Vielleicht geht es ja mit einem 3D-Drucker? Zu diesem Zeitpunkt wusste ich noch rein gar nichts über 3D-Drucken. Das hat sich aber schnell geändert und bald darauf war der Drucker bestellt.
Ich habe mich für den Ender 3 Pro von Creality entschieden, da er einigermaßen günstig war und die Reviews recht positiv ausfielen. In zwei Stunden war der Bausatz aufgebaut. Jetzt musste ich nur noch die Bauteile konstruieren, damit der 3D-Drucker auch etwas drucken kann. Schon wieder ein Thema, von dem ich keine Ahnung hatte. Wie und womit macht man CAD Konstruktionen? Meine ersten holprigen Versuche machte ich mit Tinkercad und FreeCAD. Aber irgendwie konnte ich mich mit den Programmen nicht so recht anfreunden. Dann entdeckte ich Fusion 360 von Autodesk. Ich war sofort begeistert von den vielen Möglichkeiten, wie zum Beispiel der Konstruktion von Gewinden oder Zahnrädern. Und da es für den privaten Gebrauch kostenlos ist, wurde es das Tool meiner Wahl. Es folgten viele Youtube Sessions um mit den Funktionen vertraut zu werden. Nach und nach entstanden in den darauffolgenden Wochen alle Teile der Uhr, also das Gehäuse, die Rollen, Zahnräder und die Achsen.Von nun an lief der 3D-Drucker buchstäblich Tag und Nacht, da ich so ziemlich bei jedem Bauteil mehrere Iterationen brauchte, bis es gepasst hat. Alleine das Gehäuse benötigt zum Beispiel über 24 Stunden, bis es fertig ausgedruckt ist. Und leider funktioniert auch nicht jeder Ausdruck. Besonders problematisch war die Haftung auf dem Druckbett. Hier hat meistens Malerkrepp geholfen. Bei sehr dünnen Ausdrucken hat sich das Filament aber trotzdem oft vom Druckbett gelöst. Ein zweites Thema waren die Kugellager in den Rollen. Hier benötigt man eine sogenannte Presspassung, damit die Kugellager in den Rollen gut halten und trotzdem keine rohe Gewalt notwendig ist, um sie in die Rollen zu schieben. Den genauen Innendurchmesser der Rollen konnte ich letztendlich nur mit Ausprobieren ermitteln. 3D-Drucken verlangt wirklich viel Geduld. Dafür hat man auf der anderen Seite beinahe unbegrenzte Möglichkeiten, Gegenstände nach den eigenen Vorstellungen herzustellen.
Elektronik
Für die Steuerung der Uhr hatte ich zwei Optionen. Arduino oder Raspberry Pi. Letztendlich habe ich mich für den Raspberry Pi entschieden, aus dem einfachen Grund, dass er schon eine Uhr eingebaut hat während der Arduino ein weiteres Teil benötigt hätte. Leider hat der Raspberry keine Pufferbatterie, aber dank WLAN holt er sich beim Start immer automatisch die aktuelle Uhrzeit.
Für den Antrieb sind zwei Schrittmotoren zuständig. Da die Motoren für die Drehung der Ringe so gut wie keine Kraft brauchen, habe ich mich für sehr kleine Modelle vom Typ 28BYJ-48 entschieden. Die dazugehörige Motorsteuerung kann einfach auf den Raspberry Pi gesteckt werden. Der große Vorteil dieser Motoren ist, dass sie mit den 5V vom Raspberry Pi Netzteil auskommen und keine eigene Stromversorgung brauchen. Außerdem haben sie ein kleines Getriebe eingebaut, was für einen ruhigen Lauf der Uhr sehr vorteilhaft ist.
Ein letztes Problem war aber noch zu lösen. Woher weiß die Steuerung, wo die Zeiger sind? Die naheliegende Lösung wäre eine Markierung an den Ringen, die mit einem optischen Sensor gemessen werden kann. Allerdings wollte ich nicht, dass man an den Ringen irgendwelche Striche oder Einkerbungen sieht. Irgendwann ist mir dann mein Physikunterricht eingefallen, wo wir über Hall-Sensoren gesprochen haben. Damit können Magnetfelder gemessen werden und einen kleinen Magnet könnte man leicht unter dem Zeiger verstecken. Und tatsächlich, solche Sensoren kann man kaufen. Ein erster Test verlief sehr vielversprechend.
Die ganzen Bauteile, also Schrittmotoren, der Raspberry, die Motorsteuerung und die Hall-Sensoren habe ich dann in das Gehäuse eingebaut. Das war ein sehr spannender Moment, weil ich bis zu diesem Zeitpunkt noch nicht wusste, ob alle Maße und Bohrlöcher in meiner Konstruktion wirklich passen. Glücklicherweise habe ich mich nirgends vermessen und am Ende schaut der Aufbau dann so aus:
Software
Zuletzt blieb noch die Software. Endlich etwas, mit dem ich mich schon auskenne. Grundsätzlich hat der Raspberry Pi eine große Auswahl an Programmiersprachen, mit denen ich die Software implementieren könnte. Ich habe Java verwendet, da ich damit einerseits am meisten Erfahrung habe und es andererseits mit Pi4J eine sehr gute Bibliothek gibt, mit der man auf die GPIO Ports des Raspberry Pi zugreifen kann. Diese Bibliothek basiert wiederum auf WiringPi, die zusätzlich auf dem Raspberry Pi installiert sein muss. Damit ist es nun recht simpel, die ganze Hardware zu steuern, wie zum Beispiel die Schrittmotoren:
Als Entwicklungsumgebung verwende ich die Community Edition von IntelliJ, meiner Meinung nach eine der besten IDEs am Markt. Zusätzlich empfehle ich den Plugin Embedded Linux JVM Debugger, damit kann man aus IntelliJ heraus das Programm auf dem Raspberry Pi starten und auch debuggen.
Die Steuersoftware besteht aus nur wenigen Komponenten. Für Stunden und Minuten wird jeweils ein Thread gestartet, der die nötigen Informationen über die Hardware, speziell die Ports mitbekommt. Die Struktur sieht insgesamt folgendermaßen aus:
Zu Beginn weiß der Thread noch nichts über die Position der Zeiger oder die Größe der Ringe. Daher beginnt der Thread gleich nach dem Start mit der Suche nach dem Zeiger. Ist dieser gefunden, wird die Größe des Rings vermessen. Mit diesen Informationen kann nun die Ist- und Soll-Position der Zeiger berechnet werden. Nach jeder Umdrehung wird die Uhr automatisch neu justiert, damit die beiden Werte nicht auseinander driften. Hier noch ein kurzes Zeitraffer Video, wie das dann aussieht:
Obwohl ich inzwischen doch schon einige Jahre in der Java Entwicklung tätig bin, war das mein erstes Programm, in dem ich mit der realen Welt interagiere. Und diese Welt ist eben nicht digital, was mir anfangs etwas Probleme bereitet hat. Beispielsweise springen die Hall-Sensoren nicht einfach von 0 auf 1, sondern schwingen im Übergansbereich, wenn der Magnet in die Nähe des Sensors kommt. Entsprechend muss die Software mit diesen Situationen umgehen können. Auch ist die Anzahl der Schritte pro Umdrehung nicht immer gleich, daher ist auch die ständige Justierung nötig.
Name
Ein allerletzter Punkt war noch offen. Welchen Namen soll die Uhr haben? Ich habe mir dazu alle möglichen Wörter aufgeschrieben, die mir zu dem Thema einfielen. Rotor, Orbiter, Radial, Clock, Spin, Ring und noch viele andere. Aber alle Wortschöpfungen gab es irgendwie schon, egal ob griechisch, lateinisch oder englisch.
Dann kam ich auf Zyklochron, angelehnt an die griechischen Wörter für Kreis und Zeit. Eine Suche auf Google lieferte.... nichts! Perfekt. Damit hatte die Uhr nun auch ihren Namen.
Finale
Jetzt ist der Prototyp der Uhr also fertig. Seit der ersten Idee sind etwa sieben Wochen vergangen. In dieser Zeit habe ich unglaublich viel gelernt. Vor allem das 3D-Drucken sehe ich als große Bereicherung an, die mir viele Möglichkeiten für zukünftige Projekte eröffnet. Auch im Bereich Elektronik habe ich ein bisschen was dazugelernt. Mit diesem Thema werde ich mich in Zukunft sicher noch intensiver beschäftigen.
Zum Schluss darf natürlich nicht das finale Foto der Uhr fehlen. So schaut sie in ihrer ganzen Pracht aus und läuft seitdem tadellos.Es sind aber auch einige Fragen offen geblieben. Ich weiß immer noch nicht, wer mir solche Ringe aus Acryl oder Aluminium herstellen kann. Besonders schön wären auch Ringe, die aus einem Stück Holz gefräst sind. Geht das überhaupt? Es müsste ein sehr hartes Holz sein das nicht springt. Oder wie könnte ich die gedruckten Teile ohne 3D-Drucker herstellen lassen? Mit Spritzguss? Geht das überhaupt bei so einer geringen Stückzahl? Und wenn ja, was kostet sowas? Ein weiteres Problem sind die Zahnräder. Die Genauigkeit des 3D-Druckers reicht hier leider nicht aus. Die Zähne gleiten nicht sanft ineinander, wie es eigentlich sein sollte, sondern verhaken sich manchmal ein wenig, was den Lauf etwas unruhig macht.
Wie man sieht, es gibt noch einiges zu tun und ich bin mir sicher, dass das nicht die letzte Version der Uhr ist. So stay tuned :)