Jump to content
Astronomia - Espacio Profundo
RodyG

Sistema Push To con Arduino para mi Heritage

Recommended Posts

jwackito

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 1

Share this post


Link to post
Share on other sites
cappellettiariel

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

Abrazo! Y felicitaciones!!!

  • Like 1

Share this post


Link to post
Share on other sites
RodyG
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 

Share this post


Link to post
Share on other sites
RodyG
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 1

Share this post


Link to post
Share on other sites
Matias_M

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

Share this post


Link to post
Share on other sites
RodyG

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 3

Share this post


Link to post
Share on other sites
RodyG
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  

Share this post


Link to post
Share on other sites
fsr

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.

Edited by fsr
  • Like 1

Share this post


Link to post
Share on other sites
criswille

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

Share this post


Link to post
Share on other sites
RodyG
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

Share this post


Link to post
Share on other sites
RodyG
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

Share this post


Link to post
Share on other sites
NicoHammer

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

Share this post


Link to post
Share on other sites
RodyG
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

Share this post


Link to post
Share on other sites
Leoyasu

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

Share this post


Link to post
Share on other sites
RodyG

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

Share this post


Link to post
Share on other sites
RodyG

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());
  }
}

 

 

Share this post


Link to post
Share on other sites
RodyG

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 1

Share this post


Link to post
Share on other sites
RodyG

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 1

Share this post


Link to post
Share on other sites
juanca

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

  • Like 2

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • NicoHammer
      By NicoHammer
      Hola a todos, estos días estuve armando y probando el 1er prototipo de una plataforma eq para el heritage.
       
      Construida en pino cepillado, tiene una inclinación fija de 34,5° y patas regulables para ponerla a nivel. Por el momento tiene unos anclajes para mantener la base del Heritage sin tener que desarmar y poner tornillo pasante, de modo que puedo ponerlo o sacarlo en 10 segundos.
       
      Se probó  durante algunas noches con resultados óptimos, el movimiento natural altazimutal es transforma en AR. La idea principal es mejorar la captura planetaria que hago con la webcam, para no perder tantos segundos volviendo a apuntar.
       
      Próximamente le voy a agregar algún disco que trabaje sobre la base, para girar una mariposa y hacer mover AR de manera suave y continua.
       
      Les dejo las fotos:

    • MrPopinus
      By MrPopinus
      Les comparto esta humilde foto que saqué hace un rato a la Luna
      Cabe aclarar que no soy muy bueno ni cuento con buenos materiales para hacer astrofotografía
      Usé el Heritage con Ocular 25mm, una cámara digital común, y un adaptador de cámara a telescopio
      Saludos!
       

    • NicoHammer
      By NicoHammer
      Hola a todos, como varios saben, estuve un tiempo indagando y averiguando sobre filtro baader para el sw heritage 130..... 
       
      Finalmente, conseguí por mercadolibre un recorte de lamina Baader planetary densidad 5 de 10x10cm, no fue económico, pero fue la única posibilidad de conseguir algo que no sea un filtro de menor calidad y seguridad.
       
      Les paso fotos de la construcción, utilicé una tapa de tubo de vinilos, que conseguí en una gráfica, a la cual, con un mini torno, le "achiqué" la parte de atrás para que entre en el tubo del heritage a presión, para evitar riesgos, lo demás, fue pegar la lámina, y proteger la zona para evitar que se despegue:



      Saludos
    • EzeBais
      By EzeBais
      Buenas tardes gente! Me presento, soy Ezequiel Bais, oriundo de Reconquista (Santa Fe), 27 añitos jaja, usuario de varios años del foro, aunque no suelo comentar mucho, si me gusta ver y leer posteos que otros users van haciendo en el mismo.
      Estoy en busqueda de un nuevo equipo para avanzar un poco mas. En este momento poseo un Galileo 114x1000, se que la marca no es lo mejor que existe, pero si que me dio muchos momentos espectaculares, algunos al borde del lagrimon 😆 (soy muy loco con todo lo referido a la astronomia y la observación). Y mi idea era jugarme con un SW Explorer 200, pero con la economia como esta, me resulta muuy dificil algo asi, por lo que pensaba ir por el momento en busqueda de un heritage, el cual por lo que leí en el foro, es un excelente equipo.
      Lo que me gustaria saber (mas alla de la diferencia de marcas, cosa que creo es casi obvia) es si vale la pena ese cambio, ya que la diferencia entre aperturas en los dos no es tan grande como con el 200 por ejemplo. Dispongo de algo de equipo para acompañarlo, que son 4 oculares (3 BST, de 25, 18 y 12mm, 1 TMB de 5mm) un barlow Telextender 3x, un par de filtros de colores, un filtro CLS y un SKYGLOW.
       
      Me hace mucha ilusión la compra ya que es el primero que compraría yo gracias a mi trabajo (el que poseo fue un regalo de egresado de la secundaria de mis viejos 😊). Si alguien puede sacarme esa duda, les agradeceré mucho. 
       
      Mi nivel de conocimiento: BASICO
      Mi experiencia: ALGUNA
      Mis expectativas: De momento, observación general (LUNAR, PLANETARIA Y ESPACIO PROFUNDO)
       
      Muchas gracias por su tiempo.
       
      Saludos y buenos cielos!
    • NicoHammer
      By NicoHammer
      Hola a todos, estoy intentando conseguir filtro solar baader para el heritage pero no consigo, en duoptic no hay stock tampoco.
       
      Se consiguen las laminas para armar? o, tengo alguna opción más que esperar que entren en duoptic?
       
      Gracias!
×
×
  • Create New...

Important Information

Términos y condiciones de uso de Espacio Profundo