Deep Sky Nachführung Fotografie

Guten Abend liebe Community,
heute möchte ich mich mal wieder vertrauensvoll an euch wenden.
Ich stehe vor einem großen oder doch nur kleinem Problem. Ich möchte mir eine Arduino gesteuerte Nachführung zur Deep Sky Fotografie bauen. Bauteile und Elektronik hab ich schon alles.
Hier eine Auflistung der Bauteile

Arduino Nano
2 Getriebe "Spinea TS"

Leadshine Treiber DM442c
http://www.maschinen-werkzeuge.com/CNC-Maschinenbau/Elektronik/Endstufen/DM442-Leadshine-Digital::1106.html

Motor, ja der ist alt :slight_smile:
http://teamninjaz.me/slo-syn-stepper-motor-wiring-diagram.html

mit diesem Aufbau will ich die Erdrotation ausgleichen. Ich brauche 1 Umdrehung pro Tag.
Die Getriebe haben eine Untersetzung von 1 zu 73. Das ganze zweimal. Somit habe ich eine Untersetzung von 1:5329! Das heist dass mein Motor am Tag, genauer gesagt in 23h 56m 4s, 5329 Umdrehungen machen soll. In der Minute wäre es dann 3,709 RPM.

Jetzt komme ich zum eigentlichen Problem.
Wie Programmiere ich das am sinnvollsten.
RPM?
Hz?
oder Mikrosteps?
Weis mir jemand ein paar Tutorials auf deutsch? Möchte das schon gerne lernen und mir aneignen.
Was auch noch mit ins Boot soll, ist die Möglichkeit die Drehzahl anzupassen, mittels einem Drehregler ky040. Drehzalanpassung deshalb weil es einige Störfaktoren gibt. Hemmung innerhalb der Getriebe, Kälte, Wärme und Gewicht der Kamera mit Objektiv.

Sodele ich hoffe das mein Vorhaben gut beschrieben habe und warte auf eure Vorschläge und Tips.
Besten dank schon im voraus.

Gruß Nicolai

Hi

Wenn DU schon mit einem Stepper da ran gehst, würde ich doch die Zeit bis zum nächsten Step warten ein dann den Step ausführen - fertig.

5329 * (Steps pro Umdrehung) = Gesamtanzahl an Steps pro Tag

Wie genau brauchst Du die Zeit? Werden auch Aufnahmen an auf einander folgenden Tagen gemacht?
Dann solltest Du vll. auch eine RTC (DS3231) verbauen.
Dort liest Du Dir die aktuelle Uhrzeit aus und berechnest, bei welchem Schritt Du jetzt sein müsstest.
Bei Ungleichheit einen neuen Step ausführen.

Aus den Steps pro Tag und der aktuellen Sekunde könnte man ggf. direkt mit map den aktuellen Schritt bestimmen - Das wäre ja fast schon zu einfach :confused:

Eine Drehzahl-Anpassung kann ich mir bei der Nutzung eines Steppers nicht sinnvoll vorstellen - Der macht Seinen Schritt, egal wie gehemmt das Getriebe ist - Das ist ja der große Vorteil des Stepper, daß der Step gemacht wird (klar: wenn die Kraft reicht - davon gehen wir aber Mal aus).

MfG

Hallo.

Wenn ich Dich richtig verstehe soll mein Motor quasi einen Schritt machen dann warten dann wieder hüpfen?

Die Uhrzeit spielt eigentlich keine Rolle.

Das wichtigste ist dass es nicht ruckelt oder zu schnell/langsam dreht. Das ergibt dann Fehlern im Bild, die Sterne sind nicht mehr rund sondern werden zu Strichen. Deshalb auch die Drehzahlanpassung.
Ich mache ein Bild und schaue in der Vergrößerung an ob es verzogen ist, wenn ja dann entweder schneller oder langsamer werden.
Deine Rechnung verstehe ich so:

5329*200= 1065800 Steps pro tag sind 741,8595 steps pro min

das bedeutet dann ich muss alle x Millisekunden einen schritt machen lassen.

Die Kraft müsste ausreichen, wird ja durch die Getriebe nur besser. :slight_smile:

gruß Nic

Hi

Naja - der Stepper macht 200 Vollschritte pro Umdrehung, Das sind 1,8°.
1,8° : 5329 = 0,000337774° pro Step
Weiter dürfte sich das Getriebe dämpfend auswirken.
Klar, entsprechend weit geschaut sind 0,3 tausendstel Grad Unterschied zig Kilometer aus einander - hoffe aber, daß der Stern 'fetter' ist.

Ich würde schon über die Steps pro Tag rechnen, ähnlich wie dem Umgang mit millis().

Du fragst die Startzeit von der RTC und machst daraus die Start-Schritt-Nummer, Dein Motor steht dabei bereits auf 'Start'.
Im loop() berechnest Du laufend aus der aktuellen Uhrzeit den aktuellen Step - Vorsicht, daß Du hierbei immer nur vorwärts zählst und, daß Dich kein Überlauf kalt erwischt.
Um Mitternacht könnte die Funktion 'Sekunde vom Tag' nämlich Null, statt 86400 liefern (bzw. hier wohl Schritt vom Tag).

Nun lehnst Du Dich zurück und schaust zu, wie ca. alle 1/10tel Sekunden ein Step weiter gedreht wird.

MfG

Drehzalanpassung deshalb weil es einige Störfaktoren gibt. Hemmung innerhalb der Getriebe, Kälte, Wärme und Gewicht der Kamera mit Objektiv.

Sowas darf keine Auswirkungen auf einen Schrittmotor haben.
Oder er ist falsch ausgelegt.

Ein Schrittmotor wird bei Überlast nicht ein bisschen langsamer, sondern macht Schrittfehler, Aussetzer, wenn sein Drehmoment nicht reicht.

Probleme mit dem Drehmoment sehe ich nicht. Das Getriebe übersetzt auch das Drehmoment das am Ausgang dann 5000 mal stärker ist al die des Motors. Vieleicht auch bedeutend weniger wegen der Verluste im Getriebe aber sicher 1000 mal größer als das des Motors.

Ein Problem sehe ich im im mechanischen Spiel des Getriebes. Damit sich dies nicht auf die Nachführung auswirkt muß das Getriebe immer unter Last arbeiten dh. das Gewicht des Equipments darf nicht so angeordnet sein daß wegen Unwucht es in Bereichen vom Motor gebremst werden muß und in anderen Bereichen vom Motor angetrieben werden muß. Entweder immer das eine oder immer das andere.

Grüße Uwe

Hallo wieder,
vielen dank für eure mit Überlegungen und Tipps sowie Ideen.

uwefed:
Probleme mit dem Drehmoment sehe ich nicht. Das Getriebe übersetzt auch das Drehmoment das am Ausgang dann 5000 mal stärker ist al die des Motors. Vieleicht auch bedeutend weniger wegen der Verluste im Getriebe aber sicher 1000 mal größer als das des Motors.

das sehe ich auch so

Ein Problem sehe ich im im mechanischen Spiel des Getriebes. Damit sich dies nicht auf die Nachführung auswirkt muß das Getriebe immer unter Last arbeiten dh. das Gewicht des Equipments darf nicht so angeordnet sein daß wegen Unwucht es in Bereichen vom Motor gebremst werden muß und in anderen Bereichen vom Motor angetrieben werden muß. Entweder immer das eine oder immer das andere.

Grüße Uwe

Ich kenne aus meinem Betrieb die verbauten Getriebe.
hier mal die Vorteile der verwendeten Bauart.

Vorteile:

spielfreies Untersetzungsgetriebe
hohe Momentkapazität
hervorragende Positions- und Wiederholgenauigkeit
hohe Torsions- und Kippsteifigkeit
kleine Abmessungen, geringes Gewicht
hohe Untersetzungsverhältnisse
hoher Wirkungsgrad
lange Lebensdauer
einfache Montage

ein problem sehe ich da nicht. :slight_smile:

Dann werde ich mich mal hinsetzten und ausrechen mit welchen Steps ich am genauesten hinkomme. 1/2 oder 1/4 oder noch kleiner. ist ja mit dem Treiber kein Problem. Melde mich dann wieder wenn der Motor mal dreht. :slight_smile:

Hi

postmaster-ino:
1,8° : 5329 = 0,000337774° pro Step
Weiter dürfte sich das Getriebe dämpfend auswirken.
Klar, entsprechend weit geschaut sind 0,3 tausendstel Grad Unterschied zig Kilometer aus einander - hoffe aber, daß der Stern 'fetter' ist.

Denke, Vollschritt wird ausreichend sein - dabei sind immer beide Spulen bestromt, maximale Kraft.
Microsteps sind nicht genauer - nur feiner!
Erst bei einem Halbschritt (der 2.te davon ist ein Vollschritt) ist eine (zwei) der Spulen voll bestromt und der Rotor in diese Richtung ausgerichtet.

Je feiner Du mit Microstepping hinauf willst, desto mehr Steps müssen gemacht werden und desto weniger Zeit hast Du, um den Nächsten rechtzeitig (also genau jetzt) auszuführen.
Verringert Vibrationen, wird gerne für 'mehr Unterschritte' genommen - meiner Meinung nur feiner, nicht genauer, da die Zwischenpositionen nicht wirklich fest sind.

MfG

Guten Abend.

Puh, es ist doch schwieriger als ich gedacht habe. Ich habe es zwar geschafft dass der Motor sich in die richtige Richtung dreht, doch leider nicht in der gewünschten Drehzahl. :confused:

Um die 741 schritte in einer Minute zu erledigen muss ich quasi alle 80 millisekunden einen impuls rausjagen?

Sorry, aber ich beginne ganz klein.

Gruß nic

Da wäre Dein aktueller Sketch hilfreich.

Gruß Tommy

Tommy56:
Da wäre Dein aktueller Sketch hilfreich.

Gruß Tommy

Ja, das würde Sinn machen.

Jetzt habe ich es nochmals neu gemacht und der Motor dreht gar nicht mehr. Sch......

int DirPin = 8; //D8 Drehrichtung
int StepPin = 9; //D9 Impuls

void setup(){
  pinMode(DirPin, OUTPUT); //Als Ausgang bestimmeen
  pinMode(StepPin, OUTPUT); // Als Ausgang bestimmen
  
  digitalWrite(DirPin, LOW); // D8 ausschalten
  digitalWrite(StepPin, LOW); // D90 auaschalten
  
  Serial.begin(9600);
  }
  
void loop(){
  digitalWrite(StepPin, HIGH);
  Serial.println("Ein");
  delay(5);
  digitalWrite(StepPin, LOW);
  Serial.println("Aus");
  delay(5);
  }

Keine Ahnung ob das Teil des Problems ist, aber das "Serial.println()" braucht auch Zeit. Vor allem bei einer Geschwindigkeit von 9600baud.
Evtl. reicht ja schon ein

void loop(){
  digitalWrite(StepPin, HIGH);
  delay(5);
  digitalWrite(StepPin, LOW);
  delay(5);
  Serial.println("Step");
  }

Dann ist der Pulse schon mal 5 Millisekunden lang. Zumindest ungefähr, denn digitalWrite() braucht auch seine Zeit.
Mario.

Hi

//Hier vor der Wartezeit
while (millis()-startzeit<=wartezeit);
startzeit=wartezeit;
//Hier nach der Wartezeit

Hätte zumindest den Vorteil, die Wartezeit nicht auf die Laufzeit drauf zu packen - sofern die Laufzeit kleiner als die Wartezeit ist.

MfG

Die max Stepfrequenz für den DM442m ist mit 200kHz angegeben (zB www.leadshine.com/UploadFile/Down/DM442m.pdf) (hoffentlich ist das der gleiche wie der DM442c )
daraus ergibt sich ein minimal High von 2,5µS.
Grüße Uwe

... dann wird's schon mit micros() knapp :wink:

Guten Abend. Jetzt komm ich ein bisschen durcheinander. Geht das nun mit dem Treiber am Ende gar nicht?
Gruß nic

Hi

Laut dem Datenblatt hat der DM442m wohl eine maximale Taktfrequenz von 200kHz, wobei Diese mit Dem von Dir benutztem Treiber nicht übereinstimmen muß.
Wenn Du weniger als zweihunderdtausend Steps pro Sekunde brauchst, sollte der Treiber reichen.
Meine Aussage bezog sich auf '2,5µs', da micros() nur in 4er Schritten zählt (Interner vom Arduino) und somit meine delay-Ersatz-Variante eben nicht mehr funktioniert, da mindestens 4µs Differenz benötigt würden (was im Arduino maximal 64 Befehle entsprechen müsste).

Du wolltest weiter oben alle 80ms einen Step auslösen - da hat der Arduino massig Zeit, sich auf dieses Ereignis vorzubereiten - ich sehe hier bisher keine Probleme.

MfG

Hallo.

Jetzt sehe ich dass ich mich vertippt habe.

Ich habe folgenden Treiber von Leadshine

DM422c

Hier mal das Datenblatt.

Bitte entschuldigt den Fehler.

Ich bin nun soweit dass ich mir das mit den Millis mal genauer anschaue. Macht ja mehr sinn etwas gleich richtig zu machen. Nicht einfach was zusammenwursteln und dann sich ärgern.

Ich melde mich wieder wenn ich weiter bin. ( Kann Montag werden, gehe erstmal aufs Festival). :slight_smile:

Gruß Nic

Hallo miteinander.

Erstmal entschuldigung fürs Ausgraben des älteren Threads.

Ich melde mich jetzt erst wieder da ich aus privaten und beruflichen Änderungen eine längere Pause machen musste. Nichts desto Trotz möchte ich hier weiter machen.

Ich will ja eine motorisierte Nachführung für Astrofotografie bauen.

Hardware habe ich eigentlich alles da.
Nano V3 Klon
Leadshine DM422c
Steppermotor 200steps/rpm
2x Getriebe mit 1/73 Übersetzung ergibt gesamt 1/5329

Jetzt habe ich mal irgendwo in den weiten des WWW ein kleines Excel sheet gefunden bei dem man die „delayzeit“ ausrechnen kann. Leider weis nicht den Urheber bzw. Autor nicht mehr.

Da im Vorfeld schon geschrieben wurde dass es am besten Ohne Delay wäre habe ich jetzt begonnen mich einzulesen.

Hilfreich war der Thread hier.

https://forum.arduino.cc/index.php?topic=423688.0

In dem Excel Sheet kommt ein Delay von 0,081065866 sekunden raus.

Jetzt verstehe ich das so:

Mein Nachtwächter muss bei jeder Runde für 0,0810... Sekunden den Motor ausschalten.
ABER für wie lange muss er denn anbleiben?
Wird das auf eine Sekunde gerechnet?
Quasi Motor für ca. 920 Milisekunden an und dann für 80 Millisekunden wieder aus?

Wenn ja bin ich auf dem richtigen weg, wenn nicht bitte helfen.
Im Anhang ein Screenshot des Excelsheet

Gruß Nic

Du musst dir mal in einem Video anschauen, wie ein Schrittmotor funktioniert. Ein "normaler" Motor dreht sich solange genug Spannung anliegt. Ein Schrittmotor macht einen Schritt - egal wie lange die Spannung anliegt. Die Steuerung muss dann die andere Spule bestromen, um einen weiteren Schritt zu machen.

Du sagst den Treiber welche Richtung und dass er einen weiteren Schritt machen soll.