Gelombang sinus dapat dibuat dengan Arduino Nano, dengan bantuan DAC (Digital to Analog Converter).
Arduino Nano dan UNO di dalamnya menggunakan mikrokontroler ATmega328. ATmega328 ini tidak memiliki DAC, sehingga sebenarnya tidak mampu membuat tegangan analog secara langsung. Untuk aplikasi yang sederhana, hal ini dapat diakali dengan menggunakan fitur PWM (Pulse Width Modulation). Librarynya di Arduino menggunakan AnalogWrite() . Namun untuk menghasilkan tegangan analog yang lebih baik, diperlukan komponen DAC seperti MCP4725.
Berikut ini contoh pembangkitan gelombang sinusoidal dengan Arduino Nano dan DAC MCP4725.
Pertama rakit hubungkan MCP4725 ke Arduino. Koneksinya menggunakan protokol I2C.
Daftar pin yang dihubungkan adalah sebagai berikut:
Pin Arduino | Pin MCP4725 | Keterangan |
A4 (SDA) | SDA | pin data untuk I2C |
A5 (SCL) | SCL | pin clock untuk I2C |
GND | GND | ground 0 volt |
VCC | 5V | supply 5 volt |
Protokol I2C menggunakan 2 kabel, yaitu SDA (data) dan SCL (clock). Kedua jalur ini sebenarnya perlu disambungkan dengan pull up menggunakan resistor, namun pada Arduino sudah ada pull up internal 10 kilo ohm, sehingga tidak perlu ditambah lagi.
MCP4725 perlu supply 5 volt, yang dapat diambil dari pin 5V dari Arduino. Namun perlu diperhatikan pada Arduino clone/KW, tegangan 5V ini biasanya kurang dari 5 volt, terutama jika menggunakan power supply dari USB.
Tahap selanjutnya adalah instalasi library “Adafruit MCP4725”. Ada beberapa cara instalasi:
- Download langsung filenya dari https://github.com/adafruit/Adafruit_MCP4725/archive/master.zip, kemudian instalasi dengan cara copy ke direktori library Arduino secara manual
- Instalasi dari menu Arduino
Untuk melakujkan instalasi dari Arduino, lakukan tahap berikut ini:
- Klik di menu “Tools” -> “Manage Libraries”, atau Ctrl -Shift – I
- Cari library “Adafruit MCP4725”, kemudian klik install
- Proses download akan dilakukan. Tunggu sampai selesai
Alamat MCP4725 mungkin perlu dicoba-coba, antara 0x60, 0x61, 0x62, 0x63, 0x64, 0x65. Jika ingin dicari dengan cepat, dapat menggunakan program kecil I2C Scanner untuk Arduino UNO/Nano
Berikut ini contoh software pembangkit sinusoidal. Kode ini diadaptasi dari situs https://learn.sparkfun.com/tutorials/mcp4725-digital-to-analog-converter-hookup-guide/all
Pada contoh di bawah ini, alamat MCP4725 adalah 0x63, namun mungkin perlu diubah-ubah.
/****************************************************************************** |
Definisi alamat MCP4725 ada di baris berikut ini:
#define MCP4725_ADDR 0x63 |
Versi lain software pembangkit sinusoidal dapat dilihat di https://github.com/adafruit/Adafruit_MCP4725/blob/master/examples/sinewave/sinewave.ino
Tegangan output sinusoidal dapat diukur di pin OUT pada MCP4725.
Berikut ini contoh output yang diukur dengan osiloskop.
Frekuensi gelombang sinusoidal adalah 4,5039 Hz . Jumlah sampel dalam 1 periode adalah 512. Periode sampling adalah 1/4,5039/512 = 0,434 milidetik. Frekuensi sampling adalah 2306 Hz.
Demikianlah cara sederhana membuat gelombang sinusoidal pada Arduino Nano dengan menggunakan DAC MCP4725. Namun demikian rangkaian ini masih mempunyai kelemahan:
- Tegangan referensi DAC menggunakan tegangan 5V dari Arduino Nano yang kalau diukur tegangannya kurang dari 5 volt (sekitar 4,6 volt), dan ada ripple / noise di situ. Solusinya adalah menambahkan filter atau regulator supaya tegangan VCC untuk MCP4725 lebih stabil.
- Tegangan keluaran masih terbatas dari 0 sampai 5 volt, sesuai tegangan VCC pada MCP4725. Jika perlu jangkauan tegangan lain maka perlu ditambah rangkaian penguat / pengubah level, yang mudahnya dapat dibuat dengan rangkaian op-amp
- Belum ada filter rekonstruksi (reconstruction filter), untuk menghilangkan efek tangga pada tegangan output DAC. Sistem DAC yang lebih lengkap dapat dilihat di artikel https://elektrologi.iptek.web.id/sistem-filter-digital/
Referensi
- https://learn.adafruit.com/mcp4725-12-bit-dac-tutorial/using-with-arduino
- https://learn.sparkfun.com/tutorials/mcp4725-digital-to-analog-converter-hookup-guide/all
- Elektrologi: Digital to Analog Converter MCP4725
- Elektrologi: Sistem Filter Digital