Anda di halaman 1dari 23

ADC

(Analog to Digital
Converter)
Arduino Uno
Pengenalan ADC
• Arduino adalah mesin digital tetapi memiliki kemampuan beroperasi
dalam analog
• Terdapat 6 pin analog pada board Arduino Uno yaitu A0 sampai A6
• Besarnya resolusi ADC menentukan ketepatan nilai signal analog yang
dipetakan secara digital
• Beberapa jenis mikrokontroller memiliki resolusi yang berbeda-beda
seperti 8 bit (mampu memetakan hingga 256 discrete analog level), 10
bit (mampu memetakan hingga 1024 discrete analog level), maupun 16
bit (mampu memetakan hingga 65536 discrete analog level)
• Pada Arduino uno, resolusi ADC pada boardnya adalah 10 bit
analogWrite (pin, value)
• Karena Arduino mendukung PWM pada tiap pin (3, 5, 6, 9, 10, 11),
sehingga dapat merubah kondisi pin On atau Off secara cepat
• Nilai pada format kode tersebut adalah angka antara 0 dan 255

analogRead (pin)
• Ketika pin analog sebagai Input, maka dapat terbaca tegangannya
berupa angka antara 0 (untuk 0 volt) dan 1023 (untuk 5 volt)
Hubungan Nilai ADC dengan Tegangan
• Nilai ADC menunjukkan ratio perbandingan dengan tegangan yang terbaca
• Nilai ADC tergantung dengan tegangan yang menjadi catu daya sistem
mikrokontroler.
• Pada Arduino biasa menggunakan sumber tegangan 5 volt dengan tegangan
terbaca sebesar 2,12 volt.
• Nilai ADC terukur
= (nilai ADC maximum X tegangan terbaca)/tegangan sumber
= (1023 X 2,12)/5
= 434
Hubungan Nilai ADC dengan Tegangan
• Nilai ADC terukur
= (nilai ADC maximum X tegangan terbaca)/tegangan sumber
= (1023 X 2,12)/5
= 434
• Diperoleh nilai ADC sebesar 434 dari tegangan terukur 2,12 volt dengan
setiap unit ADC memiliki perbandingan tegangan sebesar 4,9mV
• Proses konversi dari nilai analog menjadi digital tersebut merupakan
proses ADC (Analog to Digital Conversion)
Proses ADC
• Jika tegangan 5 volt dikonversi menjadi data digital 10 bit yaitu

Hal ini berarti jika setiap 1 angka desimal mewakili tegangan sebesar
4,9 mV

• Jika angka 512 maka mewakili tegangan sebesar v


Tegangan Referensi untuk ADC
• AREF = singkatan Analog Referensi. Kadang-kadang, digunakan untuk
mengatur tegangan referensi eksternal (antara 0 dan 5 Volt) sebagai
batas atas untuk pin input analog. Dapat digunakan dengan fungsi
analogReference().
Opsi tegangan referensi internal
• Jika tegangan analog output perangkat elektronika atau sensor yang
dibaca pada analog pin memiliki nilai maksimum 1,1 Volt, maka perlu
menggunakan tegangan referensi internal.
• Untuk menggunakan tegangan referensi internal 1,1 Volt Arduino Uno
perlu menuliskan perintah analogReference(INTERNAL) pada blok
void setup(){}
• Contoh:
void setup(){
analogReference(INTERNAL);
}
Opsi Tegangan Referensi Eksternal
• Jika tegangan analog yang dibaca pada analog pin Arduino Uno memiliki
tegangan maksimum diluar 1,1 Volt dan 5 Volt (dibawah 5 Volt) maka opsi
yang yang paling cocok adalah menggunakan tegangan referensi eksternal
dengan menghubungkan pin AREF Arduino Uno dengan tegangan dc
eksternal yang diinginkan (maksimum 5 Volt), sehingga dapat menyetel
tegangan referensi sesuai keinginan
• Untuk menggunakan tegangan referensi eksternal perlu menuliskan
perintah analogReference(EXTERNAL) pada blok void setup(){}. Contoh
penulisan penggunaan tegangan eksternal Arduino Uno adalah sebagai
berikut :
• void setup(){
analogReference(EXTERNAL);
}
Waktu Konversi ADC Arduino Uno
• Waktu konversi tegangan analog menjadi digital ADC Arduino Uno
pada kondisi normal single ended adalah 13 clock cycle
• ADC Arduino Uno memiliki 7 bit prescaler (2, 4, 8, 16, 32, 64, dan 128)
untuk menentukan nilai sample rate ADC
• Contoh: prescaler di set pada 128 dan Arduino Uno memiliki clock
source sebesar 16 MHz sehingga besarnya sample rate maksimum
yang diijinkan adalah 16MHz /128 /13 = 9615 Hz atau dibulatkan
9600 Hz.
Penerapan ADC
• Nilai analog dapat ditemukan dalam kehidupan sehari-hari seperti
suhu, kecepatan, kecerahan, dll
• Namun ADC tdk bisa merubah suhu ataupun kecepatan secara
langsung menjadi nilai digital 0 dan 1, karena ADC hanya dapat
mengubah nilai tegangan analog menjadi nilai digital
• Sehingga parameter mana saja yang ingin diukur harus diubah
menjadi tegangan terlebih dahulu, dan konversi ini dapat dilakukan
dengan bantuan sensor.
• Misalnya untuk mengubah nilai suhu menjadi tegangan dapat
menggunakan LM35. Setelah diubah menjadi tegangan, baru dapat
dibaca dengan bantuan ADC.
LM35
• Sensor suhu untuk mengubah besaran suhu menjadi besaran listrik
dalam bentuk tegangan
• Terkalibrasi langsung dalam derajat celcius
• Bekerja pada temperature antara (-50) sampai 150 derajat celcius
• Sensor LM35 bekerja dengan tegangan Analog yang memiliki rentang
nilai ADC adalah 0-1023 (10 bit pada Arduino Uno)
Penggunaan LM35
• Apabila menggunakan tegangan referensi 5V berarti setiap cacahan
=> 5/1023 = 4,883mV
• karakteristik sensor LM35, sesuai datasheet LM35 ketika perubahan 1
derajat maka teganganya berubah 10mV sehingga :
1 C = 10mV / 4,883mV
1C = 2.0479
• dan didapat rumus untuk program Sensor LM35 yaitu
Suhu = nilaiAnalogSensor / 2.0479
#define pinSensor A0
//Variabel untuk menyimpan data suhu
float suhuC;

void setup(){
//Komunikasi serial dengan baud 9600
Serial.begin(9600);
}

void loop(){
//Baca pin input
suhuC = analogRead(pinSensor);
suhuC = (suhuC/1024)*5000; //konversi
data analog menjadi milivolt
suhuC = suhuC/10; //konversi ke dalam
derajat Celcius dg persamaan 1
derajat/10millivolt

//hasil pembacaan akan ditampilkan di


serial monitor
Serial.println((byte)suhuC);
delay(1000);
}
LDR
• LDR merupakan hambatan listrik yang nilai hambatannya (ohm) akan
berubah sesuai dengan besar kecilnya intensitas cahaya yang
mengenai LDR.
• Dengan fungsi seperti ini maka LDR bisa dijadikan sensor cahaya.
Bentuk LDR dan simbolnya seperti gambar dibawah ini :
LDR dalam Mikrokontroler
• Agar sensor cahaya LDR bisa dibaca oleh mikrokontroller arduino,
maka nilai hambatan LDR harus dikonversi menjadi tegangan DC yaitu
dengan menambah satu buah resistor yang dihubung seri dengan LDR
Penggunaan LDR •

#define ldr A0
void setup() {
• // put your setup code here, to run once:
• Serial.begin (9600);//memulai serial
monitor
• pinMode(ldr, INPUT);
• }

• void loop() {
• // put your main code here, to run
repeatedly:
• Serial.println(analogRead(ldr));
• delay(1000);
• }
LCD
• LCD (Liquid Crystal Display) 16x2 adalah jenis media tampilan atau
Display dari bahan cairan kristal sebagai penampil utama
• LCD 16x2 dapat menampilkan sebanyak 32 karakter yang terdiri dari 2
baris dengan tiap baris menampilkan 16 karakter
• Pada Arduino untuk mengendalikan LCD menggunakan library pada
Arduino dengan nama LiquidCrystal.h.
• LCD ada bermacam-macam ukuran 8x1, 16x1, 16x2, 16x4, 20x4 hanya
berbeda pada inisialisasi jumlah kolom dan baris
Alokasi pin
Contoh Program
#include <LiquidCrystal.h> lcd.clear();
}
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void loop() {
void setup() { lcd.setCursor(0,0);
lcd.begin(16, 2); lcd.print(" prak mikro ");
lcd.setCursor(0,0); lcd.setCursor(0, 1);
lcd.print("hello, kawan!"); lcd.print(millis() / 1000);
delay(500); }
LDR dan I2C
• LCD 16×2 pada umumnya menggunakan 16 pin sebagai kontrolnya,
tentunya akan sangat boros apabila menggunakan 16 pin tersebut.
• Karena itu, digunakan driver khusus sehingga LCD dapat dikontrol
dengan jalur I2C.
• Dengan I2C maka LCD dapat dikontrol dengan menggunakan 2 pin
saja yaitu SDA dan SCL.
Penambahan LCD pada LM35
#include <Wire.h> int analog_value = analogRead(A1);
#include <LiquidCrystal_I2C.h> float suhud = (analog_value / 1024.0)* 5000;
//konversi data analog menjadi milivolt
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD suhuC = suhud/10; //konversi kedalam celsius dengan
address to 0x27 for a 16 chars and 2 line display persamaan 1derajat/10mv
//declare variables delay(10);
float suhuC; Serial.println((byte)suhuC); //mengirimkan data ke
serial komputer
int analog_value[2], i;
lcd.clear();
lcd.setCursor(0,0);
void setup() {
lcd.print("Suhu : ");
lcd.begin();}
lcd.print(suhuC,0);
void loop()
delay(1000); //waktu tunggu 1 detik
{
}

Anda mungkin juga menyukai