Jump to content
Astronomia - Espacio Profundo

Recommended Posts

gotoronyto2

Estimados, arme una montura Dobson con un GOTO basado en Arduino UNO a escala de modelo para luego llevarlo a cualquier tamaño.

El sistema funciona perfectamente para el hemisferio Norte, arrancando desde Andromeda, pero para usarlo en Bueno Aires, al colocarle la referencia de la CRUX, no funciona,

Ya probe las aproximaciones hasta 0° y esta todo bien, pero cuando se pasa a valores negativos (sur)., es cuando aparecen los problemas. Usado con Stellarium.

Muchas gracias. 

 

//ArduGoTo por David Vidal

#include <AFMotor.h>  //Incluye libreria externa
#include <stdlib.h>   //Incluye libreria externa

AF_Stepper motor_AR(48, 1);  // era 48 Pasos por vuelta, puede ser 64
AF_Stepper motor_DEC(48, 2); // era 48 Pasos por vuelta, puede ser 64

char datos[30];  //Datos leidos por el puerto serie

//Coordenadas del telescopio y del objetivo
char RA_telescopio[9];   //Convierte los datos leidos
char DEC_telescopio[10];
char RA_objetivo[9];
char DEC_objetivo[10];

long DEC_dd, DEC_mm, DEC_ss;   //Define el nombre de las variables
long RA_hh, RA_mm, RA_ss;

long RA_tel, DEC_tel, RA_obj, DEC_obj;

//Inicializamos los datos Espera una informacion
void setup() {
  Serial.begin(9600);                                     // Puerto Serie a 9600 bps Establece velocidad de transmision
  Serial.println("ArduGoTo v0.1");                        //Publicidad xD
  motor_AR.setSpeed(400);                                 //Creamos los motores de AR y DEC  antes 100       
  motor_DEC.setSpeed(400);  //antes 100
  //Esto hay que modificarlo, las coordenadas iniciales tienen que venir dadas
  
  RA_obj=RA_tel= long(42)*long(60)+long(42);          // antes original  (long(42)*long(60))+long(42) (hay que ajustar para la gcrux o la mimosa)hoy 
 
   
  DEC_obj=DEC_tel= long(41)*long(3600)+long(16)*long(60); //antes original long(41)*long(3600)+long(16)*long(60) se posiciona en Crux, arranca gira y para. y se puso signo -
}

void loop() {
  if(Serial.available()>0){
    leer_datos_serie();
  }
  comparar_coordenadas();
}

void incrementar_ra(){
  RA_tel++;
  if(RA_tel>=long(86400)){
    RA_tel=RA_tel-long(86400);
  }
  motor_AR.step(1, FORWARD, SINGLE);           //    
}

void decrementar_ra(){
  RA_tel--;
  if(RA_tel<long(0)){
    RA_tel=long(86400)+RA_tel;
  }
  motor_AR.step(1, BACKWARD, SINGLE);                 //
}

void incrementar_dec(){
  DEC_tel++;
  if(DEC_tel>long(324000)){ 
    DEC_tel=long(324000);   //antes 324000
  }
  motor_DEC.step(1, FORWARD,SINGLE ); // original DOUBLE y 1    
}

void decrementar_dec(){
  DEC_tel--;
  if(DEC_tel<long(-324000)){
    DEC_tel=long(-324000);         //antes -324000
  }
  motor_DEC.step(1, BACKWARD,SINGLE ); // original DOUBLE y 1  
}

void comparar_coordenadas(){
    if(RA_tel<RA_obj){
      incrementar_ra();  
    }
    if(RA_tel>RA_obj){
      decrementar_ra();
    }
    if(DEC_tel<DEC_obj){
      incrementar_dec();
    }
    if(DEC_tel>DEC_obj){
       decrementar_dec();
    } 
}

//Recoge los datos que haya en el puerto serie
void leer_datos_serie(){
  int i=0;
  datos[i++]=Serial.read();
  delay(5);
  while((datos[i++]=Serial.read())!='#'){       //Leo hasta el final del comando, que es un simbolo #
    delay(5);                                   //Espero 5ms por si aun no esta disponbile el siguiente dato
  }
  datos='\0';                                //Completo la cadena con el simbolo de fin de cadena, cosas del C
  parsear_datos();                              //Llamo a la funcion que interpreta los datos recibidos
}

//Interpreta los datos que se han recibido en el puerto serie
void parsear_datos(){

  // #:GR#  -> Obtener posicion RA del telecopio
  if(datos[1]==':' && datos[2]=='G' && datos[3]=='R' && datos[4]=='#'){
    RA_hh=RA_tel/long(3600);
    RA_mm=(RA_tel-(RA_hh*long(3600)))/long(60);
    RA_ss=RA_tel-(RA_hh*long(3600))-(RA_mm*long(60))  ; // original  RA_ss=RA_tel-(RA_hh*long(3600))-(RA_mm*long(60));
    sprintf(RA_telescopio, "%02d:%02d:%02d", int(RA_hh), int(RA_mm), int(RA_ss));
    Serial.print(RA_telescopio);
    Serial.print("#");
  }

  // #:GD#  -> Obtener posicion DEC del telescopio
  if(datos[1]==':' && datos[2]=='G' && datos[3]=='D' && datos[4]=='#'){
    DEC_dd=DEC_tel/long(3600);   //148560 -> 41 16
    DEC_mm=(DEC_tel-(DEC_dd*long(3600)))/long(60);
    DEC_ss=DEC_tel-(DEC_dd*long(3600))-(DEC_mm*long(60));
    sprintf(DEC_telescopio, "%+03d:%02d:%02d", int(DEC_dd), int(DEC_mm), int(DEC_ss));
    Serial.print(DEC_telescopio);
    Serial.print("#");  
  }

  // #:Q#   -> Detener el telescopio
  if(datos[1]==':' && datos[2]=='Q' && datos[3]=='#'){
  }                                                                        // <<<---- Esto hay que dejarlo bien

  // :Sr HH:MM:SS#  -> Direccion RA del objetivo
  if(datos[0]==':' && datos[1]=='S' && datos[2]=='r'){
    for(int i=0;i<8;i++)
      RA_objetivo=datos[i+4];                                    
    Serial.print("1");
    RA_obj=long(atoi(datos+4))*long(3600)+long(atoi(datos+7))*long(60)+long(atoi(datos+10));
  }
  
  // :Sd sDD*MM:SS# ->Direccion DEC del objetivo
  if(datos[0]==':' && datos[1]=='S' && datos[2]=='d'){
    for(int i=0;i<9;i++)
      DEC_objetivo=datos[i+4];                                        
    Serial.print("1");
    DEC_obj=long(atoi(datos+4))*long(3600)+long(atoi(datos+8))*long(60)+long(atoi(datos+11));
  }
  
  // :MS# -> Comenzar slew
  if(datos[0]==':' && datos[1]=='M' && datos[2]=='S' && datos[3]=='#'){
    Serial.print("0");                                                     // <<<---- Esto hay que dejarlo bien
  }

Share this post


Link to post
Share on other sites
antareano

Hola, seguramente el firmware no sea soportado para este hemisferio. Conozco el proyecto y se llama ARDUGOTO y es un proyecto español.

Si tenes ya todo montado lo que se refiere a motorización puedes echarle un ojo al picgoto de Angel que esta probado en su versión azimutal y funciona muy bien en ambos hemisferios.

Share this post


Link to post
Share on other sites
gotoronyto2

OK, ya vi ese y otros GOTO, lamentablemente voy a tener que implementar lo sugerido por vos. 

Ahora estoy con un nuevo problema, en el Stellarium, con Win7, no puedo accesar la solapa "control de telescopio" o otras mas. coca que no pasaba. Esto a pesar de haber reiinstalado tanto el Win como el Stellarium.

Abrazo y gracias.

Share this post


Link to post
Share on other sites
clear
hace 10 minutos, gotoronyto2 dijo:

el Stellarium, con Win7

 

probaste lanzar el binario con "compatibilidad para" y probar con las versiones que surjan del menu?

 

otra alternativa es instalar virtualbox o el software de virtualizacion que mas te guste , e instalar una maquina virtual con win XP , linux , o el OS que sea con el que te funcione , y listo , lo controlas desde la virtual. Total, una virtual con esa unica funcion (controlar el tele con stelarium) , no va a requerir mas de 512 MB de ram y 10 GB de disco , como mucho 1 gb de ram si se arrastra.

 

 

 

Edited by clear

Share this post


Link to post
Share on other sites
gotoronyto2

OK, voy a ver esa sugerencia. Lo que me parece extraño es que ha tenga fallado despues de tanto tiempo, ni siquiera en la funcion OFFline.

Abrazo

 

 

 

DSCN5166.JPG

Share this post


Link to post
Share on other sites
fsr

Justamente los otros dias había visto que hay un proyecto que se llama OnStep, pero usa un Arduino Mega 2560: http://stellarjourney.com/index.php?r=site/equipment_onstep

Aparentemente ese proyecto tiene muchas funciones, y hasta tiene soporte bluetooth para usarlo con el celu. Simula ser un telescopio Meade. Creo que soporta altazimutales, pero investigá bien.

 

Ahí el codigo parece algo verde por el momento. Donde dice:

 

RA_obj=RA_tel= long(42)*long(60)+long(42);
DEC_obj=DEC_tel= long(41)*long(3600)+long(16)*long(60);

 

Pareciera ser para ponerle estimo las coordenadas del objeto al que vas a estar apuntando cuando prendas el goto, pero no me cierran esos valores. En qué se supone que tiene que estar? En segundos de arco? Si es así, RA tendría que ser algo como SEG + MIN*60 + GRADOS*3600, tanto para RA como para DEC. De hecho, en la rutina donde le pasan las coordenadas para ir, ese pareciera ser el caso (aunque igual dice ":Sr HH:MM:SS#", y si HH fueran horas, no va a ser lo mismo que grados, aunque en el codigo el calculo lo hace como si fueran grados).

 

En fin, si es en grados, la RA de mimosa es 12h 48m 47.87s y la DEC es -59 grados 47m 10.9s

RA = 12*3600 + 48*60 + 48 = 46128

DEC = -1 * (59*3600 + 47*60 + 11) = -215231

 

No sé si me convence como veo la conversión hecha en el codigo, en la parte que dice "// :Sd sDD*MM:SS# ->Direccion DEC del objetivo". Tal vez eso no funcione bien con ningun objeto con DEC negativa, aunque me parece un poco guaso que sea así. Tampoco veo ningún codigo de (des)aceleración (los motores no pueden arrancar y parar en seco, si el objetivo es lograr velocidades decentes). Qué tan probado está este proyecto?

EDIT: olvidate, ahí veo que dice "ArduGoTo v0.1", eso es recontra-alfa, mejor echale un vistazo al proyecto OnStep ese que te pasé mas arriba. No solo eso, sino que está recontra-abandonado, mirá el ToDo: https://sites.google.com/site/ardugoto/todo

 

Pensaste en hacer "Digital Setting Circles" (Push-To) en vez de un GOTO? Para un dobson debe ir perfecto ese tipo de sistema. Además es muy simple, por ejemplo SkySafari soporta un tipo de telescopio que es "Basic Encoder System", que solo le pregunta al telescopio cuanto es el maximo de cada encoder, y cual es el valor actual de cada uno. Eso debe ser hiper-simple de implementar en arduino. Creo que en la pagina de SkySafari estaban los detalles. Habría que ver si Stellarium soporta lo mismo, tal vez sea algo bastante usual.

 

Saludos

Edited by fsr

Share this post


Link to post
Share on other sites
gotoronyto2

Estimados, ya he solucionado el problema para que pueda dar inicio al Stellarium desde CRUX, sin problemas, con un proyecto de Ezio de Cian (de.zeta@gmail.com), al que le he incorporado las funciones de Go to objeto.

Ahora que todo funciona, mi nueva cuestion es que poseo 2 motores con paso de aproximadamente 5º para AR y DEC, y ese valor es muy grande para mi mecanica, no teniendo en el momento posibilidad de alterar las relaciones de reduccion. Como es posible "hacerle comprender "  desde el Arduino que en lugar de por ejemplo 64 pasos para una revolucion, este envia a la salida para los motores algo asi como 100/200 o 300 pasos, con lo que lograria que los desplazamientos finales sean menores a los 5º ?

Muchas gracias

Angel

Share this post


Link to post
Share on other sites
fsr

Cambiá de proyecto, ese tiene todo harcodeado, y dudo que funcione bien por no tener aceleración. Leíste lo que escribí?

Share this post


Link to post
Share on other sites
gotoronyto2

Te agradezco la pronta respuesta, pero no se si fui lo suficientemente claro, mi lenguaje es de ingenieria y no de informatica.

El sistema me funciona y hasta sin encoders, pero tan solo quiero saber por donde entra y/o sale la informacion acerca de la cantidad de pasos que se le mandan al motor, y como alterar el sketch para que convierta los pasos de datasheet del motor a un valor mayor.

Muchas gracias desde ya por tu paciencia.

Angel

 

Share this post


Link to post
Share on other sites
fsr

Bancá, vos habías dicho que eso era para un dobson? Ese codigo dice RA y DEC por todos lados. Es un proyecto para monturas ecuatoriales, no te va a servir. Necesitás un proyecto que sea para altazimutales.

Con que está harcodeado me refiero a que en vez de estar hecho para ser razonablemente configurado, están todos los valores metidos ahí en el código. Por ejemplo, se vé que el numero de pasos maximos en RA era de 86400 y en DEC parece que va entre 324000 y -324000.

Ese software está hecho para algún tipo de telescopio específico, con una reducción y pasos del motor específicos, montura Ecuatorial y no es mas que una versión muy inicial de un goto y lo abandonaron al toque, o sea: está hiper-incompleto. Incluso no veo ni que tenga seguimiento, o sea que no se mueve para que los objetos se queden quietos a medida que la tierra rota.

Tampoco tiene aceleración. Que te parece que va a pasar si querés que el motor vaya a 300 RPM y después pare de golpe? Nunca va a poder parar en el lugar que se supone, y lo mismo para acelerar. No puede ir de 0 a 300 RPM instantáneamente.

Ese proyecto no te sirve, necesitás algo para altazimutal, y que esté terminado.

Share this post


Link to post
Share on other sites
gotoronyto2

Bueno, de cualquier manera te agradezco tu colaboracion, pero yo no necesito 300RPM, sino 200 o 300 "pasos" para no tener que entrar un otra reduccion mecanica.

En resumen, quiero llegar a la siguiente solucion:

Si el Stellarium le envia los datos para que el  Arduino precese por ejemplo 200 pasos, que le reenvie al motor con AFMotor 100 pasos, o algo parecido, de ese modo se lograria un desplazamiento en vueltas o grados en un valor menor, y no una velocidad menor. 

Como comentario quiero usar este engendro para iniciar a mis nietos tan solo la posicion de elementos en el cielo.

Si no soy lo suficientemente claro, lamento profundamente, tendre que hacer algo "con la uña", como se decia en mis tiempos de Facultad.

Un abrazo

Share this post


Link to post
Share on other sites
fsr

Ese codigo emula un telescopio meade. El software de la compu sólo le envia las coordenadas de RA y DEC, que las reconoce con el siguiente codigo:

 

// :Sr HH:MM:SS#  -> Direccion RA del objetivo
  if(datos[0]==':' && datos[1]=='S' && datos[2]=='r'){
    for(int i=0;i<8;i++)
      RA_objetivo=datos[i+4];                                    
    Serial.print("1");
    RA_obj=long(atoi(datos+4))*long(3600)+long(atoi(datos+7))*long(60)+long(atoi(datos+10));
  }
  
  // :Sd sDD*MM:SS# ->Direccion DEC del objetivo
  if(datos[0]==':' && datos[1]=='S' && datos[2]=='d'){
    for(int i=0;i<9;i++)
      DEC_objetivo=datos[i+4];                                        
    Serial.print("1");
    DEC_obj=long(atoi(datos+4))*long(3600)+long(atoi(datos+8))*long(60)+long(atoi(datos+11));
  }

 

Cuando le preguntan en qué posición está el telescopio, la calcula con el siguiente codigo:

 

// #:GR#  -> Obtener posicion RA del telecopio
  if(datos[1]==':' && datos[2]=='G' && datos[3]=='R' && datos[4]=='#'){
    RA_hh=RA_tel/long(3600);
    RA_mm=(RA_tel-(RA_hh*long(3600)))/long(60);
    RA_ss=RA_tel-(RA_hh*long(3600))-(RA_mm*long(60))  ; // original  RA_ss=RA_tel-(RA_hh*long(3600))-(RA_mm*long(60));
    sprintf(RA_telescopio, "%02d:%02d:%02d", int(RA_hh), int(RA_mm), int(RA_ss));
    Serial.print(RA_telescopio);
    Serial.print("#");
  }

  // #:GD#  -> Obtener posicion DEC del telescopio
  if(datos[1]==':' && datos[2]=='G' && datos[3]=='D' && datos[4]=='#'){
    DEC_dd=DEC_tel/long(3600);   //148560 -> 41 16
    DEC_mm=(DEC_tel-(DEC_dd*long(3600)))/long(60);
    DEC_ss=DEC_tel-(DEC_dd*long(3600))-(DEC_mm*long(60));
    sprintf(DEC_telescopio, "%+03d:%02d:%02d", int(DEC_dd), int(DEC_mm), int(DEC_ss));
    Serial.print(DEC_telescopio);
    Serial.print("#");  
  }

 

Y por lo que veo, siempre que la posición del telescopio es distinta a la del objeto, incrementa o decrementa RA y DEC de a 1 (función comparar_coordenadas)

 

También tiene unas funciones incrementar y decrementar ra y dec, que se fijan que los valores de RA y DEC no se pasen de los limites. Por ejemplo, se vé que en el telescopio que lo iban a usar, una vuelta entera en RA eran 86400 pasos.

 

Pero no sé si leiste la parte donde te comento que esto obviamente es para monturas ecuatoriales, y vos lo querés usar con un Dobson, que es una altazimutal? Se entiende que por lo tanto no es posible que esto funcione?

 

Mejor buscate un proyecto de "digital setting circles" (ponerle encoders al dobson para que el software sepa a donde está apuntando). Recuerdo que con Sky Safari, por ejemplo, había un modo muy simple, que se llamaba creo que "simple encoder", o algo así, que sólo le preguntaba al principio a tu micro cuantos "pasos" de encoder daba en una vuelta de RA y de DEC, y después se la pasaba preguntándote en que valores estaban actualmente los encoders y Sky Safari después se encargaba de todo lo demás, calcular donde estaba apuntando, el tema de la alineación, etc. Supongo que para stellarium habrá algo similar, vas a tener que investigarlo un poco.

 

Saludos

  • Like 1

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

  • Similar Content

    • SaturninoCardozo
      By SaturninoCardozo
      Bueno grupo como dije en otro post soy nuevo y tengo una duda existencial de principiante, a las horas de ascension recta hay que pasarlas a grados o como es?, en un rato adjunto fotos de mis circulos graduados. Un saludo.
    • Emi Alcaino
      By Emi Alcaino
      Hola, que tal gente? 
      Queria comentarles de algo que me sucedio estos ultimos dias. Tengo un Hokken 130900 con oculares 10, 20 y 3,2 mm tambien tengo un barlow x2.
      Mi problema esta dividido en dos:
       
      Problema 1: Queria empezar con obs planetaria con el ocular de 10mm y el barlow. Hasta que me compre este skywatcher 3,2 tmb II.
      Lo probe y no puedo enfocar (por ejemplo saturno).
      Pruebo de nuevo 10mm+barlow y se ve mejor que el ocular de 3,2mm.
      Que puede ser? Tendre que colimar? Que deberia ver con el equipo que tengo? El ocular lo compre en duoptic, no creo que sea el problema. Segurp soy yo jajaj
       
      Problema 2: La idea es que no puedo ubicar objetos en el cielo, mi equipo tiene monturs eq2. Quiero buscar las coordenadas con "stellarium"e introducirlas en mi equipo pero no puedo.
      Apunto mi telescopio al sur centrandolo en la estrella polar. Luego de aca no se que hacer bien.. alguien que me oueda dar una mano por que veo videps pero no termino de entender.
       
      Saludos
    • Dieguito
      By Dieguito
      Buenos dias, me parece que no encuentro esa opcion si existiese.
      Para buscar un objeto (neq6) ingresando las coordenadas en el mando, lo tengo que actualizar?
      La idea es poder hacerlo sin usar la compu en donde si, existe esa opcion.
      Gracias foro por ayudar, estoy intentando aprender nociones basicas de foto y montura.
      Saludos!
      Diego/Tandil
    • cardrw
      By cardrw
      Buenas noches, amigos.
       
      Luego de una prolongada ausencia fotográfica me hago presente con una toma hecha anoche, se trata de un campo amplio de la zona de la Cruz del Sur. Toma en blanco y negro realizada con el siguiente equipo: Cámara QHYCCD PoleMaster, provista de su propia óptica que le da un campo aproximado de unos 9°, similar a un binocular de 7x50 y adaptada para instalarla como cámara de toma en una montura CG5 GoTo, bahhh, adaptada, pegada con cinta adhesiva a una cola de milano chica, es la misma cámara que  utilizo para realizar la alineación polar con todas mis monturas, en esta ocasión ajusté la montura en RA con un error de 1° con respecto al polo sur utilizando el mismo software que usé para hacer la toma:   Sharpcap 3.0 que dispone de una excelente utilidad para realizar la alineación polar,  pero ese es tema para otro post, permite mayor precisión en el ajuste pero había unas nubes amenazantes y me conformé con un error de 1°, a las 2 horas se largó a llover. Sin guiado, gracias pienso a la buena alineación polar y a la relativa brevedad de las tomas, una cámara muy sensible la PoleMaster
       
      Las tomas realizadas fueron 180 de 2 segundos cada una, un total de  360 segundos, apiladas con DSS y luego procesadas brevemente con Photoshop.  No realicé darks ni flats. Un trabajo rápido. 
       
      Espero que les guste y sus sugerencias serán, como siempre, muy bien recibidas. Cualquier consulta las contesto al toque. 
       
      Saludos y Gracias por ver.  Acompaño un jpg con la toma original y otro que pasé por plate solving en nova para nombrar los objetos más destacados. 
       
      Carlos.
       
       


    • sagitario blues
      By sagitario blues
      http://sagitarioblues.blogspot.com.ar/2017/05/el-naufrago.html
       
       Por favor, las respuestas en modo velado, para no destapar el juego.
       
      El Náufrago

      Supongamos la siguiente situación:
      Una persona se halla sola, en un lugar indeterminado.
      No sabe dónde está, no sabe qué día es, no dispone de relojes ni calendarios.
      Tiene a su alcance una moderada fuente de recursos, digamos peces, leña, frutos, agua para beber.
      No está apurado de vida o muerte, pero debe comunicar a alguien dónde se halla para que puedan rescatarle.
      Y, por suerte, hay a su alcance un modo de comunicar su posición para que vengan a rescatarlo de su soledad, de su extravío.
      Pero, -ay, siempre los peros- solo puede usar ese medio de comunicación una sola vez. Es decir, debe comunicarse y en un solo mensaje –por medio de esa sola llamada- tiene que comunicar datos suficientes como para que los rescatistas sepan a dónde ir a por él.
       
      Por supuesto, no está en la base de ningún volcán activo, o en una isla paradisíaca con infraestructura, o en un atolón claro de reconocer desde el espacio. Se halla en un punto sobre la Tierra, aislado de cualquier otro ser, y debe, si o si, transmitir su posición a otra persona, es decir, debe dar una idea somera de dónde está.
       
      ¿Puede hacerlo?
      ¿Puede esa persona transmitir su posición al cabo de determinados esfuerzos o ingenios?
      ¿O perecerá solo cuando llegue a viejo o se enferme de algo sencillo pero fatal sin medicamentos, o se le acaben por fin los recursos?
       
      Si este desafío te interesa, no te pierdas la próxima clase taller de Astronomía en Bigand, este jueves, desde las 20,15 horas.
       
      PD:  Por favor, las respuestas en modo velado, para no destapar el juego.
       
      Gracias.
      Sergio
  • Opinion de productos

×
×
  • Create New...

Important Information

Términos y condiciones de uso de Espacio Profundo