Oscilador Variable de 1KHz a 68MHz con LTC-6904

Os muestro una herramienta muy útil en muchos proyectos. Se trata de un oscilador variable controlable digitalmente con I2C y con un rango de actuación de 1KHz a 68MHz: es el LTC-6904 de Linear.


En este artículo os muestro una herramienta muy útil en muchos proyectos. Se trata de un oscilador variable controlable digitalmente con I2C y con un rango de actuación de 1KHz a 68MHz: es el LTC-6904 de Linear, del que podéis descargar su datasheet desde aquí: LINEAR LTC-6904

El citado chip tiene un oscilador interno ajustable mediante DAC (conversor digital a analógico) hasta 68MHz, con un divisor programable por I2C, y ofrece al exterior la señal de clock (CLK) y su inverso (/CLK). Además, no necesita ningún componente ni circuitería externa para funcionar a la perfección. Tan sólo alimentarlo con 5V limpitos de ruido y a disfrutar.

 

En mis pruebas he conseguido precisiones bastante aceptables en protoboard y con un zócalo muy cutre: supongo que en una placa bien hecha, y con plano de masa la cosas mejorará bastante. De todas formas, me doy por satisfecho trabajando a 65MHz con 2 o 3KHz de oscilación arriba y abajo.

 

Con este oscilador variable se puede generar la señal de clock para el gobierno de otros dispositivos o incluso del mismo microcontrolador que se esté usando; pudiendo así adaptar su velocidad de proceso a las necesidades de cada momento. De hecho, es el ejemplo que se incluye en la data:

 

NOS METEMOS EN FAENA

 

Para conseguir una frecuencia entre 1KHz y 68MHz se utiliza la siguiente fórmula:

De dicha fórmula hay que despejar los parámetros OCT y DAC, que se hace como sigue:

No obstante, como los logaritmos y los PIC no son compatibles con una buena economía de los recursos, he preferido hacerlo en base a una tabla. Así, se compara la frecuencia deseada con los tramos de la tabla y se obtiene el parámetro OCT con el índice de la tabla.

Los parámetros OCT y DAC son números con 4 y 10 bits respectivamente. A ello hay que añadir los dos bits de configuración adicionales que se muestran en la siguiente tabla y que permiten configurar el comportamiento de las dos salidas que tiene el chip:

Los 16 bits mencionados anteriormente se colocan en dos bytes, mediante los que se programa el LTC-6904:

El LTC-6904 puede tomar dos direcciones I2C, configurables mediante el estado del pin ADR, según se muestra en esta tabla:

Y AQUÍ EL PROGRAMA

 

Para la realización del programa he utilizado un PIC cualquiera con comunicación I2C para el LTC-6904 y con RS232 hacia el PC. En mi caso un 18F2550, aunque hubiera servido cualquier otro.

 

Pego a continuación las partes más importantes del programa, y no pego partes que no se refieren al funcionamiento del LTC-6904, aunque lo pongo en descarga completa al final del artículo.

 

Declaración de la tabla OCT

Funcion OCT:devuelve el índice que corresponda de la Tabla OCT según la frecuencia seleccionada

Funcion ProcesaComando:se ejecuta cuando el usuario ha escrito la frecuencia deseada y pulsa Intro. En esta función se recorre el string que nos ha llegado vía RS232 y devuelve su valor numérico en una variable INT32.

Funcion Main:es el bucle principal del programa, y en él se invoca a las funciones anteriores, se calcula el parámetro DAC, se muestra la frecuencia conseguida y se envía la comunicación I2C al LTC-6904.

 

 

Notas:
1- Linear dispone de otro chip con función similar a este, el LTC-6903. La única diferencia es que se comunica vía SPI en lugar de I2C.

2- Mi agradecimiento al paisano RedPic, porque de uno de sus ejemplitos para 16F876 fusilé literalmente las rutinas de manejo de RS232.

Share