Publicidad Google grande + Astroradio
URE foro pequeñas
Consola digital par...
 
Notificaciones
Limpiar todo

Consola digital para el Yaesu G450C

EA2J
 EA2J
Mensajes: 3764
#372343  - 1 febrero, 2022 20:22 

Bueno... he iniciado un nuevo proyecto con Arduino. Se trata de una consola digital, que sustituye a la analógica, para el rotor Yaesu G450C. Se trata de un rotor de tipo medio apto para mover antenas de HF multibanda ligeras como la Hexbeam y antenas para VHF.

No ha sido fácil encontrar esquemas y documentación sobre el funcionamiento del rotor, al final he publicado un esquema de las conexiones entre el rotor y la consola.

El proyecto lo he iniciado con una consola digital que funciona perfectamente con las prestaciones básicas. Mando de rotación CW y CCW y display con indicación del rumbo. Desde un punto de vista de programación ha sido sumamente sencillo y me ha llevado un par de tardes para escribir el programa y depurarlo. El programa está escrito desde cero en C++ utilizando la nueva IDE versión 2.

Se trata de un un rotor con motor de CC que gira en ambos sendos (CW y CCW) invirtiendo la polaridad, para el conmutador untilizo un módulo chino de dos relés que cuesta unos 2€.

He publicado en mi blog la primera versión con el prototipo y una versión beta del pre ajuste basado en un encoder estándar. Funciona aunque debo pulir algunos aspectos. El encoder, como debe ser, utiliza las interrupciones del mCU de forma que en el momento que se gira el encoder se ejecutan un par de funciones automáticamente en ambos sentidos. Nunca había trabajado este tipo de funcionalidad de un mCU, no ha sido demasiado difícil y la primera versión funciona, pero el problema es que se pierde el control del display, es decir, cuesta identificar los momento de arranque y parada para indicar al operador qué está haciendo el rotor. Es un tema interesante que me a exigir utilizar el nuevo debugger que trae la IDE.

Para quienes os interesáis por estos temas, el objetivo y los primeros datos del proyecto están en mi blog

https://enioea2hw.wordpress.com/2022/01/30/consola-para-el-rotor-yaesu-g450c/

El código, los esquemas e imágenes los he subido al repo de Github

https://github.com/argulab/digital-console-for-G450C

Como siempre me tenéis a vuestra disposición en mi correo. Suerte y que os aproveche divirtiendo.

 

 

La cultura del esfuerzo se cultiva desde la motivación, no mediante el castigo como algunos quisieran.
http://www.enioea2hw.wordpress.com
73, Enio

ResponderCitar
Inició el tema
EB1RL, EA1TA, EC5APB y 5 personas más reaccionaron
EA2J
 EA2J
Mensajes: 3764
#372458  - 4 febrero, 2022 12:37 

Ya he terminado el proyecto desde el punto de vista de programación, funciona bien y fiable, lo tengo ya operativo y a prueba. Fué sencillo controlar el display en la forma preset. El objetivo, demostrar que se puede fabricar una consola digital para un rotor por menos de 100€ que sustituye a una consola analógica y que proporciona prestaciones adicionales como un preselector de rumbo.

A partir de este diseño que es específico para un rotor G450C de Yaesu, su puede modificar para muchos otros tipo de rotor. La tensión del rotor de CC o CA se solventa en los relés. En ambos casos dos relés pueden actual como inversor (CC) o conmutador (CA). Siempre que el rotor ofrezca 5 (CC) o 6 tomas (CA). Tres tomas son necesarias para el potenciómetro que actúa de divisor de tensión en cuyo cursor móvil se puede leer la tensión relativa al giro. Dos cables para la alimentación del motor de CC o tres tomas para un motor Split de CA.

Esta experiencia respalda el valor de los mCU en la radioafición por lo que la incorporación y la formación de programadores o programadoras para el montaje de componentes útiles el en cuarto de radio.

Todo el código está desarrollado desde cero, aunque las variables y comentarios estén en inglés y nos anima a perder el complejo de que por ahí fuera hacen las cosas mejor que nosotros. Eso no siempre es cierto.

La cultura del esfuerzo se cultiva desde la motivación, no mediante el castigo como algunos quisieran.
http://www.enioea2hw.wordpress.com
73, Enio

ResponderCitar
Inició el tema
EB1RL, EA1TA, EA3SE y 1 personas más reaccionaron
EA1EVS
Mensajes: 112
#372463  - 4 febrero, 2022 15:36 

Hola:

 

   Te felicito por el proyecto Enio, y te agradezco que compartas toda la información de forma altruista, cosa que ultimamente se ve en pocas ocasiones.

 

 

73. EA1EVS.

ResponderCitar
EA7BD
Mensajes: 88
#372498  - 5 febrero, 2022 12:52 

Esto lo tengo que estudiar muy detenidamente, que tengo el mando del rotor destruido mecanicamente y necesito uno  nuevo el cual no encuentro por ningun lado.  aunque tecnicamente me sobrepasa.  a ver que puedo hacer.

 

Gracias por tus proyectos, siempre interesantes.

ResponderCitar
EA2J
 EA2J
Mensajes: 3764
#372503  - 5 febrero, 2022 15:39 

¿Qué rotor tienes??

 

 

La cultura del esfuerzo se cultiva desde la motivación, no mediante el castigo como algunos quisieran.
http://www.enioea2hw.wordpress.com
73, Enio

ResponderCitar
Inició el tema
EA7BD
Mensajes: 88
#372732  - 11 febrero, 2022 16:44 

yaesu 450 c,  Vamos, como el tuyo.

 

ResponderCitar
EA2J
 EA2J
Mensajes: 3764
#372745  - 12 febrero, 2022 07:51 

Bueno... hacer una consola es factible, no sé si el motor es el de CC o el de CA. Yo estoy trabajando en la segunda versión, quiero ponerle un display TFT baratito de 2,6'' y hacer una salida gráfica emulando el círculo y la aguja de indicadora. Estoy trabajando en la caja que será de metacrilato cortado con máquina láser y forrado interiormente con lámina de cobre.

He programado una Raspberri Pi Pico con Python y ha sido sencillo hacer la lectura azimutal, pero aunque la precisión es mayor ya que el ADC de la Raspi es de 12but (aunque internamente trabaja a 16bit), la tensión de trabajo de 3.3V es más inestable. Por otra parte, el ADC de Arduino de 10bit es lo suficientemente preciso como para direccionar una antena yagi de dos elementos.

Tengo algún circuito a tu disposición para la versión actual que funciona de forma estable con el display 1602 y tienes la ventaja de que puedes utilizar el trafo de la consola estropeada.

La cultura del esfuerzo se cultiva desde la motivación, no mediante el castigo como algunos quisieran.
http://www.enioea2hw.wordpress.com
73, Enio

ResponderCitar
Inició el tema
EA7BD
Mensajes: 88
#372828  - 14 febrero, 2022 17:50 

ahora mismo el proyecto me viene muy grande, pero en cuanto me pueda poner a ello de manera seria estaremos en contacto.  

Gracias y adelante que estas haciendo a muchos de nosotros el ponernos al dia .

 

73  Vic

ResponderCitar
EA2J
 EA2J
Mensajes: 3764
#373519  - 2 marzo, 2022 16:02 

Por fin he cogido algo de tiempo y es que la vida de un jubilado es muy dura, entre la siesta, la radio y "Age of empires" no queda tiempo para nada.

Ya he recibido la pantalla y he adaptado el código para la pantalla. La parte central la ocupa un dial de 360º que servirá para conocer la orientación de un golpe de vista. En la esquina superior derecha viene la orientación de l antena en grados con una precisión de 1º, en la esquina superior izquierda viene el rumbo de brújula (rosa de los vientos con 16 posicione) (NNO = NorNorOeste)

Ambos parámetros funcionan correctamente, ha sido muy sencillo implementarlo por la estructuración del código. Ahora estoy trabajando en la implementación de la aguja que indica el rumbo sobre la esfera. Desde un punto de vista de código ya he hecho pruebas y la aguja se mueve con fluidez. El problema es calcular los parámetros x,y para posicionar el fin de la aguja en un punto de la circunferencia. Para que se ralentice he seleccionado 16 posiciones, lo cual da una precisión muy baja, 22.5º por posición, pero la precisión de obtiene con la lectura digital en números.

La imagen es del prototipo, agradecería comentarios con ideas y críticas sobre si esta presentación es adecuada. La pantalla es de 2,8''. Es pequeña y su reaolución no es para echar cohetes pero es económica, menos de 10€. En este formato se puede llegar hasta 4'' y la pantalla si se desea es táctil.

display graphic

La cultura del esfuerzo se cultiva desde la motivación, no mediante el castigo como algunos quisieran.
http://www.enioea2hw.wordpress.com
73, Enio

ResponderCitar
Inició el tema
EA3FNM
Mensajes: 1773
#373520  - 2 marzo, 2022 17:00 

Fantastico trabajo. Me encanta seguir tus proyectos.

Pues no se si es posible pero te doy una idea: poner de fondo el mapa azimutal de EA y/o Mundial para saber hacia donde apunta la antena.

Yo tengo un par de mapas azimutames para saber ha ia donde girar la loop.

Slts

 

EA3FNM
ex-ec3ccq
Pedro
Barcelona
ea3fnm@gmail.com

ResponderCitar
EA2J
 EA2J
Mensajes: 3764
#373528  - 2 marzo, 2022 23:10 

Gracias por la idea Pedro, pero la pantalla TFT que utilizo tiene unas posibilidades muy limitadas. 320 x 24 px. Tiene capacidad gráfica y se pueden subir imágenes externas, incluso tiene un puerto SPI para una tarjeta SD. Pero creo que sería sobrecargar las posibilidades.

Quizá con una pantalla Nextion que tiene una gestión propia de los gráficos, pero se han puesto a unos precios excesivos, un patalla de 3,2'' cuesta ya 35€.

De momento, me conformo con hacer una presentación fluida del movimiento de la aguja y, quizá, incrementar la precisión haciendo 32 posiciones de la aguja.

Quizá haya algún colega con formación matemática para hacer un cálculo de un punto en las coordenadas x,y de una circunferencia conociendo el radio y el ángulo. Yo he estado buscando en Internet y me hecho un lío, los de letras ya se sabe.

Necesitaría la ecuación para implementarla en el software. 

La cultura del esfuerzo se cultiva desde la motivación, no mediante el castigo como algunos quisieran.
http://www.enioea2hw.wordpress.com
73, Enio

ResponderCitar
Inició el tema
EA3FNM reaccionó
EC4AA
Mensajes: 678
#373532  - 3 marzo, 2022 06:42 

Una ocurrencia "hardware": imprimir el mapa azimutal (ejm. de NS6T) en una hoja transparente del tamaño de la pantalla.

Más opiniones: https://www.ure.es/foros/postid/395086/
Y hasta aquí puedo escribir...
... no quiero que lo pasen a "hasuntos hinternos". 😠
73 de Manolo.

ResponderCitar
EA5O
 EA5O
Mensajes: 76
#373537  - 3 marzo, 2022 08:13 

Enio, formación matemática la justa, pero también me peleé con eso en su día.
He reducido lo que tengo a esto por si te sirve. 

X: centro+cos(Grados)*radio,   Y:centro+sin(Grados)*radio

En mi caso, el origen de coordenadas está arriba a la izquierda y además va al revés, con lo que hay que mover las cosas de sitio y darles la vuelta. Creo que he reducido lo que tengo a la versión "sencilla".
La variable centro desplaza la circunferencia en igual cantidad desde el origen de coordenadas que tengas tú. Para lo que pedías la puedes quitar, con lo que te queda solamente la ecuación de una circunferencia.  
Según el lenguaje que uses, puede ser que tengas que convertir grados a radianes. Mira lo que piden las funciones de seno y coseno.
QRV para cualquier aclaración .

 

Paco, EA5O.

ResponderCitar
EA2J
 EA2J
Mensajes: 3764
#373545  - 3 marzo, 2022 15:05 

Gracias Paco, yo también lo he resuelto. 

Se trata de un rectángulo de 320 x 240 pixels el origen es el centro,

uint16_t cx = objeto.width ();  //Calcula en centro de X

uint16_t cy = objeto.height ();  Calcula el centro de Y

Las herramientas son, por parte de la librería ILI9341 de Adafruit, 

objeto.drawLine (uint16_t initX, uint16_t initY, uint16_t endX, uint16t_t endY, uint16_t color);

La coodenadas de inicio son siempre las mismas, x=160, y=120.

He escrito un método que calcula el cateto pasando dos parámetros, ángulo en grados, y lado (opuesto y adyacente)

float calc_cateto (uint16_t dgAngle, sides side) {
  uint8_t rdInner = 96;                  //Es el radio de la aguja
  float rad = (dgAngle * pi) / 180;  //Las funciones de Arduino calculan las razones en radianes, pasa a radianes
  float cateto = side == oppositeSide ? sin (rad) : cos (rad);    //calcula la razón del lado opuesto o adyacente

  return cateto * rdInner;         //devuelve la longitud del desplazamiento en pixels
}

otra función se ocupa e borrar la aguja en la posición anterior y escribir la nueva:

void display_line_compass (uint16_t dgAngle) {
  uint16_t cx = tft.width () / 2; //Center of cols
  uint16_t cy = tft.height () / 2; //Center of rows
  uint16_t rdInner = 96; //Length of the inner radius
  uint16_t endX;
  uint16_t endY;

  tft.drawLine (cx, cy, prevEndX, prevEndY, ILI9341_BLUE);     //Escribe la línea anterior color de fonco (la borra)

 if (dgAngle > 0 && dgAngle <= 90) {                      //Primer cuadrante que calcula el desplazamiento x / y
    endX = cx + calc_cateto (dgAngle, oppositeSide);
   endY = cy - calc_cateto (dgAngle, adjacentSide);
}

if (dgAngle > 90 && dgAngle <= 180) {                //Calcula coordenadas de destino en el segundo cuadrante, de 91 a 180º
  endX = cx + calc_cateto (dgAngle - 90, adjacentSide);
  endY = cy + calc_cateto (dgAngle - 90, oppositeSide);
}

if (dgAngle > 180 && dgAngle <= 270) {              //Tercer cuadrante, de 181 a 270º
  endX = cx - calc_cateto (dgAngle - 180, oppositeSide);
  endY = cy + calc_cateto (dgAngle - 180, adjacentSide);
}

if (dgAngle > 270 && dgAngle <= 360) {            //Cuarto cuadrante de 271º a 360º
  endX = cx - calc_cateto (dgAngle - 270, adjacentSide);
  endY = cy - calc_cateto (dgAngle - 270, oppositeSide);
}

tft.drawLine (cx, cy, endX, endY, ILI9341_WHITE);         //Escribe la nueva línea
prevEndX = endX;                                                       //Almacena la linea en una variable global
prevEndY = endY;                                                        //Lo mismo
}

Lo cierto es que funciona mucho mejor de lo que esperaba, la aguja se desliza de forma fluida en los 360ª

Gracias por la aportación.

La cultura del esfuerzo se cultiva desde la motivación, no mediante el castigo como algunos quisieran.
http://www.enioea2hw.wordpress.com
73, Enio

ResponderCitar
Inició el tema
EA3SE reaccionó
EA5O
 EA5O
Mensajes: 76
#373559  - 3 marzo, 2022 22:13 

Estupendo Enio. Hay que mantener las neuronas activas. 

Ahora, si funciona no lo toques 😀.

Suerte con el resultado definitivo y que lo disfrutes.

Paco, EA5O.

ResponderCitar
EA2J
 EA2J
Mensajes: 3764
#373560  - 3 marzo, 2022 22:22 

He escrito un sketch solo para este método y funciona muy bien, para ser de letras estoy contento. He podido comprobar también que escribiendo un código bien encapsulado, es muy fácil y cambiar una clase sin tocar las líneas de control.

La cultura del esfuerzo se cultiva desde la motivación, no mediante el castigo como algunos quisieran.
http://www.enioea2hw.wordpress.com
73, Enio

ResponderCitar
Inició el tema
EA3FNM
Mensajes: 1773
#373597  - 4 marzo, 2022 21:16 
Publicado por: @ec4aa

Una ocurrencia "hardware": imprimir el mapa azimutal (ejm. de NS6T) en una hoja transparente del tamaño de la pantalla.

Así lo tengo Manuel, pero es poco "tech" y muy "brico"

 

EA3FNM
ex-ec3ccq
Pedro
Barcelona
ea3fnm@gmail.com

ResponderCitar

QDURE - https://qsl.ure.es


Imprime y confirma tus QSL en tan solo tres click.

Nunca fue tan fácil y cómodo
el confirmar tus contactos.

TIENDA ONLINE URE


Publicaciones, mapas, polos, camisetas, gorras, tazas, forros polares y mucho más...

WEBCLUSTER EA4URE


Conoce el nuevo WebCluster de URE, ahora con nuevos filtros e información y compatible con GDURE