En un pequeño adelanto de lo que veremos hoy, podemos viajar un tiempo atrás, cuando analizamos la construcción de un Encoder Rotativo. En aquella oportunidad, te mencionamos que las aplicaciones podrían ser tan diversas como útiles y ésta es una de ellas. Con una simple rueda giratoria podrás seleccionar la frecuencia de trabajo del Transceptor NeoTeo, de tu generador de RF, de tu oscilador variable controlado por un PLL de características admirables y mucho más. Como lo prometido es deuda, aquí llega la Electrónica Digital a NeoTeo. Encoder + Expansor de Puertos (PCF8575) + Microcontrolador + Bus I2C y mucha electrónica útil, entrando en el último mes de 2012. ¡Disfrútalo!
Cuando construimos el Encoder Rotativo, orientado a ensayar este tipo de dispositivos en la Entrenadora NeoTeo, aprendimos acerca del funcionamiento mecánico de este tipo de elementos, utilizados en cualquier aplicación que ofrezca al usuario una selección de opciones dentro de un menú de múltiples posibilidades. Con los enlaces que te dejamos en éste párrafo, podrás encontrar la teoría inicial que aplicaremos para seleccionar, a través de un microcontrolador, la frecuencia de trabajo del oscilador que forma parte del lazo enganchado de fase (PLL) y que estamos utilizando desde algunos artículos atrás. Entre los puntos a destacar dentro del montaje de hoy, se encuentra el uso de un Expansor de Puertos de 16 bits, el PCF8575 (Sample, obviamente) y la programación que realizaremos sobre un 18F25K20 para poder administrar en forma adecuada al oscilador entre 2500Khz y 12500Khz; frecuencias muy útiles dentro del mundo electrónico. Ya sea para construir un instrumento de taller (VCO) o un receptor de características profesionales. Como elemento “extra” hemos incluido en el diseño un pulsador capaz de “enclavar” la frecuencia de trabajo del VCO (Lock) o si lo deseas pensar de otro modo, para dejar fija e invariable, la salida en los puertos del PCF8575, evitando de este modo variaciones accidentales (por toques en la rueda de selección) del punto de trabajo seleccionado.
Al igual que en el expansor antes visto (PCA9554), el PCF8575 utiliza una comunicación, mediante el bus I2C con el microcontrolador y como es tradicional en éste tipo de dispositivos, el microcontrolador se encarga de “abrir” la comunicación del Bus I2C, luego envía (al bus) la dirección de ubicación del PCF8575 y en forma inmediata, “escribe” los dos BYTES que se verán reflejados en los puertos de salida de manera “transparente”. Esto significa que al escribir un “0” sobre cualquier bit de algunos de los puertos, obtendremos una conexión a GND del terminal seleccionado en forma directa mientras que, si colocamos un “1” en ese bit, el PCF8575 nos presentará la tensión de alimentación con una capacidad de corriente de hasta 4mA. Esto es muy importante a tener en cuenta para observar que con este IC podremos controlar entradas a otros IC con resistencias externas del tipo “Pull-Up”.
La otra condición ideal es activar un LED (por ejemplo) cuando imponemos un estado bajo en cualquier salida (hasta 50mA). Dicho en otras palabras: con este IC, si queremos encender un LED o aprovechar la corriente que sea capaz de drenar, nos conviene hacerlo conmutándolo a GND, en lugar de activarlo con un estado alto de salida. Luego de expresar todo esto (tal vez superfluo, pero que trae dolores de cabeza si no se toma en cuenta), podemos mencionar que en nuestra aplicación, los puertos del PCF8575 se encargarán de “reemplazar” a los Dip Switch, que empleábamos en el artículo anterior para ajustar el PLL y que quedarán todos en posición “abierta“.
El circuito mostrado arriba es muy explícito en las conexiones donde intentamos graficar el párrafo anterior y parte del programa utilizado en el microcontrolador. Cada salida del PCF8575 controla el trabajo que debieran hacer los Dip Switch y la cuenta ascendente/descendente es realizada de manera muy simple con el Encoder Rotativo. En función del hardware que hemos desarrollado en esta primera etapa de aprendizaje, cada avance o transición del Encoder significa un aumento o una disminución de 500 Hertz. Recordemos que habíamos visto en un video, dentro de un artículo anterior, que esto podía ser seleccionado para pasos de 500Hz, 1Khz, 2.5Khz y 5Khz. Adelantando ideas y avanzando hacia el montaje definitivo, tener un VCO que pueda trabajar en un rango de 10Mhz exige la posibilidad de acceder a “pasos” de mayor frecuencia para que se haga más sencillo llegar a extremos distantes de oscilación. Por ejemplo para pasar de un extremo a otro necesitamos 20mil pasos de 500Hz, mientras que trabajando a 5Khz, con sólo 2 mil impulsos, atravesamos todo el abanico de frecuencias que el VCO puede entregar. Por lo tanto, una construcción bien pensada y estructurada (intercalando un selector entre las salidas de U3 y la entrada de U10) podría incluir la posibilidad de variar los intervalos de avance/retroceso que ofrece el Encoder.
En la imagen superior podemos ver muchas cosas a rescatar como elementales. El PIC18F25K20, el LCD, la rueda del Encoder y a la placa contenedora del PCF8575 albergados dentro de un pequeño protoboard. Por supuesto, vemos el cristal de 16hz, el LED rectangular de color rojo y detrás de él se encuentra el pulsador de enclavamiento de frecuencia (Lock). Este conjunto de elementos está apoyado sobre la placa del PLL (que vimos en el artículo anterior) y más atrás se destaca el frecuencímetro que hemos dispuesto para tomar lectura de la frecuencia de salida del VCO que estamos controlando. Sobre este punto, vale hacer una aclaración importante. En el LCD no tendremos una lectura de la frecuencia “a la que está oscilando el VCO”, sino el resultado de un cálculo realizado por el microcontrolador que administra los impulsos del Encoder. Esto es importante de comprender y por ese motivo hemos definido una salida “extra” en la placa del VCO para colocar un frecuencímetro.
¿Por qué es importante comprenderlo y asumirlo? Muy simple: si construimos un receptor, el VCO no trabajará a la frecuencia de recepción. Como ya hemos visto en la teoría del Receptor Superheterodino, o en el de Doble Conversión, debemos tener en cuenta los valores de las distintas etapas de frecuencia intermedia (FI). Lo habitual es utilizar una FI de 455Khz en un receptor superheterodino simple. Esto haría que el VCO trabaje por encima de la frecuencia seleccionada. Si el LCD del receptor indica 7100Khz (como en la imagen) el VCO estará trabajando a 7555Khz (7100Khz + 455Khz). Además, si lo que deseamos obtener al final es un transceptor, durante el momento de emisión, el VCO deberá pasar a 7100Khz (coincidente con la indicación del LCD), por lo tanto, lo que muestra el display es una frecuencia de referencia, no siempre es la real y, como mencionamos antes, esto varía según la aplicación. Concepto clave: El LCD indica una cosa y la salida del VCO entrega otra. Ambas están relacionadas, pero no siempre son iguales. Para un generador de RF, estaría bien que indique la frecuencia de enclave del PLL, pero esto nos llevaría a combinar esta aplicación con la del frecuencímetro y no es ese el propósito actual. Nuestro objetivo es lograr una frecuencia tan estable como el cuarzo (o aún mejor) y con la posibilidad de seleccionar cualquiera dentro de un amplio espectro. Así, de este modo:
En el video podemos “admirar” la posibilidad que nos ofrece un sistema de lazo enganchado en fase (PLL) para controlar con suma precisión la frecuencia de trabajo de un oscilador, pero (siempre hay un pero, dijo Ariel Palazzesi) debemos tener en cuenta que no todas son rosas en este camino. El primer escollo a sortear será la selección de los circuitos integrados que intervienen en el divisor programable. En función de la frecuencia de trabajo de nuestro VCO, la tecnología de fabricación de la electrónica que necesitamos incorporar en el divisor de frecuencias, se transforma en un factor importante. Estos es: hasta frecuencias de VCO de 15Mhz o muy poco más, cualquier circuito TTL será útil, pero si deseamos subir los valores de frecuencia de trabajo de nuestro divisor síncrono (74XX163) tendremos que seleccionar tecnologías de alta velocidad. Sobre este punto en particular te contaré un secreto que en ninguna Universidad te enseñarán, sino que lo aprenderás luego de fallar una y decenas de veces (como lo he hecho yo). Busca muy bien dentro de las hojas de datos de los circuitos integrados y luego de encontrar que son capaces de trabajar a 40Mhz, a 70Mhz o a 200Mhz, intenta descubrir, en letra muy pequeña, que eso es válido para compuertas lógicas sencillas, no para circuitos que combinan múltiples elementos que validan una operación. Es decir, que te encandilen con un trabajo a 40Mhz, no significa que un 74XX163 será útil para 27Mhz. No olvides que hay numerosas compuertas y Flip-Flops que intervienen en el proceso interno y sumados los tiempos de propagación dentro de ellos, el circuito nunca llegará a trabajar en 27Mhz.
Otra problemática importante es el consumo de corriente. La línea 74S163 habla de un trabajo a 125Mhz en sus hojas de datos. Relacionando esto con el párrafo anterior, quizás puede valer la pena intentar llegar cómodo a 27Mhz. El problema en este caso, será el consumo energético. Cada 74S163 consume 100mA contra menos de 5mA que consume un 74HC163, por lo tanto, contabilizando 4 divisores ya tendremos 400mA a lo que debemos agregar con el resto del circuito y si te descuidas en ese detalle, superamos fácilmente un medio Amper (o Amperio) y eso significa una necesidad de ampliación en el diseño de la fuente de alimentación. Por último, dentro de este camino (que otros no te cuentan, ni te explican) tenemos que contar con la calidad del VCO utilizado. El que hemos empleado hasta hoy, construido con la compuerta 74HC00 es un generador de armónicos por excelencia, ejemplo que vimos y aprovechamos en el Marcador para el Analizador de Espectro.
El significado de esto es que no obtendremos, a la salida del VCO una única frecuencia dentro del espectro. Sino una, repetida en cada múltiplo que también ingresarán al divisor programable, atravesándolo y “ensuciándolo” con múltiples frecuencias divididas que nada tienen que ver con la deseada final. Este trastorno también debe ser tenido en cuenta a la hora de intentar utilizar este tipo de osciladores. Para nuestros ensayos, demostraciones, comprobaciones y videos, este VCO es válido, pero utilizarlo en forma práctica, es una tarea prácticamente imposible.
¿Entonces, por qué a nosotros nos funciona dentro del PLL y en los videos? Porque en este ejemplo, la división de una única frecuencia (a pesar de que haya miles involucradas dentro de la placa del PLL) devolverá un resultado de 500Hz y en consecuencia, la salida del comparador en el 4046, ajustará la salida a esa referencia comparada con la que entrega el cuarzo, ignorando a las demás. Además, este “defecto” buscado con intención, nos permite una garantía de funcionamiento, es decir, saber hasta donde llegaremos en las condiciones más adversas que podamos imaginar. Aquí es donde al fin, los que tuvieron la sabiduría que La Fuerza supo darles, encontrarán las razones para comenzar a asociar, comprender y comenzar a traer a este punto del desarrollo a aquel artículo que parecía muy suelto y meramente informativo, El Regreso del Jedi.
Para el programa que utilizamos en el PIC, no necesitamos agregar mucho más de lo que ya habíamos hecho en el artículo original del Encoder. Sólo debemos incluir sumatorias a cada paso donde algunas adicionen un valor y otras con diferentes cantidades, en función de la selección de “pasos de frecuencia”. Para esto, podemos utilizar medio CMOS4052 para conmutar físicamente las salidas de U3, operándolo desde el PIC y con indicadores en el LCD que nos demuestren estos cambios; pero claro, todo esto es a futuro, en busca de la perfección. Como siempre, te dejamos el código fuente del PIC (recuerda que puedes utilizar el software gratuito para reformarlo – AMICUS -) y que puedes aprovechar de ese modo a cambiar lo que hemos hecho con los “saltos” de 500Hz. Si deseas saltos de 1Khz, la variable “DIAL” llevará el mismo incremento que la variable “NUMERO”. Si trabajas a 5Khz dividirás por 5 y así hasta encontrar el funcionamiento que mejor te resulte.