Spiel im Getriebe muß durch Reibung 'an einem Ende' gehalten werden.
Da kommt dann wieder das Drehmoment zum Zug.
Auch, wenn wir schon weiter sind - wenn ich doch von meiner 3ppm-RTC (DS3231) 32000 Impulse die Sekunde bekomme - sollte ich doch innerhalb eines Pixel bleiben.
Ich möchte sogar behaupten, daß der Stepper nicht bei jedem Impuls der RTC was Neues zu tun bekommt.
Vll. sollte ich Das einfach Mal selber zusammen schustern - ich sehe hier nämlich echt kein Problem - vorausgesetzt, daß der Stepper im Hintergrund schnell genug läuft, daß wir alle 3µs auf den kommenden Impuls reagieren können und uns die Berechnung des Ziel-Schritt ebenfalls nicht zu lange aufhält.
Erstmal muss man bei der Ausrichtung der Drehachse auf den Polarstern (bzw. genau genommen die echte Richtung der Erdachse) auch die passende Genauigkeit hinbekommen, dann vor dem Start der Belichtung das Spiel aus dem Getriebe kriegen, dann die Erschütterungen eines Stepper-Motors wegkriegen usw. Ich fürchte, in der Mechanik steckt weit mehr Unschärfe als im ganzen Rest.
Nicht umsonst hat man bei Arduino beschlossen, dass die Zeit auf 1 promille genau (1000 ppm) gut genug für die meisten Anwendungen ist und zu einem 10 bit ADC passt.
Mit einem Quarz von 20 ppm würde ich, jedenfalls wenn es meine Mechanik wäre, mich um den Rest kümmern ...
Ich besitze die Möglichkeit eine nahezu perfekte Poljustage über eine nette Software hin zu bekommen. Kümmert euch also nicht weiter darum. Mit Astrotrackern sind meistens bis zu 5min ohne Guiding drin, doch so viel will ich gar nicht. Um die Mechanik kümmere ich mich derweilen. Die Frage wäre tatsächlich "nur" auf welche Art die Programmierung für einen newbie wie mich am meisten Sinn macht und am besten umzusetzen ist.
Wenn ihr alle zusammen euer wissen in einen Topf werft, welche Merhode würde am meisten Sinn machen, wenn wir auf 6 Stellen Genauigkeit beschränkt bleiben würden? Blendet Mechanische stabilität, Seeingeinflüsse, Vibrationen, Temperaturbedingen etc. aus und geht nur von einer Lösung aus, als wären alle anderen gegebenheiten relativ
Stromversorgung, tragbar mit 12v und 5v Ausgängen ist vorhanden.
Ziel soll sein:
Tracking so genau es mit .000000 stellen geht
Dauertracking als loop
Vor- sowie Rücktaste für schnellen Vollschrittbetrieb
ST4 Buchse an Richtungsgebung und Step um Guiding möglich zu machen
An/Aus-Knopf
-LED Grün für Betrieb, LED Rot für Schnelllauf
Welche Genauigkeit würde die Auflösung auf 1/32000stel Sekunden ergeben?
Aber scheinbar ist Das nicht machbar - zumindest in der Theorie hättest Du den einen oder anderen Ansatz schon Mal zu Papier bringen müssen, um Da irgendwann mit fertig zu werden.
nachdem ich nun meine Nachführung zum laufen gebracht habe möchte ich auch ein paar Gedanken dazu geben.
Ich habe mir ja auch eine, zugegeben recht massive Nachführung gebaut und mithilfe von euch hier auch zum laufen gebracht.
Warum habe ich mich entschieden diese so stabil zu bauen? Ganz einfach, das Eisstil Modell mit gebogener Gewindestange taugt nix. Musste ich leider auch lernen. Aber wie sagt man so schön: Learning by doing!
Zugegeben ich hatte etwas Glück an diese beiden, doch sehr guten Getriebe zu kommen.
Ich habe im Anhang mal ein Bild vom Wochenende eingestellt.
Zum Thema Ausrichten kann ich meinem Vorredner nur beipflichten. Umso genauer umso besser und Je massiver das Teil desto stabiler steht es da.
Ausgerichtet habe ich das ganz so: Drehachse Paralell zur Erdachse auf 48,xx grad. Mit dem Handy Winkelmesser.
Mit einem Kompass nach Norden gerichtet. Alles noch sehr ungenau.
Dann grob scharf gestellt und natürlich voll daneben.
Aber man sieht die Belichtungszeit von 135 Sekunden ist doch recht gut. keine Strichspuren.
Im Moment bin ich dabei, dankt 3D Drucker mir verschiedene Hilfsmittel zu drucken. Zum beispiel eine Bathinov Maske um besser scharfzustellen.
Dann noch eine Halterung für den Polsucher.
ich habe mal i Astro Forum etwas sehr hilfreiches gelesen.
Sinngemäß lautete es so: Schleife Dir keinen kleinen Teleskopspiegel zum üben wenn 'Du eigentlich einen großen Willst. Das wäre vergeudete Zeit.
Deshalb baute ich mir gleich eine richtige Stabile Nachführung mit der ich meine Canon mit dem 500er Sigma plus Konverter draufpacken kann.
Ich würde mal sagen, nur wenn er bereit ist nicht Newbie zu bleiben .
Ist schon anspruchsvoll, aber machbar. Die 6 Stellen Genauigkeit bedeuten jedenfalls, dass Du nicht einfach mit dem internen Takt arbeiten kannst. Da brauchst Du zumindest den schon öfter erwähnten DS3231 als Taktgeber. Das dürfte zumindest die günstigste Möglichkeit sein, auf 2ppm zu kommen. Mit dem 32kHz Takt würde ich dann den Timer1 des Arduino versorgen, und davon die Steps ableiten - in der Art wie ich das oben schonmal vorgschlagen habe - nur eben jezt auf die 6Stellen Genauigkeit begrenzt. Mit Rest und Fehlervariable wirst Du aber auch arbeiten müssen.
Der Rest ist dann 'übliche ' Arduino-Programmierung. Aber nicht unbedingt ein Newbie-Projekt. Auf dem Stand darfst Du nicht stehenbleiben, wenn Du das stemmen willst.
@oneup2: Ich habe eine HEQ5 Skyscan goto Montierung mit Asiair, einer 183mm pro am TSED70Q und ein 8" TS Carbon RC. Ich benötige tatsächlich keine Ratschläge in Sachen Montierung.. Asiair besitzt eine Polaraligment routine, die alles bisherige in den Schatten stellt.
Dieses Projekt soll ein "Rucksack"-Projekt werden, damit man, egal wo man ist, einen Astrotracker dabei hat. Es ist möglich sowas zu bauen. Mein Problem wäre eher die Programmierung, daher die Anfrage.
@MicroBahner: Danke für deinen Rat, genau darum ging es, einen Schubs in die richtige Richtung. Ein Wink, damit ich weiß, in welche Richtung ich mich belesen muss. Ich denke ich lerne recht schnell. Ich will versuchen mich so gut es geht ein zu lesen Wenn ich mal einen Sketch fertig habe, poste ich ihn hier bzw. lasse euch da nochmal drüber schauen
Dann erstmal viel Erfolg beim (tieferen ) Einstieg in die Arduino Thematik. Um das Lernen von Grundlagen wirst Du nicht herumkommen - da können am Anfang Tutorials und Beispiele helfen. Erstmal das Einlesen von Tastern und das Ansteuern von Led's lernen und - ganz wichtig - lernen wie man blockierfrei programmiert ( also ohne den Einsatz von 'delay' ). Bei der Geschichte mit dem Timer wirst auch um das Datenblatt des Prozessors nicht herumkommen - nicht ganz einfache Kost. Denn die Standard-Arduino Funktionen unterstützen so etwas nicht.
Was die ST4-Schnittstelle angeht, wäre dann auch noch zu klären wie die im Detail funktioniert. Was ich auf die Schnelle gefunden habe, scheint die technische Doku da nicht so doll zu sein.
MicroBahner:
Dann erstmal viel Erfolg beim (tieferen ) Einstieg in die Arduino Thematik. Um das Lernen von Grundlagen wirst Du nicht herumkommen - da können am Anfang Tutorials und Beispiele helfen. Erstmal das Einlesen von Tastern und das Ansteuern von Led's lernen und - ganz wichtig - lernen wie man blockierfrei programmiert ( also ohne den Einsatz von 'delay' ). Bei der Geschichte mit dem Timer wirst auch um das Datenblatt des Prozessors nicht herumkommen - nicht ganz einfache Kost. Denn die Standard-Arduino Funktionen unterstützen so etwas nicht.
Was die ST4-Schnittstelle angeht, wäre dann auch noch zu klären wie die im Detail funktioniert. Was ich auf die Schnelle gefunden habe, scheint die technische Doku da nicht so doll zu sein.
Das wird ein Spaß. Ich bastel gerade schon mit den ersten Dingen herum, LED's, if/elseif/else, count etc. Das ist echt ne Interessante Sache!
ST4 ist sowas wie ein einfaches Datenkabel (LAN) hier liegen Signalleitungen.
z.B so:
Guider sieht guidstern, mist die differenz der Abweichung und gibt ein Singal z.B 500ms lang, dieses Singal wird dann zum Motor durchgeschliffen, damit der Motor entweder langsamer oder schneller läuft (je nach Abweichung). Klingt kompliziert, ist es aber absolut garnicht. Sind 4 zusätzliche Kabel und diese kommen einfach nur an DIR und STEP und an zwei digitalPins.
Wird schon
EDIT: Toootal überlesen.. delay-frei.. das geht? Nächstes Lesethema!
Chrizl89: @oneup2: Ich habe eine HEQ5 Skyscan goto Montierung mit Asiair, einer 183mm pro am TSED70Q und ein 8" TS Carbon RC. Ich benötige tatsächlich keine Ratschläge in Sachen Montierung.. Asiair besitzt eine Polaraligment routine, die alles bisherige in den Schatten stellt.
Hallo, na dann viel Erfolg. ich bin somit raus aus dem Thema. Lese aber gerne noch mit.
Chrizl89:
EDIT: Toootal überlesen.. delay-frei.. das geht? Nächstes Lesethema!
Ist sogar eines der wichtigsten Lernthemen überhaupt - zumindest wenn man etwas komplexere Sketche schreiben will. Und deiner wird schon etwas komplexer werden ...
Edit:
Unser 'Rentner' hat gerade zu dem Thema ein schönes Tutorial geschrieben.
Wobei ich personlich für die Timerfunktionen nicht direkt die millis() verwende, sondern dafür meinen MoToTimer aus den MobaTools nutze. Das Grundprinzip ist dasselbe, aber ich finde es übersichtlicher im Code und einfacher zu handhaben.
Aber erstmal musst Du das Grundprinzip verstanden haben.
Wenn Du Modellbahner wärst, hätte ich dich auch noch auf ein anderes Tutorial verwiesen. Da wird das anhand von einer im Kreis fahrenden Lok erklärt. Falls Du als Kind mal sowas gemacht hast...
MicroBahner:
Ist sogar eines der wichtigsten Lernthemen überhaupt - zumindest wenn man etwas komplexere Sketche schreiben will. Und deiner wird schon etwas komplexer werden ...
Edit:
Unser 'Rentner' hat gerade zu dem Thema ein schönes Tutorial geschrieben.
Wobei ich personlich für die Timerfunktionen nicht direkt die millis() verwende, sondern dafür meinen MoToTimer aus den MobaTools nutze. Das Grundprinzip ist dasselbe, aber ich finde es übersichtlicher im Code und einfacher zu handhaben.
Aber erstmal musst Du das Grundprinzip verstanden haben.
Wenn Du Modellbahner wärst, hätte ich dich auch noch auf ein anderes Tutorial verwiesen. Da wird das anhand von einer im Kreis fahrenden Lok erklärt. Falls Du als Kind mal sowas gemacht hast...
Ich werde das beherzigen und mir deine tools mal ansehen. Vielen Dank übrigens, dass du ein so großes Stück Arbeit einfach so teilst
Nicht mit delay zu arbeiten, macht nach ein wenig lesen definitiv Sinn. Ich habe einen kleinen Sketch fertig gehabt, allerdings noch mit delay(), in dem ich einen Nema17 direkt über das Nano Board per Druckschalter steuere und dementsprechende LED's aufleuchen. Tolles Thema mit dem Arduino. Wird mir viel Spaß bereiten mich da durch zu fuchsen
Dann mal ran an die Timer (momentan noch Grund für Kopfschmerzen bei all den code lines...), wird schon!
EDIT: Das Tutorial vom "Rentner" ist echt gelungen!
mal nochmal eine kurze Frage, finde in der Suche nichts passendes: Ist es möglich mehrere loop() zu setzen und je nach INPUT den jeweiligen loop() zu aktivieren?
Nein, es gibt nur einen loop(). Aber Du kannst natürlich im loop z.B. unterschiedliche Funktionen aufrufen, und je nach Input die eine oder andere einfach überspringen. Bzw. immer nur einen davon aufrufen.
Was die beste Lösung ist, dazu müsste man aber erstmal die Aufgabenstellung kennen.
Die Arduinos haben genau einen Prozessor mit genau einer Task, es kann also immer genau eine Aktion durchgeführt werden. Durch eine möglichst blockadefreie Programmierung erhält man eine quasieparallele Programmausführung.
Die MobaTools verwenden Interrupts zur Unterbrechung des normalen Programms, um die notwendigen Schritte flüssig zu gestalten. (Darum empfehlen wir Dir die!)
Die MobaTools sind allerdings fest mit dem internen Takt verbandelt. Und wenn der ihm von der Genauigkeit nicht ausreicht, kann er sie also nicht verwenden. Und auf 6 Stellen genau rechnen die MobaTools auch nicht - macht bei der Genauigkeit des internen Taktes ja eh keinen Sinn.
Er kann die dort verwendeten Prinzipien natürlich auch nutzen, wenn er den Timer mit externem Takt von der RTC versorgt. Da kann ich ihm dann sicher ein paar Tips geben - oder/und er schaut in die MobaTools Sourcen.
Bei ihm ist es aber sicher einfacher, weil er ja seine Anwendung genau kennt, und es nicht so allgemein halten muss wie bei den MobaTools. Trotzdem ist es sicher keine leichte Kost am Anfang. Aber er ist ja einer, der sich da reinwühlen will 8) - dann wird das schon.
MicroBahner:
Die MobaTools sind allerdings fest mit dem internen Takt verbandelt. Und wenn der ihm von der Genauigkeit nicht ausreicht, kann er sie also nicht verwenden. Und auf 6 Stellen genau rechnen die MobaTools auch nicht - macht bei der Genauigkeit des internen Taktes ja eh keinen Sinn.
Er kann die dort verwendeten Prinzipien natürlich auch nutzen, wenn er den Timer mit externem Takt von der RTC versorgt. Da kann ich ihm dann sicher ein paar Tips geben - oder/und er schaut in die MobaTools Sourcen.
Bei ihm ist es aber sicher einfacher, weil er ja seine Anwendung genau kennt, und es nicht so allgemein halten muss wie bei den MobaTools. Trotzdem ist es sicher keine leichte Kost am Anfang. Aber er ist ja einer, der sich da reinwühlen will 8) - dann wird das schon.
Achjaaaa liebe Leute,
man, oder zumindest viele, lernen ja auch ab und an aus ihren Fehlern. Ich war also vorgestern beim Astrostammtisch und habe mich dort ein wenig unterhalten! Mir reichen sogar schon wenige Stellen hinter dem Komma. Dafür gibt es dann häufigere Korrekturen. Soll heißten ich korriegiere nicht jeweils eine micro sondern ruhig direkt ganze pakete. Das ist bei der Abweichung genau genug. Soll bedeuten: wenn ich zum Beispiel einen (nur als Überlegung, nachher natürlich mit MoBaTools o.ä) delay() von 0.1194735284 bräuchte (einfach nur als Beispiel) reicht es völlig auf 0.119 zu gehen und alle 10 steps (ca eine Sekunde) eine Korrektur zu fahren.
Somit fuchse ich mich tatsächlich mal in den MoBa's rein. Auch wenn das für mich momentan noch römische Dörfer sind. Immerhin bekomme ich es (leider noch mit delay()) hin bei verschiedenen Tastern unterschiedliche Aktionen mit verschiedenen LED's und Serial.print-Ausgabe hin zu bekommen und sogar einen Taster der nach 2sek gedrückt halten den "Modus" ändert. Ich bin also dran!!!
Chrizl89:
Dafür gibt es dann häufigere Korrekturen.
Das erinnert mich an die von der PTB eingefügten Schaltsekunden.
Chrizl89:
... delay() von 0.1194735284 ...
Im Deutschen können wir neben den englischen Fachtermini doch auch schön deutsche Wörter wie "Verzögerung von 0.1194735284 ms" verwenden. Dann ist klar, daß Du nicht das blockierende delay() meinst.
Chrizl89:
Somit fuchse ich mich tatsächlich mal in den MoBa's rein. Auch wenn das für mich momentan noch römische Dörfer sind.
Nach meiner Erinnerung standen die Dörfer in Böhmen, aber dennoch freue ich mich schon sehr auf Deine AstroTools!
agmue:
aber dennoch freue ich mich schon sehr auf Deine AstroTools!
Ich auch, wenn es denn mal soweit sein sollte
Da kommt doch gleich noch mal eine Frage an die allgemeinheit auf...!
Mir ist nicht ganz klar, wie sowas in der Programmiersprache umsetzbar wäre, oder ob es überhaupt funktioniert.. Aber vielleicht wisst ihr ja anhand der Beschreibung "ob" sowas möglich wäre:
Angenommen ich würde über den Befehl "Time = millis()" anfangen die Zeit seit Einschaltung ausgeben zu lassen, gäbe es eine mathematische Gleichung mit der ich sagen könnte "immer wenn millis() geteilt durch (z.B.) 0.1194735284 (ms bis nächster Step) = 1 oder ein vielfaches von 1 ergibt, mache einen Schritt"? Oder denke ich da mal wieder zu laienhaft? Denn so könnte man ja einen vorgegebenen internen Takt des Systems(Zeit) nutzen, diesen auslesen und für eine Anwendung nutzen ohne dafür blockierende delay's einsetzen zu müssen. Dazu dann noch ein "CountUp" rein, der alle (x) Zähler korrigiert...
Mathe können dieses kleinen Boards ja recht gut, zumindest besser als ich, aber was das in der hier so beliebten Arduino-Sprache bedeuten soll, wäre für mich, um es mit agmue's Worten zu sagen: Böhmen!
Aber das soll ja nicht so bleiben. Wenn ich unter den Variablen bzw. der Mathematik nachlese, würde das schon Sinn machen, wenn sowas funktioniert. Aber wie sowas in Code aussehen könnte, zumindest grob, ist mir vollkommen schleierhaft.
EDIT: Ich meinte natürlich ein vielfaches von 0.1194735284 nicht von 1..... ! Grober Schnitzer
EDIT (EDIT?!): Ein vielfaches von 0.119 würde natürlich reichen (plus korrektur alle x schritte)
Chrizl89:
Mathe können dieses kleinen Boards ja recht gut, zumindest besser als ich, ...
Deine Fähigkeiten kann ich natürlich nicht einschätzen, aber die 8-Bit Arduinos rechnen in Gleitkomma nicht wirklich gut, deutlich schlechter als Taschenrechner. Problematisch ist, daß Du in Zehnerpotenzen denkst, der µC aber nur Bits kennt. Daher wurde Dir auch schon die Verwendung von ganzen Zahlen nahegelegt. Auf 8-Bit Arduinos würde ich Fließkommarechnungen möglichst meiden, weil Dir schnell eine nicht vorhandene Genauigkeit vorgegaukelt wird.
Teensy 3.5 und 3.6 haben extra Recheneinheiten, die könnten möglicherweise besser sein, allerdings fehlen mir da praktische Erfahrungen.
Was ich schreibe, soll Dich nur für die Problematik sensibilisieren, was Du für Dein Vorhaben wirklich benötigst, weiß ich nicht.
Chrizl89:
... "immer wenn millis() geteilt durch (z.B.) 0.1194735284 (ms bis nächster Step) = 1 oder ein vielfaches von 1 ergibt, mache einen Schritt"?
Wenn Du eine Fließkommazahl durch eine andere teilst und der ganzzahligen Rest ist größer Null, machst Du einen Schritt.
float f1, f2;
f1 = ...;
f2 = ...;
if (int(f1 / f2)) {//Mache einen Schritt}