1. Tujuan
Praktikum ini bertujuan untuk:
a. Praktikan mengenal perangkat pengkonversi analog-digital (A/D) internal pada
Arduino
b. Praktikan mampu membuat program mengakses ADC internal Arduino.
c. Praktikan mampu menentukan karakteristik error ADC PCF8591
2. Dasar Teori
Konversi dari analog ke digital ADC adalah sebuah rangkaian yang mengubah
besaran analog menjadi besaran digital. Biasanya disebut juga dengan A/D. Perubahan ini
diperlukan untuk mengamati kejadian-kejadian diluar Komputer yang biasanya merupakan
sinyal analog. Sebagai contoh dengan menggunakan suatu detektor atau tranducer, sensor-
sensor, maka dapat menghasilkan sinyal-sinyal yang diakibatkan oleh perubahan besaran
fisis menjadi besaran listrik yang kemudian dapat diolah di bagian proses menjadi sinyal
yang lebih bermanfaat. Besaran fisis itu dapat bermacam-macam demikian juga dengan
sensor yang dipakai, misalnya untuk radiasi nuklir dipakai detektor, pada kendali suhu
dipakai thermocouple, thermistor atau sensor yang telah berwujud komponen elektronik
seperti diode LM35, transistor 2N2222, juga pada tekanan, kecepatan dan lain-lain.
Arduino Uno adalah board mikrokontroler berbasis ATmega328. Uno memiliki 14
pin digital input / output (dimana 6 dapat digunakan sebagai output PWM), 6 input analog,
resonator keramik 16 MHz, koneksi USB, jack listrik, header ICSP, dan tombol reset. Uno
dibangun berdasarkan apa yang diperlukan untuk mendukung mikrokontroler, sumber daya
bisa menggunakan power USB (jika terhubung ke komputer dengan kabel USB) dan juga
dengan adaptor atau baterai.
Tapi tidak semua pin Arduino dapat digunakan untuk mengolah signal analog. Pada
board Arduino Uno, terdapat enam pin analog, yakni mulai dari A0 hingga A5. Huruf A pada
awal nama pin Arduino menandakan pin tersebut dapat digunakan untuk mengolah signal
analog. Seberapa tepat nilai signal analog yang dipetakan secara digital, ditentukan oleh
seberapa besar resolusi ADC. Semakin besar resolusi ADC, maka semakin mendekati nilai
analog dari signal tersebut. Untuk resolusi ADC pada board Arduino Uno ialah 10 bit, yang
berarti mampu memetakan hingga 1024 discrete analog level.
Nilai ADC menunjukkan ratio perbandingan dengan tegangan yang terbaca. Berikut
persamaannya ialah nilai ADC terukur ialah nilai ADC maximum dikalikan tegangan terbaca,
kemudian dibagi dengan nilai tegangan sumber. Nilai ADC tergantung dengan tegangan yang
menjadi catu daya sistem mikrokontroler. Untuk board Arduino biasa menggunakan sumber
tegangan 5 volt. Cara mencari nilai ADC, dengan menerapkan persamaan yang ada dan
tegangan terbaca sebesar 2,12 volt pada board Arduino Uno.
Board Arduino Uno memiliki resolusi 10 bit, dengan nilai terbesar 1023
Tegangan sumber 5 volt dan tegangan terbaca ialah 2,12 volt
Nilai ADC terukur ialah nilai ADC maximum dikalikan tegangan terbaca, kemudian
dibagi dengan nilai tegangan sumber
Sehingga diperoleh nilai ADC sebesar 434 Dengan demikian diperoleh nilai ADC sebesar
434 dari tegangan terukur 2,12 volt.
Untuk setiap unit ADC tersebut memiliki perbandingan tegangan sebesar 4,9 mV.
Galat Offset
Secara grafis, seperti tampak pada Gambar 3 galat offset didefinisikan sebagai selisih
antara titik offset nominal dan titik offset aktual. Pada ADC, titik offset adalah nilai undak-
tengah (midstep) jika keluaran digitalnya nol, sedangkan untuk DAC titik offset adalah nilai
undak saat masukan digitalnya nol. Dengan kata lain, galat offset atau disebut juga galat nol
(zero error) pada DAC adalah tegangan keluaran saat masukan digitalnya nol. Pada ADC,
galat nol adalah nilai tegangan masukan yang diperlukan untuk menghasilkan keluaran digital
nol.
Galat bati, ditunjukkan pada Gambar 4, didefinisikan sebagai selisih antara titik bati
(gain point) nominal dan aktual pada fungsi transfer setelah galat offset dikoreksi ke nol.
Untuk ADC, titik bati adalah nilai undak-tengah bila keluaran digital merupakan skala penuh.
Pada DAC, titik bati adalah nilai undak bila masukan digitalnya adalah skala penuh.
Kesalahan ini merepresentasikan perbedaan kemiringan fungsi transfer ideal dengan fungsi
transfer aktual.
Galat nonlinieritas diferensial, yang secara grafis ditunjukkan pada Gambar 5, adalah
selisih antara lebar undak (pada ADC) atau tinggi undak (pada DAC) aktual dengan nilai
ideal 1 LSB. Sebagai contoh, DAC dengan undak 1,25 LSB pada perubahan satu kode digital
dikatakan memiliki galat nonlinieritas diferensial ¼ LSB. Dengan demikian, bila lebar undak
atau tinggi undak bernilai tepat 1 LSB maka berarti galat nonlinieritas diferensialnya nol. Jika
nilai nonlinieritas diferensial melampaui 1 LSB, ada kemungkinan konverter menjadi tidak
monotonik. Ini berarti besaran keluaran menjadi semakin mengecil bila besaran masukannya
bertambah. Pada ADC, mungkin saja ada kode yang hilang, yakni satu atau lebih dari 2n
kemungkinan kode biner tidak pernah muncul.
Galat nonlinieritas integral, ditunjukkan pada Gambar 6, atau sering disebut galat
linieritas, adalah penyimpangan nilai pada fungsi transfer aktual dari garis lurusnya. Definisi
ini berlaku bagi ADC maupun DAC. Pada ADC penyimpangan ini diukur pada transisi dari
satu undak ke undak berikutnya, sedangkan pada DAC penyimpangan diukur pada setiap
undaknya.
Gambar 6. Galat Non-lineritas Integral
4. Langkah Kerja
Praktikum ini dilaksanakan dengan tata-laksana sebagai berikut:
1. Hubungkan Arduino dengan variabel resistor / potensiometer sesuai rangkaian
pada Gambar 7.
N Da Vi Va GNLD GNLI
V input V input Galat
Galat non
Digital Output aktual analog analog nonlineritas
No lineritas
(Desimal/Binary/Hexa) aktual ideal integral
diferensial
(volt) (dihitung)
1 0 0 ... ... ...
2 1 …. ... ... ...
3 … …. ... ... ...
... Dst …. ... ... ...
... 1023 5 ... ... ...
_ = ×
1024
=( − )−( − )
=| − |
#define pinADC A0
int ledPin=13;
int inputValue=0;
void setup(){
pinMode(LED_BUILTIN,OUTPUT);
pinMode(pinADC, INPUT);
Serial.begin(9600);
}
void loop(){
//inputValue=analogRead(inputPin);
inputValue=analogRead(pinADC);
Serial.print("nilai ADC: ");
Serial.println(inputValue);
delay(500);
}