Go Down

Topic: Deep Sky Nachführung Fotografie (Read 3647 times) previous topic - next topic

agmue

Software scheitere ich noch.
Stelle Deinen Programmentwurf zusammen mit einer Frage hier rein und Dir kann geholfen werden. Irgendeine Bewegung sollte sich machen lassen, die Synchronität mit der Erde kannst dann nur Du mit Deiner Mechanik überprüfen.

Ich komme auf ca. 22 µs pro Schritt, welchen Wert hast Du errechnet?
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

P_Extruder

#46
Dec 01, 2018, 10:22 am Last Edit: Dec 01, 2018, 02:25 pm by P_Extruder
... Ich komme auf ca. 22 µs pro Schritt, welchen Wert hast Du errechnet?

https://kukuruku.co/post/diy-an-astro-tracker-in-two-nights/ enthält einen Code, wie er ihn ähnlich bei seinem im Wesentlichen baugleichen Gerät vermutlich schon verwendet.

Da die genannten Getriebe aber nicht ohne weitere Kraftübertragungsteile (Kette/Riemen/Zahnräder) zu gebrauchen sind, sollte zuerst die Mechanik geklärt werden, bevor die Steuerung dran ist.

OneUp2

So, nun mal de aktuelle Stand der Dinge.

Der Aufbau ist folgendermaßen:

Motor ->Getriebe 1->Getriebe 2

Quasi der Motor wird direkt an das Getriebe angeflanscht und das zweite auf das erste.

siehe Bild.

So nun zum Code. Ich habe von ganz vorne begonnen.

Ganz ordinär mit Delay. Ohne Delay ist sicher schöner. Aber ist es unbedingt notwendig? Ich meine, es muss ja nur der Motor drehen. Der Arduino hat sonst nix zu tun.

Code: [Select]


#define PUL 9
#define DIR 8 // LOW gegen Uhrzeigersinn, HIGH im Uhrzeigersinn



void setup(){
  pinMode(PUL, OUTPUT);
  pinMode(DIR, OUTPUT);
  digitalWrite(DIR, HIGH); //Uhrzeigersin drehen aktivieren
  }
 
  void loop(){
    digitalWrite(PUL, HIGH);
    delay(50);
    digitalWrite(PUL, LOW);
    delay(50);
    }



postmaster-ino

Hi

T-T-T (Tausend Tonnen Technik) - Das schaut doch schon Mal recht massiv aus - nett!

Der Arduino ist Alles Andere, als eine Quarz-Uhr.
Alleine der Temperatur-Unterschied, wenn Du Diesen vor der Tür stehen hast, wird Dir ganz andere Zeiten bringen.
Du kannst eine RTC nehmen (aka DS3231) und Dir dort ein 32kHz-Signal ausgeben lassen (wird ggf. laufend ausgegeben, PullUP nötig).
Nun musst Du 'nur' bis 32768 zählen, und schon ist die Sekunde um - hier ist Es auch wesentlich besser, wenn der Arduino sonst nicht viel zu tun bekommt (wobei 3ms loop()-Durchlaufdauer schon schnarch-lahm wäre).

Bei 100ms musst Du halt bis 3276,8 zählen - die Komma 8 musst Du schon mitzählen, wenn Du Das halt auch nicht bei jedem Durchgang schaffen wirst ;)
Bresenham ist hier einen Klick wert

MfG
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

OneUp2

#49
Dec 04, 2018, 08:38 pm Last Edit: Dec 04, 2018, 08:40 pm by OneUp2
T-T-T (Tausend Tonnen Technik) - Das schaut doch schon Mal recht massiv aus - nett!

Danke, lieber zu stabil als labil. Hehe.
Ja, das muss so sein. Kommt eine EOS 40D (0,75kg) mit dem Sigma 150-500mm (1,8 kg) mit drauf.

Das mit der Uhr erschwert die Sache natürlich ungemein für mich. Mal sehen wie ich das bewerkstellige.
Den Link werde ich mal in Ruhe durchlesen.

Gruß Nic

P_Extruder

... T-T-T (Tausend Tonnen Technik) ...
Wenn da vielleicht noch ein Bugatti Royale von 1927 in der Scheune steht, dann wäre dessen spielfreies Getriebe zu verwenden  :)

Funktionsmodell: https://www.thingiverse.com/thing:3258450


OneUp2

Hallo zusammen.

Ich bin nun auch etwas weiter gekommen. Die Sache mit dem DS3231 Modul hat mich irgendwie angesprochen.

Modul hatte ich daheim.

Nun habe ich, zugegeben aus zwei Programmen, eins gemacht. Da ich des  Programmierens noch nicht mächtig bin habe ich es mir anhand von zwei beispielen zusammen kopiert.

Es gibt ja haufenweise Tutorials, auch auf deutsch, die ich so einigermaßen verstehe.

Jetzt habe ich einen Sketch  der bewirkt dass eine LED im Takt vom DS3231 blinkt.

Praktisch könnte ich nun den LED Pin als Step für den Treiber hernehmen und der Schrittmotor würde bei jedem Interupt CHANGE eine step machen.

Wie kann ich das nun auf meine benötigte stepzeit, Frequenz oder Drehzahl umrechnen?
Dazu bräuchte ich euch.

Hier noch der Sketch

gruß nic

Code: [Select]
// RTC DS3231 SQW Ausgang auf 1 Hz einstellen mit +-2ppm.
// Optional können auch 1,024kHz, 4,096kHz, 8,192kHz
// ausgegeben werden.
//
// Matthias Busse 8.11.2016 Version 1.0

const int hzPin = 2;
const int ledPin = 6;
volatile int hzState = 0;

#include "Wire.h"
#define DS3231_ADDRESSE 0x68
void setup() {
  Wire.begin();
  Serial.begin(115200);
  sqw1HzDS3231();
 
  pinMode(ledPin, OUTPUT);
  pinMode(hzPin, INPUT);
  attachInterrupt(0, pin_ISR, CHANGE);
}
void loop() {
 //nix zu tun
}
void sqw1HzDS3231() {
  // 1 Hz Rechteck ausgeben am SQW Ausgang 
  Wire.beginTransmission(DS3231_ADDRESSE);
  Wire.write(0x0e); // DS3231 Register zu 0Eh
  Wire.write(B01100011); // Register schreiben
  Wire.endTransmission();
}
void pin_ISR() {
  hzState = digitalRead(hzPin);
  digitalWrite(ledPin, hzState);
}

OneUp2

#52
Dec 14, 2018, 03:43 pm Last Edit: Dec 15, 2018, 05:57 pm by OneUp2
So, der nächste Schritt ist folgender.

Ich lese mich in die timer Geschichte ein.

Timer Counter Interrupt

Da hab ich auch ein sehr gutes Video bei Youtube gesehen.

Mal sehen wie ich es zusammen bekomme.

Falls jemand gravierende Fehler merkt/sieht oder findet, bitte melden.

Gruß nic

Doc_Arduino

#53
Dec 14, 2018, 04:46 pm Last Edit: Dec 14, 2018, 04:47 pm by Doc_Arduino
Hallo,

Die Funktionsweise von Timern im Detail allgemeinverständlich zu erklären ist immer schwierig. Deswegen finde ich den Artikel für den Überblick erstmal nicht schlecht. Jedoch sollte er angemahntes auch richtig stellen und nicht im Raum stehen lassen.

Bsp.
"Ein häufiger Irrtum lautet übrigens, dass die CPU des Arduino die Timer antreibt. Die Timer eines Arduino bzw. eines AVR-Mikrocontrollers von ATmel sind von der CPU bzw. MCU unabhängig. Diese Tatsache sollten Sie sich bei den nachfolgenden Diskussionen vor Augen halten."

Ist erstmal völlig irrlevant oder auch unglücklich formuliert. Man muss nur wissen das die CPU und die Timer von der gleichen Taktquelle angetrieben werden und deswegen nichts direkt miteinander zu tun haben. Außer das sie eben von der gleichen Taktquelle gespeist werden. Diese taktet bei original Arduino mit ATmega µC überlicherweise 16MHz.

Ansonsten halte ich es mit konkreten Bsp. besser. Damit man erstmal reinkommt in die Registergeschichte.
http://forum.arduino.cc/index.php?topic=519208.msg3538992#msg3538992
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

agmue

Ich hatte vor etwas mehr als einem Jahr schon einmal begonnen ein "kleines" Tutorial" zu schreiben. Habe jedoch von meinen strengen Lektoren agmue und Rudi keine Freigabe erhalten.  :)   Seitdem liegt das unfertig rum, denn es kommt auf jede Formulierung an. Vielleicht finde ich nochmal die Zeit wenigstens den Stand den es hat zu korrigieren.
Hätte ich geahnt, Deinen Bergsteiger am Aufstieg und Sprung mit dem Fallschirm zu hindern, dann hätte ich anstelle Kritik viel mehr Applaus spendiert.

Ich warte sehnsüchtig auf die Fortsetzung!

Wenn Du einen pingeligen Menschen zum Korrekturlesen ertragen kannst, dann her mit dem Text. Rudi mit seiner Kompetenz und Freundlichkeit hat Dich doch angespornt.
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

Doc_Arduino

Hallo,

vielleicht raffe ich mich dazu nochmal auf. Ich weiß das ihr zwei jederzeit zum Korrektur lesen bereit seit. Um den Schreibstil mit dem Bergsteiger im roten Faden beizubehalten benötigt es eine Portion Muse. Sonst wird das holprig wie in der aktuellen stehen gebliebenen Fassung. Da hattet ihr völlig recht das es so zu durcheinander ist. In der Zwischenzeit habe ich auch mehr eigene Ideen die ich umsetzen möchte. Die drängeln zwar alle nicht, liegen aber rum. Ich denke scharf nach und fühle mich nun irgendwie im Zugzwang ...   :)
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

agmue

[OT]Was ich hier schreibe, versteht neben Rudi nur der Angeschriebene, sorry.

... benötigt es eine Portion Muse.
Meinst Du die Muße oder die Dich küssende Muse? Beides sei Dir gewünscht.

Um den Schreibstil mit dem Bergsteiger im roten Faden beizubehalten ...
Jeder Vergleich hinkt. So läßt Du Deinen Bergsteiger netterweise nicht ohne Fallschirm springen, obwohl die Verzögerung durch das Stück Stoff beim Timer nicht existiert. Irgendwann muß man sich von dem anschaulichen Vergleich auch trennen, weil es einfach nicht mehr paßt. Aber daß ich mich nach einem Jahr sofort an den Bergsteiger erinnere, sagt doch was aus!

Ich denke scharf nach und fühle mich nun irgendwie im Zugzwang ...   :)
Das ist gut, aber ich würde bitte erst Geschenke auspacken und lecker essen wollen.
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

Doc_Arduino

Die lustige Kinderbuch Geschichte - "Bergsteiger mit Timer im Land der Register" oder so ähnlich.  :)


Ich meinte schon die Muse mit einem 's'. Es muss sich alles schön lesen lassen.  :)

Und ja, wenn es dann an die Bsp. geht muss man sich vom "Bergsteiger" dann doch verabschieden. Er soll nur helfen den Einstieg zu finden wie das Teil arbeitet. Zur besseren Vorstellung im Geiste. Du kennst den Teil ja schon.  

Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

OneUp2

So, nun melde ich mich zurück.

Ich habe ein wenig gerechnet.

Also ein, ich sag mal Sternentag, dauert ja bekanntlich 23h 56m und 4s. Sind nach Adam Riese genau 86164 Sekunden.

In denen muss mein Motor 5329 Umdrehungen machen. In Schritten wären das 1065800 Schritte.
Jetzt  die Schritte geteilt durch die Sekunden: ergibt 12,36943503087136 Schritte pro Sekunde.

Jetzt hab ich an PIN2 eine Frequenz von entweder 1Hz, 1,024kHz, 4,096kHz, 8,192kHz oder noch 32kHz.

Nun weiß ich nicht weiter. Das mit den Timern verstehe ich nicht wie man da auf einen extern Takt gehen kann.

Wer kann mir weiter helfen?

Gruß Nic

Tommy56

Gehe doch mal zurück auf die realen Gegebenheiten. Du willst doch nicht knapp 24 Stunden nachführen.
Reduziere das mal auf die reale Fotozeit.

Man kann zwar perfekt sein wollen, dann steigt aber auch der Aufwand extrem. Also betrachte reale Zeiträume und die dann dort vertretbaren Fehler.

Es läßt sich jede Genauigkeit mit genügend finanziellem und hardwaretechnischem Aufwand realisieren. Die Frage ist nur, ob Du gewillt bist, diesen Aufwand zu erbringen.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

Go Up