Selasa, 05 Agustus 2008

Dasar:Analog Digital dan Digital to Analog Converter

Kalau kita jalankan Setup Bios, biasanya terdapat informasi CPU Temperature. Bagaimana sih caranya sehingga temperatur CPU bisa ditampilkan di layar monitor? Mari kita bahas apa yang dimaksud Analog to Digital Converter.

Dalam sebuah industri, besaran fisis yang berupa temperatur, tekanan (pressure), laju aliran fluida (flow) harus dikendalikan. Pada umumnya, pengendalian tersebut menggunakan PC, PLC ada juga yang disebut dengan SCADA. Pada intinya, besaran fisis tersebut harus dapat diketahui oleh sistem digital. Bagaimana caranya?

Besaran fisis tersebut dirubah menjadi besaran elektris menggunakan sensor. Keluaran sensor biasanya berupa tegangan atau arus (standarnya 4-20mA). Kemudian tegangan/arus tersebut diubah menjadi besaran digital memakai komponen ADC (Analog to Digital Converter).

Sensor

Ambil contoh sederhana, sensor temperatur. Sensor temperatur biasanya mempunyai range output yang berpadanan dengan temperatur. Misalnya, sensor temperatur memiliki range pengukuran temperatur 0 – 100 derajat celcius, sedangkan range outputnya adalah 0 – 5 Volt. Artinya, pada suhu 0 derajat celcius, keluaran dari sensor adalah 0 V dan pada 100 derajat celcius keluarannya adalah 5 Volt. Berapa temperatur apabila keluaran dari sensor 2.5 Volt? Dengan rumus interpolasi, diperoleh bahwa temperatur yang terukur adalah 50 derajat celcius.

Apakah output dari sensor bisa disambungkan ke port digital? (contohnya input dari port paralel yang pernah kita coba untuk mendeteksi penekanan saklar)

Jelas tidak bisa, karena input digital hanya bisa mendeteksi 0 Volt sebagai LOW, dan 5 Volt sebagai HIGH. Sedangkan 2.5 Volt bukan LOW atau HIGH.

Analog to Digital Converter

ADC merupakan komponen yang mengubah besaran analog (dalam hal ini tegangan yang berpadanan dengan temperatur) dan dikonversi menjadi besaran digital.
ADC memiliki beberapa karakteristik penting:
a. Input voltage range
b. Bit resolution
c. Sampling rate
ADC memiliki beberapa jenis bit resolution, antara lain 8 bit, 10 bit, 12 bit, 16 bit dan bahkan 20 bit. Apa yang dimaksud dengan bit resolution?

Setiap tegangan input yang dikonversi menjadi digital hasilnya harus berupa deretan 1 dan 0 yang merepresentasikan besar tegangan tersebut. Katakanlah dengan ADC 8 bit, maka tegangan input harus dikonversi menjadi 00000000 (0 desimal) sampai 11111111 (255 desimal).

Contoh:

Temperatur --- Tegangan --- Keluaran ADC
0 --- 0 V --- 00000000 = 0 desimal
100 --- 5 V --- 11111111 = 255 desimal
50 --- 2.5 V --- 10000000 = 128 desimal

Sekarang kita bisa mencari hubungan antara temperatur dengan keluaran ADC dengan memperhatikan:
a. Range temperatur 0 – 100 derajat celcius
b. Range output sensor 0 – 5 Volt
c. Range input ADC 0 – 5 Volt
d. Resolusi ADC 8 bit = 0 – 255

Range output sensor (b) dan range input ADC (c) harus sama, apabila tidak, perlu memakai ‘signal conditioner’ untuk menyamakan range tegangan. Signal conditioner biasanya berupa rangkaian Operational Amplifier, bukan sampo cuci rambut :) Kita lupakan dulu masalah rangkaian signal conditioner, Insya Allah akan saya kupas dilain posting.

0 derajat celcius ekivalen dengan 0
100 derajat celcius ekivalen dengan 255

Jadi persamaannya:

Keluaran ADC = (255/100) * temperatur

Atau
Temperatur = (100/255) * keluaran ADC

Misalnya keluaran ADC adalah 154, maka temperaturnya adalah 60.39 derajat celcius

Pertanyaannya, kalau temperaturnya 43 derajat celcius, berapa keluaran ADC?

Keluaran ADC = (255/100) * 43 = 109.65

Benar?

Hmm... kenapa jadi ada angka koma? Padahal bilangan biner 8 bit tidak ada angka koma ya? Keluaran dari ADC adalah tanpa koma karena hanya 8 bit. Jadi keluaran ADC adalah integer dari 109.65 = 109

Jadi persamaannya perlu disempurnakan:

Keluaran ADC = | (255/100)*temperatur | atau INT( (255/100) * temperatur )

Dalam konversi ADC, akan timbul error karena ada proses kuantisasi (apa itu kuantisasi? silahkan cari di oom google hehe...) Error ini akan semakin kecil apabila resolusi ADC semakin besar. Sebagai gambaran, ADC yang dipergunakan untuk konversi sinyal suara/musik adalah 16 bit. (Coba lihat Sound Recorder, apabila kita akan mensave suara, disitu ada pertanyaan jenis hasil yang diinginkan).



Sedangkan 24.000 kHz adalah sampling rate, akan kita bahas kemudian.

Jadi, apabila tegangan ini dikonversi menjadi digital 8 bit, dari komponen ADC itu akan keluar 8 buah kabel/jalur yang isinya mulai dari 00000000 sampai 11111111 ? Ya... benar sekali, meskipun ada juga ADC yang jenisnya Serial ADC, dimana keluaran dikirimkan dalam bentuk serial sehingga mengurangi jumlah kabel/jalur.

Sekarang apa yang dimaksud dengan sampling rate?

Sampling rate adalah interval pencuplikan data, sampling rate 1 Hz artinya besaran analog (tegangan) dikonversi setiap 1 detik sekali, jadi 24000 Hz artinya data tegangan dikonversi 24000 kali dalam satu detik. Untuk mendapatkan audio yang sekelas HIFI, dibutuhkan sampling rate 44000 Hz dan resolusi ADC 16 bit, sedangkan untuk kualitas percakapan/speech, sampling ratenya adalah 8000 Hz, resolusi 8 bit sudah cukup.

Proses perekaman suara oleh komputer/mp3 player/berbicara di HP GSM/CDMA (bukan AMPS yang jaman baheula...) salah satunya terdapat proses Analog to Digital conversion.

Digital to Analog Converter (DAC)

DAC adalah kebalikan dari ADC, dengan kata lain, mengubah besaran digital menjadi besaran analog (misalnya tegangan). Parameternya sama, antara lain bit resolution. Biasanya sampling rate tidak dinyatakan dalam DAC, karena konversi digital ke analog berlangsung sangat cepat dan hanya tergantung dari kecepatan data digital yang dikirim ke komponen DAC.

Proses playback MP3 player/mendengarkan suara di HP/memainkan lagu di komputer adalah proses konversi dari digital ke analog.

Mudah-mudahan uraian singkat ini cukup dapat dipahami, karena Digital Input, Digital Output, ADC dan DAC merupakan dasar dari PC interfacing dan mikrokontroller.

3 komentar:

iswanto mengatakan...

Artikel yang bagus. Mau mempelajari ADC dengan Delphi? Kunjungi http://iswanto.staff.umy.ac.id/2011/02/15/mengkonversi-data-analog/

surisuryanto mengatakan...

Bagus juga nih artikelnya,bantuin saya menyelesaikan tugas kuliah :)

Unknown mengatakan...

Suka, singkat tapi pas gitu: v