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

Moin Peter,

danke fürs Peer-Review. Du hast natürlich völlig Recht _jungeschlagen:. Dass der Motor über den Timer gesteuert wird, kam mal mit einem Pull-Request herein, da der Motor dann bei viel Aktivität auf dem seriellen Port wohl sonst etwas ins Stottern gerät: Use of timer interrupt for the stepper.run call by thx8411 · Pull Request #5 · fehlfarbe/arduino-motorfocus Hatte ich schon wieder total vergessen und beim Code überfliegen natürlich völlig übersehen :rolleyes:

Ich habe gerade noch mal auf den Branch gepusht und konnte Logik sowie Reaktionszeit noch mal reduzieren und habe zudem eine Beschleunigung eingebaut, wie von @soundfan gewünscht :) Die Beschleunigung lässt sich über das Makro BTN_ACCEL_FACTOR anpassen. Die Maximalgeschwindigkeit kann per Poti eingestellt werden bzw. wenn nix angeschlossen ist, beschleunigt der halt maximal auf den Wert in BTN_MAX_SPEED.

Liegt weiterhin auf dem Branch. Probiert es gern mal aus: GitHub - fehlfarbe/arduino-motorfocus at speedPoti

Beste Grüße,
Marcus
 
Super, vielen Dank Marcus.

ich werde morgen mal testen und berichten! :y:

CS
Mike
 
Guten Morgen Marcus,

habe die neue Software mal installiert. Läuft einwandfrei, jetzt gefühlt aber sofort mit Vollgas. Was für mich eigentlich okay ist. Du schreibst aber die Beschleunigung (auch Verzögerung?) ließe sich über das Makro BTN_ACCEL_FACTOR anpassen. da ist ja jetzt ein Wert von 1.2f vorgegeben. Den verstehe ich nicht ganz. Was ist das für ein Wert? Hexadezimal hätte ja keinen Dezimalpunkt drin und Dezimal kennt eigentlich kein f. Ich stehe gerade etwas auf der Leitung. Welchen Wertebereich kann man hier einsetzen? Was bewirkt ein größerer Wert? Schnellere Beschleunigung, oder?
Bei 1.2 würde ich den Code so verstehen, dass mit jedem Durchlauf des Loop die GEschwindigkeit um 20% steigt (bis Maximalgeschwindigkeit). Ist das so richtig?
Muss das f dann weg?

CS
Mike
 
Hi Mike @soundfan ,

das f bewirkt nur, dass der Compiler aus der Konstante eine float-Zahl macht.

Bei einem Macro, das ja eigentlich nur Textersetzung ist, wird damit sichergestellt, dass das Macro auch wirklich als float wirkt.

Gruß
Peter
 
Hey Mike,

genau so funktioniert das. Die vorherige Geschwindigkeit wird einfach mit 1.2 multipliziert, ggf. auf den Maximalwert beschränkt und dann gesetzt. Hab's hier mit nem kleinen Motor und A4988 Treiber getestet und da haben die 1.2 ganz gut gepasst. Kann mir vorstellen, dass es bei anderen Kombinationen vllt angepasst werden muss bzw. hab ich auch die Debug-Ausgabe aktiv, daher läuft die loop bei mir langsamer durch und der braucht mehr Zeit zwischen den Beschleunigungsschritten.
Wie Peter geschrieben hat, bewirkt das f einfach nur, dass der Dytentyp float (einfache Fließkommagenauigkeit) statt doppelter Genauigkeit (double) genommen wird. Kannste auch weglassen, ist eher 'ne Performance Optiminierung aber wird in dem Fall auch nicht viel ändern.

Beste Grüße,
Marcus
 
VIelen Dank für die Erklärung. Jetzt macht es wieder Sinn!

Die 1.2f waren bei mir viel zu schnell, der Motor quasi sofort auf Vollgas. Hab es jetzt auf 1.01f stehen (also nur 1% Steigerung je Loop). Jetzt kann ich feinfühlig tippen und super schnell verfahren.

Absolut perfekt!
Vielen Dank für eure Unterstützung @fehlfarbe und @AstroPZ!

Gruß und CS
Mike
 
Möchte den Fokussierer auch nachbauen. Bin Anfänger und würde noch einmal eine aktuelle Bauteileliste benötigen, mit der ich starten kann.
Danke!
 
Hey @Nico

eigentlich brauchst du nur den Arduino Nano, einen kompatiblen Schrittmotor inkl. Treiber und ggf. zwei Taster für den manuellen Fokus. Also z.B. hier eine günstige Zusammenstellung:

Arduino Nano (Gibt's hier auch mit USB-C): 0.92€ 18% OFF|Nano 3,0 controller mit dem bootloader mini type c micro usb kompatibel für arduino ch340 treiber 16mhz atmega328p/168p|Integrierte Schaltkreise| - AliExpress

28BYJ-48 Stepper inkl. Treiber: 0.48€ 20% OFF|5V 4 Phase 28BYJ 48 DC Getriebe Schritt Stepper Motor + ULN2003 Fahrer Bord ULN2003 PIC MCU DIY|Integrierte Schaltkreise| - AliExpress bzw. alternativ so einen A4988 Treiber 0.84€ 20% OFF|3D Drucker Teile A4988 DRV8825 Schrittmotor Treiber Mit kühlkörper Für SKR V 1,3 1,4 GTR V 1,0 RAMPEN 1,4 1,6 MKS GEN V 1,4 bord|Integrierte Schaltkreise| - AliExpress und einen passenden Stepper wie sie z.B. bei 3D-Druckern verwendet werden

Taster: 1.67€ 20% OFF|5 stücke Mini 12mm Wasserdicht Momentary AUF/AUS Taste Runde Schalter PBS 33B Für arduino|Integrierte Schaltkreise| - AliExpress

Für Windows brauchst du ggf. noch einen Kondensator um die 10-50 µF zwischen GND und RST Pins, da der Microcontroller beim ersten Zugriff sonst neu startet und ASCOM ihn nicht erkennt. Der Shop bietet da nur ein Sortiment an: 5.09€ 20% OFF|15values 200 stücke Elektrolytkondensator Organisation Lagerung 0,1 220uF Kondensatoren Sortiment Box Kit|Integrierte Schaltkreise| - AliExpress (wobei man ja so nen Elko immer mal braucht^^) oder du lötest da irgendwo einen passenden aus nem alten Gerät aus.

Falls du die Temperaturkompensation willst, kannst du noch so einen Sensor mitbestellen: 1.12€ 20% OFF|DS1820 edelstahl paket Wasserdichte DS18b20 temperatur sonde temperatur sensor 18B20 Für Arduino|Sensoren| - AliExpress

Das alles, wie im Github Repo auf den Bildern zu sehen ist, verkabeln, irgendwie an deinen OAZ friemeln und los geht's! :)

Beste Grüße,
Marcus
 
Hi,

hier ein paar der Teile von zB amazon.de:


Diesen kleinen Schrittmotor würde ich nur nehmen, wenn es auf geringes Gewicht und Grösse wirklich ankommt. Es ist etwas urtümliche sehr einfache Technik.

Sonst einen kleinen NEMA Schrittmotor, zB NEMA11 oder NEMA8. Sehr süss (super klein), dieser hier: ;)

Temperatur Sensor:

Kondensatoren:

Vom A4988 Treiber halte ich bei DIY nichts.
Man kann auch ein kleines bisschen mehr Geld ausgeben, dann bekommt man die viel besseren TMC Treiber (die A4988 habe ich auch ausprobiert):


Wir als Astronomen sind uns ja der Umwelt bewusst und müssen keine Kleinteile aus China bestellen, oder?
Klar, die Teile kommen trotzdem aus China, aber dann hoffentlich mit weniger Resourcen-Aufwand in grösseren Stückzahlen.
Auserdem unterstützt man noch ein Teil der europäischen Lieferanten.

ZB AZDelivery ist eine bemühte deutsche Firma:


oder zB Stepperonline.

Gruß
Peter
 
Zuletzt bearbeitet:
Danke für die Antworten, sehr hilfreich!
Ich habe jetzt diesen Arduino nano bestellt und diese Motoren.
Spricht was dagegen? dann könnte ich noch schnell stornieren.
Möchte Qualität kaufen, Preis ist mir nicht so wichtig.
Nico
 
Hi Nico,

dein verlinkter Nano ist ein Arduino IoT Nano.
Das ist nicht der "normale" Nano, aber, so weit ich weiss, voll kompatibel.
Ich habe auch einen zum Ausprobieren. Er hat keine Unterschiede gezeigt.

Er hat halt zusätzlich ein WLan und Bluetooth Modul und, glaube ich, ein bisschen mehr Speicher.
Für den IoT gibt es auch ganz andere Frameworks, die über WLan und Browser arbeiten. Das ist halt super praktisch wenn man das will. IoT halt ;) .

Der USB Anschluss ist so ein flacher Micro Anschluss.

Aber in der Praxis viel wichtiger, bei diesem sind die Headers nicht angelötet. Falls du ihn nicht verlöten sondern stecken willst, dann musst du die Header selber dranlöten.
Ich würde das nicht machen wollen, obwohl ich es könnte. ;)

Die Nanos sind oft Varianten.
Der hier ist ein ziemlich normaler Nano von AZDelivery mit angelöteten Headers:


Das hier ist der offizielle Nano von Arduino:

Gruß
Peter
 
Danke Peter, habe entsprechend umbestellt.
Dann bin ich gespannt, ob ich das hinbekommen. Der Spaß beginnt bei mir erst, wenn sich der Motor das erste Mal dreht...
 
Hi Nico,

noch ein Hinweis. ;)

Falls du nicht einfach nur ein Projekt 1 zu1 nachbauen willst, sondern auch ein bisschen ausprobieren willst und mM sollte man das tun, da der Arduino ein DIY Prozessor ist, dann ist es ganz empfehlenswert zum Einstieg einfach so ein Experimentier-Kit zu kaufen. Damit kann man dann ein paar Sachen erstmal ausprobieren. Das ist alles kein Hexenwerk und man lernt dabei.

ZB dieses hier, da ist auch so ein Micro Schrittmotor dabei:

Ist allerdings der Uno dabei. Der verhält sich aber identisch und es ist halt alles dabei, Netzteil, Experimentier-Brett, Steckkabel und so weiter.
Du kannst aber auch deinen Nano dann damit benutzen, wobei ich glaube, man muss mit der Spannung/Netzteil, 3V zu 5V aufpassen.

Gruß
Peter
 
Hallo Peter, habe das Experimentier-Kit bestellt. Sehr gute Idee! In der Tat, will ich keinen Fokussierer bauen, sondern eine rotierbare damit antriebn Lambda-Halbe für ein neues remote zu betreibendes Polarimeter , das ich gerade entwerfe.
 
Hallo zusammen,

nachdem ich den Fokuser jetzt sowohl an meinem Mak127 als auch an meinem Quattro 150 verbaut habe, musste ich jetzt am Mak mal aufrüsten. Der kleine 28BYJ war immer hart an der Grenze, hat regelmäßig Steps verloren, so dass ich nie mit alten Fokuswerten arbeiten konnte. Außerdem war manuelles Fokussieren prktisch nicht mehr möglich. Ich hatte zwar zwei Taster zum Fokussieren verbaut, brauchte aber trotzdem immer eine Stromquelle (Powerbank). Wie gesagt, nicht ganz zufriedenstellend. Daher hab ich mir jetzt einfach mal den billigsten NEMA17 Motor und ein paar A4988 Treiber besorgt und die Mechanik etwas modifiziert. Der NEMA treibt jetzt über Kegelräder die Fokussierwelle des MAK an. Taster zum manuellen Verstellen habe ich nicht mehr verbaut, da man das Kegelrad auf der Welle perfekt von Hand bedienen kann und der NEMA unbestromt praktisch keine Bremswirkung hat (anders als der kleine Getriebemotor). Dadurch konnte ich das Gehäuse für den Arduino und den Treiber deutlich verkleinern. Einziger Nachteil: Der NEMA braucht 12V, also reicht der USB Anschluss alleine nicht mehr. Aber 12V hab ich ohnehin an meiner Kamera und beim Quattro auch für den Lüfter.
Ich habe mich wieder an die Anleitung von Marcus (https://github.com/fehlfarbe/arduino-motorfocus) gehalten, musste aber die Verdrahtung des NEMA anpassen. Bei meinem war die Belegung anders, der Motor hat anfangs nur gebrummt... :ROFLMAO:

Das Ganze sieht jetzt so bei mir aus:
20230924_092329.jpg


20230924_092345.jpg


20230924_092357.jpg


Am Quattro werkelt weiterhin der kleine 28BYJ. Da reicht die Kraft durch den weiteren 1:10 Antrieb des OAZ spielend und dank der genialen mechanischen Anbindung von @riff-raff braucht es eigentlich auch keine Taster, da man den Motor samt Gehäuse in Sekunden vom OAZ wegschieben kann. Hab trotzdem noch einen Kippschalter (2 Wege tastend) verbaut, wäre aber nicht wirklich nötig gewesen.

20230924_124611.jpg


Ich bin von dem Projekt noch immer schwer begeistert und würde es an jedem anderen Teleskop auch wieder verbauen.
 
Freut mich, dass Dir meine Umsetzung so zusagt.
Für die größeren Maks hab ich einen Slider-Fokus analog zur Newton-Umsetzung konstruiert, müsste ich mal noch veröffentlichen. Für den 127er leider noch nicht, da ich keinen mehr habe.
MVIMG_20221125_215915.jpg
MVIMG_20221125_215948.jpg
MVIMG_20221125_220134.jpg
MVIMG_20221230_121004.jpg
MVIMG_20230306_210646.jpg

CS, Ralf
 
Braucht Dein NEMA17 wirklich 12V? Es gibt ja auch solche mit wesentlich geringerer Strangspannung, die man mit wesentlich höherer Betriebsspannung betrieben kann, weil der Treiber ja den Strom vorgibt.
Nun gut, das nur so, denn Du hast ja Dein Problem gelöst.

Grüße
Hartmut
 
Hallo Ralf,
das schaut wirklich klasse aus. Beim 127er Mak funktioniert deine Lösung so leider nicht, da sich der Fokusser nirgends abstützen kann. Bei den größeren aber wieder eine geniale Lösung. :y:
Hast du keine Probleme mit der Kraft des kleinen 28BYJ? Sind deine Fokussierwellen alle so leichtgängig?
Finde ich erstaunlich.
 
Hallo,
ich habe direkt an der Treiber-Platine des NEMA 17 diesen Mini Step-UP-Wandler angebaut.
Ausgangsspannung kann man zwischen 5V, 8V, 9V und 12V wählen.
Funktioniert bei ohne Probleme am USB-Port.

VG + CS
Horst
 
Hallo,
sehr coole Ansätze. Hab mir meinen eigenen Remix für mein ES ED 102 gebastelt.

20231201_185525.jpg

Läuft wie ne eins und ich kann die Aussage von riff-raff nur unterstreichen dass an einer 1:10 Übersetzung der 18BYJ vollkommen ausreicht.
Vielen Dank and die super Vorarbeit. Da ich den AF am Astroberry betreibe konnte ich mich erstmal um das Auslöten drücken. Wahrscheinlich werde ich den Nano allerdings noch von Mini USB auf USB B umbauen und in dem Zusammenhang den Kondensator ausbauen.

CS
Johannes
 
Zuletzt bearbeitet:
Danke für den Remix ;)

Die Igus Lager kann man machen, braucht es aber eigentlich nicht, gleitet auch so ganz gut wenn die Schrauben Edelstahl sind. Bei der Sonderlänge hab ich bisher nur einmal andere entdeckt (dürften verzinkt sein), die brauchten tatsächlich etwas mehr "Überzeugungsarbeit".

CS, Ralf
 
Ich gebe dir recht, die Kombination aus Passstiften und Gleitlager ist ein bisschen overengineered, aber der Auszug ist ein Traum kann ich dir sagen! :D

CS
Johannes
 
Hallo liebe Bastler,

heute habe ich meinem Motorfokusser auch ein Upgrade verpasst. An meinem neuen 10" Newton werkelt nun auch ein Nema17 am Baader Diamond Steeltrack. Die Zahnriemen gibt es für 3,-€ und die Zahnriemenscheibe hab ich gedruckt (Gegenstück ist ja Bestandteil des Steeltrack). Läuft erste Sahne und ohne erkennbaren Backlash. Ich muss also nicht immer nur von einer Seite anfahren. Wirklich eine enorme Verbesserung!
Was mich aber enorm gestört hat (und nicht nur mich), ist das Arbeitsgeräusch des A4988 Steppertreibers aus Marcus' (@fehlfarbe) ursprünglichen Projekt. Daher habe ich mir einfach einen TMC2209 Treiber besorgt. Diese Treiber sind der letzte Schrei und in praktisch allen neuen 3D Druckern verbaut. Kosten Stück zwischen 6,-€ und 10,-€ und sind Pin- und Treiberkompatibel zum A4988. Zumindest fast.

Ich habe eine halbe Ewigkeit gesucht, warum alles funktioniert, Ascom Anbindung, Steps an den TMC2209, Richtungssignal, alles - nur der Motor hat sich keinen Milimeter gedreht. Letztlich hat mir Marcus per PN den entscheidenden Tipp gegeben: Beim A4988 ist der Enable Pin ("Einschalter") per Pull-down im nicht angeschlossenen Zustand automatisch aktiviert. Beim TMC2209 ist an gleicher Stelle ein Pull-up vorhanden, der Pin im nicht angeschlossenen Zustand also deaktiviert. Die Lösung ist eine einfache Brücke vom Enable-Pin nach Masse. Dafür kann man sich dann auch die Verdrahtung zum Sleep Pin (beim A4988) sparen, an der Stelle ist beim TMC2209 der Clock Pin (je nach Ausführung). Dafür hat der TMC2209 Auto-Power-Down im Ausgangszustand aktiviert, muss also nicht mehr vom Arduino aus gesteuert werden.

Beim Testen der Brücke nach Masse wollte ich schon wieder das Fluchen anfangen, weil sich vermeintlich noch immer nichts gedreht hat. Da hat mich aber leider mein Gehör getäuscht. Der Motor hat sich sehr wohl gedreht wie er soll, nur eben völlig lautlos. Also wirklich nicht einfach nur sehr, sehr leise - nein, vollkommen lautlos!
Ich habe schon eine hohe Erwartungshaltung an den neuen TMC2209 Treiber gehabt, aber das hat mich dann doch erstaunt.

Jetzt muss ich unbedingt den MAK noch mit dem TMC2209 nachrüsten...
 
Hi Mike,

Beim TMC2209 gilt es zwischen SpreadCycle und StealthChop zu unterscheiden. Dein Treiber läuft offensichtlich im Stealthchop, was jedoch weniger Haltemoment zur Verfügung stellt. Evtl. ist SpreadCycle trotz etwas höherer Lautstärke (immer noch deutlich leiser als die Allegro-Treiber) die bessere Wahl.

CS, Ralf
 
Ich habe schon eine hohe Erwartungshaltung an den neuen TMC2209 Treiber gehabt, aber das hat mich dann doch erstaunt.
Habe ich doch schon immer gesagt, dass man statt dem ollen A4988 einen der TMC Treiber nehmen soll ;)

Beim TMC2209 gilt es zwischen SpreadCycle und StealthChop zu unterscheiden. Dein Treiber läuft offensichtlich im Stealthchop, was jedoch weniger Haltemoment zur Verfügung stellt. Evtl. ist SpreadCycle trotz etwas höherer Lautstärke (immer noch deutlich leiser als die Allegro-Treiber) die bessere Wahl.
Genau, und einstellen tut man das mit den CFG Pins. In den Data Sheets gibt es auch eine Tabelle dazu.
Man muss dabei beachten, dass es 3 Einstellwerte je Pin gibt: 0, 1 und open.

Open erreicht man durch Umschalten des Ausgangspins am Arduino auf Lesen statt Schreiben (soweit ich mich erinnere ;) ).

Gruß
Peter
 
Hi,

noch ne Information zu den TMCs. ;)

Die ganze Konfiguration der TMCs kann man auch programmatisch über die SPI Schnittstelle machen. Dazu muss man den SPI-Mode (Brücken umlöten) aktivieren. Die CFG Pins sind dann ausgeschaltet, also entweder oder. Mit der SPI Schnittstelle kann man einiges mehr machen (Driver Status, Microsteps, Step/Hold Current, ..).

Die Library TMCStepper realisiert das:
Einfach die Library in Visual Studio Code/PlatformIO suchen und einbinden.
Da gibt es zB Funktionen mit dem man den Hold Strom einstellen kann.
Dokumentation ist aber etwas mau.

Leider habe ich das in der Praxis noch nicht ausprobiert, würde ich aber gerne mal.
Vielleicht hat das ja schon mal jemand gemacht und kann hier seine Erfahrungen mitteilen.

Gruß
Peter
 
Dieses Upgrade wäre für mich auch sehr interessant. Ich habe in meinem Motorfokus allerdings einen DRV8815 verwendet.
Wenn ich mir die Pin-Belegung vom DRV8815 ansehe, müsste der ebenfalls mit dem TMC2209 kompatibel sein.
20240203_212328.jpg
Hat hier jemand damit Erfahrung gemacht?
Einen schönen Abend noch
Dieter
 
Zurück
Oben