Generador de Reloj Si5351

Generador de Reloj Si5351

Con este fantástico modulo jamas utilizara un cristal de nuevo. Este chip tiene una referencia de cristal de precisión 25MHz, PLL interno y los divisores necesario, por lo que puede generar casi cualquier frecuencia, desde <8 KHz hasta mas de 150 MHz.


El generador de reloj Si5351 es un generador que se controla a traves de I2C. Se utiliza un reloj de precisión a bordo para alimentar varios PLL y divisores de reloj utilizando las instrucciones I2C. Con la creación del PLL y divisores se pueden crear frecuencias precisas y arbitrarias. Hay tres salidas independientes, y cada una puede tener una frecuencia diferente. Las salidas son 3Vpp y se pueden utilizar a través de cables o utilizando, para el trabajo en RF, un conector SMA opcional.



Este pequeño chip se ofrece en su propio tablero de PCB, con un regulador de 3.3V LDO por lo que puede ser alimentado desde 3 a 5VDC. También posee un circuito de cambio de nivel en las líneas I2C, de esta manera se puede utilizar el chip con seguridad sobre 3V o circuitos con lógica de 5V.

Ofrecemos este tutorial y una biblioteca para que pueda comenzar a trabajar con el modulo sin contratiempo! El código de ejemplo está diseñado para su uso con el microcontrolador y el IDE de Arduino, pero es fácilmente portable a otras plataformas.

Distribución de los pines



 

Pines de alimentación

El generador de reloj en la placa requiere alimentación de 3V. Dado que muchos usuarios tienen microcontroladores de 5V como el Arduino UNO, se coloco un regulador de 3.3V en el modulo para que puedan alimentarlo desde 3.3V hasta 5V sin problemas.

  • Vin – Este es el pin de alimentación. Puesto que el chip utiliza 3 VCC, hemos incluido un regulador de tensión a bordo que se llevará a 3-5VDC. Para alimentar la placa, utilice la misma potencia que el nivel lógico de su microcontrolador – Por ejemplo, para un micro de 5V como el Arduino UNO, utilizar 5V.
  • GND – Tierra, común, masa tanto para la energía de alimentación como para la lógica.

Pines I2C

  • SCL – Pin de reloj I2C, que va conectado a su línea de reloj en el bus I2C de su microcontrolador. Este pin es el nivel cambiado, de modo que puede utilizar la lógica 3-5V, y además posee una resistencia pull-up de 10k necesaria para la comunicación.
  • SDA – Pin de datos I2C, conectar a la línea de datos del bus I2C de su microcontrolador. Este pin es de nivel cambiado, de modo que puede utilizar la lógica 3-5V, y hay una resistencia pull-up de 10K también en este pin.

Salidas de Reloj

  • 01, y 2 – Estas son las 3 salidas de reloj independiente generadas. Son ondas cuadradas, de 0-3V.

Las salidas de reloj se crearon para permitir la soldadura de conectores SMA para PCB. Se pueden adquirir y soldar este tipo de conectores para trabajos sobre Radiofrecuencia.



Quedarían de esta manera en la placa:


Ensamble



Si tiene la versión de modulo Generador de reloj de nuestro sitio web, debe soldar algunos pines en el sensor para que pueda ser utilizado en una placa.

 

Preparar la tira de pines:

Cortar la tira a la longitud si es necesario. Será más fácil para soldar si lo inserta en un tablero – la sección mas larga de los pines va hacia abajo.

 

Añadir el módulo sobre los pines:

Coloque la placa sobre los pines de manera que la sección mas corta de pines se asome a través de las almohadillas de descanso de la placa, donde luego haremos soldaduras.

 

Y a soldar!

Asegúrese de soldar todos los pines con un contacto eléctrico fiable.

(Para obtener consejos sobre soldadura, asegúrese de echa un vistazo a nuestra guía para soldadura excelente ).

 

Ya está! Revise sus soldaduras visualmente y continúe con los próximos pasos

Instalación eléctrica y prueba

 

Cableado para Arduino

Puede conectar fácilmente este módulo en cualquier microcontrolador, en este ejemplo se va a utilizar un Arduino Uno. Para otro tipo de microcontrolador, sólo asegúrese de que tenga la capacidad de I2C.



  • Conecte Vin a la fuente de alimentación, 3-5V están muy bien. Utilizar la misma tensión que la lógica microcontrolador. Para la mayoría de los Arduinos son 5V.
  • Conectar GND al gnd de la placa Arduino
  • Conectar el pin SCL para el reloj I2C al pin SCL de la placa Arduino. En Arduino UNO y Arduinos basados en el Atmega328 seria el pin A5 , en un Arduino Mega se le conoce como digital 21 y en un Arduino Leonardo o Arduino Micro seria el pin digital 3.
  • Conectar el pin SDA al pin de datos I2C SDA en la placa Arduino. En un Arduino UNO y Arduinos basados en el Atmega328 seria el pin A4 , en Arduino Mega también se conoce como digital 20 y en Leonardo / Micro, digital 2.

 

Descargar la libreria Adafruit_Si5351

Para comenzar la lectura de los datos del sensor tendrá que descargar la Biblioteca Adafruit_Si5351 del repositorio GitHub de Adafruit. Usted puede visitar el repositorio GitHub y descargar de forma manual o, más facil, puede hacer clic en el siguiente enlace para descargar el zip:

Descargar la Biblioteca Si5351 Adafruit


Cambie el nombre de la carpeta comprimida Adafruit_Si5351 y compruebe que el archivo descomprimido Adafruit_ Si5351 contenga en su interior los archivos Adafruit_Si5351.cpp y Adafruit_Si5351.h

Coloque la carpeta creada luego de la descompresion “Adafruit_ Si5351″ en la carpeta de bibliotecas ->arduinosketchfolder/bibliotecas/“carpeta”.

Es posible que necesite crear la  subcarpeta biblioteca si es la primera biblioteca que instala en su IDE. Luego reiniciar el IDE. También puede ver el tutorial sobre instalación de bibliotecas para Arduino en: http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use (Tutorial en Ingles próximo a ser traducido)


 

Cargar el codigo de ejemplo

Ahora puede abrir Archivo-> Examples-> Adafruit_Si5351 -> Si5351 y cargar el ejemplo en su Arduino cableado con el modulo ya listo para funcionar


A continuación, abra la consola de serie a 9600 baudios para comprobar la salida. Debería ver lo siguiente:


Ahora se puede utilizar el osciloscopio para sondear las salidas # 0, # 1 y # 2

Dependiendo de la marca y el modelo del osciloscopio, puede no ser posible ver la frecuencia de salida a 112.5MHz!





¡Eso es! Si desea cambiar las frecuencias, ajuste el codigo de ejemplo y vuelva a subir el codigo a su Arduino.

 

Referencias de la biblioteca

La biblioteca que tenemos es simple y fácil de usar

Puede crear el objeto Adafruit_Si5351 con:

Código copia

  1. Adafruit_SI5351 clockgen = Adafruit_SI5351();

    I2C no tiene pasadores, ya que se fijan en el hardware.

     

     

    ¡A Empezar!

    Para inicializar el chip, llame a clockgen.begin () que comprueba que se puede encontrar el chip. Begin () devuelve verdadero/falso dependiendo de estas comprobaciones. Sugerimos que se coloque en begin () un comunicado o mensaje que confirme que el chip fue encontrado:

    Código copia


    1. if (clockgen.begin() != ERROR_NONE)
    2. {

    3. /* There was a problem detecting the IC … check your connections */

    4. Serial.print(“Ooops, no Si5351 detected … Check your wiring or I2C ADDR!”);

    5. while(1);
    6. }

     

    Establecer el PLL

    El chip utiliza dos subsecciones para generar salidas de reloj. En primer lugar se multiplica el reloj de referencia de 25 MHz por una cierta cantidad (Creación del PLL), entonces se divide ese nuevo reloj por alguna otra cantidad (configuración del divisor de reloj)

    Por noodling con el multiplicador y el divisor puede generar casi cualquier frecuencia de reloj!

    Hay dos multiplicadores de PLL (A y B), así que si usted quiere tener tres salidas, dos salidas tendrán que compartir un PLL.

     

     

    Establecer el PLL con “modo entero”

    La forma más limpia para ejecutar el PLL es hacer una recta multiplicación entera arriba:

    Código copia

  2. clockgen.setupPLLInt(SI5351_PLL_A or SI5351_PLL_B, m);

    Esto establece que PLL_A o PLL_B sean 25MHz * m y m (multiplica por un número entero) puede variar de 15 a 90 !

     

    Configurar el PLL con el “modo fraccional”

    Este modo permite un ajuste de PLL mucho más flexible mediante el uso de multiplicadores fraccionarios para la configuración de PLL, sin embargo, la salida puede tener una ligera cantidad de fluctuación así que si es posible, intente utilizar el modo entero!

    Código copia

  3. clockgen.setupPLLInt(SI5351_PLL_A or SI5351_PLL_B, m, n, d);

    Esto establece que PLL_A o PLL_B sean 25MHz * (m + n / d )

  • m (multiplicador de número entero) puede variar de 15 a 90
  • n (el numerador) puede variar de 0 a 1048575
  • d (el denominador) puede variar de 1 a 1.048.575

 

Configurar el divisor de reloj

Una vez que tenga los PLL creados, ahora se puede dividir esa alta frecuencia hacia abajo para obtener el número que desee para la salida

Cada salida tiene su propio divisor. Se puede utilizar el limpiador Entero de sólo el divisor:

  1. Código clockgen.setupMultisynthInt(output, SI5351_PLL_x, SI5351_MULTISYNTH_DIV_x);copia
  • Para la output usar 0, 1 o 2
  • Para la entrada de PLL, utilice un SI5351_PLL_A o SI5351_PLL_B
  • Para el divisor, se puede dividir por SI5351_MULTISYNTH_DIV_4 , SI5351_MULTISYNTH_DIV_6 SI5351_MULTISYNTH_DIV_8

Una vez más, la salida de número entero le dará el reloj limpio. Si necesita más flexibilidad, utilice el generador fraccional / divisor:

Código copia

  1. clockgen.setupMultisynth(output, SI5351_PLL_x, div, n, d);
  • Para la output usar 0, 1 o 2
  • Para la entrada de PLL, utilice uno SI5351_PLL_A o SI5351_PLL_B
  • La frecuencia final es igual a la PLL / (div + n / d)
  • div puede variar de 4 a 900
  • n puede variar desde 0 a 1048575
  • d puede variar de 1 a 1.048.575

 

Adicional R Divisor

Si es necesario dividir aún más, para llegar a las frecuencias <100 KHz, hay un divisor de R, que divide la salida una vez más por un número fijo:

Código copia

  1. clockgen.setupRdiv(output, SI5351_R_DIV_x);

    output es la salida del reloj #
    El divisor de R puede ser cualquiera de los siguientes:

  • SI5351_R_DIV_1
  • SI5351_R_DIV_2
  • SI5351_R_DIV_4
  • SI5351_R_DIV_8
  • SI5351_R_DIV_16
  • SI5351_R_DIV_32
  • SI5351_R_DIV_64
  • SI5351_R_DIV_128


Software

Como se puede ver, la parte molesta aquí es determinar la mejor opción para PLL multiplicador y divisor!
SiLabs tiene una aplicación de escritorio llamada ClockBuilder
 que puede hacer un poco de cálculo del PLL divisor / multiplicador para usted. Es sólo para Windows, pero sólo la tendrá que usar una vez para el cálculo.

Al instalar y ejecutar, seleccione la Si5351A con 3 salidas, y seleccione Do not connect to the EVB


Habilitar la salida que desee y ajustar la frecuencia de punto flotante o fracción


Creó el cristal a ser de 25 MHz (el valor predeterminado es 27 MHz)


Haga clic en Create Frequency Plan para ver las configuraciones de PLL y el divisor!


Las versiones anteriores de este chip sólo tienen un divisor de 900 o menos, y nuestra biblioteca no permite seleccionar >900 para el div entero. Así que si se obtiene un valor más alto de la calculadora, es posible que tenga que ajustarlo!

Descargas

 

Software

SiLabs tiene una aplicación de escritorio llamada ClockBuilder que puede hacer un poco de cálculo del PLL divisor / multiplicador para usted.

 

Ficha de datos

 

Esquemática y PCB Imprimir



Comments are closed.