Site icon Elektrologi

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

Simulasi Proses

 

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

Berikut ini diagram sinyal yang akan disimulasikan

Tahap simulasi ringkas:

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

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”‘

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

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:\

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

Exit mobile version