Python-basierte Steuerung eines Teleskops mit einer azimutalen Montierung

AstroFun

Aktives Mitglied
Hallo,
nachdem die DIY-Montierung für ein Omegon ProNewton N 203 /1000 OTA soweit fertig ist
(Projekt: Selbstbau einer Dobson-ähnlichen Montierung aus Alu-Profilen) , geht es jetzt an die Software.
Ich programmiere gerne, von daher soll die Steuerung in Python selbstgeschrieben werden. Als Steuerrechner ist ein 8 Jahre altes Notebook mit Windows 11 im Einsatz.

Die Montierung ist eine azimutale Montierung angesteuert über Schrittmotoren. Dabei ist die horizontale Bewegung konventionell angetrieben durch einen Schrittmotor mit einem 10:1 Planetengetriebe. Der Motor treibt eine Riemenscheibe mit 14 Zähnen, die in einen umgekehrten Zahnriemen (368 Zähne ) auf einem Axiallager (300 mm Durchmesser) eingreift.
Die vertikale Bewegung ist etwas speziell. Hier treibt ein Schrittmotor einen CNC-Linearantrieb, der über einen Hebel das Teleskop dreht. Die Länge des Hebels passt sich über 2 parallele Linearführungen an.
Das ganze funktioniert recht gut und reproduzierbar. Ein Schritt der Schrittmotoren soll rechnerisch weniger als eine Bogensekunde und damit weniger als die Breite eines Pixels auf der Kamera betragen.

Die Steuerung der Schrittmotoren erfolgt über den für 3D-Drucker üblichen G-Code, mit einem Arduino UNO als G-Code Interpreter. Die Software auf dem Arduino ist Grbl v1.1 (GitHub - grbl/grbl: An open source, embedded, high performance g-code-parser and CNC milling controller written in optimized C that will run on a straight Arduino). Der Arduino steuert 2 Schrittmotor-Treiber DM556 an.

Da ich portable Installationen mag, ist als Python-Interpreter WinPython installiert (WinPython). Die IDE ist Spyder. Andere Python-Umgebungen gehen sicherlich auch, allerdings ist die Formatierung der GUI-Elemente dann gerne verändert.

Die GUI ist mit tkinter geschrieben, das ist in Python integriert und mir reichen die Möglichkeiten.

Der G-Code für die Schrittmotoren lässt sich mit Python einfach erzeugen und an den Arduino senden. Aktuell ist die Menü-Oberfläche und die Ansteuerung für ein einfaches GoTo fertig.
 

Anhänge

  • 20240929_143359.jpg
    20240929_143359.jpg
    735,7 KB · Aufrufe: 139
  • 2024-09-30_094056.JPG
    2024-09-30_094056.JPG
    33,2 KB · Aufrufe: 128
Im nächsten Schritt geht es um die Ansteuerung der beiden Kameras. Als Hauptkamera ist eine farbige ZWO ASI071MC Pro und zum Suchen und Guiden eine monochrome ZWO ASI183MM Pro installiert. Das bedeutet, die Software muss mit 2 Kameras umgehen können. Die Umsetzung in Python war dadurch schwieriger als ursprünglich gedacht. Bisher habe ich ZWO-ASI Kameras mit einer ASCOM Schnittstelle angesteuert, das funktioniert sehr gut, aber nur mit einer Kamera. Bei zweien muss mit einem ZWO-Tool mit Benutzereingriff zwischen den Kameras umgeschaltet werden.

Daher bin ich erst mal auf eine andere Kamera-Schnittstelle umgestiegen, die mit der ZWO-SDK arbeitet (zwoasi). Die ist zwar etwas fummelig (Software: Ansteuerung mehrerer ZWO-ASI Kamera in Python), funktioniert jetzt aber mit den beiden Kameras. Die Kamera-Bilder können mit zwoasi direkt abgespeichert werden, oder im Speicher übergeben und dann mit matplotlib.pyplot über imshow dargestellt werden. Das ganze ist schnell genug für Live-Videos z.B. zum Fokussieren.

Bisher sind nur die grundlegenden Kamera-Einstellparameter in die Software integriert, aber es geht voran.
 

Anhänge

  • 2024-10-02_165647.JPG
    2024-10-02_165647.JPG
    35,4 KB · Aufrufe: 93
Mittlerweile gehen Bildserien und ein einfaches Tracking. Dazu wird die Montierung periodisch mit einem einstellbaren Zeitintervall horizontal und vertikal um einstellbare Winkel gedreht und dann ein Bild gespeichert. Danach wird die Serie mit den Bilder von einer zweiten Python-Software ausgewertet. Das ist bisher noch sehr rudimentär, aber neben einer Darstellung kann die Software die Bildserien laden und automatisch die Position von Sternen auf den Bilder bestimmen.

Bei Serie 6 wurde eine Bildserie ohne Drehung gemacht (im Anhang Series06), das Teleskop zeigte grob nach Osten, der vertikale Winkel war etwa 39°. Gemessen wurde alle 2 Sekunden. Ausgewertet wurden 2 Sterne (S1, S2), die jeweiligen Startpositionen auf der Kamera sind in Pixel angegeben.

Die y-Achse im Plot (im Anhang Series06) zeigt den Shift der Position eines Sterns relativ zu der Start-Position in der Einheit Kamerapixel. Man sieht deutlich die "Bewegung der Sterne". Nach 100 s sind es in jede Richtung ca. 1000 Pixel, d.h. nach ca. 400 s durchquert ein Stern das Kamerabild. Oder in ca. 0.1 s bewegt sich der Stern einen Pixel weiter.
 

Anhänge

  • Series06 (no tracking).JPG
    Series06 (no tracking).JPG
    59,6 KB · Aufrufe: 76
Bei Serie 7 wurde versucht , die "Bewegung der Sterne" durch Tracking mit einstellbaren Drehwinkeln halbwegs zu kompensieren. Das klappt noch nicht perfekt, aber die Sterne "bewegen" sich deutlich weiniger. Dabei hat die vertikale Korrektur besser geklappt als die horizontale.
 

Anhänge

  • Series07.JPG
    Series07.JPG
    82,7 KB · Aufrufe: 70
Serie 8 lief etwas länger, 98 Einzelbilder in knapp 200 s. Das erste Bild mit den 5 verfolgten Sternen (S1...S5) ist in Series08-Image001 zu sehen. Die Belichtungsparameter sind nicht optimiert (Belichtungszeit 200 ms und Gain 600, zu hoch) und es sind nur 8-Bit Bilder, um Platz zu sparen.
Das Tracken der horizontalen Bewegung hat nicht so gut geklappt, eventuell baue ich den Antrieb noch um und lagere den Schrittmotor über eine Feder.

Insgesamt wurden 5 Sterne mit unterschiedlichen Position verfolgt. Man sieht deutlich (Anhang Series08), dass die Position eines Sterns einen Einfluss auf den Shift der Position hat. Das liegt wahrscheinlich an der Drehung des Kamerabildes in der azimutalen Montierung. Ein Derotator ist nicht eingebaut. Für Sterne am Rand des Bildes sind das nach 300 s bis zu 20 Pixel Versatz durch die Drehung.

Das bedeutet, eine Stacking-Software muss die Bilder einmal parallel verschieben um das ungenaue Tracking der Montierung zu kompensieren und dann die Bilder auch drehen. Auf jeden Fall eine interessante Programmier-Aufgabe.
 

Anhänge

  • Series08-Image001.JPG
    Series08-Image001.JPG
    59,2 KB · Aufrufe: 69
  • Series08.JPG
    Series08.JPG
    67 KB · Aufrufe: 66
Die Auswerte Software ist jetzt erweitert und ein automatisiertes Stacking von Einzelbildern funktioniert. Am Anfang werden zwei Sterne manuell ausgewählt, der erste eher in der Mitte des Bildes für die Parallel-Verschiebung der Bilder und der zweite eher am Rand für die Rotation. Der Rest läuft automatisch. Im ersten Schritt werden alle Bilder einer Serie analysiert und im zweiten die Korrekturen gemacht und abschließend zu einem Bild zusammengefast.
 

Anhänge

  • AstroFun-Processing.JPG
    AstroFun-Processing.JPG
    55,1 KB · Aufrufe: 59
Zuletzt bearbeitet:
Zum Testen habe ich das Teleskop Richtung Osten gerichtet. "Image-guider, f135" zeigt ein Bild vom Sucher-Fernrohr (ZWO ASI183MM Pro mit Foto-Objektiv f135mm). Das Bild habe ich auf https://nova.astrometry.net/upload hochgeladen und die Position bestimmen lassen. Das ist super cool und funktioniert ganz einfach ohne weitere Angaben. Das Ergebnis zeigt "nova.astrometry". Der hellste Stern ist damit Bharani mit Az: 95.3°, Alt: 38.3°. Das ganze in Stellarium mit den Ausschnitten vom Sucher (rot) und vom f1000 Teleskop (grün) ist in "Stellarium, frames" zu sehen.
 

Anhänge

  • Image-guider, f135.jpg
    Image-guider, f135.jpg
    153,4 KB · Aufrufe: 57
  • nova.astrometry.jpg
    nova.astrometry.jpg
    15,5 KB · Aufrufe: 56
  • Stellarium, frames.JPG
    Stellarium, frames.JPG
    26,5 KB · Aufrufe: 62
Nun wurde eine Serie mit dem f1000 Teleskop gestartet. Insgesamt 156 Einzelbilder bei einer Laufzeit von 767 s. Dabei wurde mit einer konstanten Frequenz (alle 3 s) die Montierung um konstante Winkel horizontal und vertikal gedreht und dann jeweils ein Bild aufgenommen. Das erste Bild der Serie ist "Series02-image001".

Dann wurden alle Bilder der Serie automatisiert "gestackt", zuerst ohne Korrekturen "Series02-stacked images_no corrections". Man sieht deutlich die Spuren der Sterne. Das bedeutet, die konstanten Drehwinkel waren nicht gut angepasst. Weiter gibt es Sprünge in den Spuren. Das bedeutet, die Montierung läuft nicht gleichmäßig. Der helle Untergrund liegt vermutlich an der Straßenbeleuchtung in Blickrichtung, außerdem waren einige Wolken unterwegs.

Dann wurden die Bilder beim Stacken korrigiert, d.h. parallel verschoben und rotiert. Dazu wurden vorher zwei Sterne selektiert. Einer eher in der Mitte für die Parallel-Verschiebung und der zweite eher am Rand für die Rotation. Weiter wurden "schlechte" Bilder nicht berücksichtigt und jeweils der Untergrund abgezogen. Das Ergebnis ist schon viel besser "Series02-stacked images_all corrections". Allerdings sind rechts und unten dunkle Ränder. Die kommen durch die Parallel-Verschiebung der Einzelbilder. Ein Vergleich von 2 Sternen mit geringer Intensität einmal vom ersten Einzelbild und dann vom gestackten Bild zeigt eine deutliche Verbesserung durch das Stacken "Series02-detail comparison" (die Achsskalierung sind die Kamerapixel).

Als Fazit funktioniert das Stacken mit den Korrekturen schon sehr gut, trotz ungenauer Nachführung bei der Bildaufnahme . Allerdings wird der Bildausschnitt durch die Parallel-Verschiebung der Einzelbilder deutlich kleiner. Von daher lohnt sich eine bessere Nachführung bei der Bildaufnahme.
 

Anhänge

  • Series02-image001.jpg
    Series02-image001.jpg
    39,5 KB · Aufrufe: 58
  • Series02-stacked images_no corrections.jpg
    Series02-stacked images_no corrections.jpg
    173,1 KB · Aufrufe: 57
  • Series02-stacked images_all corrections.jpg
    Series02-stacked images_all corrections.jpg
    16,9 KB · Aufrufe: 57
  • Series02-detail comparison.jpg
    Series02-detail comparison.jpg
    130,4 KB · Aufrufe: 66
Zuletzt bearbeitet:
Zurück
Oben