Jump to content

Sistema Push To con Arduino para mi Heritage


RodyG

Publicaciones recomendadas

Zar pa do. Congratulations, realmente, si funciona la mitad de bien de lo que se ve, ya es un golazo. Ojala más gente del foro se anime a publicar cosas así.

Gracias por compartir.

  • Like 2
Enlace al comentario
cappellettiariel

Groso Rody!!!!! Yo de eso no entiendo nada pero aplaudo la capacidad de armarse esos sistemas!!!

Abrazo! Y felicitaciones!!!

  • Like 2
Enlace al comentario
hace 44 minutos, jwackito dijo:

Zar pa do. Congratulations, realmente, si funciona la mitad de bien de lo que se ve, ya es un golazo. Ojala más gente del foro se anime a publicar cosas así.

Gracias por compartir.

Muchas gracias,  si realmente funciona,  ayer probé apuntando a estrellas de los 4 puntos cardinales, saltando de punta a punta y las encontraba sin problemas.  Apenas pueda cuento más como funciona. Hoy se viene una noche larga por laburo,  en tiempos muertos que tenga cuento más. 

 

Rody 

  • Like 1

SkyWatcher Explorer 200p f/5 (Dobson con PushTo) - Oculares: BST 25mm, BST 18mm, BST 12mm, BST 8mm, BST 5mm - Barlow: Acromático X2 - Filtros: O-III, UHC, Moon & Skyglow, Polarizador variable, #12, #23A, #56, #80A

Enlace al comentario
hace 11 minutos, cappellettiariel dijo:

Groso Rody!!!!! Yo de eso no entiendo nada pero aplaudo la capacidad de armarse esos sistemas!!!

Abrazo! Y felicitaciones!!!

Muchas gracias Ariel,  a vos y a Lucas hace un tiempo que les vengo secando la cabeza mostrando los avances :-)

 

  • Like 2

SkyWatcher Explorer 200p f/5 (Dobson con PushTo) - Oculares: BST 25mm, BST 18mm, BST 12mm, BST 8mm, BST 5mm - Barlow: Acromático X2 - Filtros: O-III, UHC, Moon & Skyglow, Polarizador variable, #12, #23A, #56, #80A

Enlace al comentario

Hola Rodri,

 

 Excelente laburo

hace 3 horas, RodyG dijo:

Mi idea original era hacerlo con un acelerómetro/giroscopo/magnetómetro pero después de renegar unos meses, fracasé. En altitud tenía una muy buena precisión, pero el magnetómetro para el azimuth no sirve, o por lo menos no lo pude domar. Me di por vencido y fui por la versión analógica haciendo los círculos graduados que publique a fines del año pasado.

 

Hace un par de años use acelerómetros, giroscopos y magnetómetros. No fue para nada relacionado a telescopios. La verdad que con estos últimos se reniega bastante pero finalmente logre buenos resultados. Si eventualmente volves a renegar con estos (cosa que no creo dado los resultados que estás teniendo) tal vez puedo darte algún consejo.

 

Saludos

  • Thanks 1
Enlace al comentario

Les cuento un poco como funciona:

 

¿Qué es un sistema Push-To?

 

Es un sistema digital de búsqueda de objetos, por eso también se llama DSC o Circulos Graduados Digitales (DSC por sus iniciales en inglés) mediante los encoders el equipo informa en forma permanente la posición hacia donde apunta el telescopio, pueden tener un mando que tiene la base de datos (como los mandos de los GoTo) o como es mi caso, que reporta a SkySafari y usa toda la potencia de la aplicación para resolver casi todo, el arduino informa el valor de los encoder y SkySafari hace la magia (Hace falta comprar la versión PLUS o superior pero vale la pena, no solo por esto). Se utiliza principalmente para monturas Dobson pero podría usarse con cualquiera, tanto EQ como Azimutal. No tiene motores, el telescopio lo movemos manualmente y el sistema sabe en todo momento a donde estamos apuntando.

 

¿Cómo funciona?

 

El equipo tiene una resolución de 4800 pulsos, dicho de otra manera: 360° / 4800 = 0,075°. Se configura el SkySafari, en “Settings”, “Telescope” y le decimos que es “Basic Encoder System” con montura “Alt-Az. Push To” y ahí nos pide la resolución donde le cargo los 4800 pulsos por vuelta

 

image.png.7e129c31fcc207d598c08fe56f98fa52.png

 

image.png.b562f57ecf251d0236a75c79c67da057.png

 

Eso habilita en el menú de abajo la opción “Scope”, si apretamos en “Connect” se comunica con el arduino por el bluetooth y empieza a preguntar la posición de los encoders tantas veces por segundo según lo configurado más arriba.

 

El sistema siempre arranca apuntando a 0° (Norte) de Azimut y 0° en altitud (telescopio horizontal) y lo primero a realizar es alinearlo que es muy simple, se apunta el telescopio usando el buscador a una estrella conocida, cuando la tengamos centrada en el ocular, seleccionamos la misma estrella en SkySafari y apretamos en “Align”, en ese momento nos centra el telescopio en el objeto y ya sabe hacia donde apuntamos. Si después movemos el telescopio, la pantalla del celu muestra en tiempo real hacia donde estamos apuntando, es fantástico ¡!! J. Apenas pueda hago un video.

 

Luego buscamos cualquier objeto en skysafari, lo seleccionamos, apretamos en “Push To” y nos indica con una flecha en la pantalla hacia donde hay que mover el telescopio hasta llegar al objeto, solo queda obedecerlo y disfrutar del objeto seleccionado cuando aparece en el ocular.

 

image.thumb.png.55cf932ac564c4c9aa9e03424c53e7b4.png

 

image.thumb.png.5bf28ee6f1bcd9d1018c6104663d0930.png

 

¿Es parecido al GoTo?

 

Éste sistema es muuuchooo más barato que un Goto y en cuanto a la funcionalidad de BUSCAR objetos es similar, incluso a veces es más rápido mover el telescopio a mano que esperar a que los motores lo hagan …. Pero  …..  ahí se acaban las similitudes, porque lo que el PushTo nunca va poder hacer (porque no tiene motores) es lo que hace el GoTo después de encontrar el objeto que es SEGUIRLO en forma automática y esa es la principal y más importante diferencia, el SEGUIMIENTO. 

 

Corto por ahora

 

Saludos

Rody

  • Like 4

SkyWatcher Explorer 200p f/5 (Dobson con PushTo) - Oculares: BST 25mm, BST 18mm, BST 12mm, BST 8mm, BST 5mm - Barlow: Acromático X2 - Filtros: O-III, UHC, Moon & Skyglow, Polarizador variable, #12, #23A, #56, #80A

Enlace al comentario
hace 29 minutos, Matias_M dijo:

Hola Rodri,

 

 Excelente laburo

 

Hace un par de años use acelerómetros, giroscopos y magnetómetros. No fue para nada relacionado a telescopios. La verdad que con estos últimos se reniega bastante pero finalmente logre buenos resultados. Si eventualmente volves a renegar con estos (cosa que no creo dado los resultados que estás teniendo) tal vez puedo darte algún consejo.

 

Saludos

 

Gracias, te cuento que después que yo lo abandoné, termine encontrando un tipo que contaba en un foro los mismos problemas que yo tuve :-) y termino haciendo un híbrido que no es mala idea, usó el Acelerómetro junto con el Giróscopo para el eje de Altitud que a mí también me funcionaba muy, pero muy bien y para el eje de Azimut le puso un encoder igual el mio. Debo tener el link guardado por ahí.

 

Rody  

SkyWatcher Explorer 200p f/5 (Dobson con PushTo) - Oculares: BST 25mm, BST 18mm, BST 12mm, BST 8mm, BST 5mm - Barlow: Acromático X2 - Filtros: O-III, UHC, Moon & Skyglow, Polarizador variable, #12, #23A, #56, #80A

Enlace al comentario

Excelente sistema! Que bueno que quedó con la impresora 3D! Felicitaciones!

En algunos sitios el eje de altitud lo hacen con un inclinómetro digital. Supongo que debe ser lo más sencillo y además siendo preciso, porque la gravedad de la tierra no miente, siempre tira hacia abajo :)

El eje de acimut es el jodido, ya que con el tema de la declinación magnética siempre complica usar un magnetómetro.

Pero claro, con encoders la precisión es muy buena, y no es necesario recurrir a ese tipo de sensores. Creo que SkySafari también permite hacer alineación con varias estrellas, por si el tele no está perfectamente plano.

4800 pulsos por vuelta serían 4.5 minutos de arco. Buena resolución, sin dudas que vas a poder embocar los objetos en el campo de visión de la mayoría de los oculares que le pongas.

Una ventaja frente a un goto, es que un push-to no debería consumir prácticamente nada, pero claro, no hace seguimiento, aunque hace fácil que cualquiera se vuelva a centrar en el objeto.

Editado por fsr
  • Like 1

Fernando

Enlace al comentario

Muy bueno RodyG, felicitaciones!.

 

Realmente poder ver la puntería en un software planetario es muy útil tal vez mejor que el goto.... Yo hace como 20 años fabriqué un sitema similar con encoders de mouse que funcionaba bien pero era engorroso porque se necesitaban 2 computadoras para operarlo pero realmente me divertí mucho haciéndolo. En estos días con mas tecnología y acceso a encoders buenos, vale la pena armarlo. Dejo aqui aquel aparato http://www.geocities.ws/cwillemoes/encoder.htm

La mayor información que puedas publicar será de utilidad para muchos por aqui.

 

saludos

  • Like 1
Enlace al comentario
hace 1 hora, fsr dijo:

Excelente sistema! Que bueno que quedó con la impresora 3D! Felicitaciones!

En algunos sitios el eje de altitud lo hacen con un inclinómetro digital. Supongo que debe ser lo más sencillo y además siendo preciso, porque la gravedad de la tierra no miente, siempre tira hacia abajo

El eje de acimut es el jodido, ya que con el tema de la declinación magnética siempre complica usar un magnetómetro.

Pero claro, con encoders la precisión es muy buena, y no es necesario recurrir a ese tipo de sensores. Creo que SkySafari también permite hacer alineación con varias estrellas, por si el tele no está perfectamente plano.

4800 pulsos por vuelta serían 4.5 minutos de arco. Buena resolución, sin dudas que vas a poder embocar los objetos en el campo de visión de la mayoría de los oculares que le pongas.

Una ventaja frente a un goto, es que un push-to no debería consumir prácticamente nada, pero claro, no hace seguimiento, aunque hace fácil que cualquiera se vuelva a centrar en el objeto.

 

Gracias, 

 

Si tal cual, cuando estaba por comprar los encoder lo pensé en comprar uno solo y en altitud usar el acelerómetro que ya tengo, pero después me dio miedo a que algo se complique y tener que esperar 2 meses mas a que llegue el otro de China, acá no se consiguen.  No le tendría que afectar que la base esté 100% nivelada.

 

Con respecto a la resolución, si cambio la placa Arduino por una que maneje mas interrupciones (un detalle técnico) puedo duplicarla a 9600 pero por ahora no lo veo necesario, con mi ocular de 6mm mas el barlow tengo un campo de 16 minutos contra los 4,5 que tengo de resolución y en el 99% de los casos no busco usando ese ocular, pongo el de 25mm o el de 18mm y después que lo encuentro subo los aumentos. Por otro lado, por mas que retenga lo respiración y me concentre, ya es muy difícil mover a mano el Heri "solo" un pulso ?. Pero la opción está, si noto con el uso que necesito mas resolución, con poco la puedo llevar al doble.

 

También te  confirmo que SkySafari si te deja alinear con mas de una estrella, vas apuntando y apretando "Align" y las va agregando, no te deja elegir 2 que estén muy cerca de la otra.

 

Rody

SkyWatcher Explorer 200p f/5 (Dobson con PushTo) - Oculares: BST 25mm, BST 18mm, BST 12mm, BST 8mm, BST 5mm - Barlow: Acromático X2 - Filtros: O-III, UHC, Moon & Skyglow, Polarizador variable, #12, #23A, #56, #80A

Enlace al comentario
hace 1 hora, criswille dijo:

Muy bueno RodyG, felicitaciones!.

 

Realmente poder ver la puntería en un software planetario es muy útil tal vez mejor que el goto.... Yo hace como 20 años fabriqué un sitema similar con encoders de mouse que funcionaba bien pero era engorroso porque se necesitaban 2 computadoras para operarlo pero realmente me divertí mucho haciéndolo. En estos días con mas tecnología y acceso a encoders buenos, vale la pena armarlo. Dejo aqui aquel aparato http://www.geocities.ws/cwillemoes/encoder.htm

La mayor información que puedas publicar será de utilidad para muchos por aqui.

 

saludos

Muy bueno ese aparato !!!! yo que pensé que tuve una "revelación" cuando se me ocurrió hacerlo (sin haber investigado nada) y resulta que Cris ya tenía el suyo hace 20 años  jajajajajajjajajajaja 

 

Lo próximo que voy hacer, en algún momento, es el trípode de madera para poner al Heri que publicaste, realmente se lo ve muy bueno y no muy complicado de hacer

 

Gracias 

Rody 

 

 

 

  • Like 1

SkyWatcher Explorer 200p f/5 (Dobson con PushTo) - Oculares: BST 25mm, BST 18mm, BST 12mm, BST 8mm, BST 5mm - Barlow: Acromático X2 - Filtros: O-III, UHC, Moon & Skyglow, Polarizador variable, #12, #23A, #56, #80A

Enlace al comentario

Espectacular Rody!!!

 

yo estoy pensando en como hacer para poner los engranajes para hacerle seguimiento con la plataforma eq que arme, te voy a robar algunas ideas jaja

 

un abrazo!

  • Like 1

Nicolás Arias (arias.na.ed@gmail.com)
Observatorio Cielos de Banfield - MPC X40 - WDS Cod: ANI

Enlace al comentario
hace 27 minutos, NicoHammer dijo:

Espectacular Rody!!!

 

yo estoy pensando en como hacer para poner los engranajes para hacerle seguimiento con la plataforma eq que arme, te voy a robar algunas ideas jaja

 

un abrazo!

Está muy bueno eso que estás haciendo, seguí subiendo avances. Fijate en thingiverse que hay varios engranajes para elegir, los que yo imprimí, deberías ver si se pueden hacer mas gruesos. Como yo los uso no hacen nada de fuerza pero lo tuyo ya es otra cosa ?

 

Saludos

SkyWatcher Explorer 200p f/5 (Dobson con PushTo) - Oculares: BST 25mm, BST 18mm, BST 12mm, BST 8mm, BST 5mm - Barlow: Acromático X2 - Filtros: O-III, UHC, Moon & Skyglow, Polarizador variable, #12, #23A, #56, #80A

Enlace al comentario

Tremendo Rody y que prolijo que te quedó! Lo mejor es cuando te das cuenta que empezas a encontrar de 10-20 objetos por noche a 50 :lol:. Saludos!!

  • Like 1

image.png

Enlace al comentario

Bueno, recién me puedo desocupar para continuar con éste reporte, perdón por subir la info en cuotas.

 

Con respecto al aspecto del armado de la parte "mecánica", creo que ya está cubierto con las fotos subidas y el link que pasé de donde descargué las partes 3D. Si algo no quedo claro o queda alguna duda, pregunten sin problemas. Solo agrego que la relación de los engranajes es de 4 a 1, las coronas tienen 80 dientes y los piñones 20.

 

También el funcionamiento creo que quedó explicado (sigo debiendo el video). Vamos ahora a la parte más jugosa que es la parte electrónica y el código !!!
 

Componentes que utilicé:
 

  • Arduino Uno: es el cerebro del sistema, seguramente cuando arme la placa definitiva voy a usar el Arduino Nano que es mucho mas chiquito y puede ser soldado en una placa.
  • Módulo HC-06: es el módulo de comunicación Bluetooth
  • Encoders Incrementales fotoeléctrico de 600 pulsos por vuelta de 2 canales AB, 5V-24V

Para la alimentación del circuito

  • Batería Li-Ion de celular: tenía una batería de un celular roto de 3.8V, creo que es de 1860 mAh, no me acuerdo bien.
  • Módulo MT3608 - Regulador de voltaje (Elevador) DC-DC 2-28V 2A: Con éste módulo elevo el voltaje que entrega la batería, de 3.8V a 5.5V para alimentar el Arduino, el HC-06 y los encoder.
  • Módulo TP4056 - Cargador de Batería Li-ión LiPo con Mini USB - 5V 1A: como indica el nombre, con éste cargo la batería.

Les paso el esquema de conexión
 

image.thumb.png.12fe8bb9ca9805b90f9f456ca77b62a9.png

También pongo qué es cada cable del encoder porque la explicación está en chino y la tuve que buscar (El esquema de conexión que subí respeta esos colores):

  • verde = Canal A
  • blanco = canal B
  • rojo = + (Vcc 5V a 24V)
  • negro = - (GND)

Un poquito de teoría !!

 

Antes de pasar al código del Arduino, hago una pequeña introducción teórica de como funcionan los encoder así se entiende mejor (o los termino de confundir del todo).
 

Los encoder están formados por un disco ranurado que es leído por un lector óptico y envía señales 0 y 1 (0v y 5v) que son leídas por el Arduino. Disponen de dos canales (como si fueran 2 encoder en uno) que están desplazados uno respecto al otro, formando lo que se denomina un encoder en cuadratura.

image.png.e0fb431069b614f2a8b9a24a6ff488b7.png

Con un solo disco podríamos leer por ejemplo, a que velocidad está girando o, como es mi caso, cuantos grados giró. Pero no es posible saber para que lado está girando, por ese motivo traen los 2 canales en cuadratura, leyendo la posición de ambos discos se puede determinar con un calculo simple para que lado gira.

 

Para verlo en un ejemplo, tomamos como origen de eventos los flancos de subida o bajada del Canal A. Si giramos en sentido horario, vemos que cada vez que se produce el evento y miramos el Canal B, vemos que la señal A es siempre inversa al Canal B (Cuando el A pasa a 1 el B está en 0 y cuando el A vuelve a 0 el B se encuentra en 1 en ese momento).
image.png.6d6286d1a1bec1e0e2b649a9f59d4147.png

Si invertimos el sentido de giro, vemos lo contrario, la señal del Canal A y B son siempre iguales (Cuando el A pasa a 1 el B está en 1 y cuando vuelve a 0 el B se encuentra también en 0 en ese momento).

image.png.ed0241888343fb70a60590f2bc198546.png

Aprovecho también para aclarar lo que comenté de la resolución y que la podría duplicar si veo que es necesario. Como dije, el encoder que compré es de 600 pulsos por vuelta, eso significa que si cuento cada vez que cambia de estado de 0 a 1, voy a contar 600 cambios de estado en una sola vuelta. Pero también puedo contar cada vez que cambia de 1 a 0, tomando en cuenta ambos eventos tenemos 1200 eventos por vuelta (600 de subida y otros 600 de bajada). Y todo esto leyendo SOLO el canal A, si hago lo mismo también para el canal B duplico nuevamente, sacando la resolución máxima para éste modelo que es 600 x 4 = 2400 pulsos por vuelta.

 

Yo por ahora, solo uso los cambios de estado del canal A, por lo tanto la formula de la resolución final del PushTo es: 

-->  Resolución del encoder (600) * cuadratura (solo uso 2) * relación engranajes (4) = 600*2*4 = 4800 
 

Si alguien sigue leyendo a éstas alturas y no saltó por la ventana ? ... vamos a explicar un poco el código !!!!

 

No voy a explicar cada línea, lo deje documentado para que se entienda fácilmente. Solo voy aclarar algunos detalles de por qué lo hice así y los problemas que fui resolviendo en las distintas pruebas.

 

Primero explicar que el monitoreo de los encoder los hago por interrupciones, Arduino Uno tiene 2 pines asociados a interrupciones, esto significa que podemos configurar que cuando hay un cambio de estado en ese pin se ejecute "inmediatamente" una función con una porción de código específica. Como a ésta placa solo se le pueden configurar 2 interrupciones, usé una para los cambios de estado del canal A del encoder de Azimuth y la otra interrupción para el canal A del encoder de Altitud:
 

attachInterrupt(digitalPinToInterrupt(AzChannelA), EncoderAz, CHANGE)
attachInterrupt(digitalPinToInterrupt(AltChannelA), EncoderAlt, CHANGE)
 

El código de las funciones que se llaman tienen que ser lo mas chico, eficiente y rápido posible. Tiene que hacer lo justo y necesario, hay que pensar que un movimiento rápido del telescopio en diagonal, hace que en segundos se ejecute esa función miles de veces para cada uno de los ejes y el arduino tiene que poder procesarlas a TODAS. Si se pierden pulsos el sistema deja de ser confiable porque cree que apunta a un lugar que no es real. Ese fue mi primer problema, las funciones eran mas grandes y perdía pulsos y se bloqueaba la comunicación con SkySafari porque el procesador estaba todo el tiempo "interrumpido". 
 

Las funciones EncoderAz y EncoderAlt solo compara el valores del canal A con el B para determinar el sentido de giro y sumar o restar uno al contador (para esto fue toda la explicación teórica anterior, jajajaja).
 

El protocolo de comunicación es realmente simple, Skysafari pregunta el valor de los encoder con un comando "Q" y el arduino responde con éste formato "+00200\t+00060\r" donde el primer valor corresponde al eje de Azinuth y el segundo al de Altitud.

 

Si en vez de configurar en Skysafari la resolución del PushTo, le ponemos que la pregunte automáticamente, al principio de la conexión envía un comando "H" preguntando la resolución y Arduino contesta  "+04800\t+04800\r". Demora mucho más en conectarse, por eso no lo uso así, pero el programa está preparado para responder.

 

Todo ésto está muy claro en el código, lo único a tener en cuenta es son estas 2 cosas:

 

1.- Al principio armaba la cadena con la respuesta completa y la trasmitía (16 caracteres). Mientras se realiza una trasmisión serial el Arduino no acepta una interrupción en el medio y si, adivinaron, perdía pulsos a lo loco !!!. Dividí el envío de la respuesta en varios print para que entre uno y otro se puedan colar las interrupciones causadas por los encoders.

 

2.- Con la corrección en el punto 1 mejoró mucho, pero con movimientos rápidos del telescopio seguía teniendo problemas y lo solucioné cambiando la velocidad de trasmisión del HC-06 (Bluetooth) de 9600 que es la que trae por defecto al máximo que soporta que es 115200. Eso se hace a través de otro código que permite enviar comandos AT al módulo a través del monitor serie del IDE de arduino y configurarlo. También cambié el nombre que muestra por defecto a "PushTo" pero eso solo es un detalle cosmético.

 

Eso es todo, ya no pierde pulsos por más que lo intente y lo poco que lo pude probar hasta ahora realmente funciona. No puedo subir un archivo con el código, así que voy hacer un comentario seguido a éste pegando el código ahí, seguramente por la pantalla de un celular se va a ver HORRIBLE pero no se me ocurre otra, para verlo bien tendrán que copiar el texto y pegarlo en el IDE de Arduino o similar. También voy a publicar el código del programa que permite enviar los comandos AT para configurar el módulo BlueTooth HC-06.

 

Gracias por llegar hasta acá y espero que les sirva

 

Saludos

Rody

 

 

  • Like 1
  • Thanks 1

SkyWatcher Explorer 200p f/5 (Dobson con PushTo) - Oculares: BST 25mm, BST 18mm, BST 12mm, BST 8mm, BST 5mm - Barlow: Acromático X2 - Filtros: O-III, UHC, Moon & Skyglow, Polarizador variable, #12, #23A, #56, #80A

Enlace al comentario

Código del programa para poder enviar comandos AT al módulo HC-06 (copiar y pegar el texto en el IDE de Arduino)

 

/*  COMANDOS que se pueden enviar:


Cambiar nombre de nuestro módulo HC-06 (hasta 20 caracteres como máximo)
Enviar: AT+NAME<Nombre>   Ej: AT+NAMEPushTo
Respuesta: OKsetname     

 

Cambiar Código de Vinculación (código por defecto “1234”)

Enviar: AT+PIN<Pin>   Ej: AT+PIN1465
Respuesta: OKsetPIN   

 

Configurar la velocidad de comunicación (por defecto es de 9600)
Enviar: AT+BAUD<Numero>   Ejm: AT+BAUD8
Respuesta: OK115200

  Numero---baudrate
   1 ---------1200
   2 ---------2400
   3 ---------4800
   4 ---------9600
   5 ---------19200
   6 ---------38400
   7 ---------57600
   8 ---------115200

Nota: Después de cambiar la velocidad, para continuar enviando comando AT, hay que volver a programar y cargar un nuevo sketch con la nueva velocidad en (*).
*/

 

#include <SoftwareSerial.h>   // Incluimos la librería  SoftwareSerial  
SoftwareSerial BT(8,9);    // Definimos los pines RX y TX del Arduino conectados al Bluetooth, recordar que se cruzan
 
void setup()
{
  BT.begin(9600);     // (*) Inicializamos el puerto serie BT que hemos creado - Default 9600
  Serial.begin(9600);   // Inicializamos  el puerto serie  
}
 
void loop()
{
  if(BT.available())    // Si llega un dato por el puerto BT se envía al monitor serial
  {
    Serial.write(BT.read());
  }
 
  if(Serial.available())  // Si llega un dato por el monitor serial se envía al puerto BT
  {
     BT.write(Serial.read());
  }
}

 

 

  • Like 1

SkyWatcher Explorer 200p f/5 (Dobson con PushTo) - Oculares: BST 25mm, BST 18mm, BST 12mm, BST 8mm, BST 5mm - Barlow: Acromático X2 - Filtros: O-III, UHC, Moon & Skyglow, Polarizador variable, #12, #23A, #56, #80A

Enlace al comentario

Código del PushTo (copiar y pegar el texto en el IDE de Arduino)

 

/* ---------------------------------------------------------------
Encoder Azumuth
  A (Verde)   - Pin 2 (interripción)
  B (Blanco)  - Pin 4
  + (Rojo)    - 5v
  GND (Negro) - GND
Encoder Altitud
  A (Verde)   - Pin 3 (interripción)
  B (Blanco)  - Pin 5
  + (Rojo)    - 5v
  GND (Negro) - GND
Módulo HC-06 Bluetooth (Código de emparejamiento = 1234)
  GND - GND
  +5v - 5v
  Tx  - Pin 8 (Rx)
  Rx  - Pin 9 (Tx)
---------------------------------------------------------------- */

#include <SoftwareSerial.h>   //Para usar el Bluetooth en otros pines
SoftwareSerial Remoto(8,9);   //Conexión con Bluetooth: RX, TX recordar que se cruzan

const int AzChannelA = 2;
const int AzChannelB = 4;
const int AltChannelA = 3;
const int AltChannelB = 5;
const int LED = 13;  

const int ResolucionAz = 4800;  //Res. del encoder (600) * cuadratura (solo uso 2) * relación engranajes (4) = 600*2*4 = 4800
const int ResolucionAlt = 4800; //Res. del encoder (600) * cuadratura (solo uso 2) * relación engranajes (4) = 600*2*4 = 4800
volatile int ContadorAz = 0;
volatile int ContadorAlt = 0;

String TXTContAz = "00000";
String TXTContAlt = "00000";
String TXTResAz = String("00000") + ResolucionAz;
String TXTResAlt = String("00000") + ResolucionAlt;

byte comando;  //Comando leidos por el sistema remoto

void setup()
{
   pinMode(AzChannelA, INPUT_PULLUP);   //Uso INPUT_PULLUP para que lea bien el encoder
   pinMode(AzChannelB, INPUT_PULLUP);
   pinMode(AltChannelA, INPUT_PULLUP); 
   pinMode(AltChannelB, INPUT_PULLUP);
   pinMode (LED, OUTPUT);
   TXTResAz = TXTResAz.substring(TXTResAz.length()-5);  //con esto lleno con 0 a la izquierda
   TXTResAlt = TXTResAlt.substring(TXTResAlt.length()-5);  //con esto lleno con 0 a la izquierda

   Serial.begin(9600);
   Remoto.begin(115200); //Default es 9600, lo cambié por comandos AT -->  AT+BAUD8

   attachInterrupt(digitalPinToInterrupt(AzChannelA), EncoderAz, CHANGE);   //Leo el encoder con cambios (altos o bajos) del canal A
   attachInterrupt(digitalPinToInterrupt(AltChannelA), EncoderAlt, CHANGE);  //Leo el encoder con cambios (altos o bajos) del canal A

   Serial.println("-----------------");
   Serial.println(" ArduPushTo V1.0");
   Serial.println("-----------------");
   Serial.println("  ");
   Serial.println("----------------------------------");
   Serial.println("Revisar Resolución en SkySafari:");
   Serial.println("  --->  Az +" + TXTResAz + " Alt +" + TXTResAlt);
   Serial.println("  ");
   Serial.println("Clave Bluetooth = 1234");
   Serial.println("----------------------------------");
   Serial.println("  ");
}
 
void loop()
{
   //Saco esto de las funciones de interrupción para que sean lo mas chicas y rápida posible
   // Azimut
   if (ContadorAz >= ResolucionAz) ContadorAz = 0;
   if (ContadorAz < 0) ContadorAz = ResolucionAz - 1;
   TXTContAz = String("00000") + ContadorAz;
   TXTContAz = TXTContAz.substring(TXTContAz.length()-5);  //con esto lleno con 0 a la izquierda
   // Altitud
   if (ContadorAlt >= ResolucionAlt) ContadorAlt = 0;
   if (ContadorAlt < 0) ContadorAlt = ResolucionAlt - 1;
   TXTContAlt = String("00000") + ContadorAlt;
   TXTContAlt = TXTContAlt.substring(TXTContAlt.length()-5);  //con esto lleno con 0 a la izquierda
  
   // Me comunico por Bluetooth con SkySafari
   if(Remoto.available()>0){
     digitalWrite(LED, HIGH);   // Prendo el led cuando recibo datos
     comando = Remoto.read();
     Serial.flush();     // Tiro el resto del comando
     
     if (comando == 81)  //81 Ascii "Q" - Envío posición de los encoders (AZ y Alt), Ej: "+00200\t+00060\r"
     {
        //Los separo para que se puedan meter interrupciones al medio para no perder pulsos
        Remoto.print("+");
        Remoto.print(TXTContAz);
        Remoto.print("\t");
        Remoto.print("+");
        Remoto.print(TXTContAlt);
        Remoto.print("\r");
        //Envio al monitor serie para control  
        //Serial.println("Q --> Posición encoder Az +" + TXTContAz + " Alt +" + TXTContAlt);
     }
     else if (comando == 72) // 72 Ascii "H" - Envío la resolución de los encoders (AZ y Alt), Ej: "+04800\t+04800\r"
     {
        //Los separo para que se puedan meter interrupciones al medio para no perder pulsos
        Remoto.print("+");
        Remoto.print(TXTResAz);
        Remoto.print("\t");
        Remoto.print("+");
        Remoto.print(TXTResAlt);
        Remoto.print("\r");
        //Envio al monitor serie para control
        //Serial.println("H --> Resolución Az +" + TXTResAz + " Alt +" + TXTResAlt);
     }
     else  
     {
        //Envio al monitor serie para control
        //Serial.print(comando);
        //Serial.println(" --> Comando no reconocido !!!!!");
     }
   }
   
   digitalWrite(LED, LOW);   // Apago el led
}


void EncoderAz()
{
   if (digitalRead(AzChannelA) == digitalRead(AzChannelB))
   {
     ContadorAz++;
   }
   else
   {
     ContadorAz--;
   }
}


void EncoderAlt()
{
   if (digitalRead(AltChannelA) == digitalRead(AltChannelB))
   {
     ContadorAlt++;
   }
   else
   {
     ContadorAlt--;
   }
}

 

Que lo Disfruten !!!!!!

 

Rody

 

  • Like 2

SkyWatcher Explorer 200p f/5 (Dobson con PushTo) - Oculares: BST 25mm, BST 18mm, BST 12mm, BST 8mm, BST 5mm - Barlow: Acromático X2 - Filtros: O-III, UHC, Moon & Skyglow, Polarizador variable, #12, #23A, #56, #80A

Enlace al comentario

Estimados,

 

Les paso el video que realicé mostrando un poco el funcionamiento del PushTo. Es la primera vez que publico algo en YouTube así que espero que esté bien y lo puedan ver.

 

Si notan una "leve" tonada en mi vos es que soy 100% cordobés jajajajajajaja

 

Espero que les guste

 

 

Saludos

Rody

  • Like 7

SkyWatcher Explorer 200p f/5 (Dobson con PushTo) - Oculares: BST 25mm, BST 18mm, BST 12mm, BST 8mm, BST 5mm - Barlow: Acromático X2 - Filtros: O-III, UHC, Moon & Skyglow, Polarizador variable, #12, #23A, #56, #80A

Enlace al comentario
hace 37 minutos, juanca dijo:

Asombroso ! Hay mucho estudio, inteligencia y conocimiento puesto ahí . MUY bien.

Gracias Juanca

SkyWatcher Explorer 200p f/5 (Dobson con PushTo) - Oculares: BST 25mm, BST 18mm, BST 12mm, BST 8mm, BST 5mm - Barlow: Acromático X2 - Filtros: O-III, UHC, Moon & Skyglow, Polarizador variable, #12, #23A, #56, #80A

Enlace al comentario

Rody, excelente laburo!!!! Estoy queriendo comprar mi primer tele y este dobson me tiene "que no veo la hora de reservar unos peniques y meterle"... Por lo pronto mirar mucho para arriba y lectura y lectura!!!

 

Gracias por compartir!!!

  • Like 1
Enlace al comentario
hace 1 hora, josepicco dijo:

Rody, excelente laburo!!!! Estoy queriendo comprar mi primer tele y este dobson me tiene "que no veo la hora de reservar unos peniques y meterle"... Por lo pronto mirar mucho para arriba y lectura y lectura!!!

 

Gracias por compartir!!!

 

Gracias Jose,

 

Apenas puedas metele, te aseguro que anda muy bien éste telescopio, no se si ya viste el review de @criswille del Heritage, si no buscalo que te va a terminar de convencer.

 

Saludos

Rody

SkyWatcher Explorer 200p f/5 (Dobson con PushTo) - Oculares: BST 25mm, BST 18mm, BST 12mm, BST 8mm, BST 5mm - Barlow: Acromático X2 - Filtros: O-III, UHC, Moon & Skyglow, Polarizador variable, #12, #23A, #56, #80A

Enlace al comentario

El usuario @josepicco me hizo notar por mensaje privado que en el link del proyecto DSC que deje en el primer post, tiene caído el enlace para descargar las partes 3D, no me había dado cuenta.  También los tienen publicados en thingiverse:

 

https://www.thingiverse.com/thing:2242951

 

Ahí se descargan todas las partes publicadas (son 29 archivos), que son para distintos telescopios y distintos tipos de encoders. Paso el nombre de los archivos que sirven para el Heritage y los encoders que yo compré como ayuda para los que tengan el mismo equipo .

 

N20_m125_ext_SignWise.STL

N20_m125_ext_SignWise_Lng.STL

N80_m125_ext.STL

N80_m125_ext_Or_Alt.STL

OH_Frame_SignWise.STL

RM_SignWise.STL

RM_SignWise_BackPlate.STL

 

Saludos

Rody

  • Thanks 1

SkyWatcher Explorer 200p f/5 (Dobson con PushTo) - Oculares: BST 25mm, BST 18mm, BST 12mm, BST 8mm, BST 5mm - Barlow: Acromático X2 - Filtros: O-III, UHC, Moon & Skyglow, Polarizador variable, #12, #23A, #56, #80A

Enlace al comentario

Estimados,

 

Al final, nunca actualicé éste post comentando como quedó el montaje final de la placa y como fueron las pruebas del funcionamiento del sistema en una noche de observación real.

 

Las fotos del montaje final son estas, lo único que no quedó del todo prolijo como me gusta es que no le corte los cables largos que traen los encoders originalmente por si en algún momento quiero retirarlos e instalarlos en otro equipo mas grande, como un 200mm. Con el tiempo me voy arrepintiendo de esa decisión porque seguramente si alguna vez vendo el Heri lo voy a vender con el PushTo instalado y cuando compre otro equipo lo haré de nuevo o me pondré a jugar con algún goto basado en arduino como el Onstep, quien sabe, en algún momento cortaré y acomodaré esos cables.

 

20190618_000521.thumb.jpg.b4ae33928d3ca3ccdf7b28ceb3ac8a81.jpg20190618_000543.thumb.jpg.eb137671ae69456e00606cc99ae422fe.jpg20190618_000551.thumb.jpg.ba931abda3fd46540db2658d44b1c8b3.jpg20190618_194053.thumb.jpg.134901a647883b669cca1272db1ae5fe.jpg

 

También hice pruebas de duración de batería, un día que estaba con gripe en casa y sin nada mejor que hacer, lo prendí a la mañana y me conecté con el celular a el por el bluetooth. Lo dejé conectado todo el tiempo (no podía irme a ningún lado), moviendo el tubo cada vez que le pasaba al lado hasta que se acabó la batería. Duró casi 10hs prendido (le faltaron 10 minutos) con lo que alcanza perfectamente para toda una noche de observación. La batería en la foto no se ve porque esta pegada atrás de la placa y queda oculta.

 

Por último el viernes pasado le realicé la prueba de fuego con una sesión de observación real, nivelé bien la mesa primero, alinee usando un ocular de retícula iluminado para mejorar la precisión e incluí 3 estrellas, usé Antares al oeste, Alfa centauro hacia el sur y agregué una mas al noreste que no recuerdo cual fue.  El resultado de búsquedas durante toda la noche fue EXELENTE !!! 

 

Les dejo el reporte de esa noche en este link 

 

 

Saludos

Rody

 

 

 

 

 

SkyWatcher Explorer 200p f/5 (Dobson con PushTo) - Oculares: BST 25mm, BST 18mm, BST 12mm, BST 8mm, BST 5mm - Barlow: Acromático X2 - Filtros: O-III, UHC, Moon & Skyglow, Polarizador variable, #12, #23A, #56, #80A

Enlace al comentario

Crear una cuenta o conéctate para comentar

Tienes que ser miembro para dejar un comentario

Crear una cuenta

Regístrese para obtener una cuenta nueva en nuestra comunidad. ¡Es fácil!

Registrar una nueva cuenta

Conectar

¿Ya tienes una cuenta? Conéctate aquí.

Conectar ahora
×
×
  • Crear nuevo...