VFO digital para el FT-101

Tengo un equipo FT-101F fabricado por YAESU en los años 70´s y está completamente funcional y excelente estado físico. Mi idea es desarrollar unos proyectos electrónicos que permitan a experimentar con componentes nuevos y electrónica antigua.
El FT-101F es un equipo hibrido. La mayoría de los circuitos son transistorizados pero la etapa final, amplificador de potencia, es de tubos. El VFO es análogo y la frecuencia se lee observando el desplazamiento de una aguja sobre un tablero calibrado.

Mi primer proyecto es construir una interface entre el radio y un PC para conseguir que desde el PC se le pueda indicar cuál es la frecuencia que se desea debe operar el radio. Si este primer proyecto funciona, me abre la posibilidad de otros proyectos para logra controlar mas funciones del Ft-101 desde un PC.
Para la interface he escogido los siguientes dos componentes:
AD9850 un sintetizador de frecuencia DDF relativamente barato que me suministra cualquier frecuencia exacta menor a 50 MHZ.
Un ARDUINO para programar el AD9850 y sostener la comunicación con el PC.

ft101-2

La conexión entre el PC y el ARDUINO es por cable USB. La conexión del AD9850 al FT-101 se logra mediante un cable conectado en la parte trasera de FT-101. Es un conector Octal previsto para conexión de un VFO externo por lo cual no es necesario hacer ninguna modificación al FT-101.
El ARDUINO recibe alimentación de +5V por el cable USB y este le puede suministrar los 5V requiere el AD9850 para funcionar. De esta manera toda la interface recibe alimentación desde el PC y el AD9850 suministra una señal sinusoidal de 0.1 voltio suficiente para alimentar la entrada de VFO externa al FT-101. Esto significa que con solo estos dos componentes podemos implementar la interface.
IMPLEMENTACION

Las conexiones entre el ARDUINO nano y el AD9850 son sencillas:

ad9850-arduino

Los puertos digitales D4 a D7 son conectados a las espigas de control del AD9850 RST, DAT, FQ y CLK respectivamente.
La espiga “SinB” del AD9850 da la salida de una onda sinusoidal para conectar a la entrada externa de VFO del FT-101. Esta conexión debe hacerse con cable blindado (coaxial).

la foto

La foto superior muestra la implementación del Arduino nano en la derecha y el AD9850 en la izquierda sobre una placa de circuito impreso.
El arduino soporta el cable USB para conexión a la PC.
En el lado superior se observa el conecto preparado para conectarse al FT-101.
La placa de circuito impreso tiene espacio para alojar otros componentes electrónicos para futuros desarrollos pero no están en funcionamiento actualmente.
CODIGO PARA EL ADUINO

El siguiente es el código fuente para el ARDUINO nano.

/*=====================================================================

Proyecto: VFO para Yaesu FT-101F
Por: HK3EU
Version: 0.1
Fecha: Diciembre 3 2014

=========================================================*/

//————————
// Definicion de pines
//————————

#define W_CLK 7 // Pin 7 conectado a AD9850 W_CLK
#define FQ_UD 6 // Pin 6 conectado a AD9850 FQ_UD
#define DATA 5 // PIN 5 conectado a AD9850 DATA
#define RESET 4 // Pin 4 conectado a AD9850 RESET

#define BAUD_RATE 9600 // define baud_rate puerto serial
#define START_FREQUENCY 8600000 // frecuencia inicial

//————————–
// Definición de variables
//————————–
double usedFrequency; // frecuencia en uso
double Frequency; // usada en loop

//————————-
// FUNCIONES
//————————-

//————————–
// pulse(pin)
// Envia un pulso en el pin especificado.
//————————–

void pulse(int pin)
{
digitalWrite(pin, HIGH);
digitalWrite(pin, LOW);
}

//—————————
// sendByte(data)
// Enviar el data al AD9850
//—————————

void sendByte(byte data)
{
int i;
// Serial.println(data);
for(i = 0; i >= 1; // desplace data una posicion a la derecha
}
}

//—————————-
// sendFrequency(frequency)
// Envia la frecuencia la AD9850
// es el valor decimal de la frecuencia
// primero se calcula el valor a enviar al ad9850 para la
// frecuencia escogia.
//—————————–

void sendFrequency(double frequency)
{
int32_t data_AD9850;
int i;

data_AD9850 = frequency * 4294967295/125000000; // 4294967295 = 2 potencia 32
// Serial.print(frequency);
// Serial.print(” – “);
// Serial.println(data_AD9850);
for(i = 0; i >= 8; // desplace 8 bit a la derecha
}
sendByte(0x00); // envie 0 final
pulse(FQ_UD); // hecho
}

//———————————
// Funcion — setup() —-
//———————————

void setup()
{
// Configurar los pin del arduino
pinMode(FQ_UD, OUTPUT);
pinMode(W_CLK, OUTPUT);
pinMode(DATA, OUTPUT);
pinMode(RESET, OUTPUT);
// Iniciar el AD9850
pulse(RESET);
pulse(W_CLK);
pulse(FQ_UD);

// iniciar el puerto serial
Serial.begin(BAUD_RATE);
usedFrequency = START_FREQUENCY;
sendFrequency(usedFrequency);
}

//——————————–
// Bucle principal
//——————————–

void loop()
{
int char_in = 0;

// Monitorial puerto serial
if(Serial.available() > 0) // hay informacion en el puerto
{
char_in = Serial.read(); // leer el puerto
char_in &= 0xFF; // solo 8 bits
switch(char_in) // axion depende del caracter recibido
{
case ‘0’: // recibiendo numeros
case ‘1’:
case ‘2’:
case ‘3’:
case ‘4’:
case ‘5’:
case ‘6’:
case ‘7’:
case ‘8’:
case ‘9’:
char_in -= ‘0’; // valor del caracter
Frequency *=10; // multiplique por 10, sigiente digito
// Serial.println(Frequency);
// Serial.println(char_in);
Frequency += char_in; // sumar digito recibido
char_in = 0;
break;

case ‘;’: // fin de la frecuencia
usedFrequency = Frequency; // salve la frecuencia recibida
sendFrequency(Frequency); // transfiera la informacion al AD9850
Frequency = 0;
char_in = 0;
break;
case ‘?’:
Serial.println(long(usedFrequency));
break;

}
}
}
______________________________________________________________________

PROGRAMA PARA PC

El VFO del FT-101 suministra una frecuencia variable entre 8.700 y 9.200 KHz, un segmento de 500 KHz. El FT-101 traslada la frecuencia del VFO a la frecuencia de la banda en que se desea trabajar: 80, 40, 20, etc metros. Pero nosotros tenemos el problema de otra forma. Conocemos la frecuencia en que debemos trabajar y tendremos que hacer el cálculo inverso a que hace el radio para determinar la frecuencia que debe suministrar el VFO.
El cálculo de la frecuencia del VFO dependiendo de la banda de operación deseada y del modo de transmisión se realizara en un programa de PC diseñado en C#. El programa ha sido diseñado para presentar una interface amigable de usuario y calcula la frecuencia del VFO y esta información se la envía al ARDUINO. La función del ARDUINO es usar la información de frecuencia enviada por el PC y configurar el AD9850 para que emita esa frecuencia.

gui-pc

La figura superior muestra la interface de PC (GUI) diseñada para control de la frecuencia.

CONCLUCIONES

El circuito y los programas para ARDUINO y PC están funcionando. Si le interesa mas información, por favor, escríbame al correo hk3eu@yahoo.com que con gusto les contestare.
Como le he estado comentando este es el primer proyecto de una serie de ideas para lograr una mejora de equipos viejos, como el FT-101, mediante interfaces con componentes electrónicos mas modernos.

Anuncios

3 comentarios en “VFO digital para el FT-101

  1. Marcos dijo:

    Estimado colega, este es representa un excelente aporte de tu parte a la Radioafición, en especial para todos los radioaficionados que no tenemos los recursos suficientes para hacernos de equipos de última generación, en resumén, esto es hacer experimentación, uno de los pilares fundamentales que sostienen al mundo de la Radioafición, felicitaciones y en adelante trataré de hacer contacto contigo a través de tu correo y por la banda de los 40m, soy YV-9-HX completamente a la QRV, 73-DX

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s