Exploring the Potential of SI5351 Module in Electronic Projects

by CarlosVoltT in Circuits > Arduino

264 Views, 1 Favorites, 0 Comments

Exploring the Potential of SI5351 Module in Electronic Projects

portada-820x461 (2).jpg

In this tutorial, you will dive into the depths of this amazing device and discover its unlimited potential in generating signals and frequencies.

In this tutorial, you will dive into the depths of this amazing device and discover its unlimited potential in generating signals and frequencies.

Join me as we explore all the features and functions of the SI5351 module, from its ability to generate multiple frequencies with amazing accuracy to its versatility in applications such as frequency synthesizers, software-defined radios, and communication projects.

Whether you are a beginner or an expert in the field, this comprehensive guide will provide you with the knowledge necessary to master the SI5351 module. You will learn how to configure it, control it through an Arduino, and take full advantage of its capabilities.

Whether you are interested in electronics, amateur radio, or just exploring new technologies, this video will show you how the SI5351 module can power your projects and take your creativity to the next level.

Get ready to dive into an exciting journey of discovery and learning. Don’t miss this opportunity to unlock the full potential of the SI5351 module!

Where to buy the components?

PCB https://www.pcbway.com/project/shareproject/Exploring_the_potential_of_the_SI5351_module_in_electronic_projects_005127dd.html

Módulo SI5351

https://ebay.us/9lH5Dw

Arduino pro micro

https://ebay.us/3uGGbj

Display Oled sh1106

https://ebay.us/PruK9V

Electronic components

Arduino Pro Micro

You can buy it here https://ebay.us/3uGGbj

The Pro Micro is similar to the Arduino Mini Pro except with an ATMEGA32U4 on board. This chip makes a big difference as it can also be used as a Human Interface Device. The USB transceiver inside the 32U4 allows us to add USB connectivity on board and do away with bulky external USB interfaces. This little board does all the Arduino functions you are familiar with: 4 channels of 10-bit ADC, 5 PWM pins, 12 DIO, as well as hardware serial Rx and Tx connections. Running at 16MHz and 5V, this little microcontroller can go anywhere. There is a voltage regulator on board so it can accept voltage up to 12V.

  • 12 Pins digital I/O (5 PWM)
  • 4 Pines de entrada analógicos (10 bit c/u)
  • Input voltage 5-12V (Has internal regulator)
  • Output voltage: 5v
  • Total maximum output current 150mA
  • ATMega 32U4 running at 5V/16MHz
  • Supported under Arduino IDE v1.0.1
  • Micro-USB connector for programming
  • 4 pines x ADC de 10 bits
  • Rx and Tx Hardware Serial Connections
  • 12 digital inputs/outputs of which 5 can be PWM.
  • Dimensions: 3.31cm X 1.78 cm

Módulo SI5351

PinOut

You can buy it here https://ebay.us/9lH5Dw

  • VCC: Power pin. Must be powered by 3.3V or 5V depending on module specification.
  • GND: Ground pin. Must be connected to the ground terminal of the system or power supply.
  • SDA: Bi-directional data line for I2C (Inter-Integrated Circuit) communication. This pin is used to send and receive data to and from the SI5351 module.
  • SCL: Clock line for I2C communication. This pin provides the clock pulse to synchronize data transmission between the master device and the SI5351 module.
  • CLK0, CLK1, CLK2: These pins are configurable clock signal outputs from the SI5351 module. You can use them to generate different frequencies and waveforms according to your needs.
  • MS0, MS1, MS2: These pins are register bank select pins for configuring the SI5351 module. They set the register bank accessed by the I2C bus.

The Si5351 is a programmable frequency clock (PLL) generator produced by Silicon Labs. It is widely used in electronics projects and radio frequency (RF) applications, such as building oscillators, frequency synthesizers, software defined radios (SDRs), and other projects that require a high-precision and stable signal source.

The Si5351 has the ability to generate three independent clock signals with frequencies ranging from a few kilohertz to a few hundred megahertz, making it suitable for a wide range of applications. In addition, it is programmable via an I2C communication interface, allowing designers to easily adjust the frequency and phase of the output signal accurately and quickly.

Si5351a Clock Generator – 8Khz to 160Mhz + 3 SMA female connectors

This module has a precision 25MHz crystal reference and an internal PLL and dividers, so it can generate almost any frequency, from <8KHz up to over 160MHz. The Si5351A clock generator is an I2C clock generator. It uses the onboard precision clock to control multiple PLLs and clock dividers using the I2C instructions. By configuring the PLL and dividers you can create precise, arbitrary frequencies. There are three independent outputs, and each can be driven at a different frequency. The outputs are 3Vpp, either via a breadboard-compatible header, or for RF work, an optional SMA connector. We put this handy little chip on its own PCB, with a 3.3V LDO regulator so it can be powered from 3-5VDC. We also put level shifting circuitry on the I2C lines so you can safely use this chip with 3V or 5V logic.

SMA Female PCB Mount RF Adapter Straight Connector

– Series: SMA– Gender: Female– Type: Outer screw inner hole– Impedance: 50 Ohm– Frequency: 0~6GHz– Connector material: Copper– Length: 13mm– Stitch length: 4mm

Applications

  • HDTV, DVD/Blu-ray, set-top box
  • Audio/video equipment, games
  • Printers, scanners, projectors
  • Portable instrumentation
  • Residential gateways
  • Networks/communication
  • Servers, storage
  • XO Replacement

Female pins

Display oled sh1106


You can buy it here https://ebay.us/PruK9V

This is a 128x64 dot monochrome OLED display module with I2C interface. It has several advantages over LCD displays, such as high brightness, very good contrast, a wider viewing angle, and low power consumption. It is compatible with Arduino Rasberry Pi and PIC microcontrollers among others. It works with logic levels from 3.3V to 5V and has a viewing angle greater than 160 degrees. The screen size is 1.3 inches. It is powered by a voltage of 3.3V to 5V. It can be used in applications such as smart watches, MP3, thermometers, instruments, and various projects, etc.

Characteristics

  • Interface: I2C(3.3V / 5V logic level)
  • Resolution: 128 x 64
  • Angle of view: >160 degree
  • Display color: Blue
  • Display size: 1.3 inch
  • Driver IC: SH1106
  • Power supply: DC 3.3V~5V
  • Operating temperature: -20~70’C
  • Application: smart watch, MP3, thermometer, instruments, DIY projects, etc.

17 push buttons

A socket for arduino pro micro


Electronic diagram



PCB

To have this PCB manufactured go to https://www.pcbway.com/project/shareproject/Exploring_the_potential_of_the_SI5351_module_in_electronic_projects_005127dd.html

And select Add to Cart

Source code video





Source Code

#include <Keypad.h>

#include "si5351.h"

#include "Wire.h"

#include "U8g2lib.h"//Librería para el control del display oled

U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

Si5351 si5351;

float f1 = 0ULL;

float f2 = 0ULL;

String freq = "SETEA FREC";

//String botonSet = "";

const byte ROWS = 4; //cuatro filas

const byte COLS = 4; //cuatro columnas

//definimos los caracteres del teclado

char hexaKeys[ROWS][COLS] = {

{'1','2','3','4'},

{'5','6','7','8'},

{'9','0','A','B'},

{'C','D','E','F'}

};

byte rowPins[ROWS] = {4, 6, 7, 8}; //conectarse a las salidas de pines de fila del teclado

byte colPins[COLS] = {9, 10, 14, 15}; //conectarse a las salidas de pines de la columna del teclado

//inicializar una instancia de la clase NewKeypad

Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

void setup(){

u8g2.begin();//Inicializamos el display oled

bool i2c_found;

// Iniciar el módulo Si5351

i2c_found = si5351.init(SI5351_CRYSTAL_LOAD_8PF, 0, 0);

oled();//Llamamos a la función oled para mostra datos en el display

}



void loop(){

char customKey = customKeypad.getKey();//Obtenemos la tecla que precionamos

if (customKey == '1'){

f1= 358205600ULL;//Frecuencia

f2 = f1 - 87400ULL;//Corrección de frecuencia

// Serial.println(" Herz");

si5351.set_freq(f2, SI5351_CLK0);

freq = f1;

oled();//Llama a la función oled para mostrar la frecuencia en el display

}

if (customKey == '2'){

f1= 14450000000ULL;//Frecuencia

f2 = f1 - 1896000ULL;//Corrección de frecuencia

si5351.set_freq(f2, SI5351_CLK0);

freq = f1;

oled();//Llama a la función oled para mostrar la frecuencia en el display

}

if (customKey == '3'){

f1= 14500000000ULL;//Frecuencia

f2 = f1 - 1896000ULL;//Corrección de frecuencia

si5351.set_freq(f2, SI5351_CLK0);

freq = f1;

oled();//Llama a la función oled para mostrar la frecuencia en el display

}

if (customKey == '4'){

f1= 14650000000ULL;//Frecuencia

f2 = f1 - 1898000ULL;//Corrección

si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0

freq = f1;

oled();//Llama a la función oled para mostrar la frecuencia en el display

}

if (customKey == '5'){

f1= 535400000ULL;//Frecuencia

f2 = f1 - 109000ULL;//Corrección

si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0

freq = f1;

oled();//Llama a la función oled para mostrar la frecuencia en el display

}

if (customKey == '6'){

f1= 710000000ULL;//Frecuencia

f2 = f1 - 138000ULL;//Corrección

si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0

freq = f1;

oled();//Llama a la función oled para mostrar la frecuencia en el display

}

if (customKey == '7'){

f1= 1013000000ULL;//Frecuencia

f2 = f1 - 169000ULL;//Corrección

si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0

freq = f1;

oled();//Llama a la función oled para mostrar la frecuencia en el display

}

if (customKey == '8'){

f1= 1410100000ULL;//Frecuencia

f2 = f1 - 218000ULL;//Corrección

si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0

freq = f1;

oled();//Llama a la función oled para mostrar la frecuencia en el display

}

if (customKey == '9'){

f1= 1810500000ULL;//Frecuencia

f2 = f1 - 276000ULL;//Corrección

si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0

freq = f1;

oled();//Llama a la función oled para mostrar la frecuencia en el display

}

if (customKey == '0'){

f1= 2120000000ULL;//Frecuencia

f2 = f1 - 220000ULL;//Corrección

si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0

freq = f1;

oled();//Llama a la función oled para mostrar la frecuencia en el display

}

if (customKey == 'A'){

f1= 2492000000ULL;//Frecuencia

f2 = f1 - 351000ULL;//Corrección

si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0

freq = f1;

oled();//Llama a la función oled para mostrar la frecuencia en el display

}

if (customKey == 'B'){

f1= 2820000000ULL;//Frecuencia

f2 = f1 - 395000ULL;//Corrección

si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0

freq = f1;

oled();//Llama a la función oled para mostrar la frecuencia en el display

}

if (customKey == 'C'){

f1= 2960000000ULL;//Frecuencia

f2 = f1 - 412000ULL;//Corrección

si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0

freq = f1;

//botonSet = "SET13";

oled();//Llama a la función oled para mostrar la frecuencia en el display

}

if (customKey == 'D'){

f1= 5000000000ULL;//Frecuencia

f2 = f1 - 668000ULL;//Corrección

si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0

freq = f1;

//botonSet = "SET14";

oled();//Llama a la función oled para mostrar la frecuencia en el display

}

if (customKey == 'E'){

f1= 14400000000ULL;//Frecuencia

f2 = f1 - 1858000ULL;//Corrección

si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0

freq = f1;

//botonSet = "SET15";

oled();//Llama a la función oled para mostrar la frecuencia en el display

}

if (customKey == 'F'){

f1= 14420000000ULL;//Frecuencia

f2 = f1 - 1862000ULL;//Corrección

si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0

freq = f1;

oled();//Llama a la función oled para mostrar la frecuencia en el display

}

}

void oled() {

//Imprimimos en pantalla

u8g2.clearBuffer(); // borra la memoria interna

u8g2.setFont(u8g2_font_ncenB08_tr); // elige una fuente

u8g2.drawStr(0,10,"FRECUENCIA CLOCK0: ");

u8g2.drawStr(0,30,freq.c_str());

u8g2.drawStr(80,30," Herz"); // escribir "Herz" en la memoria interna

freq = f1 / 100000000ULL;

u8g2.drawStr(0,50,freq.c_str());

u8g2.drawStr(30,50," MHz"); // escribir "MHz" en la memoria interna

u8g2.sendBuffer(); // transferir la memoria interna a la pantalla

}