DIY Motor-Fokussierer (Arduino, MoonLite INDI/ASCOM kompatibel)

Hiho, ich hole das mal aus der Versenkung. Ich bin gerade dabei einen der Fokusser entsprechend auch nachzubauen. Als NANO habe ich einen Chinaclone mit CH340 Chip. Jetzt möchte ich das Teil ja unter ASCOM betreiben. Ich habe verstanden, entweder muss ich den 10uF Kondensator auf der Rückseite auslöten (ich glaube ich hab den richtigen identifizert :D) ODER einen 10 uF Kondensator zwischen RST und GND zu bringen. Ich bin jetzt nicht so der Elektroniknerd und hab mal auf Amazon geschaut und finde dort gefühlt 100 verschiedene mit verschiedenen V angaben. Welches wäre denn der richtige? Und gibt es ne möglichkeit, rauszufinden, ob der NANO richtig funktioniert? Am Rechner angeschlossen leuchtet zwar die LED rot und beim Schreiben der Software über VS Code bekomme ich auch keinen Fehler, aber wenn ich das Teil versuche über Arduino IDE anzusteuern, bekomme ich nur Verbindungsfehler. Fragen über Fragen.
 
Der Kondensator ermöglicht einfach nur, dass er direkt unter der ArduinoIDE geflasht werden kann. Wird er entfernt oder ist gar nicht verbaut, ist beim Uploaden des Sketches der Reset des Nano zu ziehen (Taster auf der Oberseite).

Kondensator einlöten: Kapazität ist bekannt, Spannungsfestigkeit über der Betriebsspannung von 5V des Nano wählen.

CS, Ralf
 
Hi,

im Arduino gibt es 5V und 3,3V. Insofern passen alle Kondensatoren die mindestens 5V haben ;-) Typischerweise 16V oder 35V reicht also locker.

Mit der Arduino IDE musst Du halt den Boardtyp richtig einstellen (Also Arduino Nano) und könntest dann über die IDE den Blink-Sketch auf den Arduino laden und dann müsste die LED blinken. Dann mal die Zeiten im delay-Befehl ändern, wieder installieren, dann sollte es anders blinken ;-) (Meist ist "werksseitig" schon ein Blink installiert - die LED blinkt also eh).

Natürlich musst Du anschließend wieder den Focuser auf den Arduino packen ;-)

Ciao, Udo
 
Hi,
der Treiber für den CH340 ist installiert und der Com-Port (vom CH340) im IDE auch ausgewählt?
Gruß
Andreas
 
Ja, diesmal hat es auch geklappt. Keine ahnung was gestern das problem war. :) Danke zusammen. Dann ordere ich mal noch ein paar Bauteile.
 
:y:
 
Der Kondensator kann 10-100nF (NANO-Farad) haben. Habe kürzlich meinen 10µF gegen einen kleinen ausgetauscht. Geht einwandfrei.

Grüße
Hartmut
 
Er läuft \o/ Per Ascom und in Nina ist er auch ansprechbar. Jetzt gibt es natürlich diverse Parameter. Hat da jemand erfahrungswerte?
Ich hab jetzt erstmal die Werte von @Independent eingetragen, bin aber nicht sicher, wie die gut die passen?


Gibt es sonst was zu beachten? In ASCOM habe ich die MAX Stepsize auf 65000 gestellt.
Den offset für die Temperatur muss ich mir noch anschauen. Hab grad kein Vergleichsthermometer greifbar.
 
Hi,

ich habe ja auch diesen Arduino-Focuser nachgebaut und bisher mit INDI-Treiber und Astroberry genutzt. Nun habe ich mir aber einen Mini-PC gekauft und möchte N.I.N.A. nutzen. Hauptgrund: Für Mond- und Planeten ist der Raspi einfach zu langsam und ich möchte ein System am Teleskop haben welches auch Videos mit hoher Framerate aufzeichnen kann.
Nun habe ich ein kleines Problem mit N.I.N.A. und dem Focuser. Ich habe die Lösung mit dem 10uF-Kondensator zwischen GND und RST gewählt. Damit verbindet N.I.N.A. problemlos und zuverlässig mit dem Focuser. Aber: In der Focuser-Seite steht "is Moving" angecheckt und die Kontrollbuttons zum Fokussieren sind ausgegraut. Starte ich den Autofocus, klappt das aber wunderbar und anschließend ist auch "is Moving" aus und die Buttons funktionieren. Ziemlich strange und etwas lästig. Hat das schon mal Jemand gehabt? Gibt es eine Lösung? Ist jetzt kein wirklich großes Problem - man kann es ja umgehen in dem man mal kurz den AF startet und gleich wieder abbricht, aber schöner wäre es natürlich, wenn es "richtig" klappen würde.

Ciao, Udo
 
Ich habe tatsächlich das gleiche Problem mit gleichem Workaround. Eine Lösung habe ich dafür sonst nicht gefunden.
 
Im Prinzip müsste das über ein Script funktionieren. Zumindest in N.I.N.A. Man müsste halt per Script den Focus bewegen. Vermutlich reicht 1 Step. Ich habe aber keine Ahnung vom Scripting in N.I.N.A.

Ich hab's gerade auch mal in SharpCap probiert. Ähnliches Bild. Nach dem Verbinden kann man den Focuser nicht bewegen. Es gibt in SharpCap aber einen Stop-Button. Der ist aktiv. Kann man klicken. Bewirkt aber wenig..... Immerhin gehen die anderen Buttons (für die manuelle Bewegung) dann für 1 Sekunde an und man kann z.B. auf In oder Out klicken. Der Motor bewegt sich dann und anschließend klappt es. Es braucht halt eine initiale Bewegung - erst dann funktioniert es. Sehr seltsam.

Erstaunlicherweise kann ich in SharpCap den Focuser jederzeit trennen und wenn ich ihn dann erneut verbinde klappt es wunderbar. Zumindest in SharpCap taucht das Problem nur bei der ersten Verbindung auf.

Ciao, Udo
 
Ist bei mir auch so. Ich klicke als Workaround einfach kurz auf den Knopf für Temperaturkompensation und dann gleich wieder aus. Dann geht es, ohne den Fokus zu verstellen.

CS Erik
 
Hallo,
ich klinke mich hier mal mit ein und diesen Thread für mein Problem nutzen.
Da die Hardware in der Bastelkiste vorhanden war, habe ich mich auch einmal damit beschäftigt. Alles zusammengesteckt und von GitHub - Fehlfarbe ....
den Sketch heruntergeladen und auf den Arduino hochgeladen. Dann noch den MoonliteSinglesFocuser installiert. Habe dann festgestellt, dass der angegebene Schaltplan nicht mit dem Sketch (Pin-Out) übereinstimmt. Konnte aber schnell behoben werden. Danach lief alles prima.
Habe jetzt aber noch das Problem, dass die Hand-Buttens nicht funktionieren.
Hat jemand eine Erklärung, Hinweis?

CS,
Horst
 
... Habe dann festgestellt, dass der angegebene Schaltplan nicht mit dem Sketch (Pin-Out) übereinstimmt. Konnte aber schnell behoben werden. Danach lief alles prima.
Habe jetzt aber noch das Problem, dass die Hand-Buttens nicht funktionieren.
Hat jemand eine Erklärung, Hinweis?

CS,
Horst

Hallo Horst,

habe den Focuser auch nachgebaut. Bei mir hat die Verdrahtung aber gepasst. Was stimmt denn deiner Meinung nach nicht überein?

Bei den Tastern hatte ich zuerst auch Probleme, einfach weil ich mich zu blöde angestellt habe. Die Drucktaster, die in meinem Arduino Set dabei waren, haben vier Füße. Je zwei davon sind miteinander verbunden, somit ergibt sich trotz vier Anschlüssen nur ein einfacher Schließer. Wenn man jetzt die beiden falschen Füße kontaktiert...
Ich hab bestimmt drei Stunden gesucht, bis ich gemerkt hatte, dass die Taster 90° verdreht aufgesteckt waren.

So sieht mein Focuser am Mak127 jetzt aus:
20230515_165210.jpg
20230515_165016.jpg


Gruß und CS
Mike
 
Hallo Mike,
danke erst mal für die Rückmeldung.
Das Problem ist jetzt nicht die Verdrahtung. Die Ansteuerung funktioniert ja, sowohl über Moonlite als auch Ascom.
Ich kann aber nicht den Focuser über die Taster bedienen. Habe da etwas gelesen von der Temperaturkompensation (enable, disable).
Kann es damit etwas zu tun haben? Wenn ja, wie kann man sie abschalten. Werde sie nicht benutzen.

Viele Grüße und CS
Horst
 
Hallo Horst,

leider kann ich dein Problem nicht nachvollziehen. Ich habe ebenfalls keinen Temperatursensor verbaut. Wenn ich die Doku richtig verstanden habe, wird dieser in dem Fall einfach ignoriert, bzw. es wird nichts kompensiert. Im Ascom einfach den Haken für Temperaturkompensation nicht setzen.
Ich hab auch nur die Taster angeschlossen und die Software 1:1 übernommen, nichts geändert, klappt bei mir ohne Probleme.
Daher gehe ich von einem Verdrahtungsfehler aus. Die Taster werden ja über die internen Pull-ups high gehalten und schalten gegen GND. Vielleicht einen falschen Pin erwischt?

Gruß Mike
 
Hallo,
ich habe den Focuser mit Temperaturkompensation gebaut. Ich bediene ihn über Sharpcap 4.0. Von dort kann ich den Fokus einstellen, aber nur wenn die Temperaturkompensation abgeschaltet ist.
Dieter
 
Hallo Horst,

leider kann ich dein Problem nicht nachvollziehen. Ich habe ebenfalls keinen Temperatursensor verbaut. Wenn ich die Doku richtig verstanden habe, wird dieser in dem Fall einfach ignoriert, bzw. es wird nichts kompensiert. Im Ascom einfach den Haken für Temperaturkompensation nicht setzen.
Ich hab auch nur die Taster angeschlossen und die Software 1:1 übernommen, nichts geändert, klappt bei mir ohne Probleme.
Daher gehe ich von einem Verdrahtungsfehler aus. Die Taster werden ja über die internen Pull-ups high gehalten und schalten gegen GND. Vielleicht einen falschen Pin erwischt?

Gruß Mike
Hallo,

vielen Dank für deine Antwort. Leider kann ich machen, was ich will, mit den Tastern funktioniert es nicht. Mit einer einfacheren Variante (nur Ascom) funktionieren die Taster. An der Verdrahtung kann es also nicht liegen. Verwende momentan diesen Sketch: NanoMoonliteFocuser
Vielleicht gibt es doch noch eine Lösung.

VG, Horst
 
Hallo Leute,
ich habe auch den Focuser gebaut und soweit funktioniert er auch. Aber zwei Probleme kann ich nicht lösen.

Wenn ich Sharpcap oder FireCapture starte bekomme ich oftmals diese Fehlermeldung vom Focuser. Ich weiß aber nicht was er will? s.u.

Ich habe es mal "Nachgemessen". Der Focusdrehknopf am C8 braucht insgesamt 42 Umdrehungen von min nach max. Eine Umdrehung braucht ca. 2000 Steps. also brauche ich 84000 Steps um mit dem Focuser von min nach max zu kommen. Kann aber nur max 64000 Steps im Setup eintragen.
Ich habe erst mal einen kleineren Bereich von 48000 Steps um den Brennpunkt definiert. Ab und zu bekomme ich auch sinnlose Werte angezeigt. s.u.
Wie habt ihr das gelöst?

Was mich auch stört ist die Latenz der Bedienung. Teilweise muss man einige Sekunden warten bis man wieder die Focustasten auf der Ascom Bedienoberfläche bedienen kann. Kann man das irgendwo einstellen?

ich habe diesen Sketch verwendet.s.u.
Die einfachste Version mit einem NanoCh340 und 28BYJ-48 Stepper mit ULN2003A.
-Moonlite Focusr

20230612_205302.jpg

20230613_170018.jpg
 

Anhänge

  • 20230610_025601.jpg
    20230610_025601.jpg
    287,8 KB · Aufrufe: 119
Hallo,

vielen Dank für deine Antwort. Leider kann ich machen, was ich will, mit den Tastern funktioniert es nicht. Mit einer einfacheren Variante (nur Ascom) funktionieren die Taster. An der Verdrahtung kann es also nicht liegen. Verwende momentan diesen Sketch: NanoMoonliteFocuser
Vielleicht gibt es doch noch eine Lösung.

VG, Horst

Hallo Horst,

ich hole diesen Thread nochmal hoch, da ich gerade meinen zweiten Focuser baue. Ich habe deine beiden Sketches (Fehlfarben und Moonduino) mal verglichen. die beiden verwenden die Taster ja auf unterschiedlichen Pins. Fehlfarben auf Pin 7 und 8, Moonduino auf Pin 11 und 12. Das hast du aber sicher bedacht, oder?

Und läuft dein Focuser zwischenzeitlich problemlos?

Gruß und CS
Mike
 
Hallo Mike,
danke erst mal für die Rückmeldung. Bin momentan im Urlaub und komme daher nicht zum Testen.
Nur soviel: Die Taster sind an den richtigen Pin's angeschlossen. Wenn ich einen einfachen Sketch laufen lasse, funktioniert es auch.
Momentan probiere ich mich am "Arduino-Motorfocus" von Fehlfarben und Steppermotor "Nema 17" aus.
Werde mich nach dem Urlaub ausführlich melden.

VG und CS
Horst
 
Hallo zusammen,

ich bin schon vor 'ner Weile auf das Thema hier gestoßen und jetzt sollte auch die "Thema beobachten"-Funktion mit Mailbenachrichtigung klappen :D

Astronomie hab ich leider seit ein paar Jahren nicht mehr aktiv betrieben aber einen Fokussierer hab ich noch aufm Breadboard zusammengebaut in der Kiste liegen. Falls die Buttons immer noch Probleme bereiten oder sonstige Featurewünsche existieren, kann ich hier also auch direkt helfen oder ihr öffnet ein issue auf der Github Seite :)

Bisher haben die Buttons üblicherweise wegen falscher Verkabelung oder dergleichen nicht funktioniert. Ich habe die hier im issue auch noch mal getestet: Do the buttons work for you? · Issue #20 · fehlfarbe/arduino-motorfocus
Die Trägheit könnte man evtl. verbessern, indem man den Beschleunigungsfaktor für die Motoren weiter hoch setzt. Derzeit ist es auch so, dass die Buttons nur funktionieren, wenn gerade kein ASCOM/INDI Bewegungsbefehl ausgeführt wird. Vielleicht ist es besser, bei Tasterbetätigung die laufende Bewegung abzubrechen und dann nur die Tastenbewegung auszuführen...

Beste Grüße,
Marcus / fehlfarbe
 
Hallo Marcus,

das ist ja toll, dass sich der Vater dieses Projektes hier zu Wort meldet! Dann kannst du mir vielleicht gleich eine Frage beantworten: Die Verstellgeschwindigkeit bei nutzung der externen Tasten ist mir zu langsam. Ich habe mal was gelesen von einem zusätzlichen Schalter um die Geschwindigkeit zu erhöhen und habe mir daraufhin den zugehörigen Quellcode angesehen. Leider kapiere ich noch nicht, wie die Ansteuerung des Motors funktioniert und an welchem Parameter ich die Endgeschwindigkeit bei Betätigung der Taster einstellen kann. Kannst du mir da auf die Sprünge helfen?

Ich brauche die Tasten nur für visuelles Beobachten und nutze für EAA dann natürlich ASCOM zum Feineinstellen.

Bin für jeden Tip dankbar. :)

Gruß und CS
Mike
 
Hey Mike,

ich muss tatsächlich auch immer mal wieder den (Spagetthi-) Code neu überfliegen, weil ich nur selten was dran mache :D

Bisher gibt es eigentlich keinen Button zur Geschwindigkeitsregulierung. Ich habe mal testweise ein Poti an Pin A0 angeschlossen und etwas Code auf 'nem extra Branch hinzugefügt: GitHub - fehlfarbe/arduino-motorfocus at speedPoti
Falls du ein Poti rumfliegen hast, kannste den ja mal ausprobieren. So ganz 100%ig hab ich die Stepper-Bibliothek leider auch noch nicht durchstiegen aber bei meinem Testaufbau scheint die Geschwindigkeitskontrolle über das Poti, auch während der Betätigung eines Tasters, zu funktionieren. Das Poti einfach so anschließen, dass an den äußeren Pins 5V und GND anliegen und in der Mitte der A0 Pin.

Beste Grüße,
Marcus
 
Hey Mike,

vielleicht habe ich mich falsch ausgedrückt aber ich habe die Funktionalität auf dem besagten branch meines Github Repos hinzugefügt :D
Zieh dir mal die Version und flashe sie auf den Arduino. Habe es jetzt so angepasst, dass er den Pin A0 als Eingang nimmt. Sofern nichts dort angeschlossen ist, fährt er mit der minimalen Geschwindigkeit und wenn man den Pin zB per Schalter auf GND zieht mit der maximalen Geschwindigkeit, die ich jetzt mal auf 512 steps/s gesetzt habe (wobei der das wohl nicht erreichen wird). Mit Widerständen oder einem Potentiometer zwischen A0 und GND kannst du eine Geschwindigkeit dazwischen wählen. Mir ist nur noch nicht so ganz klar, warum der bei mir teilweise trotzdem noch beim gedrückt halten beschleunigt und nicht direkt die gewählte Geschwindigkeit fährt aber es scheint erst mal zu funktionieren und der stoppt auch sofort, wenn man den Button loslässt (die stop() Methode der Stepper-Bibliothek macht nämlich nicht das, was man erwarten würde, daher habe ich das nun anders gelöst ^^

Beste Grüße,
Marcus
 
Hallo Marcus,

das ist natürlich eine sehr komfortable Lösung, die aber wieder einen weiteren Taster oder Poti benötigt.
In deiner ursprünglichen Version beschleunigt der Motor ja auf einen vorgegebenen Malwert solange der Taster gedrückt ist und läuft dann mit der Maximalgeschwindigkeit, bis der Taster losgelassen wird. Dann verzögert der Motor wieder bis auf Null. Dieses Verhalten gefällt mir eigentlich sehr gut und das würde ich auch so beibehalten wollen. Ich frage mich eigentlich nur welcher Parameter eben für die Maximalgeschwindigkeit verantwortlich ist, auf den der Motor beim Drücken der Taster beschleunigt. Da steige ich irgendwie nicht durch. Ich würde gerne nur diesen einen Parameter probeweise ändern und alles andere beibehalten.
Vielleicht hatte ich mich zuvor auch etwas unklar ausgedrückt, sorry.

Ist das einer dieser Parameter?
// multiplier of SPEEDMUX, currently max speed is 480.
int speedFactor = 16;
int speedFactorRaw = 4;
int speedMult = 30;

Wenn ja, welcher hat welchen Einfluss? Wie groß darf welcher Wert sein?

Gruß
Mike
 
Hi Marcus @fehlfarbe ,

weil mich das Projekt auch interessiert, habe ich mal in den Code geschaut.

Mir ist dabei folgendes aufgefallen:
Es wird sowohl stepper.run() über den Interrupt des HW Timer1 aufgerufen als auch stepper.runSpeed() in der loop().

Führt das nicht zu Fehlverhalten?
Ich dachte, dass man in der AccelStepper Library entweder run() oder runSpeed() je nach gewünschtem Modus aufrufen sollte, aber nicht gemischt.

Braucht man überhaupt den Timer1?
Ist es nicht grundsätzlich besser und schneller es nur in der loop() zu machen?

Gruß
Peter
 
Hi Markus @fehlfarbe ,

ah, ich habe mehr verstanden. ;)

Es wird in der loop() nur bei Button Press direkt in einer while-Schleife stepper.runSpeedToPosition() benutzt.
Dieses while blockiert alles bis es an der Position durch den Button Press ist. Der Interrupt mit dem stepper.run() sollte aber trotzdem wirken.

Ansonsten wird nur das stepper.run() durch den Interrupt aufgerufen und in der loop() wird wohl nur eine Position durch stepper.moveTo() eingestellt.

Alles klar, muss auch nicht alles verstehen. ;)

Gruß
Peter
 
Zurück
Oben