setelah prototype diatas dapat bekerja dengan sempurna saat-nya unt. memasukkan prototype ke dalam box FT 180 sehingga dapat fitting sempurna dengan tanpa merusak secara masif existing komponen maupun casing yang sudah ada(kesan vintage-nya masih ada).
berikut adalah modul si5351 yang dimasukkan ke dalam kotak oscillator, gunanya untuk meminimalkan interferensi terhadap output DDS si5351 dan sekaligus menjaga kestabilan output-nya.
bagian dari OLED Display, Rotary Encoder termounting pada PCB Lubang IC - Single Layer dan sekaligus Arduino Mini Pro beserta regulator DC 5v dan 3.3V tersolder permanen pada modul tersebut.
nampak warna merah-orange adalah LED indikator dari DC Regulator Modul dan Arduino Mini Pro Modul, terpadang pada panel sisi kiri dari FT 180A.
diatas adalah penampakan OLED Display yang terpasang mengisi space dari papan angka FT 180A yang sebelum-nya, lampu DC 12V existing dilepas beserta soft light cover-nya. Band Selector LPF dilepas dari mounting-nya (selector otomatis akan di desain selanjut-nya).
Bagaimana dengan Rangkaian DDS VFO menggunakan modul Si5351?, dibawah ini adalah rangkaian simple-nya, semua dapat dibeli modul-modul-nya secara terpisah di toko online tanpa melakukan solder mensolder secara njelimet. Kita bisa menggunakan Arduino Nano dengan kelebihan sudah ada serial TTL dan tersedia DC 3.3V beserta 5V, sedangkan kekurangan-nya adalah bentuknya yang cukup besar sehingga untuk masuk kedalam box FT180 akan mengalami kendala extra.
dibawah adalah rangkaian prototype yang saya buat menggunakan Arduino Pro Mini sehingga ukuran-nya yang kecil membuat lebih mudah untuk melakukan casing-isasi terhadap rangkaian yang sudah kita buat sebelum-nya.
nampak ukuran board yang kecil, kekurangan-nya adalah kita musti menyediakan regulator tambahan DC5V(tetapi hal ini tidak kita butuhkan apabila kita pesan Arduino Pro Mini 3.3V) dan DC 3.3V untuk mensuplay DC pada Rotary Encoder dan modul si5351 dan juga kita membutuhkan serial TTL untuk melakukan upload sketch ke dalam arduino pro mini tersebut.
Sekarang saat-nya untuk perhitungan matematis-nya
Default dari Yaesu FT-180A unt. BFO menggunakan Crystal 10.7MHz dan pada USB menggunakan Crystal Filter 10.69845MHz, dan kendalanya untuk main di LSB kita musti pasang Crystal Filter lagi, dari beberapa referensi yang ada dan eksperiment dengan adjust frekwensi osilator dan clarifier akhirnya memberanikan mengubah design.
BFO yang semula statis menggunakan Crystal Filter 10.7MHz, saja lepas Crystal 10.7MHz-nya, diinject dengan BFO dari si5351 yang dinamis, dapat kita adjust sesuai dengan yang kita inginkan. jadi teori-nya adalah Crystal Filter USB bawaan dari Yaesu kita gunakan sebagai Crystal utama sedangkan untuk main USB nilai BFO-nya yang dinamis 1500Hz diatas ataupun dibawah dari nilai 10.69845MHz.
Hasilnya yang sudah saya terapkan pada 40m band saat ini nilai VFO adalah Freq display ditambahkan freq BFO(Freq center dari Crystal Filter USB pada IF Board Yaesu FT-180A), si5351 secara otomatis untuk frekwensi 10MHz akan menggunakan USB mode, berikut tabel dari penjelasan diatas :
untuk si5351 CL2 adalah Freq BFO, CL1 adalah nilai VFO+BFO sedangkan CL0 adalah nilai Freq yang tampil di LCD OLED Display tersebut.
SELAMAT MENCOBA, apabila ada yang ditanyakan feel free untuk kontak saya by email ke redy@wibisono.xyz
alat pemrograman tersebut dapat digunakan universal terhada semua perangkat digital untuk keperluan update firmware, upload sketch pada arduino, serial debugging, dll.
setelah lengkap hardware yang kita pasang saat-nya untuk upload sketch pada arduino tersebut, berikut adalah sketch dalam format arduino-nya :
#include
#include
#include
#include
#include
#include
#include
/**************************************************************************
* Definitions
**************************************************************************/
#define ENCODER_A 2 // Encoder pin A INT0/PCINT18 D2
#define ENCODER_B 3 // Encoder pin B INT1/PCINT19 D3
#define ENCODER_BTN 4 // Encoder pushbutton D4
#define OLED_RESET 13 // OLED reset
#define Calibrbtn 5 // Calibrate
#define RIT_Switch 6 // RIT Switch
#define TX_Switch 7 // Select TRx or BFO
#define F_MIN 1000000UL // Lower frequency limit
#define F_MAX 300000000UL // Upper frequency limit
/**************************************************************************
* EEPROM data locations
**************************************************************************/
#define EE_SAVED_RADIX 0 // Stepsize pointer
#define EE_SAVED_AFREQ 4 // Actual Tx Frequency (CLK0)
#define EE_SAVED_BFREQ 8 // BFO (IF) Frequency (CLK2)
#define EE_SAVED_XFREQ 12 // X-tal frequency (25 or 27 MHz)
#define EE_SAVED_OFSET 16 // store correction
#define EE_SAVED_CALBR 20 // calibrated indicator
Adafruit_SSD1306 display(OLED_RESET);
Si5351 si5351;
Rotary r = Rotary(ENCODER_A, ENCODER_B);
const int sampleWindow = 50; // Sample window width in mS (50 mS = 20Hz)
unsigned int sample;
/**************************************************************************
* Declarations
**************************************************************************/
volatile uint32_t bfo_f = 900000000ULL / SI5351_FREQ_MULT; // CLK0 start IF
volatile uint32_t vfo_t = 1420000000ULL / SI5351_FREQ_MULT; // CLK2 start Tx freq
volatile uint32_t vfo_r = vfo_t - bfo_f; // CLK1 start Rx freq
volatile uint32_t vfo_s = vfo_t; // Saved for RIT
uint32_t vco_c = 0; // X-tal correction factor
uint32_t xt_freq;
long radix = 100L, old_radix = 100L; //start step size
boolean changed_f = 0, stepflag = 0, calflag = 0, modeflag = 0, ritset = 0;
boolean calibrate = 0;
byte act_clk = 0, disp_txt = 0;
/**************************************/
/* Band Swicth */
/**************************************/
int Band_80m = 12; // 3.5MHz sd 4.5MHz
int Band_40m = 11; // 6.5MHz sd 7.5MHz
int Band_30m = 10; // 11MHz sd 12MHz
int Band_20m = 9; // 14MHz sd 15MHz
int Band_10m = 8; // 27MHz sd 28MHz
/**************************************/
/* Interrupt service routine for */
/* encoder frequency change */
/**************************************/
ISR(PCINT2_vect) {
char result = r.process();
if (result == DIR_CW)
set_frequency(1);
else if (result == DIR_CCW)
set_frequency(-1);
}
/**************************************/
/* Change the frequency */
/* dir = 1 Increment */
/* dir = -1 Decrement */
/**************************************/
void set_frequency(short dir)
{
switch (act_clk)
{
case 0: // Tx frequency
if (dir == 1)
vfo_t += radix;
if (dir == -1)
vfo_t -= radix;
break;
case 1: // Tx frequency (only if RIT is on)
if (dir == 1)
vfo_t += radix;
if (dir == -1)
vfo_t -= radix;
break;
case 2: // BFO frequency
if (dir == 1)
bfo_f += radix;
if (dir == -1)
bfo_f -= radix;
break;
}
if(vfo_t > F_MAX)
vfo_t = F_MAX;
if(vfo_t < F_MIN)
vfo_t = F_MIN;
changed_f = 1;
}
/**************************************/
/* Read the buttons with debouncing */
/**************************************/
boolean get_button()
{
if (!digitalRead(ENCODER_BTN)) // Stepsize
{
delay(20);
if (!digitalRead(ENCODER_BTN))
{
while (!digitalRead(ENCODER_BTN));
stepflag = 1;
}
}
else if (!digitalRead(Calibrbtn)) // Calibrate
{
delay(20);
if (!digitalRead(Calibrbtn))
{
while (!digitalRead(Calibrbtn));
calflag = 1;
}
}
else if (!digitalRead(TX_Switch)) // Selection
{
delay(20);
if (!digitalRead(TX_Switch))
{
while (!digitalRead(TX_Switch));
modeflag = 1;
}
}
if (stepflag | calflag | modeflag) return 1;
else return 0;
}
/********************************************************************************
* RIT switch handling
* Switch to small stepsize (100 Hz)
*******************************************************************************/
void RIT_switch() // Read RIT_switch
{
if (!digitalRead(RIT_Switch) && ritset == 0){ // RIT on
act_clk = 1;
ritset = 1;
vfo_s = vfo_t; // Save Tx freq
old_radix = radix; // Save actual stepsize
radix = 100; // Set stepsize to 100 Hz
}
else if (digitalRead(RIT_Switch) && ritset == 1){ // RIT 0ff
act_clk = 0; // RTx mode
ritset = 0;
vfo_t = vfo_s; // Restore to original vco_t
radix = old_radix; // Back to old stepsize
disp_txt = 0; // Clear line
// Update Rx frequency based on the restored Tx frequency
if (vfo_t <= bfo_f) vfo_r = vfo_t + bfo_f; // Upper / lower mixing
else vfo_r = vfo_t - bfo_f;
si5351.set_freq((vfo_r * SI5351_FREQ_MULT), SI5351_PLL_FIXED, SI5351_CLK1);
}
}
/**************************************/
/* Displays the frequency and stepsize*/
/**************************************/
void display_frequency()
{
display.setTextSize(2);
char LCDstr[12];
char Mhz[5], Herz[12];
int p,q;
unsigned long freq;
display.clearDisplay();
switch(act_clk)
{
case 0: // Tx frequency
freq = vfo_t;
break;
case 1: // Tx frequency (Used in RIT Mode)
freq = vfo_t;
break;
case 2: // MF frequency
freq = bfo_f;
break;
}
Herz[1]='\0'; // empty arry
sprintf(LCDstr, "%ld", freq); // convert freq to string
p=strlen(LCDstr); // determine length
strncpy(Mhz,LCDstr,(p-6)); // get MHz digits (1-3)
q=p-6;
Mhz[q]='\0'; // end with null character
strcpy(Herz,LCDstr); // get Herz digits (6)
strcpy(LCDstr+q,Herz+(q-1)); // copy into LCDstr
LCDstr[q]='.'; // decimal point
display.setCursor(15,20);
display.println(LCDstr);
display_settings();
}
/**************************************/
/* Displays step, mode and version */
/**************************************/
void display_settings()
// DISPLAY S-METER
{
unsigned long startMillis= millis(); // Start of sample window
float peakToPeak = 0; // peak-to-peak level
unsigned int signalMax = 0; //minimum value
unsigned int signalMin = 1023; //maximum value
// collect data for 3000 mS
while (millis() - startMillis < sampleWindow)
{
sample = analogRead(A0); //get reading from microphone
if (sample < 1023) // toss out spurious readings
{
if (sample > signalMax)
{
signalMax = sample; // save just the max levels
}
else if (sample < signalMin)
{
signalMin = sample; // save just the min levels
}
}
}
peakToPeak = signalMax - signalMin; // max - min = peak-peak amplitude
float db = map(peakToPeak,80 ,1030,50, 550 ); //calibrate for deciBels
for(int x =5;x<114 draw="" nbsp="" p="" scale="" x="x+10){ ">114>
display.drawLine(x, 55, x, 52, WHITE);
}
display.drawRoundRect(0, 55, 125, 9, 2, WHITE); //draw outline of bar graph
int r = map(db,0,125,1,125); //set bar graph for width of screen
display.fillRoundRect(1, 56, r, 10, 2, WHITE); //draw bar graph with a width of r
// Stepsize
display.setCursor(1, 4 );
display.setTextSize(1);
//display.print(F("Step:"));
switch (radix)
{
case 1:
display.println(F(" 1Hz"));
break;
case 10:
display.println(F(" 10Hz"));
break;
case 100:
display.println(F(" 100Hz"));
break;
case 1000:
display.println(F(" 1kHz"));
break;
case 10000:
display.println(F(" 10kHz"));
break;
case 100000:
display.println(F("100kHz"));
break;
case 1000000:
display.println(F(" 1MHz"));
break;
}
// Mode
display.setCursor(45, 4);
display.setTextSize(1);
switch (act_clk)
{
case 0:
display.println(F("V3.0"));
break;
case 1:
display.println(F("RIT"));
break;
case 2:
display.println(F("BFO"));
break;
}
// LSB and USB Mode
if (vfo_t >= 10000000UL)
{
display.setCursor(75, 4 );
display.print(F("USB"));
}
else if (vfo_t <= 10000000UL)
{
display.setCursor(75, 4);
display.print(F("LSB"));
}
// Band Text
if (vfo_t >= 3500000UL && vfo_t <= 4500000)
{
display.setCursor(100, 4);
display.print (F("80M"));
}
else if (vfo_t >= 6500000UL && vfo_t <= 7500000)
{
display.setCursor(100, 4);
display.print (F("40M"));
}
else if (vfo_t >= 11000000UL && vfo_t <= 12000000)
{
display.setCursor(100, 4);
display.print (F("30M"));
}
else if (vfo_t >= 14000000UL && vfo_t <= 15000000)
{
display.setCursor(100, 4);
display.print (F("20M"));
}
else if (vfo_t >= 27000000UL && vfo_t <= 28000000UL)
{
display.setCursor(100, 4);
display.print (F("10M"));
}
//display.clearDisplay();
display.setCursor(1,42);
display.setTextSize(1);
display.println("S1 3 5 9 20 40 +60");
// Kotak Frekwensi
display.drawRect(1, 16, 125, 22, WHITE);
// Kotak Kuning
display.drawRect(1, 0, 125, 15, WHITE);
// Messages
display.setCursor(100,4);
switch (disp_txt)
{
case 1:
display.print(F("SW RIT Off"));
break;
case 2:
display.print(F("Set to TRx"));
break;
case 3:
display.print(F("CAL"));
break;
case 4:
display.print(F(" "));
break;
case 5:
display.print(F("LSB"));
break;
case 6:
display.print(F("USB"));
break;
}
display.display();
}
/**************************************/
/* S E T U P */
/**************************************/
void setup()
{
// Band Switch
pinMode(Band_10m, OUTPUT);
pinMode(Band_20m, OUTPUT);
pinMode(Band_30m, OUTPUT);
pinMode(Band_40m, OUTPUT);
pinMode(Band_80m, OUTPUT);
Serial.begin(115200);
Wire.begin();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 128x64)
// Clear the buffer.
display.clearDisplay();
// Show the display buffer on the hardware.
// NOTE: You _must_ call display after making any drawing commands
// to make them visible on the display hardware!
// Read EEPROM
radix = eeprom_read_dword((const uint32_t *)EE_SAVED_RADIX);
if ((radix < 10UL) | (radix > 1000000UL)) radix = 100UL;
vfo_t = eeprom_read_dword((const uint32_t *)EE_SAVED_AFREQ);
if ((vfo_t < F_MIN) | (vfo_t > F_MAX)) vfo_t = 14000000ULL;
bfo_f = eeprom_read_dword((const uint32_t *)EE_SAVED_BFREQ);
if ((bfo_f < F_MIN) | (bfo_f > F_MAX)) bfo_f = 9000000ULL;
vco_c = 0;
if (eeprom_read_dword((const uint32_t *)EE_SAVED_CALBR) == 0x60) {
vco_c = eeprom_read_dword((const uint32_t *)EE_SAVED_OFSET);
}
xt_freq = SI5351_XTAL_FREQ + vco_c;
//initialize the Si5351
si5351.set_correction(0); // Set to zero because I'm using an other calibration method
si5351.init(SI5351_CRYSTAL_LOAD_8PF, xt_freq); //If you're using a 27Mhz crystal, put in 27000000 instead of 0
// 0 is the default crystal frequency of 25Mhz.
si5351.set_pll(SI5351_PLL_FIXED, SI5351_PLLA);
// Set CLK0 to output the starting "vfo" frequency as set above by vfo = ?
si5351.set_freq((vfo_t * SI5351_FREQ_MULT), SI5351_PLL_FIXED, SI5351_CLK0);
si5351.drive_strength(SI5351_CLK0,SI5351_DRIVE_2MA);
// Set CLK1 to output the Rx frequncy = vfo +/- bfo frequency
if (vfo_t <= bfo_f) vfo_r = vfo_t + bfo_f; // Upper / lower mixing
else vfo_r = vfo_t - bfo_f;
si5351.set_freq((vfo_r * SI5351_FREQ_MULT), SI5351_PLL_FIXED, SI5351_CLK1);
si5351.drive_strength(SI5351_CLK1,SI5351_DRIVE_2MA);
// Set CLK2 to output bfo frequency
si5351.set_freq((bfo_f * SI5351_FREQ_MULT), SI5351_PLL_FIXED, SI5351_CLK2);
si5351.drive_strength(SI5351_CLK2,SI5351_DRIVE_2MA);
// Clear the buffer.
display.clearDisplay();
display.display();
// text display tests
display.setTextSize(1);
display.setTextColor(WHITE);
// Encoder setup
pinMode(ENCODER_BTN, INPUT_PULLUP);
PCICR |= (1 << PCIE2); // Enable pin change interrupt for the encoder
PCMSK2 |= (1 << PCINT18) | (1 << PCINT19);
sei();
// Pin Setup
pinMode(Calibrbtn, INPUT_PULLUP); // Calibrate
pinMode(RIT_Switch, INPUT_PULLUP); // RIT Switch
pinMode(TX_Switch, INPUT_PULLUP); // Select TRx or BFO
// Display first time
display_frequency(); // Update the display
}
/**************************************/
/* L O O P */
/**************************************/
void loop()
{
if (disp_txt == 4) {
delay(3000); // Display calibration OK and wait 3 seconds
disp_txt = 0;
}
// Band Switch
if (vfo_t >= 3500000UL && vfo_t <= 4500000)
{
digitalWrite(Band_80m,HIGH);
}
else {
digitalWrite(Band_80m,LOW);
}
if (vfo_t >= 6500000UL && vfo_t <= 7500000)
{
digitalWrite(Band_40m,HIGH);
}
else {
digitalWrite(Band_40m,LOW);
}
if (vfo_t >= 11000000UL && vfo_t <= 12000000)
{
digitalWrite(Band_30m,HIGH);
}
else {
digitalWrite(Band_30m,LOW);
}
if (vfo_t >= 14000000UL && vfo_t <= 15000000)
{
digitalWrite(Band_20m,HIGH);
}
else {
digitalWrite(Band_20m,LOW);
}
if (vfo_t >= 27000000UL && vfo_t <= 28000000UL)
{
digitalWrite(Band_10m,HIGH);
}
else {
digitalWrite(Band_10m,LOW);
}
// Update the display if the frequency has been changed
if (changed_f) {
display_frequency();
if (act_clk == 0 && !calibrate) // No Tx update during calibrate
si5351.set_freq((vfo_t * SI5351_FREQ_MULT), SI5351_PLL_FIXED, SI5351_CLK0);
else if (act_clk == 2) // BFO update
si5351.set_freq((bfo_f * SI5351_FREQ_MULT), SI5351_PLL_FIXED, SI5351_CLK2);
// Update Rx frequency
if (vfo_t <= bfo_f) vfo_r = vfo_t + bfo_f; // Upper / lower mixing
else vfo_r = vfo_t - bfo_f;
si5351.set_freq((vfo_r * SI5351_FREQ_MULT), SI5351_PLL_FIXED, SI5351_CLK1);
changed_f = 0;
disp_txt = 0; // Clear line
}
RIT_switch(); // read RIT switch
// Button press changes the frequency change step for 1 Hz steps
// Also stored the last used frequency together with the step size before store
if (get_button()) {
if (stepflag) { // Stepsize button
eeprom_write_dword((uint32_t *)EE_SAVED_RADIX, radix);
eeprom_write_dword((uint32_t *)EE_SAVED_AFREQ, vfo_t);
switch (radix)
{
case 1:
radix = 10;
break;
case 10:
radix = 100;
break;
case 100:
radix = 1000;
break;
case 1000:
radix = 10000;
break;
case 10000:
radix = 100000;
break;
case 100000:
radix = 1000000;
break;
case 1000000:
radix = 1;
break;
}
stepflag = 0;
}
else if (modeflag) { // Mode button
if (act_clk == 0) act_clk = 2; else act_clk = 0;
eeprom_write_dword((uint32_t *)EE_SAVED_BFREQ, bfo_f);
modeflag = 0;
disp_txt = 0; // Clear line
}
else if (calflag) { // Calibrate button
if (!digitalRead(RIT_Switch)){ // RIT is on
disp_txt = 1; // Message RIT off
}
else if (act_clk == 2){ // BFO mode on
disp_txt = 2; // Message BFO off
}
else if (!calibrate) { // Start calibrate
vfo_s = vfo_t; // Save actual freq
old_radix = radix; // and stepsize
vfo_t = SI5351_XTAL_FREQ; // en set to default x-tal
disp_txt = 3; // Message Calibrate
calibrate = 1;
radix = 10; // Set to 10 Hz
si5351.set_freq((vfo_t * SI5351_FREQ_MULT), SI5351_PLL_FIXED, SI5351_CLK0); // Set CLK0
}
else if (calibrate) { // after tuning x-tal freq
calibrate = 0;
vco_c = vfo_t - SI5351_XTAL_FREQ; // difference
vfo_t = vfo_s; // restore freq
radix = old_radix; // and stepsize
disp_txt = 4; // Message Calibrate OK
eeprom_write_dword((uint32_t *)EE_SAVED_OFSET, vco_c); // store correction
xt_freq = SI5351_XTAL_FREQ + vco_c; // Calibrated x-tal freq
eeprom_write_dword((uint32_t *)EE_SAVED_CALBR, 0x60); // Calibrated
si5351.init(SI5351_CRYSTAL_LOAD_8PF, xt_freq); // Initialize
si5351.set_pll(SI5351_PLL_FIXED, SI5351_PLLA);
si5351.set_freq(bfo_f * SI5351_FREQ_MULT, SI5351_PLL_FIXED, SI5351_CLK2); // correct BFO frequency
si5351.set_freq(vfo_t * SI5351_FREQ_MULT, SI5351_PLL_FIXED, SI5351_CLK0); // Correct Tx freq
if (vfo_t <= bfo_f) vfo_r = vfo_t + bfo_f; // Upper / lower mixing
else vfo_r = vfo_t - bfo_f;
si5351.set_freq(vfo_r * SI5351_FREQ_MULT, SI5351_PLL_FIXED, SI5351_CLK1); // correct Rx frequency
}
calflag = 0;
}
}
display_frequency(); // Update display
}
// end while loop
download Service Manual Yaesu FT180a pada link dibawah ini : https://1drv.ms/f/s!AuMtm9KDRI6mgdsuCrW51F1OBv1zYw
diperlukan modifikasi BPF pada board RF Unit Yaesu FT 180A(band 80m, 40m, 26m dan 20m) dengan menggunakan Trafo IF warna biru, dan setting jumper simplex pada LPF selector
saya sertakan juga referensi saya yang lainnya untuk modifikasi lilitan BPF dan nilai kapasitor-nya
dibawah ini pemasangan BPF on progress ... yg existing dilepas.
board yang existing, sebelum dimodifikasi
dan trafo BPF baik RX maupun TX sudah terpasang dengan sempurna seperti gambar dibawah, masih tersisa 2 selector BPF dimana pada FT 180A ini range LPF-nya mulai dari 1.6MHz s/d 18MHz.
hal yang perlu diperhatikan adalah dalam pemilihan Capacitor untuk BPF, alangkah baik-nya kita ukur mengunakan L-C Meter, mengingat sepengalaman saya hampir 80% nilai capacitor yang ada di retail nilai-nya tidak bisa konsisten dan memiliki deviasi yang lumayan signifikan.
bagaimanakah proses installasi Adruino beserta modul Si5351-nya, detail dapat dilihat pada gambar dibawah ini
Default dari Yaesu FT-180A unt. BFO menggunakan Crystal 10.7MHz dan pada USB menggunakan Crystal Filter 10.69845MHz, dan kendalanya untuk main di LSB kita musti pasang Crystal Filter lagi, dari beberapa referensi yang ada dan eksperiment dengan adjust frekwensi osilator dan clarifier akhirnya memberanikan mengubah design.
BFO yang semula statis menggunakan Crystal Filter 10.7MHz, saja lepas Crystal 10.7MHz-nya, diinject dengan BFO dari si5351 yang dinamis, dapat kita adjust sesuai dengan yang kita inginkan. jadi teori-nya adalah Crystal Filter USB bawaan dari Yaesu kita gunakan sebagai Crystal utama sedangkan untuk main USB nilai BFO-nya yang dinamis 1500Hz diatas ataupun dibawah dari nilai 10.69845MHz.
Hasilnya yang sudah saya terapkan pada 40m band saat ini nilai VFO adalah Freq display ditambahkan freq BFO(Freq center dari Crystal Filter USB pada IF Board Yaesu FT-180A), si5351 secara otomatis untuk frekwensi 10MHz akan menggunakan USB mode, berikut tabel dari penjelasan diatas :
untuk si5351 CL2 adalah Freq BFO, CL1 adalah nilai VFO+BFO sedangkan CL0 adalah nilai Freq yang tampil di LCD OLED Display tersebut.
SELAMAT MENCOBA, apabila ada yang ditanyakan feel free untuk kontak saya by email ke redy@wibisono.xyz
8 comments:
ayam berlaga ayam sabung taji
mantap ditunggu sambunganya om
sudah saya tanbahkan Pak Herry Mardianto
Mantap! Om redy blog ini sangat membantu sekali.
terima kasih untuk informasi-nya
Boleh izin minta source code lengkapnya om
izin sedot source code-nya. bisakah saya dapatkan file librarynya ?
Wah jan mumet sirahe, tapi pelan 2 karena melewat zaman.
Post a Comment