Memulai dari nol lagi :). Selama masa pandemi ini, akses ke ruang kerja & “Peralatan tempur” terbatas. Baru mulai memindah peralatan sedikit-sedikit.
Saya telah mengganti board Arduino Nano yang sebelumnya menggunakan ATmega168 dengan tipe 328. Alasannya kapasitas memory tidak cukup saat utak-atik program. Arduino IDE yang saya gunakan saat ini versi 1.8.15. Beberapa library lama tidak tersedia pada versi Arduino IDE terbaru, jadi lebih baik memulai dari nol semua.
Prototype baru :
Dalam realita, saat terhubung dengan BITX misalnya, lebih baik disesuaikan dengan panel yang dipunyai. Bagian Si5351 diusahakan ada shielding agar signal tidak bocor ke pesawat penerima. Tulisan ini untuk pemula juga yang ingin merancang sendiri DDS (dalam arti tidak sekedar download program jadi dan urusan selesai). Paling tidak gambaran dasar bagaimana sebuah DDS bekerja bisa dipahami baik secara hardware dan software.
Display yang digunakan tipe oled 128×64 yang murah meriah dan menggunakan I2C pada jalur komunikasinya. Hal ini membuat jalur lebih sederhana karena bisa paralel dengan modul Si5351 yang menggunakan I2C untuk komunikasi juga.
Bagian ini membahas OLED. Tes sederhana dengan menggunakan contoh yang telah disediakan oleh SD1306 ASCII Library. Sebelumnya download dulu SSD1306Ascii: Tools –> Manages Libraries

Hubungan antara Arduino Nano dan OLED 128×64 sebagai berikut :

Hanya 4 jalur saja yang digunakan karena menggunakan mode I2C: A4 – SDA, A5 – SCL, Gnd-Gnd, 5V – Vcc.


Untuk program Klik Files –Examples — SD1306Ascii — Wire128x64

Pastikan bagian OLED ini jalan. Saya ulangi, pastikan bagian OLED ini jalan. Meskipun menggunakan contoh yang disediakan tidak masalah. Jika jalan, ini menunjukkan jalur Anda, hardware, dan software beres untuk bagian OLED ini. Jika nantinya saat rancang bangun OLED tidak menyala, maka Anda tahu OLED Anda bukan kambing hitam masalah. Jangan pindah kebagian lain jika belum beres. Tuntaskan satu persatu. Ini untuk memberi keyakinan bahwa bagian hardware beres.
Lanjut ke bagian Encoder :
Encoder menggunakan 2 jalur interupt dalam prosesnya. Ada 2 jenis encoder: dengan switch atau tanpa switch. Switch ini digunakan untuk up/down orde 1 Hz, 10 Hz, 100 HZ, dan 1000 Hz. Untuk encoder tanpa switch, Anda dapat menggunakan switch button tambahan untuk fasilitas ini. Penggunaan interupt adalah pilihan terbaik dibanding pooling terkait performa.
Secara pribadi untuk encoder, library Ben Buxton adalah yang terbaik :). Tapi tidak tercantum pada daftar library Arduino versi baru karena dianggap sudah “usang”. Jadi pengganti yang masih satu aliran adalah punya MD_REncoder. Alasan saya adalah penggunaan “grey code”. Ini terkait soal “state machine”, dan bagi mahasiswa T. Elektro / Komputer yang tidak paham, bisa tidak lulus kuliah sistem digital hehe (btw, saya sudah lupa wkwkwk).


Out A dan Out B terhubung dengan bagian interupt dari Arduino Nano pin D2 dan D3. Untuk output Swicth dengan D7.
Sayang contoh Interupt dari MD_Rencoder tidak tersedia, jadi saya bikin cepat-cepat di atas. Upload program di atas, dan buka terminal serial pada Arduino IDE (set baudrate 57600). Kemudian putar encoder Anda.
Lanjut ke bagian modul Si5351 :
Hubungkan seperti gambar di bawah :

Karena menggunakan I2C, tinggal sambung saja A4 – SDA, A5 – SCL, 5V – 5V, Gnd – Gnd dari Arduino board ke modul Si5351. Modul Si5351 ini sudah terdapat regulator plus konverter logic 5V ke 3,3V untuk chip Si5351, jadi tinggal pakai saja.

Saya perlu bongkar-bongkar dulu untuk mencari frekuensi meter saya hehe. jadi untuk bagian ini….Bersambung…
Update : Sudah ketemu alat ukur frekuensinya 🙂

Untuk kali ini, tujuannya agar tahu saja kalau modul Si5351 berjalan :). Silahkan bermain-main dulu dengan kalibrasi ini.
Output frekuensi tergantung dari perubahan suhu juga. Untuk kelas homebrew dengan perangkat murah meriah, beda 1-2 Hz masih bisa ditoleransi. Pastikan bagian ini jalan. Pokoknya frekuensi keluar dulu lah hehe.
Update : Langkah selanjutnya UglyDDS
/**************************************************************/
/*Calibration. */
/*Increase/decrease cal_factor value to change output freq */
/*Default = 0 */
/**************************************************************/
int32_t cal_factor = 0; //change to suit
si5351.set_correction(cal_factor, SI5351_PLL_INPUT_XO);
Pak Dar… nyuwun pencerahan pada si5351.set_correction(cal_factor…. ,,,, kok copy error message dan ada tulisan no matching function for call to “Si5351;:set_correction(int32_t8.5i5351_pll_input)’
Apakah library Si5351 menggunakan Etherkit Jason Milldrum? Gunakan versi terbaru yg ada.
gih mas… saya cobanya
Ok semoga berhasil