Rotor Controller K3NG

En su dia, al comprar el rotor G-450C decidí guardar el controlador original (ya que normalmente la estación la utilizo en remoto) y buscar alguna manera barata de controlarlo desde el ordenador.

Navegando por la red, encontré el fantástico proyecto de K3NG basado en Arduino: blog.radioartisan.com/yaesu-rotator-computer-serial-interface/

Hardware

k3ng rotator interface

En cuanto a hardware, en principio, es un proyecto muy sencillo. En mi caso (sólo AZIMUTH) lo que necesitaba era solamente:


  • Un Arduino Uno

  • Un Display LCD 2 lineas

  • Dos pulsadores (Giro CCW/CW)

  • Tarjeta de 2 relés para el giro del rotor


El montaje es sencillo y no tiene realmente ninguna dificultad. Normalmente la dificultad dependerá de los sensores que se utilicen. En mi caso, al utilizar el potenciómetro interno del G-450C, lo único que hay que hacer es alimentar los extremos del potenciómetro con los 5 voltios del arduino, y del cursor del potenciómetro, obtendremos el voltaje variable (entre 0-5 voltios) proporcional a la posición (rumbo) del rotor.

Es importante asegurarse que a la entrada analógica del Arduino no le llegan más de 5 voltios, ya que nos lo podemos cargar. Por lo tanto, recomiendo antes de conectar el cable al pin 17, medir el voltaje con el multímetro.

Software

Es un proyecto que contempla muchas opciones para ajustarse a todas las posibilidades que existen en el mercado y cada uno tiene que adaptarlo a sus necesidades. Pero esta personalización es relativamente sencilla ya que se trata de desmarcar (más bien descomentar) las características que deseamos.

El código para Arduino, se puede descargar desde: github.com/k3ng/k3ng_rotator_controller/archive/master.zip

Una vez descargado, descomprimimos el archivo zip y la carpeta resultante la copiamos en la carpeta de Arduino.

Con el IDE Oficial de Arduino, abriremos el archivo k3ng_rotator_controller.ino y tendremos a la vista el código contenido en los diferentes archivos .h

Como ejemplo, esta parte del código define en que idioma se van a presentar los mensajes en el display. Quitando el comentario (las dos barras //) dejamos activa esa opción y el resto (las que comienzan por //) no son tenidas en cuenta durante la ejecución (son simples comentarios).

En este ejemplo, el idioma elegido es el Inglés. Para cambiar a Español, tendríamos que quitar las "//" de la linea LANGUAGE_SPANISH y ponérselas a la linea LANGUAGE_ENGLISH.

De esta forma cambiaríamos el idioma del display.

Para adaptarlo a mis necesidades (Solo Azimuth + Display 2 lineas + sensor potenciómetro) tuve que "descomentar" las lineas de estos archivos:

rotator_features.h

#define FEATURE_YAESU_EMULATION para activar la emulación Yaesu GS232A#define OPTION_GS_232B_EMULATION para activar la emulación GS232B (yo he activado las dos....)#define FEATURE_AZ_POSITION_POTENTIOMETER para activar el uso del potenciómetro interno del rotor#define LANGUAGE_SPANISH para que en el display salgan los mensajes en Castellano#define FEATURE_4_BIT_LCD_DISPLAY para utilizar un display LCD de 4 bits#define OPTION_DISPLAY_DIRECTION_STATUS para que aparezcan los puntos cardinales en la linea superior del display#define OPTION_C_COMMAND_SENDS_AZ_AND_EL NO SE PARA QUE, pero la he activado por si acaso#define OPTION_DELAY_C_CMD_OUTPUT TAMPOCO SE PARA QUE.....Según dicen mejora el uso con el Ham Radio Deluxe

rotator_pins.h

#define rotator_analog_az A0 para definir el pin por el que recibo la señal del cursor del potenciómetro de azimuth#define button_cw A2 para definir en que patilla tendré conectado el botón de girar a derechas (sentido horario)#define button_ccw A3 para definir en que patilla tendré conectado el botón de girar a izquierda (sentido anti-horario)#define rotator_cw 8 para definir que salida del arduino (Digital 8 en mi caso) controla el relé de giro a derechas#define rotator_ccw 9 para definir que salida del arduino (Digital 9 en mi caso) controla el relé de giro a izquierdas

rotator_setting.h

#define LCD_COLUMNS 16 para definir el número de columnas de nuestro display (en mi caso 16)#define AZIMUTH_ROTATION_CAPABILITY_DEFAULT_450 ya que mi rotor tiene un Overlap de 90 grados (360+90 = 450)#define AZIMUTH_STARTING_POINT_DEFAULT 180 para definir que la rotación empiece en 180 grados (Sur)#define ROTATE_PIN_INACTIVE_VALUE_HIGH para definir la lógica de las salidas que activan los relés#define ROTATE_PIN_ACTIVE_VALUE_LOW para definir la lógica de las salidas que activan los relés
k3ng rotator controller

Este es el montaje inicial en pruebas, utilizando un potenciómetro de 1 K para simular el de 500 Ohms del rotor. Posteriormente, hice las conexiones para el rotor y realicé la calibración del rotor.