BAB 3.
ADC
3.1 Tujuan
1. Mahasiswa dapat memahami cara kerja ADC.
2. Mahasiswa dapat membuat rangkaian ADC dan memprogramnya.
3.2 Landasan Teori
1. analogRead()
Membaca nilai pin analog yang memiliki resolusi 10-bit. Fungsi ini
hanya dapat bekerja pada analog pin (0-5). Hasil dari pembacaan berupa nilai
integer dengan range 0 sampai 1023.
Value = analogRead(pin);
// mengatur value sama
dengan nilai analog pin
2.
analogWrite()
Mengirimkan nilai analog pada pin analog.
analogWrite(pin, value);
3.3
1.
2.
3.
// menulis ke pin analog
Daftar Alat dan Bahan
PC
Proteus
Software Arduino
3.4 Prosedur Praktikum
1. Buatlah rangkaian sesuai dengan gambar rangkaian berikut.
Praktikum Mikrokontroler
Laboratorium Sistem Kendali
25
POT
D0
D1
D2
D3
D4
D5
D6
D7
7
8
9
10
11
12
13
14
4
5
6
1
2
3
ARDUINO
RS
RW
E
VSS
VDD
VEE
LM016L
AREF
PC0/ADC0
PC1/ADC1
PC2/ADC2
PC3/ADC3
PC4/ADC4/SDA
PC5/ADC5/SCL
DIGITAL (~PWM)
1k
A0
A1
A2
A3
A4
A5
ANALOG IN
0%
RV1
1121
ATMEGA328P-PU
RESET
PB5/SCK
PB4/MISO
~PB3/MOSI/OC2A
~ PB2/SS/OC1B
~ PB1/OC1A
PB0/ICP1/CLKO
PD7/AIN1
~ PD6/AIN0
PD5/T1
~
PD4/T0/XCK
~ PD3/INT1
PD2/INT0
TX PD1/TXD
RX PD0/RXD
13
12
11
10
9
8
7
6
5
4
3
2
1
0
D1
LED-BLUE
R1
470R
ARDUINO UNO R3
Gambar 3.1 Rangkaian Arduino UNO dengan ADC
2. Ketiklah program sesuai dengan program berikut.
#include <LiquidCrystal.h>
LiquidCrystal lcd(13,12,11,10,9,8);
int SensorPin1 = 0;
int ValueADC0 = 0;
int LED = 3;
void setup() {
lcd.begin(16, 2);
}
void loop() {
ValueADC0 = analogRead(SensorPin1);
analogWrite(LED,ValueADC0/4);
lcd.setCursor(0,0);
lcd.print("Nilai ADC0");
if(ValueADC0 >= 1000){
lcd.setCursor(0,1);
lcd.print(ValueADC0);
}
if(ValueADC0 <= 999 ){
lcd.setCursor(0,1);
lcd.print(ValueADC0);
lcd.setCursor(3,1);
lcd.print(" "); //1 spasi
}
if(ValueADC0 <= 99){
lcd.setCursor(0,1);
lcd.print(ValueADC0);
lcd.setCursor(2,1);
lcd.print(" ");//2 spasi
}
if(ValueADC0 <= 9){
Praktikum Mikrokontroler
Laboratorium Sistem Kendali
26
lcd.setCursor(0,1);
lcd.print(ValueADC0);
lcd.setCursor(1,1);
lcd.print("
");//3 spasi
}
}
3.
Simulasikan dan berilah analisisnya.
3.5 Pembahasan
Analog To Digital Converter (ADC) adalah pengubah sinyal analog
menjadi kode-kode digital. ADC banyak digunakan sebagai pengatur proses
industri, komunikasi digital dan rangkaian pengukuran/pengujian. Umumnya
ADC digunakan sebagai perantara antara sensor yang kebanyakan analog seperti
sensor suhu, cahaya, tekanan/berat, aliran dan sebagainya dengan system
komputer atau kontroler yang memproses data digital.
ADC adalah sebuah sarana pada mikrokontroler yang berfungsi mengubah
tegangan analog menjadi data digital. Sebenarnya mikrokontroler hanya
mengubah nilai tegangan analog yang masuk menjadi suatu nilai digital yang
mempunyai range tertentu. Praktikum ini bertujuan agar mahasiswa dapat
memahami cara kerja ADC dan mahasiswa dapat membuat rangkaian ADC dan
memprogramnya.
Pada listing program, #include<LiquidCrystal.h> berfungsi
menginisialisasi
LCD
yang
terhubung
pada
rangkaian.
LiquidCrystallcd(13,12,11,10,9,8); untuk menginisialisasi pin
Praktikum Mikrokontroler
Laboratorium Sistem Kendali
27
Arduino Uno yang terhubung dengan LCD. int ValueADC0 = 0; berfungsi
menyatakan input potensiometer dihubungkan dengan pin A0 Arduino Uno. int
LED = 3;berfungsi menyatakan bahwa LED dihubungkan dengan pin 3
Arduino Uno. lcd.begin(16, 2); berfungsi menyatakan bahwa LCD yang
digunakan yaitu mempunyai karakter tampilan 16 kolom dan 2 baris.
ValueADC0 = analogRead(SensorPin1);berfungsi membaca nilai pin
analog dari hasil dari pembacaan nilai ADC berupa nilai integer dengan range 0
sampai
1023
yang
ditampilkan
pada
output
berupa
LCD
sedangkan
lcd.setCursor(0,0);untuk mengatur letaknya. lcd.print("Nilai
ADC0");untuk menampilkan karakter nilai ADC0 pada baris pertama LCD.
analogWrite(LED,ValueADC0/4); untuk mengirimkan nilai analog pada
pin analog pada hasil nilai integer. ValueADC0/4 menjelaskan nilai duty cycle
yang diinginkan mulai dari 0 hingga 255 dengan keluaran maksimum tegangan 5
volt. Hasil nilai integer ini dapat ditentukan dari input berupa potensimoter.
Proses
ADC
ditentukan
pada
sintak
sebagai
berikut:
if(ValueADC0<=999)untuk perhitungan nilai integer pada ADC jika nilainya
kurang atau sama dengan 999 yang ditentukan pada input potensiometer.
Sedangkan untuk if(ValueADC0<=99)adalah jika nilai integer kurang dari
atau sama dengan 99. lcd.setCursor(0,1);untuk menampilkan nilai
integer pada LCD yang difungsikan bahwa letak nilai output pada LCD
ditampilkan
menampilkan
pada
nilai
baris
ADC
kedua.
pada
lcd.print(ValueADC0);
pin
Arduino
Uno
A0.
untuk
Program
lcd.setCursor(3,1); berfungsi mengatur tampilan tata letak pada LCD.
analogRead() adalah untuk memperoleh nilai digital sesuai dengan besar nilai
integer analog yang terdeteksi .
Untuk rangkaiannya, pin 4 pada LCD dihubungkan dengan pin 13 pada
Arduino. Pin 6 pada LCD dihubungkan dengan pin 12 pada Arduino. Pin 11 pada
LCD dihubungkan dengan pin 11 pada Arduino. Pin 12 pada LCD dihubungkan
dengan pin 10 pada Arduino. Pin 13 pada LCD dihubungkan dengan pin 9 pada
Arduino. Pin 14 pada LCD dihubungkan dengan pin 8 pada Arduino. Pin 5 pada
Praktikum Mikrokontroler
Laboratorium Sistem Kendali
28
LCD dihubungkan dengan ground. Hubungkan LED dengan resistor kemudian
dengan ground ke pin 3. Kemudian hubungkan potensiometer dengan Vcc dan
ground ke pin A0.
Nilai yang ditampilan pada LDC adalah bentuk digital yaitu antara 0-1023
yang merupakan pemetaan dari tegangan input antara 0-5 volt. Ketika potensio
diubah maka tegangan akan berubah, tegangan ini akan masuk dan diproses oleh
mikrokontroler dan menghasilkan nilai antara 0 sampai dengan 1023. Nilai
tersebut dapat digunakan untuk pengambilan keputusan seprti yang dilakukan
pada program yang dimasukan dalam Arduino pada praktikum ini. Contoh pada
kode program if(ValueADC0<=99).
Pada contoh ini nilai variable
ValueADC dibandingkan dengan nilai 99 untuk mengambil sebuah keputusan
dengan fungsi if. Tanpa adanya ADC, hal tersebut tidak mungkin untuk dilakukan.
Pada dasarnya sebuah prosesor ataupun kontroler akan memproses nilai
digital. Sensor yang digunakan untuk berkomunikasi dengan kondisi lingkungan
menghasilkan sinyal analog. Hal inilah yang membuat ADC sangat berperan
dalam proses pengontrolan berbasis elektronik. ADC menjembatani antara sensor
dan prosesor.
Praktikum Mikrokontroler
Laboratorium Sistem Kendali
29
Praktikum Mikrokontroler
Laboratorium Sistem Kendali
30
3.6 Kesimpulan
Berdasarkan percobaan yang telah dilakukan, dapat diambil kesimpulan
sebagai berikut:
1. Nilai output dari ADC adalah data digital antara 0 sampai dengan 1023
2. ADC memetakan tegangan input 0 sampai 5 volt menjadi nilai digital
3.
antara 0-1023.
Data digital dapat digunakan untuk pengambilan keputusan melalui
4.
perbandingan.
Semakin besan nilai tegangan maka nilai data digital juga semakin
5.
besar.
Semakin besar hambatan pada potensio maka tegangan yang masuk
6.
semakin besar.
Potensio difungsikan seperti sensor yang hambatannya berubah
sehingga tegangan yang masuk berubah untuk mengetahui nilai digital
dari sebuah sinyal tegangan analog.
Praktikum Mikrokontroler
Laboratorium Sistem Kendali
31
Lampiran
Gambar 3.2. Rangkaian percobaan
Gambar 3.3. Rangkaian ketika ADC bernilai 0
Gambar 3.4. Rangkaian ketika ADC bernilai 512 LED on
Praktikum Mikrokontroler
Laboratorium Sistem Kendali
25
Gambar 3.5. Rangkaian ketika ADC bernilai 512 LED off
Gambar 3.6. Rangkaian ketika ADC bernilai 1023.
Praktikum Mikrokontroler
Laboratorium Sistem Kendali
26
Gambar 3.7. Source code Arduino (1)
Gambar 3.8. Source code Arduino (2)
Praktikum Mikrokontroler
Laboratorium Sistem Kendali
27