Estoy diseñando un decodificador automático de antena para un K3. El equipo utiliza un sistema de codificación BCD para identificar la banda de trabajo entre los 180m y los 6m. Identificar la banda y seleccionar un relé de salida no es ningún problema con un Arduino, incluso para un módulo UNO. La programación también es sencilla.
Lo cierto es que ya existen módulos decodificadores, incluso uno de Elecraft, el KRC2. La mayoría de las publicaciones se refieren a sistemas de puertas lógicas y algunos orientados al control de LEDs y displays con matriz de 7 segmentos. Únicamente Remote QTH ofrece un kit de decodificador universal basado en un Arduino NANO.
https://remoteqth.com/arduino-band-decoder-hamshop.php
Lo cierto es que es raro necesitar en una misma instalación decodificador polivalente y es mucho más sencillo resolver cada sistema por su lado. Ya he publicado un decodificador para CI-V de Icom, y un sistema de identificación por tensión variable. Este último sistema, con variaciones, lo utilizan los equipos de Icom y alguno de los modelos de Yaesu. El sistema BCD lo utilizan tanto Elecraft como Yaesu.
https://www.ebay.es/itm/274308484272
Mis dudas se centran en los sistemas de control de los relés. Utilizo un sistema de conmutador remoto compuesto por un kit de OZ2ZI con dos relés. las tomas de las bobinas que conectan a negativo están conectadas, por esta razón no me es posible utilizar un sistema de colector abierto. Bien es cierto que la polaridad de las bobinas de los relés están condicionadas por el diodo de protección en paralelo, pero sería muy complicado desmontar el conmutador y sustituir los diodos.
Por esta razón tengo que descartar el uso de un array de Darlington tipo ULN2003 o de optoacopladores y el driver UDN2981 que utilizaba por estar descatalogado. Se me ocurren dos posibles soluciones, buscar un sustituto del UDN2981 que controle el positivo de los relés, o bien utilizan un MOSFET tipo IRF9540 en el Drain.
Consideraciones: La te tensión de control del Arduino es de 5V, la tensión de alimentación de los relés es de 12V, con un consumo de unos 40mA. La fuente utilizada es la misma, lo que hace que el masa sea común, por lo que no está justificado utilizar un sistema de aislamiento de fuentes. El uso de un array de drivers ahorra espacio en la placa en relación al uso de un semiconductor por canal, pero un MOSFET, ofrece una solución`´on sencilla y fiable desde un punto de vista de los parámetros de control (tensión y consumo), con la ventaja de que se puede utilizar programación de lógica positiva o negativa.
Agradeceré cualquier aportación, en principio me inclino por el uso de un MOSFET.
La cultura del esfuerzo se cultiva desde la motivación, no mediante el castigo como algunos quisieran.
http://www.enioea2hw.wordpress.com
73, Enio
Entiendo que quieres que el relé se excite cuando el Arduíno entregue un cero lógico.
Yo creo que con ese esquema se te va a accionar el relé todo el tiempo. Si "miras" desde el punto de vista del mosfet (canal P), cuando el Arduíno entregue un cero lógico, la tensión surtidor-puerta será de casi -12V (-12x10/11=-10,9) y va a conducir, pero cuando entregue un uno lógico (+5V), la tensión surtidor puerta sera -(12-5)x10/11=-6,36V y va a conducir también.
Yo sustituiría el mosfet por un transistor bipolar PNP (el emisor a +12V, el colector al relé y la base al divisor resistivo). Además, pondría ambas resistencias de 1k y añadiría en serie a la que va al Arduíno un diodo zener de 8,2V (cátodo "mirando" a la base del transistor).
Como transistor pondría un BC327 o similar.
Javier Muriedas
Gracias por la respuesta Javier. Ya he encontrado la solución pues tenía en un cajón un par de UDN2981 y he terminado la primera parte del decodificador. Ha sido sencillo como esperaba pero ahora viene la letra pequeña, cuando las salidas BCD (BAND0, BAND1, BAND2 y BAND3) del terminal ACC, el comportamiento del K3 varia. Decodifica bien las bandas, aunque en la transición hay lecturas erróneas. Es cuestión de revisar literatura.
En cuanto a la lógica de control es indiferente que la conducción del transistor se realice cuando la tensión en base sea positiva o negativa pues se controla por programación. Los pulsos se reciben en cuatro entrada digitales, luego se decodifica la banda y después las salidas de control de los relés se pueden llevar a nivel bajo o a nivel alto, según lo requiera el circuito.
En síntesis, tal como tengo el circuito de los relés del conmutador remoto, con todas las masas unidas sólo puede alimentar con el positivo de 12V uno u otro relé. Con el UDN 2981, es sencillo, cada salida es un conmutador de la alimentación común. Con el sistema de colector abierto tendría que aislar los terminales de los relés que van a masa con las entradas de los positivos unidos.
No me explico cómo no puedo encontrar un reemplazo para el UDN2981 aunque sea con otro formato.
Esta es la función que decodifica la banda de trabajo del K3
uint8_t read_band () {
uint8_t b0 = digitalRead (BAND0) == LOW ? 0 : 1;
uint8_t b1 = digitalRead (BAND1) == LOW ? 0 : 1;
uint8_t b2 = digitalRead (BAND2) == LOW ? 0 : 1;
uint8_t b3 = digitalRead (BAND3) == LOW ? 0 : 1;
return b0 + (b1 * 2) + (b2 * 4) + (b3 * 8);
}
(Se podría transformar directamente la lectura sin necesidad de utilizar una operación ternaria en cada lectura, pero así queda más claro)
b0-b3, lee las salidas lógicas BCD BAND0-3 del conector ACC y devuelve un número de 8bit correspondiente a la banda, de acuerdo con la siguiente codificación:
Como ejemplo, si el VFO A del equipo está sintonizando la banda de 20m, las lecturas de las salidas serían b0 = 0, b1=1, b2 = 0, b3 = 1, lo que nos daría el número 0101 en base binaria. Su transformación en base decimal sería = b0 + (b1*2)+(b2*4)+(b3*8) = 5, es decir, banda de 20m. La base numeración binaria se aplica a la maquina, en programación se puede utilizar cualquiera de las tres bases, binaria, decimal o hexadecimal.
A partir de aquí solo es necesario asignar las bandas correspondientes a cada antena y llevar las salidas de los relés al estado lógico necesario (LOW=0) o (HIHG=1), por medio de la instrucción digitalRead (numeroIO, estado). De esta forma se puede trabajar un circuito con lógica positiva o negativa.
La cultura del esfuerzo se cultiva desde la motivación, no mediante el castigo como algunos quisieran.
http://www.enioea2hw.wordpress.com
73, Enio
Me alegro de que lo hayas solucionado. Gracias por la detallada explicación.
Javier Muriedas
UNA PREGUNTA, ALGUIEN ME PUEDE DECIR O EXPLICAR POR QUE AL CONECTAR MI INTERFEIX AL ORDENADOR ESTE SE ME QUEDA SIN SONIDO O SEA SER MUDO GRACIAS.
Gracias por los datos
Si quieres buenas respuestas haz buenas preguntas
73 de Angel, EA2ET.
Gracias a ti José Angel. He encontrado la forma de sustituir el UDN2981 para el control de relés con un driver a base de un transistor en emisor, invirtiendo la entrada con otro pilotando la base y tú me diste la idea hace tiempo en el foro.
EA5HW, es difícil ayudar sin más información. En cualquier caso, si el SO del ordenador es Windows, deberías revisar la fuente de sonido. Si, por ejemplo, el equipo es un IC7300, éste tiene una tarjea de sonido propia que añade a las fuentes.
La cultura del esfuerzo se cultiva desde la motivación, no mediante el castigo como algunos quisieran.
http://www.enioea2hw.wordpress.com
73, Enio
Hola amigo gracias por tu ayuda mi equipo es un ICOM IC-706 y si mi PC es windous 10 no se si podras aportarme algun comentario más gracias y 73
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