Simulasi Pengolahan Sinyal Digital

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

3 thoughts on “Simulasi Pengolahan Sinyal Digital

Tinggalkan Balasan

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.