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
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?
Módulo SI5351
Arduino pro micro
Display Oled sh1106
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
}