Apakah ada pin analog output di Arduino?

Apakah ada pin analog output di Arduino? Ada Arduino yang memiliki analog output sesungguhnya, ada yang tidak. Analog output yang sesungguhnya menggunakan DAC (Digital to Analog Converter). Pada Arduino yang tidak ada DAC, analog output dapat ditiru menggunakan output PWM (Pulse Width Modulation) / Modulasi Lebar Pulsa.

Apa bedanya sinyal output dari DAC dan dari PWM? Sinyal DAC berupa tegangan tertentu yang dapat diatur tegangannya sesuai dengan parameter yang diberikan. Sinyal PWM berupa tegangan HIGH (biasanya 5 volt) dan LOW (0 volt), dengan perbandingan antara HIGH dan LOW mengikuti suatu perbandingan tertentu.

Berikut ini contoh sinyal PWM

Arduino yang memiliki DAC adalah di antaranya sebagai berikut:

Arduino yang tidak memiliki DAC di antaranya sebagai berikut:

  • Arduino Nano dengan prosessor ATmega328P
  • Arduino UNO dengan prosessor ATmega328P
  • Arduino UNO mini dengan prosessor ATmega328P
  • Arduino Mega 2560 Rev3
  • Arduino UNO WiFI Rev2 dengan prosesor ATmega4809 
  • Arduino Micro dengan prosesor ATmega32U4
  • Arduino Leonardo dengan prosesor ATmega32U4

Berikut ini Arduino Zero yang memiliki output analog dengan DAC:

Referensi

Sistem Filter Digital Praktis Berbasis Mikroprosesor

Suatu sistem filter digital secara prinsip sederhana mengubah sinyal analog menjadi digital, kemudian mengolah sinyal digital tersebut dengan algoritma tertentu, kemudian mengubah sinyal digital kembali menjadi sinyal analog. Secara diagram blok dapat digambarkan sebagai berikut:

Sistem filter digital
Sistem filter digital

Filter digital dapat diimplementasikan dengan beberapa cara, di antaranya dengan sistem mikroprosesor dan sistem digital seperti FPGA (Filed Programmable Gate Array).

Dalam prakteknya, sistem tersebut perlu beberapa tambahan subsistem/modul supaya dapat diimplementasikan secara nyata.

Berikut ini sistem lengkap filter digital untuk diimplementasikan dengan sistem mikroprosesor:

Detail sistem filter digital versi 1
Detail sistem filter digital versi 1

Penjelasan Sistem Filter Digital Sederhana

  • Input: sinyal input berasal dari input, misal untuk sistem audio dapat berupa mikrofon, atau MP3 player, atau komputer.
  • Sinyal input ini memiliki level tegangan dan impedansi tertentu. Seringkali sinyal ini perlu diperkuat dulu. Misal mikrofon biasanya memiliki kuat sinyal puluhan sampai ratusan milivolt dengan impedansi ratusan ohm.
  • Penguat: Penguat memiliki fungsi buffering dan juga menyesuaikan amplitudo supaya cocok dengan amplitudo dari ADC yang dipakai.
  • Pengubah Level Tegangan: tegangan input berupa tegangan bolak-balik, bisa saja memiliki tegangan positif dan negatif. ADC yang dipakai seringkali hanya dapat menerima tegangan positif, sehingga tegangan input mesti digeser agar menjadi positif.
  • Low Pass Filter (anti aliasing): sesuai teori sinyal, frekuensi sampling setidaknya memiliki frekuensi 2x frekuensi kerja sinyal yang diukur. Sinyal input yang lebih dari 1/2 frekuensi sampling harus ditapis supaya tidak terjadi aliasing.
  • ADC (Analog to Digital Converter): mengubah tegangan analog menjadi suatu angka digital, dengan resolusi bit tertentu, dan kecepatan sampling tertentu.
  • Filter Digital:  melakukan proses pengolahan sinyal yang diinginkan, dapat berupa LPF (low pass filter) , HPF (high pass filter), BPF (band pass filter), BSF (band stop filter) ataupun Equalizer.
  • Digital to Analog Converter: mengubah sinyal digital menjadi sinyal analog. Umumnya menggunakan prinsip ZoH (Zero order Hold).
  • Reconstruction Filter: sinyal dari Zero order Hold memiliki bentuk seperti anak tangga (staircase), sehingga memiliki komponen frekuensi tinggi. Untuk itu perlu ada filter rekonstruksi yang menghilangkan komponen frekuensi tinggi tersebut. Selain itu ZoH juga mengubah respon frekuensi, yaitu memberi redaman di frekuensi tinggi. Idealnya reconstruction filter juga mengkompensasi hal tersebut.
  • Penguat: untuk menyesuaikan level tegangan dan impedansi dari DAC ke tahap selanjutnya
  • Power supply: implisit semua sistem elektronika perlu power supply. Sistem pengolah digital ada bagian analog dan digital, sehingga masing-masing perlu level tegangan dan power supply tersendiri.

Kelemahan Sistem Filter Digital Sederhana

Sistem di atas sudah dapat berfungsi dengan baik, namun memiliki beberapa kelemahan.

Masalah pertama: konversi analog ke digital

  • filter anti aliasing sulit untuk dibuat ‘tajam’, sehingga frekuensi sampling mesti jauh lebih tinggi daripada frekuensi kerja sinyal. Jika frekuensi sampling terlalu dekat, respon frekuensi kerja terpengaruh oleh anti aliasing filter, atau juga sebagian sinyal frekuensi tinggi dapat menembus filter anti aliasing.
  • akibat frekuensi sampling tinggi, maka bagian filter digital mesti bekerja pada frekuensi lebih tinggi daripada frekuensi kerja sinyal.
  • hal ini juga berpengaruh jika sinyal perlu disimpan: storage akan membesar
  • hal ini juga berpengaruh jika sinyal perlu dikirim: keperluan bandwidth komunikasi membesar.
  • solusi: sampling dilakukan dengan frekuensi tinggi, namun frekuensi sampling diturunkan (downsampling) sebelum sinyal diolah/dikirim/disimpan.
  • pada proses downsampling, sinyal perlu difilter secara digital supaya tidak terjadi aliasing. proses filter digital lebih mudah dibandingkan filter analog, terutama karena masalah ketelitian nilai komponen analog.

Masalah kedua: konversi digital ke analog

Zero order Hold pada DAC mempunyai respon frekuensi sinc(), sehingga ada redaman di frekuensi tinggi

  • solusi 1: sinyal digital diubah ke frekuensi tinggi sebelum masuk ke DAC, dengan demikian pengaruh redaman frekuensi tinggi berkurang.
  • solusi 2: sinyal digital diperkuat dulu di frekuensi tinggi dengan equalizer, supaya dapat mengkompensasi redaman di frekuensi tinggi.

Berikut ini proses ekualisasi sinyal untuk kompensasi pengaruh ZoH.

Equalizing
Ekualisasi sinyal digital to analog

Pada solusi (a) proses ekualisasi dilakukan secara digital sebelum DAC , disebut sebagai tahap pre-equalization.

Pada solusi (b) proses ekualisasi dilakukan secara analog setelah LPF, disebut sebagai tahap post-equalization.

Sistem Lengkap

Berikut ini blok diagram sistem filter digital dengan tambahan solusi-solusi supaya mengurangi permasalahan-permasalahan.

sistem filter digital lengkap versi 2
Sistem filter digital lengkap versi 2

Pada sistem ini dipilih pre-ekualisasi secara digital , dengan pertimbangan merancang equalizer secara digital lebih mudah. Proses pembuatan equalizer ini dapat dilakukan dengan metode ‘Design of FIR Filters Using the Frequency Sampling Method’.

Referensi

Sistem Elektronika Dengan Sinyal Analog & Digital

Suatu sinyal analog dapat diubah menjadi digital dan sebaliknya. Teknik ini memiliki beberapa manfaat. Pada tulisan ini hanya dibahas contoh aplikasi yang bersifat LTI (Linear Time Invariant).

Berikut ini contoh beberapa sistem yang di dalamnya terdapat sinyal analog dan sinyal digital:

  • Filter digital
  • Equalizer digital
  • Perekam digital
  • Komunikasi digital

Teori yang perlu dikuasai:

  • Rangkaian Analog
    • filter analog (LPF, HPF)
    • rangkaian amplifier (penjumlah, penguat)
    • power supply DC , termasuk regulator
  • Mikroprosesor & Interfacing
    • pemrograman mikroprosesor dengan bahasa C
    • input analog pada mikroprosesor
    • output analog pada mikroprosesor
    • ADC (Analog to Digital Converter)
    • DAC (Digital to Analog Converter_
    • interupsi pada mikroprosesor
    • error kuantisasi pada ADC/DAC
  • Pengolahan Sinyal Digital:
    • equalizer analog/digital
    • perancangan FIR berdasarkan respon frekuensi
    • multirate pada PSD
    • filter digital (LPF,HPF, BPF, BSF)
    • oversampling pada pengolahan sinyal digital
    • undersampling / decimation pada pengolahan sinyal digital

Filter Digital

Sistem filter digital dengan input analog dan output digital
Sistem filter digital dengan input analog dan output digital

Pada sistem ini sinyal analog diubah dulu menjadi digital, untuk kemudian dilakukan proses filtering (tapisan) secara digital. Setelah itu sinyal tersebut dikembalikan menjadi sinyal analog.

Jenis tapisan yang umum:

  • LPF: low pass filter
  • HPF: high pass filter
  • BPF: band pass filter
  • BSF: band stop filter

Proses tapisan (filter) dapat dilakukan di domain analog, namun dalam beberapa kasus terdapat kelebihan pada filter digital, sehingga lebih baik jika proses tapisan dilakuan di domain digital.

Equalizer Digital

Sistem equalizer digital dengan input analog dan output analog
Sistem equalizer digital dengan input analog dan output analog

Pada sistem ini sinyal analog diubah dulu menjadi digital, untuk kemudian dilakukan proses ekualisasi secara digital. Setelah itu sinyal tersebut dikembalikan menjadi sinyal analog.

Proses ekualisasi adalah proses mengubah komposisi frekuensi pada suatu sinyal (wikipedia)

Perekam Digital Dengan Input Output Analog

Sistem perekam digital
Sistem perekam digital

Pada sistem ini sinyal analog diubah dulu menjadi digital, untuk kemudian disimpan di suatu media. Setelah itu sinyal yang telah disimpan dapat dibaca dan dikeluarkan pada waktu lain. Setelah itu sinyal tersebut dikembalikan menjadi sinyal analog.

Sistem Komunikasi Digital Dengan Input Output Analog

Sistem komunikasi digital
Sistem komunikasi digital

Pada sistem ini sinyal analog diubah dulu menjadi digital, untuk kemudian dikirim oleh pemancar melalui suatu media komunikasi . Di penerima sinyal diubah lagi menjadi sinyal digital.. Setelah itu sinyal tersebut dikembalikan menjadi sinyal analog.

Komunikasi digital memiliki beberapa kelebihan dibandingkan komunikasi analog.

Simulasi Pengolahan Sinyal Digital

Tahap-tahap simulasi pengolahan sinyal digital dengan LTSpice, dan compiler C

Dokumen ini fokus pada menunjukkan terjadinya proses di setiap tahap dan integrasi proses-proses tersebut, tidak membahas optimasi sistem ataupun subsistem.

Persiapan

  • install LTSpice
  • install JDK untuk Netbeans 8.2
  • Install Netbeans 8.2 untuk IDE compiler C
  • Install Cygwin dan compiler gcc di Cygwin
  • Install Python 3.x
  • Install library SciPy untuk melakukan konversi file WAV
  • Install Arduino IDE untuk kompilasi kode ATmega328
  • Install Audacity untuk melihat isi file WAV
  • Download / clone repository https://github.com/waskita/embedded

Simulasi Proses

 

Proses aliran sinyal pada pengolahan sinyal digital lengkap adalah sebagai berikut (sumber):

Berikut ini diagram sinyal yang akan disimulasikan

Tahap simulasi ringkas:

  • Input AC dan rangkaian analog disimulasikan dengan LTSPice
  • Kuantisasi di ADC disimulasikan dengan program C
  • Filter digital disimulasikan dengan program bahasa C
  • DAC disimulasikan dengan program bahasa C
  • Reconstruction filter disimulasikan dengan LTSpice

Simulasi ini hanya untuk menunjukkan kerangka kerja untuk melakukan simulasi filter digital, maka dilakukan penyederhanaan sebagai berikut

  • Filter anti aliasing menggunakan filter RC orde 1, tanpa menghitung nilai frekuensi cut-offnya. Dalam tugas mesti diperhatikan frekuensi cut off, orde filter dan jenis filter
  • Filter rekonstruksi menggunakan filter RC orde 1, tanpa menghitung nilai frekuensi cut-offnya.
  • Filter digital menggunakan moving average dengan 3 angka. Seharusnya menggunakan LPF,HPF BPF, BSF sesuai keperluan.
  • Hanya menghitung respon pada 1 frekuensi. Seharusnya diukur respon pada beberapa frekuensi untuk mendapatkan kurva respon frekunsi / Bode plot.

Output WAV di LTSpice memiliki keterbatasan yaitu hanya mempunyai level tegangan -1 volt sampai +1 volt, sehingga untuk subsistem yang memiliki input/output melebihi rentang tersebut mesti dilakukan penyesuaian, atau simulasi dilakukan hanya pada rentang -1 sampai +1 volt.

Tahap Simulasi Secara Detail

Simulasi di Komputer Desktop

Buat simulasi rangkaian analog bagian depan meliputi sumber tegangan AC, LPF, level shift, penguat dan sebagainya. Output blok ini akan masuk ke ADC, jadi seharusnya level tegangannya sudah sesuai dengan level tegangan input ADC. ATmega328 dapat diatur referensinya di 2,56 volt atau VCC. Dalam prakteknya, VCC kurang stabil, lebih baik pakai referensi internal atau eksternal.

Contoh file simulasi: anti-aliasing-filter.asc

Berikut contoh gambar rangkaian sumber sinyal AC dan anti aliasing filter:

Pilih frekuensi input (misal 1000 Hz)

Tambahkan output WAV , contoh sintaks: ‘”.wave “anti-aliasing-out.wav” 16 10000  OUTPUT”‘

  • 16 : bitrate jumlah bit, berapa saja karena nanti akan dipotong pada waktu kuantisasi
  • 10000 : frekuensi sampling 10 kHz
  • VIN : nama label yang dijadikan winyal WAV (kanal 1)
  • OUTPUT : nama label yang dijadikan sinyal WAV (kanal 2)

Sampling rate disamakan dengan frekuensi sampling dari software (misal 10 kHz)

Bitrate pakai yang besar saja (misal 16 bit), nanti dapat dibulatkan di program C. Realitasnya adalah nanti dibulatkan sesuai dengan jumlah bit pada ADC (10 bit pada ATmega328)

Berikut tampilan V(vin) dan V(output). NampakV(output) teredam sedikit dan bergeser fase sedikit.

Seharusnya sinyal V(output) sudah dalam batas tegangan 0 sampai VREF. Sinyal V(output) di atas belum cocok untuk dimasukkan ke ADC karena ADC pada ATmega328 hanya menerima sinyal dengan tegangan 0 volt sampai VREF.

Simulasi pada LTSPice di atas menghasilkan output time series dalam format WAV.

Periksai sinyal output pada file WAV dengan program yang dapat menampilkan file WAV (misal Audacity https://www.audacityteam.org/) , pastikan bahwa sinyal WAV yang dihasilkan ‘masuk akal’.

Berikut contoh tampilan file WAV (anti-aliasing-out.wav) dengan Audacity:

Selanjutnya file WAV diubah menjadi CSV supaya mudah dibaca oleh program simulator filter. Kalau ada librarynya, bisa juga file WAV langsung dibaca  dengan program simulator filter.

Contoh converter: https://github.com/Lukious/wav-to-csv , diubah sedikit menjadi script wav2csv.py di repository.  Install python, scipy dan panda untuk dapat menjalankan wav2csv.py

File anti-aliasing-out.wav diubah menjadi anti-aliasing-out.csv

Cek isi file CSV, bisa dilihat dengan Excel untuk melihat apakah hasilnya sesuai.

Berikut contoh file CSV dilihat di Excel: (anti-aliasing-out.xlsx)

Selanjutnya jalankan program simulator filter digital (simulasi-filter/main.c) . Program ini membaca file CSV, kemudian data time series dimasukkan ke fungsi filter_moving_average. Output ditulis ke sebuah text file dalam format CSV (“simulasi-filter.csv”).

ADC disimulasikan dengan melakukan kuantisasi sinyal LPF_OUT sejumlah resolusi ADC yang dipakai. ATmega328 mempunyai resolusi 10 bit, sehingga sinyal LPF_OUT mesti dikuantisasi menjadi angka 0 sampai 1023 (1024 tingkat).

Contoh software simulasi filter digital dapat dilihat di https://github.com/waskita/embedded/tree/master/simulasi-filter-digital/simulasi-filter . Proram ini ditulis dengan Integrated Development Environment (IDE) dengan Netbeans 8.2), compiler C dengan Cygwin.

Untuk memastikan, dapat dibandingkan antara sinyal output dari generator sinyal, sinyal masuk ke ADC, dan sinyal hasil filter digital.

Berikut grafik VIN, LPF_OUT dan FILTER_OUT (simulasi-filter.xlsx)

Tahap selanjutnya adalah membuat sinyal output DAC dalam format WAV dan kemudian simulasi reconstruction filter dengan LTSpice.

Output DAC adalah dalam bentuk zeroth order hold, contohnya seperti berikut ini: (sumber)

Untuk menghasilkan sinyal zeroth order hold, perlu dilakukan hal berikut

  • melakukan kuantisasi output sesuai dengan resolusi DAC yang dipakai. Pada sistem ini digunakan DAC MCP4725 mempunyai resolusi 12 bit. Jika dipakai ESP32, maka mesti menggunakan resolusi 8 bit.
  • menaikkan sampling rate, untuk simulasi terjadinya sinya berbentuk anak tangga (staircase). Misal dengan menaikkan jadi 10x sinyal sampling saat ini menjadi 100 kHz.

LTSpice dapat menerima input WAV dan TXT. Pada simulasi reconstruction filter dipakai  TXT saja supaya tidak perlu repot melakukan konversi CSV ke WAV. Prosedur ini dijelaskan di video berikut (https://www.analog.com/en/education/education-library/videos/5579265677001.html) , dan di https://www.analog.com/en/technical-articles/ltspice-importing-exporting-pwl-data.html

Berikut ini contoh rangkaian reconstruction filter sederhana (reconstruction-filter.asc)

Berikut output DAC dan output reconstruction filter

Pada simulasi di atas nampak frekuensi cut-off terlalu tinggi, sehingga ‘anak tangga’ dari output DAC masuk ke output rangkaian.

Simulasi di Arduino ATmega328

Tahap selanjutnya adalah menguji algoritma filter di mikrokontroler ATmega328 (Arduino Nano).

Simulasi dilakukan dengan tahapan berikut:\

  • Membuat project Arduino untuk menjalankan simulasi. Nama projectnya adalah atmega-simulasi-filter
  • Source code fungsi filter digital dicopy ke source code Arduino
  • Data output ADC dijadikan sebuah array const di file data.h. Proses ini dilakukan dengan program arduino-createdata
  • File data.h di-include di project Arduino
  • Fungsi filter digital dijalankan dengan data dari array data output ADC
  • Output hasil fungsi filter dikirim ke port serial
  • Data dari port serial dibandingkan dengan hasil simulasi fungsi filter digital di komputer desktop. Seharusnya tidak terdapat perbedaan yang berarti.

Berikut ini sinyal output ADC dan output filter dari output serial Arduino, diplot dengan Excel:

Data hasil filter di Arduino dapat dibandingkan dengan data hasil filter di komputer desktop

Tahap selanjutnya adalah pengujian kecepatan filter [under construction]

Referensi