Motivation
Elektronische Fokussiersysteme gibt es fertig zu kaufen, entweder als Komplettlösung vom Teleskop- bzw. Okularauszughersteller, oder zum Nachrüsten von diversen Drittanbietern. Die Preisspannen sind beträchtlich und allgemein recht hoch (i.d.R. mehrere hundert Euro). Diese Systeme bestehen im Wesentlichen aus drei Hauptkomponenten:
- Einem Schrittmotor zum Bewegen des Okularauszuges
- Einem Schrittmotortreiber
- Einem Mikrocontroller für die Logik und die Ansteuerung des Motortreibers
Da die Programmierung eines Mikrocontrollers für mich als Informatiker kein großes Problem ist und ich auch weiß, an welchem Ende ein Lötkolben heiß wird, entschloss ich mich, mir solch ein Gerät selbst zu bauen. Es sollte folgende Anforderungen erfüllen:
- Steuerung des Motors per Hand über zwei Taster für rein/raus bei visueller Beobachtung
- Steuerung des Motors vom Computer via INDI- oder ASCOM-Treiber aus der Aufnahmesoftware heraus für die Astrofotografie (Autofokus)
- Betrieb mit 12 V Gleichspannung
- Verwendung mit verschiedenen Schrittmotoren
- Materialkosten deutlich unter dem Preis der kommerziellen Lösungen
Auswahl der Motoren
An einem meiner Newton-Teleskope hatte ich schon einen Motor (McLennan P542-M48), den ich weiter verwenden wollte. Für die anderen suchte ich nach einem kleinen aber ausreichend stark untersetzten Motor für genug Kraft und Auflösung pro Schritt. Der günstige (ca. 5 €) 28BYJ-48 mit einem 1/64 Getriebe erfüllt diese Anforderungen. Diese Motoren sind bei vielen Elektronikversendern erhältlich.
Adaption des Motors an den Auszug
Zur Adaption des Motors an den Auszug habe ich zwei Varianten realisiert. An meinem 30 cm Newton mit 2 Zoll FeatherTouch Auszug habe ich den Motor über eine Wellenkupplung direkt mit der Welle der Feinfokussierung verbunden. Die Wellenkupplung habe ich auf meinem 3D-Drucker gefertigt. Ferner wurde ein Motorgehäuse und eine Befestigungsschiene in FreeCAD entworfen und auf dem 3D-Drucker gedruckt.
Die Adaption über eine Wellenkupplung hat den Nachteil, dass sie nicht so einfach zu entfernen ist. Eine Fokussierung per Hand ist somit nicht mehr möglich. Für meine anderen Teleskope entschied ich mich daher für eine Adaption über einen Zahnriemen. Dieser kann relativ leicht entfernt oder gelockert werden und dann kann man wieder von Hand fokussieren. Die notwendigen Zahnriemenscheiben und Befestigungen für den Motor wurden wieder mit FreeCAD und dem 3D-Drucker gefertigt.
Die elektronischen Komponenten
Für die Ansteuerung von Schrittmotoren gibt es heutzutage einige fertige Treibermodule, die recht leistungsfähig und preiswert sind. Ich entschied mich für ein DRV8825 Treibermodul. Dieses Modul ist sehr einfach vom Mikrocontroller aus anzusteuern und kann Motoren von 8,5 V bis 45 V mit bis zu 2,2 A Strangstrom bedienen, beherrscht Mikroschrittbetrieb bis zu 1/32 und kostet ca. 3 €.
Beim Mikrocontroller entschied ich mich für den ESP32 in Form eines ESP32 DevKitC V4 (Kosten ca. 10 €). Der ESP32 ist zwar eigentlich für solch ein Projekt schon deutlich überdimensioniert, aber ich hatte noch einige davon herumliegen. Man könnte aber stattdessen auch einen Arduino Nano, Raspberry Pico oder ähnliches verwenden. Der ESP32 lässt sich mit der Arduino-IDE in C/C++ programmieren.
Der ESP32 benötigt eine Spannungsversorgung von 5 V. Um von 12 V, mit denen auch der Motor betrieben werden sollte, auf diese 5 V zu kommen wurde noch ein einstellbares Abwärtsreglermodul (buck converter) LM2596 (Kosten < 2 €) eingeplant. Davor habe ich noch einen Brückengleichrichter als Verpolungsschutz gesetzt. Bei den Steckern für die 12 V Spannungsversorgung verwende ich in meiner Sternwarte mittlerweile (fast) ausschließlich Anderson-Powerpole-Verbinder. Diese sind sehr kontaktsicher, erlauben hohe Ströme und sind bei entsprechender Konfektionierung der Kabel verpolungssicher.
Die Schaltung
Die 12 V von der Spannungsversorgung werden zunächst über einen Schalter und den Brückengleichrichter (beide sind im Schaltplan weggelassen) zum Abwärtsregler geführt, der dann die 5 V für den ESP32 bereitstellt. Die 12 V gehen dann noch zum Motortreiber für den Betrieb des Motors. Das ESP32 DevKit stellt an einem seiner Pins noch 3,3 V bereit, die zur Beschaltung der Logikeingänge verwendet werden. Zwei dieser digitalen Eingänge des ESP32 sind mit zwei Tastern verbunden. Über die Betätigung dieser Taster kann dann der Auszug rein oder raus gefahren werden. Ferner ist an einem weiteren digitalen Eingang ein Schalter verbunden, mit dem man zwischen schnell und langsam umschalten kann. Da der ESP32 über interne Pullup- und Pulldown-Widerstände verfügt, die man softwareseitig auf die Eingänge legen kann, können externe Pulldown-Widerstände entfallen.
Drei digitale Ausgänge des ESP32 sind mit den Eingängen MS1 bis MS3 des DRV8825 verbunden. Über sie kann der Mikroschrittmodus ausgewählt werden (Vollschritt bis 1/32 Mikroschritt). Ein digitales Signal des ESP32 steuert die Drehrichtung des Motors (DIRECTION). Mit einem weiteren digitalen Ausgang des ESP32 werden die einzelnen (Mikro-)Schritte des Motors ausgelöst (STEP). Schließlich dient noch ein digitaler Ausgang des ESP32 dazu die Ausgänge des DRV8825 überhaupt zu aktivieren (ENABLE).
Vier Ausgänge des DRV8825 sind mit den Wicklungen des Motors verbunden.
Ein 100 µF Kondensator zur Stabilisierung zwischen +12 V und Masse rundet die Schaltung ab (siehe Schaltplan). Da ich nur zwei oder drei Geräte bauen wollte, und der Verdrahtungsaufwand überschaubar war, war mir der Aufwand für eine gedruckte Platine zu hoch. Stattdessen wurde die Schaltung auf einer Lochrasterplatine aufgebaut. Schließlich wurde die Platine mit den Tastern und Schaltern in ein Gehäuse eingebaut, welches auch wieder dem 3D-Drucker entsprungen ist (siehe Bild 3). Der Anschluss der Motoren erfolgt über Kabel mit DB-9-Steckern.
PC-Anbindung via INDI/ASCOM
Wird der ESP32 über ein USB-Kabel mit dem PC verbunden, so meldet er sich beim PC als neue serielle Schnittstelle. Über diese Schnittstelle erfolgt dann die Kommunikation zwischen der INDI/ASCOM-Anwendung und dem Fokussierer.
Um zu vermeiden, dass ich auf der PC-Seite auch noch einen INDI- (meine Aufnahmesoftware KStars/Ekos läuft unter Linux) oder ASCOM-Treiber schreiben und installieren muss, habe ich auf dem ESP32 einfach ein Protokoll implementiert, für das es PC seitig schon entsprechende Treiber gibt. Die Wahl fiel hier auf das Protokoll für die MoonLite Fokusierer. Das Protokoll ist recht einfach aufgebaut und ordentlich dokumentiert, was die Implementierung enorm erleichterte.
In der CCD-Aufnahmesoftware auf dem PC wählt man dann den INDI- bzw. ASCOM-Treiber für einen MoonLite-Auszug. Damit sollte die Aufnahmesoftware dann in der Lage sein automatisch zu fokussieren. Bei mir funktioniert das mit KStars/Ekos problemlos.
Die Programmierung
Das Programm für den ESP32 muss folgende Aufgaben erfüllen:
- Die Betätigung der beiden Taster für rein/raus erkennen und darauf reagieren
- Das Umschalten des Schalters für schnell/langsam erkennen und darauf reagieren
- Eingehende Kommandos vom PC erkennen und ausführen
- Den Schrittmotortreiber zum Bewegen des Motors ansteuern
Die Implementierung erfolgte in C/C++.
Um einen gleichmäßigen Lauf des Motors zu gewährleisten, wird die Methode zur Erzeugung der STEP-Impulse für den Motortreiber über einen Timer-Interrupt aufgerufen. Wird der Schalter von schnell auf langsam geschaltet, so wird der Motortreiber einfach vom Vollschrittmodus in den ¼-Mikroschrittmodus geschaltet und umgekehrt. Praktisch alle Taster prellen beim Drücken und Loslassen. D.h. es erfolgt ein mehrfaches Schließen und Öfnen des Kontaktes bis das Signal stabil anliegt. Das ist bei der visuellen Beobachtung extrem nervig, wenn man über die Taster fokussiert. Daher muss man die Taster entprellen. Das kann entweder per Hardware mit einem RC-Glied als Tiefpassfilter erfolgen, oder man erledigt das per Software. Da es zum Entprellen fertige Softwarelösungen gibt, bietet es sich an diese zu verwenden. Damit braucht man keine zusätzlichen Hardwarekomponenten und die Schaltung bleibt simpel. Eine Routine horcht auf die serielle Verbindung (via USB) zum PC und reagiert auf eingehende Kommandos im MoonLite-Protokoll. Ein Kommando beginnt stets mit einem Doppelpunkt und endet mit einem Rautenzeichen (#). Mit dem Kommando [:GP#] fragt der Computer z.B. nach der aktuellen Position des Auszuges. Der ESP32 Antwortet dann mit einer vierstelligen Hexadezimalzahl für die Position gefolgt von einem Rautenzeichen. Entsprechend gibt es weitere Kommandos zum Setzen einer Sollposition, zum Fahren zu dieser Sollposition und einiges mehr.
Fazit
Mittlerweile habe ich zwei dieser Fokussierer schon einige Zeit im Einsatz und bin sehr zufrieden. Sie funktionieren so, wie ich mir das vorgestellt habe. Dabei lagen die Materialkosten pro Fokussierer bei ca. 35 bis 40 Euro. Die investierte Arbeitszeit habe ich nicht genau erfasst, aber es kamen natürlich einige Stunden zusammen. Wer also Spaß am Selbstbau hat, für den ist solch ein Projekt sicher lohnenswert.
Material:
1 ESP32 DevKitC V41 DRV8825 Schrittmotortreiber
1 28BYJ-48 Schrittmotor
1 Brückengleichrichter (optional)
1 LM2596 Buck Converter
2 Kippschalter (Ein/Ein)
2 Taster
1 100µF Elko
1 Lochrasterplatine
Kabel