Control Rotor

Yaesu G-5500

Después de adquirir un rotor Yaesu G-5500 me surgió la necesidad de controlarlo desde satpc32 sin gastar mucho dinero. Después de la buena experiencia con el controlador de azimuth K3NG, decidí seguir apostando por este código que permite con pocos materiales tener un controlador de rotor compatible con todos los programas actuales.

El Controlador de Rotor G-5500 tiene un conector DIN trasero de 8 pines que permite conectar diferentes controladores que hay en el mercado: EA4TX, ERC, Fox Delta.... En mi caso he optado por el mismo camino, aprovechar este conector (External Control) para poder controlar el rotor desde el ordenador de la manera más económica posible.

Es importante asegurarse que por los pines 1 y 6 no llegan más de 5 voltios al Arduino. En mi caso, por no hacer esta comprobación, las entradas analógicas de un par de Arduinos resultaron dañadas. Los voltajes entregados por el controlador Yaesu son algo diferentes a los que figuran en la tabla anterior:

Voltaje entre pines 6 y 8:


Azimut 0 grados = 0 voltios

Azimut 360 grados = 4,5 voltios

Final de carrera = 4,9 voltios

Voltaje entre pines 1 y 8:


Elevación 0 grados = 0 voltios

Elevación 90 grados = 2,25 voltios

Elevación 180 grados = 4,5 voltios

Final de carrera = 4,9 voltios

Si el voltaje máximo supera los 5 voltios, hay que reducirlo con los potenciómetros "OUT VOL ADJ" que hay en la cara trasera del controlador Yaesu. Estos potenciómetros permiten el ajustar el voltaje máximo de salida por los pines 1 y 6 que corresponden a la información de Azimut y Elevación, la cual es interpretada por el Arduino mediante las entradas analógicas, las cuales no aceptan más de 5 voltios.

Hardware

Debido a que este controlador va a estar conectado al Controlador Yaesu, opté por no añadir ni teclado ni display y dejarlo de la manera más simple posible. En cuanto al conector de salida aproveché materiales que tenía por casa. Se puede hacer más sencillo aun si lo cableamos directamente a un conector DIN 8 Macho. En mi caso he utilizado un conector RJ45 de salida y posteriormente hice un latiguillo adaptador de RJ45 a DIN 8.


Por lo tanto, los materiales necesarios son:


  • Arduino Uno

  • Driver ULN2003A

  • 2 resistencias de 1K

  • 2 condensadores de 10K (10nF)

  • Cable de red ethernet

  • Adaptador Hembra-Hembra RJ45

  • Conector DIN 8 Macho.

Para el montaje de los pocos componentes, utilicé una placa de prototipos que se conecta directamente sobre el Arduino.

Software

El código necesario para nuestro controlador se puede descargar desde el repositorio de github, donde tendremos siempre la versión más actualizada: github.com/k3ng/k3ng_rotator_controller

Descargarlo en forma de archivo comprimido zip clicando sobre el botón "Code" y eligiendo la opción "Download ZIP". Una vez descargado, descomprimirlo y guárdarlo en nuestro PC para abrirlo con el IDE de Arduino que previamente deberíamos haber instalado.

Una vez abierto el código en el IDE Arduino deberemos adaptarlo a nuestras necesidades comentando las líneas con dos barras "//" para anularlas o eliminando las dos barras para habilitar la línea.

Los archivos que hay que modificar son:

  • rotator_features.h

  • rotator_settings.h

  • rotator_debug_log_activation.h

Rotator_features.h

En este archivo hay que comentar (con dos barras al comienzo de la línea) todas las líneas, excepto las siguientes:

#define FEATURE_ELEVATION_CONTROL

#define FEATURE_YAESU_EMULATION

#define FEATURE_AZ_POSITION_POTENTIOMETER

#define FEATURE_EL_POSITION_POTENTIOMETER

#define OPTION_GS_232B_EMULATION

#define OPTION_SAVE_MEMORY_EXCLUDE_EXTENDED_COMMANDS

#define OPTION_SAVE_MEMORY_EXCLUDE_BACKSLASH_CMDS

Es decir, estas líneas serán las únicas que no comenzarán con //

Rotator_settings.h

Las únicas líneas que hay que modificar son estas:

#define AZIMUTH_STARTING_POINT_EEPROM_INITIALIZE 0

#define AZIMUTH_ROTATION_CAPABILITY_EEPROM_INITIALIZE 450

#define ELEVATION_MAXIMUM_DEGREES 180

Además, para que funcione correctamente con el buffer ULN2003A que estoy utilizando, hay que comprobar las siguientes líneas:

#define ROTATE_PIN_AZ_INACTIVE_VALUE LOW

#define ROTATE_PIN_AZ_ACTIVE_VALUE HIGH

#define ROTATE_PIN_EL_INACTIVE_VALUE LOW

#define ROTATE_PIN_EL_ACTIVE_VALUE HIGH

El resto del archivo se deja tal cual está.

Rotator_debug_log_activation.h

En este archivo, lo único que tenemos que hacer es deshabilitar el debug, para así ahorrar memoria en nuestro Arduino. Para ello, dejar el archivo con sólo la primera línea habilitada:

Calibración

Para la calibración aconsejo conectar con el puerto COM del Arduino mediante el software "putty" que podemos descargar desde este enlace www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

Para averiguar el puerto al que está conectado el Arduino, lo más sencillo es abrir el "Administrador de Dispositivos" de Windows y buscarlo en el aparatado "Puertos (COM y LPT)" con el Arduino conectado por USB, deberá aparecer en el listado.

Una vez averiguado el puerto, abrimos el software Putty y seleccionamos conexión Serial a 9.600 baudios para el puerto COM del Arduino.

Con eso se nos abrirá una ventana terminal desde la cual podremos enviar comandos al Arduino.

Según el protocolo GS-232 de Yaesu, los comandos necesarios para la calibración son:


  • Azimut:

O (Oscar) para calibrar el cero, teniendo el rotor a o grados en Azimut.

F (Foxtrot) para calibrar el fondo de escala, teniendo el rotor a 450 grados.


  • Elevación:

O2 (Oscar dos) para calibrar el cero en Elevación, teniendo el rotor a 0 grados.

F2 (Foxtrot dos) para calibrar los 180 grados en Elevación.


En las cuatro posiciones hay que confirmar con la tecla "Enter" cuando el rotor esté en posición.

Los comandos los podemos consultar en la wiki del K3NG github.com/k3ng/k3ng_rotator_controller/wiki/820-Command-Reference