Autoguiding mit:Trinamic TCML über ASCOM

  • Ersteller des Themas Ersteller des Themas Hotze
  • Erstellungsdatum Erstellungsdatum
Status
Es sind keine weiteren Antworten möglich.

Hotze

Mitglied
Hallo,
ich bin der Neue.

Es geht um Autoguiding der RA.

Ich habe ein Steprocker Board (TMCM-1110) und einen passenden Motor (2,8A) an meiner EQ3 dazu Taster für schneller und langsamer.
Das ganze funktioniert (noch) ohne PC.
Autoguiding habe ich nur über den PC vor.
Es geht nicht um das perfekte Foto, es geht mir eher um die Bastelei dahinter!

Ich stolperte in einem Thread über eine ähnliche Steuerung und zwar steht recht weit unten:
Zitat von Jens_Lange:
(...) ich habe in meiner Sternwarte seit einigen Jahren eine Trinamic-Steuerung laufen. Gibt es in verschiedenen Ausführungen mit Mikroschrittbetrieb (allerdings nicht ganz so billig wie z.B. eine Arduino-Lösung) und kann jeden Schrittmotor steuern.
Meine Software dazu macht genau das, was hier eingangs gefragt wurde: Sie emuliert ein komplettes LX200 an einem virtuellen Com-Port, der von ASCOM angesprochen werden kann. Die Befehle werden umgesetzt in die Trinamic-Steuersprache TMCL und an die Steuerung über USB weitergeleitet.(...)

Genau was ich suche!
Keine Angst, ich will nichts kopieren.
Anleitungen zu ASCOM gibt es auf YouTube.

Titel (link vermutlich nicht erlaubt):
"ASCOM client astronomy development tutorial and introduction"

Das kann ich nachvollziehen und verstehen.
Mit VisualStudio 2008 habe ich auch schon gearbeitet, während des Studiums. Allerdings nicht sehr tief.

Was mir fehlt ist die Verknüpfung zu TCML.
Welche Dateien brauche ich von Trinamic (ASCOM nehme ich die aus dem Video)?
Ein einfaches Beispiel, wie im Video, währe genial (natürlich nur als Code)!
Welche befehle verwende ich für das TMCM-1110 Board? Die, die ich auch in meinem Programm mit den Tastern verwende?
 
Zuletzt von einem Moderator bearbeitet:
Hallo Hotze,

von Trinamic brauchst du eigentlich überhaupt keine Dateien, nur das Manual für TMCL (auf der Webseite von Trinamic). Bei diesen Steuerungen gibt es zwei Möglichkeiten:

1. Man kann auf dem Board ein kleines Programm (in TMCL geschrieben) abspeichern und das " stand-alone" laufen lassen. Über die I/Os lassen sich auch entsprechend Taster anschließen, so dass eine Handbox realisiert werden kann :).

2. Über den USB-Anschluss kann man das ganze etwas bequemer und umfangreicher im Direkt-Modus betreiben, d.h. jeder einzelne Steuerbefehl wird zum Board geschickt (icl. Statusabfragen). Damit lässt sich eine komplette Steuerung realisieren, die den kommerziellen nicht nachstehen muss und jederzeit an persönliche Vorlieben angepasst werden kann.

Ich habe die zweite Variante realisiert, allerdings mit einer Drei-Achsen-Steuerung (Ra, Dec und Fokus). Meine Handbox ist kein Tastenfeld, sondern ein kleiner Joystick, mit dem man das Teleskop verfahren kann, sowie zwei Tasten zum Fokussieren.

Die Schnittstelle zum ASCOM hat eigentlich nichts direkt mit der Steuerung zu tun, sondern mit dem Remote-Programm auf dem PC. Das kann dann die entsprechenden ASCOM-Befehle für TMCL übersetzen und weiterreichen.

Wenn du weitere Fragen hast, kann ich gern weiterhelfen.

CS
Jens
 
Prima, da hat genau der Richtige geantwortet!

Es ist gut zu wissen, dass das was ich mir bei der Planung gedacht hatte, schonmal sehr ähnlich umgesetzt wurde.

Der Steprocker läuft auch schon mit Tastern "stand-alone", Geschrieben in TMCL.
Das war auch nicht wirklich schwierig, da es ja fast schon "out of the box" läuft!
Die größere Hürde stellt für mich ASCOM dar.

Wenn die gleichen Befehle wie in TMCL verwendent werden (SAP 140, 0, 8 oder ROL 0, 87), muss ich nochmal etwas testen.
Ich komme aber erst Sonntag wieder dazu.

Kann ich davon ausgehen das ich so vorgehen kann wie im Video?

P.S: Guiden will ich mit wxAstrocaptue, später sollen noch DEC und Schärfe gesteuert werden. Ich fange aber lieber klein an :/
 
Zuletzt von einem Moderator bearbeitet:
Re: Prima, da hat genau der Richtige geantwortet!

Hallo Hotze,

da hast du ja also schon mit der TMCL-IDE gearbeitet. Aber die Befehle vom PC haben eine etwas andere Struktur, da ja noch die Adressierung dazu kommt. Dazu gibt es eine Anleitung im jeweiligen TMCL firmware manual (binary command format) und auf der Webseite von Trinamic Beispiele für C (z.B. "TMCLDatagrammWindows.c").

Das Video habe ich mir noch nicht angeschaut. Aber ich würde zuerst mal versuchen, Kommandos zum Steprocker zu übertragen (z.B. ein GoTo, Einstellungen wie Geschwindigkeit, Schrittweite und Strom, Abfrage des Schrittzählers). Erst wenn das funktioniert, wäre der nächste Schritt die Verarbeitung der Befehle vom ASCOM-Treiber.

CS
Jens
 
Mühsam ernährt sich das Eichhörnchen...

Befehle senden geht schon mal.
Nur habe ich noch ein par Probleme die Antwort von der Platine zu interpretieren.

Bisher habe ich:

automatische Erkennung des COM-Ports
Dropdownmenü zur Auswahl von Baut- und Bitrate
Auswahl der befehle rechtsdrehen, linksdrehen und stop.

Dazu habe ich bisher versucht die TCML Direktsteuerung "nach zu bauen".


Es geht also weiter, wenn auch nur langsam.
 
Re: Mühsam ernährt sich das Eichhörnchen...

Hallo Hotze,

die Antwort liegt im gleichen Format vor wie der Befehl, den du gesendet hast. Also wie im Programmbeispiel wieder zerlegen, da stehen nacheinander Kartennr., Kommando, Typ, Motornummer und zurückgegebener Wert.

Viel Erfolg
Jens
 
Re: Mühsam ernährt sich das Eichhörnchen...

Hallo an alle.

Ich habe vor, genau das StepRocker-Board für einen Motorfokus einzusetzten.
Daher wäre ich auch an einer Ansteuerung über ASCOM interessiert. Und mit schwebte hierzu auch der Weg vor, im Grunde lediglich die TMCL-Befehle an das Board zu senden.
Da ich allerdings keinerlei Ahnung vom Programmieren von Anwendungen habe, stehe ich bei diesem Punkt bereits etwas auf dem Schlauch.
Daher würde ich mich freuen, wenn ich auch etwas auf dem laufenden bleiben würde. ;-)
Später könnte ich mir auch eine GoTo-Steuerung mit diesen Boards vorstellen. Aber erst einmal nur einen oder zwei Fokussierer. :-)

Grüße
Bernd
 
Re: Mühsam ernährt sich das Eichhörnchen...

Hallo,
Willkommen im Club der anfangs ahnungslosen.
Schau dir mal von MS visual basic an. Damit bin ich auch dran. Dafür gibt es viele tutorials im Netz.

Bei mir geht es zwar sehr langsam weiter aber es geht weiter. Ich muss auch zu geben das ich viel abgeschrieben habe.
Ich bin gerade dabei noch ein zweites board an zu steuern.
Von ascom bin ich aber noch weit weg...

Viel Erfolg und Geduld wünsche ich dir!
 
Re: Mühsam ernährt sich das Eichhörnchen...

Hallo zusammen,
es ging am Wochenende wieder etwas weiter.
Ich kann befehle senden und bekomme brav eine Antwort, soweit so gut.
Nun Stehe ich aber richtig auf dem Schlauch :smiley46:

Nach einigen Befehlen bekomme ich vom Debugger:

"Der Index und die Länge müssen sich auf eine Position in der Zeichenfolge beziehen.
Parametername: length"

In der Zeile steht im Sub "Private Sub SerialPort1_DataReceived":
"EmpfangsbufferByte2 = Asc(EmpfangsbufferASCii.Substring(1, 1))"

Dabei soll das zweite Byte zu ASCii gemacht werden. Das geht einige male gut, auf einmal kommt der Fehler. Eine Abhängigkeit welchen Befehl ich sende habe ich noch nicht gefunden...

OffTopic:
Gibt es eine Spoiler-Funktion im Forum, oder eine Coding-Ecke in die Ich verlinken sollte?


Jetz geht der Grill an!

Gruß,
Hotze
 
Re: Mühsam ernährt sich das Eichhörnchen...

Zitat von Hotze:
...

"Der Index und die Länge müssen sich auf eine Position in der Zeichenfolge beziehen.
Parametername: length"

In der Zeile steht im Sub "Private Sub SerialPort1_DataReceived":
"EmpfangsbufferByte2 = Asc(EmpfangsbufferASCii.Substring(1, 1))"

Es riecht danach als ob deine Variable "EmpfangsbufferASCii" leer ist und du versuchst daraus ein Zeichen zu lesen.
Deswegen der Fehler.
Mache doch eine if abfrage davor so wie
If (EmpfangsbufferASCii != "")

Grüße
Igor
 
Zuletzt von einem Moderator bearbeitet:
Re: Mühsam ernährt sich das Eichhörnchen...

Hallo zusammen,
mit dem Programmieren komme ich nicht gut voran.
Chronischer Zeitmangel: ein füllender Job und meine jetzt 15 Monate alte Tochter spannen mich sehr ein :-)

Dafür habe ich das Trinamic-Modul so programmiert, daß ich über die Webcam und PHD Guiden kann.
Dazu nutze ich ein USB nach ST4 Interface, das Programm im StepRocker interpretiert diese dann.


Es soll aber bald weiter gehen...
 
Hallo zusammen,

der Thread ist ja auch schon etwas älter, trotzdem denke ich dass mein erster Beitrag ganz gut hier hineinpasst.

Da ich eher unter Linux als unter Windows unterwegs bin nützt mit ASCOM nichts (echt bescheuert und kurzsichtig eine "universelle" Schnittstelle vom Betriebssystem abhängig zu machen).

Mir schwebt vor Stellarium zu nutzen um die Objekte am Himmel zu wählen und mein bescheidenes Einsteigerteleskop (Bresser AR90 EXOS1 mit zwei Bresser RA-Motoren, einer RA-Achse der andere DEC-Achse) per GoTo auszurichten. Ich will dafür auch die Trinamic Steprocker nutzen.

Hier der Stand der Dinge:
Stellarium sendet per TCP/IP und entsprechend seinem Protokoll die RA/DEC-Position des Objekts an meinen selbstgeschriebenen Server (C, Daemon). Dieser wertet die Nachricht aus, berechnet aus den Positionen Mikroschritte.
Die Motoren haben 48 Vollschritte und ein Untersetzungsgetriebe 120:1. Über zwei Zahnräder mit jeweils 50 Zähnen (1:1) wird die Drehung auf eine Schnecke (1 Gang) weitergereicht. Diese treibt dann die RA- bzw. DEC-Achse (145 Zähne, also 145:1) an (Beide sind gleich auf gebaut). Ich nutze zur Zeit 16 Mikroschritte, woraus sich dann 13.363.200 Mikroschritte pro Achsumdrehung ergeben.

Per "DirectCommandMode" über USB kann ich die berechnete Zielposition an den Trinamic Steprocker senden. Bei Start des Daemon wird die Konfiguration des Trinamic Steprocker vorgenommen. Alle Programmteile sind in C geschrieben und laufen soweit, müssen aber noch verheiratet werden. Per StallGuard2 werden Kollisionen des Teleskop mit der Montierung erkannt.

Der Motor schafft mit 16 Mikroschritten maximal 26.8 Umdrehungen pro Sekunde - schnell sieht erheblich anders aus (Vielleicht Vollschritt-Umschaltung bis kurz vor Zielposition). Nichts desto trotz langt es erstmal zum rumspielen. Die benötigte Nachführgeschwindigkeit verfehle ich etwas.

Berechnung Getriebe mit original Bresser RA-Motor und Nachführfehler
Code:
120:1 -> 1:1 -> 145:1 = 120*145 = 17400

Bewegung der Achse am Himmel pro Umdrehung des Motors
360° / 17400 ~ 0.0206897°

Sterntag (sidereal): 86164.1s
Sterntagdrehrate: 360° / 86164.1s = 0.004178°/s
exakte Geschwindigkeit (RPS_req): 0.004178°/s / 0.0206897° = 0.201936 RPS

Fehler:
abs(RPS_req - RPS_lower) = abs(0.201936 - 0.201942) = 6e-6


Berechnung der Motorgeschwindigkeit mit Trinamic TMC429 Calculator
Code:
Clock Frequency 
	16 000 000

Motor Parameter: 
	Full Steps / Rev. = 48

TMC429 Register Values:
	Pulse_Div = 11
	Velocity = 1301
	Ramp_Div = 4
	AMax = 150
	Microsteps = 16

	-> RPS_lower = 0.201941778236 ~ 0.201942



Kurzum: Kommunikation von Stellarium zu meinen Programm klappt. Kommunikation zu Steprocker klappt. Steprocker tut wie befohlen. Welche Formeln/Zusammenhänge brauche ich nun für die Transformation "Position Himmelsobjekt -> Achsstellungen des Teleskop"?

Ich habe als Anfänger in Sachen Astronomie zweifel ob es tatsächlich schon langt einfach die RA/DEC-Positionen in Mikroschritte umzurechnen. Mir ist klar, dass sich die Erde während der "zähen" GoTo-Bewegung des Teleskops weiterdreht und somit eine "exakte" Ausrichtung auf ein Objekt schon scheitern muss.
Generell fehlt mir das Hintergrundwissen (also die Formeln) und die Einsicht wonach ich genau suche in Bezug auf "Positionieren eines Teleskop". Ich habe schon ein paar Seiten im Netz dazu gefunden unter anderem ein Beitrag zum "Telescope-Pointing-Model". Ich habe mir auch schon Quellcode von Arduino-basierten Steuerungen angesehen. Weiterhin habe ich auch für mein Teleskop eine "inverse" Kinematik nach Denavit-Hartenberg erstellt, aber nicht in Software umgesetzt.

Meist werden da Zeiten berechnet und diese dann auf "magische" Weise in Positionierungen umgerechnet. Kann mir jemand vielleicht Literatur dazu empfehlen? Eine Website welche die Grundlegenden Zusammenhänge anschaulich erklärt wäre sicher auch Hilfreich.

Falls Interesse besteht würde ich den vorhanden Quellcode in ein OpenSource-Projekt überführen, so dass alle was davon haben. Zur Zeit nutze ich den PC für alles. Laufen tut mein Programm auf jedem Linux-basierten System (PC, Raspberry, BeagleBone, AriaG25 etc.)

Gruß
Benny

 
Status
Es sind keine weiteren Antworten möglich.
Zurück
Oben