Cómo calibrar el cristal del oscilador SI5351 sin instrumentos costosos
En la radiofrecuencia, ajustar con precisión un oscilador sin herramientas como osciloscopios o frecuencímetros puede ser un reto. Sin embargo, junto a EB1A descubrimos que es posible lograr una calibración precisa del módulo SI5351 utilizando una sencilla herramienta de cálculo en JavaScript, ideal para proyectos DIY como WSPR.
Objetivo del proyecto
Queremos que el oscilador esté lo más cerca posible de la frecuencia deseada (en este caso, 14 MHz). Usaremos un receptor calibrado, como una radio o un SDR, para medir la frecuencia resultante y, con este dato, corregir la frecuencia del cristal del SI5351.
⚠️ Advertencia: esta manera de calibrar el SI5351 funciona correctamente para transmitir en una banda determinada (con la que hagas la calibración). Si calibras a 10MHz pero luego transmites a 144MHz no vas a tener la frecuencia centrada.
Herramientas necesarias
- Módulo SI5351 y un microcontrolador Arduino o ESP32.
- La librería Si5351Arduino (disponible en GitHub: etherkit/Si5351Arduino).
- Radio o SDR calibrado (para comparar la frecuencia resultante).
Preparación: código Arduino para la configuración inicial
Para comenzar, instala la librería y establece la frecuencia inicial del cristal en 25 MHz. A continuación, fija la frecuencia deseada en 14 MHz. Sube el código y mide la frecuencia resultante en tu radio o SDR.
He preparado un código de prueba para realizar la calibración que una vez lo conectes emite una señal en 14 Mhz.
Valor x valor⚡️
Si el contenido te ha sido útil, por favor considera apoyarme para que pueda crear más artículos como este.
#include <si5351.h>
#include "Wire.h"
#define SI5351_REF 25000000UL // si5351’s crystal frequency, 25 Mhz or 27 MHz
unsigned long freq = 14000000UL; // Change this for different band frequencies, unit is Hz.
Si5351 si5351;
void setup()
{
Serial.begin(115200);
while (!Serial)
;
Serial.println("Initializing radio module");
bool i2c_found;
// Start serial and initialize the Si5351
i2c_found = si5351.init(SI5351_CRYSTAL_LOAD_8PF, SI5351_REF, 0);
if(!i2c_found)
{
Serial.println("Device not found on I2C bus!");
}
// Set freq and CLK0 output
si5351.set_freq(freq * 100, SI5351_CLK0);
si5351.drive_strength(SI5351_CLK0, SI5351_DRIVE_8MA); // Set for max power, 10dbm output
// Test the output for 60 seconds
si5351.set_clock_pwr(SI5351_CLK0, 1);
Serial.println("Testing singal");
delay(500);
}
void loop()
{
}
Calculando la frecuencia ajustada del cristal
Para ajustar el cristal, usaremos una pequeña herramienta en JavaScript que calculará la frecuencia precisa que debería asignarse al cristal para lograr la frecuencia deseada.
- Introduce la frecuencia deseada: en este caso, 14 MHz (escríbela en Hz: 14000000).
- Introduce la frecuencia obtenida: la frecuencia observada en la radio o SDR, por ejemplo, 14.055000 MHz (14055000 Hz).
- Introduce la frecuencia del cristal inicial: la frecuencia nominal del cristal del SI5351, generalmente 25 MHz (25000000 Hz).
Al pulsar Calcular, la herramienta arrojará la frecuencia ajustada del cristal, la cual deberás usar en tu sketch de Arduino en lugar de la frecuencia inicial.
Con este método, puedes ajustar con precisión el SI5351 sin instrumentos especializados. Esta solución es práctica para aficionados y entusiastas de la radio, y es una excelente forma de optimizar tu proyecto sin costos adicionales.
Cálculo de frecuencia del cristal ajustada
Introduce los valores para calcular la frecuencia ajustada del cristal: