Hi Wolfi,
sehr schön, ich benutze auch INDI mit eine raspbery pi.
Der Fehler ist mir nicht aufgefallen.
Kann aber an der lx200 skript liegen.
Freut mich dass es klappt!
Grüße
Igor
Hi Wolfi,
sehr schön, ich benutze auch INDI mit eine raspbery pi.
Der Fehler ist mir nicht aufgefallen.
Kann aber an der lx200 skript liegen.
Freut mich dass es klappt!
Grüße
Igor
Stellarium macht den goto mit Steuerung 1.
Also objekt anklicken und dann steuerung taste und taste 1.
Dann macht er den sr und sd und ms Befehl hintereinander.
Ganz normal bei mir alles.
Poste mal dein log.
Gruß
Igor
Hallo wolfi,
Der stelarium führt den :MS# Befehl aus.
Ich benutze es seit jahren schon.
Ich weiß es 100% auch weil ich genau diese Befehl benutze um es zu synchronisieren.
Dabei entscheide ich selber auf arduino (taste) ob das ein sync ist was grade gekommen ist oder wirklich ein slew.
Einfach oder
Gruß
Igor
Hi,
Das ganze mit stelarium stimmt nich so gsnz.
Sync macht er nicht, das ist klar.
Aber slew, den macht er nach lx200 soweit ich mich erinnere.
Gruß
Igor
ein kleines Graph der Nachführungs Fehler wäre nicht schlecht, so dass man es abbrechen kann, falls Ausschläge vorhanden waren.
Welche Cam willst du eig. anschließen?
Grüße
Igor
Hallo wolfi,
Das freut mich sehr!
Gruß
Igor
Bei mir läuft das wunderbar.
Aktiviere mal die logs bei Stellarium, um dann die Kommunikation zu verfolgen.
Gruß
Igor
Ich setze den Zeichen aber auch in :Gt und :GD Befehle auch rein an passende Stelle.
Serial.print((char)223);
Hier ein Hinweis darauf:
Zitat:
"
There are four special non-terminal characters in the grammar. The <command-prefix> non-terminal (see the BNF or RR Syntax pages) is a hash-mark (or number sign) character (ASCII 0x23 '#') followed by a colon character (ASCII 0x3a ':'). The <command-suffix> non-terminal is a hash-mark (or number sign) character (ASCII 0x23 '#'). An ACK non-terminal (ASCII 0x06) is also used as a Command in the grammar (returning the current Alignment mode). And finally the degree symbol (ASCII 223 '°' [0xdf]) non-terminal is used as the separator character in degrees and minutes. This character is shown as an asterisk (ASCII 0x2a '*') in the manual for both the 16-inch and smaller telescopes and is followed by a note in the manual describing the ASCII value of the character. On the hand controller, however, the value appears as a degree symbol.
"
Gruß
Igor
Hallo Wolfi,
das Befehl :SD , beinhaltet diese Zeichen!
Um es besser handeln zu können schneide ich es raus.
Z.B: :Sd +42?19:47#
Da wo jetzt der ? Zeichen ist befindet sich 0xDF
Und genauso beim :GD Befehl in Low Precision Mode
Gruß
Igor
void lx200Controll()
{
//************ LX200 CONTROLL
int inByte;
short d1, d2, d3;
if (Serial.available() > 0) {
// get incoming byte:
inByte = Serial.read();
if (inByte == -1) return;
if (pos >= (sizeof buf / sizeof buf[0] - 1)) {
pos = 0;
buf[pos] = 0;
// ERRO
}
if (inByte != '#') {
if((inByte != (char)32) && (inByte !=(char)10) && (inByte != (char)13) && (inByte != '0xDF'))
{
buf[pos++] = inByte;
buf[pos] = 0;
}
}
else
{
if (buf[0] == ':')
{
//*********************************************
//************ MAIN lx200 switch **************
switch (buf[1])
{
//*****************
// All :M* commands
//*****************
case 'M':
switch(buf[2])
{
case 'n':
// Motor north - :Mn
RunDEC_FWD(true);
break;
case 's':
// Motor south - :Ms
RunDEC_REV(true);
break;
case 'w':
// Motor west - :Mw
RunRA_FWD(true);
break;
case 'e':
// Motor east - :Me
RunRA_REV(true);
break;
//PulseGuide
case 'g':
switch(buf[3])
{
case 'n':
// Motor north - :MgnDDDD#
RunDEC_FWD(true);
readDigit(buf + 4, pulseGuideDurationDEC);
pulseGuideStartDEC = millis();
break;
case 's':
// Motor south - :MgsDDDD#
RunDEC_REV(true);
readDigit(buf + 4, pulseGuideDurationDEC);
pulseGuideStartDEC = millis();
break;
case 'w':
// Motor west - :MgwDDDD#
RunRA_FWD(true);
readDigit(buf + 4, pulseGuideDurationRA);
pulseGuideStartRA = millis();
break;
case 'e':
// Motor east - :MgeDDDD#
RunRA_REV(true);
readDigit(buf + 4, pulseGuideDurationRA);
pulseGuideStartRA = millis();
break;
}
break;
case 'S':
// gotoTarget - :MS
if(chuckControl ==1)
{
//Manuelles synchronisieren über den Nunchuck
syncScope();
//Serial.print("0");
sp0();
}
else
{
if(Synchronized){
gotoStartSlew = millis();
GoTargetRA(RAHour, RAMinute, RASecond);
GoTargetDEC(DECSign, DECDegree, DECMinute, DECSecond);
//Serial.print("0");
sp0();
}else{
//Nicht synchronisiert
//Serial.print("1");
sp1();
}
}
break;
}
break;
//*****************
// All :Q* commands
//*****************
case 'Q':
switch(buf[2])
{
case 0:
//Halt everything - :Q
motor=DEC_M;
dSPIN_SoftStop();
break;
case 'e':
case 'w':
// Halt east and west slews - :Qe or :Qw
RunRA_FWD_STAR();
break;
case 's':
case 'n':
// Halt north and south slews - :Qs or :Qn
motor=DEC_M;
dSPIN_SoftStop();
break;
}
break;
//*****************
// All :S* commands
//*****************
case 'S':
switch(buf[2])
{
case 'r':
// Set target object RA, format #:Sr HH:MM:SS#
stora();
break;
case 'd':
// Set target object declination, format #:Sd +DD:MM:SS#
stodec();
break;
case 'S':
slst();
break;
}
break;
//*****************
// All :R* commands
//*****************
case 'R':
switch(buf[2])
{
case 'G':
// Set slew rate to Guiding Rate (slowest) :RG
lx200SPDSid = guideSpdSid;
break;
case 'S':
// Set Slew rate to max (fastest) :RS
lx200SPDSid = runSpdArray[7];
break;
}
break;
//*****************
// All :G*-commands
//*****************
case 'G':
switch(buf[2])
{
case 'W':
//TODO
// get scope alligment status
// returns <mount><tracking><aligement>#
// mount: A=azEl mounted, P=Equatorial mounted, G=german mounted equatorial
// Only support G
// tracking: T=Tracking, N=non Tracking
// alligemnt: 0-needs alligment, 1=one star alligment, 2= two star, 3=three star
// alwas return 0
break;
case 'S':
//:GS# Get the Sidereal Time
//Returns: HH:MM:SS#
gst();
break;
case 't':
break;
case 'g':
break;
case 'C':
//TODO
// get current date
// returns MM/DD/YY#
break;
case 'c':
// Get Calendar Format - :Gc
Serial.print("24#");
break;
case 'L':
// get local time in 24 h format
// returns HH:MM:SS#
break;
case 'T':
// Gets the current track 'frequency' - :GT
break;
case 'M':
// Gets site name - :GM
Serial.print("Arduino");
Serial.print("#");
break;
case 'I':
// Initialize Telescope - :I
break;
case 'D':
// Get Telescope DEC - :GD
gd();
break;
case 'd':
// Get Currently Selected Object/Target Declination Returns: sDD*MM# or sDD*MM’SS#
gdt();
break;
case 'R':
// Get Telescope RA - :GR
gr();
break;
case 'r':
// Get current/target object RA Returns: HH:MM.T# or HH:MM:SS
grt();
break;
}
break;
//*****************
// All :C* commands
//*****************
case 'C':
switch(buf[2])
{
case 'M':
// Synchronizes the telescope's position with the currently selected database object's coordinates
syncScope();
Serial.print("sync#");
break;
}
break;
}
}
pos = 0;
buf[pos] = 0;
}
}
}
Alles anzeigen
Hallo wolfi,
Das sieht sofort besser aus.
Super.
Ich werde heute den einfachen lx200 code rausholen...
Hallo wolfi,
Zum Schluss soll es dann so aussehen:
Auch wenn du ein goto abbrichst oder die Monti per tasten bewegst, muss die Steuerung immer wissen wo sie ist.
Gruß
Igor
Hallo wolfi,
Du springst ja nur zu gesendete Koordinaten oder?
Hallo Wolfi,
ändert an meine Frage nichts.
DEIN BEISPIEL:
Sterngeschwindigkeit 86164 Sekunden
Untersetzung Schnecke 1:288
Untersetzung Vorgetriebe 1:9
Gesammtuntersetzung 2592
Motorgeschwindigkeit 86164/2592 = 33,24228395
Schritte pro Umdrehung der Stundenachse = 2592 * 200 = 518400
Mikroschritte (16) pro Umdrehung der Stundenachse = 2592 * 200 * 16 = 8294400
Auflösung bei 16 Mikroschritte = (360 *60 *60) / 12441600 = 0,15625 Bogensekunden
So muss der Stepper in 33,24228395 Sekunden eine Umdrehung machen, um den Teleskop in 86164 Sekunden einmal zu drehen.
Motorgeschwindigkeit siderisch pro Sekunde = 200 Steps / 33,24228395 sec = 6,016433777
So muss der Stepper 6,016433777 Vollschritte pro Sekunde machen um mit Sterne laufen zu dürfen.
Jetzt in Mikroschritten = 6,016433777 * 16(Mikroschritte) = 96,262940 Mikroschritte pro Sekunde
Mit deinem heutigen Treiber muss du die Velocity angeben. Dass ist die Geschwindigkeit mit die dein Motor in eine Richtung laufen soll.
Die Velocity Auflösung deines Treibers ist 1 1/16 steps/sec
Dies bedeutet aber dass dein Treiber dir dein Wert von 96,262940 aufrundet auf 96 oder 97.
So hast du ein Fehler von mindestens 0,26 Mikroschritte pro Sekunde bis max 0,737 Mikroschritte pro Sekunde
Hast du auf den Schirm, dass du nie perfekt den Stern hinterher laufen kannst?
Dass betrifft auch meine Steuerung.
Gruß
Igor
Hallo Wolfi,
ich weis nicht wie du auf 0.16" kommst.
Laut deine Angaben komme ich auf ein anderen Wert raus.
Aber ich rechne mal was für dein Bespiel, was du bestimmt noch nicht gemerkt hast.
DEIN BEISPIEL:
Sterngeschwindigkeit 86164 Sekunden
Untersetzung Schnecke 1:144
Untersetzung Vorgetriebe 1:27
Gesammtuntersetzung 3888
Motorgeschwindigkeit 86164/3888 = 22,16152263374485
Schritte pro Umdrehung der Stundenachse = 3888 * 200 = 777600
Mikroschritte (16) pro Umdrehung der Stundenachse = 3888 * 200 * 16 = 12441600
Auflösung bei 16 Mikroschritte = (360 *60 *60) / 12441600 = 0,104166666666 Bogensekunden
So muss der Stepper in 22,16152263374485 Sekunden eine Umdrehung machen, um den Teleskop in 86164 Sekunden einmal zu drehen.
Motorgeschwindigkeit siderisch pro Sekunde = 200 Steps / 22,16152263374485 sec = 9,024650666171
So muss der Stepper 9,024650666171 Vollschritte pro Sekunde machen um mit Sterne laufen zu dürfen.
Jetzt in Mikroschritten = 9,024650666171 * 16(Mikroschritte) = 144,394410658736 Mikroschritte pro Sekunde
Mit deinem heutigen Treiber muss du die Velocity angeben. Dass ist die Geschwindigkeit mit die dein Motor in eine Richtung laufen soll.
Die Velocity Auflösung deines Treibers ist 1 1/16 steps/sec
Dies bedeutet aber dass dein Treiber dir dein Wert von 144,394410658736 aufrundet auf 144 oder 145.
So hast du ein Fehler von mindestens 0,39 Mikroschritte pro Sekunde!
Ist dir dieser Fehler bewusst?
Gruß
Igor
Hallo zusammen,
hier ist die Tabelle wo man es sehen kann mit welche Auflösung ich meine Montierung treibe.
Ich fahre natürlich mit 128 Mikroschritte.
Gruß
Igor
Weil ich dann ein Monitor brauche mit 220 v Anschluss, weil ich es im freien nicht zuklappen kann, weil das ding zu lahm zum stacken ist, weil kein windows und.....
Gruß
Igor
Hallo Wolfi,
Nein sie kann keine Kamera ansprechen.
Will ich auch nicht, wenn ich astro fotografieren möchte, komme ich um ein laptop sowieso nicht herum.
Dann mache ich goto über handy oder Tablet und guiden tue ich mit guidemaster gleichzeitig.
Die canon als hauptkamera lasse ich ebenso von laptop steuern.
Genauso wie perfekt fokusieren, erste lights prüfen und etc.
Ich habe ja auch keine sterne datenbank auf der steuerung, wofür denn auch. Mit skysafari bin ich schneller.
Gruß
Igor
Hallo Wolfi,
Die onstep ist öffen.
Du darfst da selbst machen wass du willst. Wenn du es schaffst.
Mir gings damals nur um das Konzept.
Onstep war von Anfang an von ein Rechner abhängig. Das wollte ich nicht.
Da fehlte mir ein Handkontroller und Display.
Das ewiges umrechnen zwischen alt azm und ra dec wollte ich ebenso nicht.
Was ich wollte ist eine Steuerung die man einfach einschaltet und die läuft, mit Handbox hin und her bewegen ohne dass ich ein Rechner, Handy oder sonstiges anschließen muss. Und vor allem keine Angaben machen zu mussen wie Datum, Zeit, Beobachtunskoordinaten und etc.
Einfach anmachen und los geht's.
Ähnlich ging es mir mit der Montierung.
Ich wollte eine die ganz viel trägt, ohne schnecken ohne Zahnräder.
Es galb welche, aber für absurden Summen.
Außerdem ging es mir um das basteln an sich.
Ums Geld auch noch.
Ich war weder für eine Steuerung noch für eine Montierung bereit je 1000 € auszugeben.
Was die Kamera betrifft, habe ich keine Probleme.
Wann und wofür brauche ich eine?
Um autoguiden zu können.
Wenn ich autoguiden betreibe, dann schließe ich die Kamera am Rechner und benutze ein Autoguiderprogramm nach Wahl.
Die alle steuern meine Steuerung über lx200. Ohne dass ich unmenge an dritt software installieren muss.
Wenn du lust auf basteln hast, dann ist ehe alles egal, dann tue es!
Ich habe mir die Steuerung und die Montierung im lowcost format gebaut und ich kann dich nur dazu ermutigen, falls du damit dein Spaß hast.
Gruß
Igor
<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">Zitat:<hr height="1" noshade id="quote"><i>Original erstellt von: Birki</i>
<br />
PS: das ist das teil? https://www.sparkfun.com/products/13752
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">
Ja, aber ich habe eine platine mit 2 treiber drauf für arduino pinkompatibel.
Aber tue mir gefallen und lies dir die doku zu dem Treiber.
Grundsätzlich hast du mit solche Treiber immer eine geringere Auflösung als du es brauchst. Solche Teile sind nicht unbedingt für astronomische steuerung gebaut.
Schau dir bitte die Tabelle 9 in Doku.
Vor allem die Registerlänge für die sachen die du nutzen musst.
Gruß
Igor
Hi,
Weil du am anfang über das taktgeben zu deine motoren geredet hast.
Deswegen habe ich dich gefragt ob du deinen motoren step, step, step sagen willst. Das geht halt nich so genau aus einem os wie bei raspi.
Wenn du meine treiber nutzen magst ist dass alles egal weil du dein eigenen clock und quarz garnicht brauchst.
Ich kann mein arduino aus machen und meine treiber laufen weiterhin perfekt.
Aber wie gesagt, es gibt so viele andere Probleme mit meinem Treiber, und auch deinen die du jetzt hast, die man erstmal beweltigen muss.
Nur es dauert bis du soweit bist um die Probleme sehen zu können.
Deswegen kommen viele mit idee steuerung, gut oder überhaupt laufen tun dann wenige.
Hätte ich Interesse daran meine Steuerung publick zu machen, dann hätte ich es vor 3 Jahren gemacht.
So läuft meine Steuerung in einem überschaubarem Norddeutschen Kreis bei leuten herum ohne große Welle zu machen.
Ich biete kein Support, ich nehme kein Geld dafür, nur updates nach lust und Laune.
Gruß
Igor
<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">Zitat:<hr height="1" noshade id="quote"><i>Original erstellt von: mkoch</i>
<br />Der L6470 hat übrigens eine SPI Schnittstelle. Man könnte zwei Stück davon direkt an den Raspi dranhängen.
Gruß
Michael
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">
Klar, so mache ich es ja auch
Gruß
Igor
Mein Treiber hat auch nachteile.
Jedoch bei 128 mikroschritte kann man sich viel mechanisches Ärger sparen.
Wir haben uns vor 3 Jahre oben im Harz bei Utz (STATT) um ein paar Stunden verpasst,
Sonst hättest du es live erleben können.
Gruß
Igor
<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">Zitat:<hr height="1" noshade id="quote"><i>Original erstellt von: mkoch</i>
<br /><blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">Zitat:<hr height="1" noshade id="quote"><i>Original erstellt von: universe</i>
http://www.st.com/en/motor-drivers/l6470.html
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">
Eine Verzerrung der Sinuskurve kann er aber nicht, oder?
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">
Nicht ganz aber sehe mal unter punkt 7.3 im Datenblatt.
Suchst du was für deine neue steuerung?
Gruß
Igor
The digital control core can generate user defined motion profiles with acceleration, deceleration, speed or target position, easily programmed through a dedicated registers set. All commands and data registers, including those used to set analogue values (i.e. current control value, current protection trip point, deadtime, PWM frequency, etc.) are sent through a standard 5-Mbit/s SPI.
Und das ding benutze ich und andere 12 leute seit 3 jahre.