Anda di halaman 1dari 23

LAPORAN PRAKTIKUM

MIKROPROSESOR
MODUL II : Akses LCD Karakter 16x2 dan Analog to Digital
Converter (ADC)

Disusun Oleh :
Atwatan Malik Mahardi
(17101008)

Partner Praktikum :
Anang Bagus R (17101006)

Praktikum Tanggal : 25 Maret 2019

Asisten Praktikum :
Indak Danil Mabar (16101134)

LABORATORIUM TEKNIK ELEKTRONIKA DAN TEKNIK DIGITAL


FAKULTAS TEKNIK TELEKOMUNIKASI DAN ELEKTRO (FTTE)
INSTITUT TEKNOLOGI TELKOM
JL. D.I. PANJAITAN 128 PURWOKERTO
2019
MODUL II
AKSES LCD KARAKTER 16X2 DAN ANALOG TO DIGITAL
CONVERTER (ADC)

I. TUJUAN PRAKTIKUM
1. Mahasiswa mampu memahami cara kerja dari pin Analog to Digital
Converter (ADC) pada Arduino Uno R3.
2. Mahasiswa mampu memahami pengaruh nilai tegangan referensi
terhadap hasil konversi Analog to Digital Converter (ADC).
3. Mahasiswa mampu memahami penggunaan Serial Monitor pada
Arduino IDE.
4. Mahasiswa mampu memahami cara mengakses LCD 16x2 dengan
Arduino Uno R3.
5. Mahasiswa mampu merangkai dan memprogram pin ADC Arduino
Uno R3 sebagai input sebuah sensor suhu LM35.
6. Mahasiswa mampu menampilkan hasil pembacaan nilai dari pin ADC
ke dalam LCD 16x2.

II. ALAT DAN BAHAN


1. Board Arduino Uno R3 : 1 (satu) buah.
2. Kabel USB tipe A ke B : 1 (satu) buah.
3. Breadboard : 1 (satu) buah.
4. Potensio 10K : 3 (tiga) buah.
5. Resistor 220 Ω : 1 (satu) buah.
6. LCD 16x2 : 1 (satu) buah.
7. LM 35 : 1 (satu) buah.
8. Buzzer 5V : 1 (satu) buah.
9. Multimeter Digital : 1 (satu) buah.
10. Kabel Jumper male-to-male sesuai kebutuhan.

III. DASAR TEORI


1. Liquid Crystal Display (LCD).
Liquid Crystal Display (LCD) merupakan media penampil
informasi yang menggungakan kristal cair sebagai display utama. LCD
digunakan di berbagai bidang elektronika seperti televisi, kalkulator,
dan komputer. LCD memiliki berbagai macam jenis, salah satunya
LCD dot matrik dengan ukuran 2x16.[1]

Gambar 2.3.1 Tampilan LCD 16x2.[1]


Fitur-fitur LCD 16x2 :
1) Memiliki 192 karakter.
2) Dialamati dengan mode 4 bit dan 8 bit.
3) Memiliki back light.
Spesifikasi LCD 16x2 :
1) Pin 1 = Ground.
2) Pin 2 = Vcc.
3) Pin 3 = Pengatur kontras.
4) Pin 4 = “RS” Instruction/Register Select.
5) Pin 5 = “R/W” Read/Write LCD Registers.
6) Pin 6 = “EN” Enable.
7) Pin 7-14 = Data I/O Pins.
8) Pin 15 = Vcc.
9) Pin 16 = Ground.[1]
2. Analog to Digital Converter (ADC).
ADC merupakan perangkat elektronika yang berfungsi untuk
mengubah sinyal analog yang berbentuk kontinu menjadi sinyal digital
yang berbentuk diskrit. ADC dapat bebentuk sebuah rangkaian
elektronika maupun sebuah chip IC.
Jenis-jenis ADC :
1) ADC Simultan.
Masukan analog yang akan dikonversi ke bentuk digital diberikan
secara simultan kepada sisi positif pada komparator, dan masukan
pada sisi negatif komparator bergantung pada ukuran bit converter.
2) Counter Ramp ADC.
Masukkan counter dari clock yang dikontrol dengan meng-AND-
kan dengan output komparator. Komparator membandingkan 2
tegangan tersebut, apabila tengangan input belum sama dengan
tegangan output, maka komparator akan bernilai 1 sehingga clock
memberikan masukan counter dan hitungan counter naik.
3) SAR (Successive Aproximation Register) ADC. [2]

Gambar 2.3.2 Analog to Digital Conversion.[3]


Bentuk mendasar komunikasi digital dan analog adalah berupa
piranti yang disebut komparator. Komparator membandingkan dua
tegangan pada kedua masukannya. Keluaran dari komparator akan
berbentuk sinyal digital yang bernilai 1 (HIGH) atau 0 (LOW)
bergantung pada tegangan masukan yang lebih besar. Sebuah
komparator tersusun dari OP-Amp yang memberikan keluaran
terpotong untuk menghasilkan level kondisi logika yang diinginkan. [2]

Gambar 2.3.3 Konsep Komparator.[2]


IV. HASIL DATA
A) Mengakses LCD 16x2.
Source Code :
#include<LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
String materi1 ="ADC", materi2="LCD";
int counter=0;
void setup() {
Serial.begin(9600);
lcd.begin(16,2);
}
void loop() {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Modul 2 - Mikro");
lcd.setCursor(0,1);
lcd.print(materi1);
lcd.setCursor(4,1);
lcd.print(char(38));
lcd.setCursor(6,1);
lcd.print(materi2);
delay(1500);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Counter : ");
lcd.print(counter);
delay(1000);
Serial.println("Modul 2 - Mikro");
Serial.print(materi1);
Serial.print(char(38));
Serial.println(materi2);
Serial.print("Counter : ");
Serial.println(counter);
Serial.println();
counter++;
delay(1000);
}
Hasil :

Gambar 2.4.1 Hasil Simulasi Akses LCD 1.

Gambar 2.4.2 Hasil Simulasi Akses LCD 2.


B) ADC dengan Tegangan Referensi Eksternal.
Source Code :
#include<LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
void setup() {
lcd.begin(16,2);
}

void loop() {
float vref=3;
float volt;
int adc=analogRead(A0);
volt=adc*vref/1024;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("ADC A0: ");
lcd.print(adc);
lcd.setCursor(0,1);
lcd.print("Volt A0 : ");
lcd.print(volt);
lcd.print("V");
delay(500);
}

Hasil :

Gambar 2.4.3 Mengatur Potensio Aref.

Gambar 2.4.4 Mengatur Potensio Vin 1 V.


Gambar 2.4.5 Mengatur Potensio Vin 2 V.

Gambar 2.4.6 Mengatur Potensio Vin 3 V.

Tabel 2.4.1 Tabel Percobaan ke 2.


Pengukuran LCD Perhitungan
Vref Vin ADC Vin ADC Vin
3V 1V 370 1,08 340,99 0,999
2V 709 2,07 682 2
3V 1019 2,99 1023 3
Perhitungan :
ADC = (Vin/Vref)*1023

a) ADC 1 V = (1/3)*1023 = 340,99


b) ADC 2 V = (2/3)*1023 = 682
c) ADC 3 V = (3/3)*1023 = 1023

Vin = (ADC*Vref)/1023

a) Vin 1 = (340,99*3)/1023 = 0,999


b) Vin 2 = (682*3)/1023 = 2
c) Vin 3 = (1023*3)/1023 = 3
C) Pembacaan Sensor LM35 dengan ADC.
Source Code :
#include<LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#define sensorsuhu A5

void setup() {
lcd.begin(16, 2);
}

void loop() {
int vref = 5;
int adc = analogRead(sensorsuhu);
float mv = (adc / 1024.0) * (vref * 1000);
float cel = mv / 10;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("TEMP: ");
lcd.print(cel);
lcd.print(char(223));
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("ADC: ");
lcd.print(adc);
lcd.setCursor(7, 1);
lcd.print("mV:");
lcd.print(mv);
delay(500);
}
Hasil :

Gambar 2.4.7 Pembacaan Sensor Suhu Vin Pengukuran 294 mV.

Gambar 2.4.8 Pembacaan Sensor Suhu Vin Pengukuran 309 mV.

Gambar 2.4.9 Pembacaan Sensor Suhu Vin Pengukuran 322,5 mV.


Tabel 2.4.2 Tabel Percobaan 3.
LCD Pengukuran Perhitungan
Vref
Vin ADC Temp Vin ADC Temp
5V 278,32 57mV 27,83o 294 mV 56,94 29,4o
292,97 60mV 29,3o 309 mV 59,94 30,9o
307,62 63mV 30,76o 322,5 mV 63 32,25o

Perhitungan :
ADC = (Vin/Vref)*1023

a) ADC 1 = (278,32/5)*1023 = 56,94


b) ADC 2 = (292,97/5)*1023 = 59,94
c) ADC 3 = (307,62/5)*1023 = 63
d) Suhu 1 = 294 mV --> 29,4oC
e) Suhu 2 = 309 mV --> 30,9oC
f) Suhu 3 = 322,5 mV --> 32,25oC
D) Alarm Suhu Ruangan Sederhana dengan Buzzer.
Source Code :
#include<LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#define sensorsuhu A5
float suhu_max=29;
int buzzer=7;
void setup() {
lcd.begin(16, 2);
pinMode(buzzer,OUTPUT);
}

void loop() {
int vref=5;
int adc=analogRead(sensorsuhu);
float mv=(adc/1024.0)*(vref * 1000);
float cel = mv / 10;

lcd.clear();
lcd.setCursor(0, 0);
lcd.print("TEMP:");
lcd.print(cel);
lcd.print(char(223));
lcd.print("C");

if(cel>=suhu_max)
{
digitalWrite(buzzer,1);
lcd.setCursor(0,1);
lcd.print("WARNING...!!!");
}
else
{
digitalWrite(buzzer,0);
}
delay(500);
}

Hasil :

Gambar 2.4.10 Hasil Simulasi Alarm Sederhana.


V. ANALISIS DAN PEMBAHASAN
Praktikum mikroprosessor membahas Modul 2 dengan pembahasan
mengenai Akses LCD Karakter 16x2 dan Analog to Digital Converter
(ADC). Percobaan pertama yaitu mengakses LCD 16x2 pada Arduino Uno
dengan tambahan potensio untuk mengatur tegangan yang masuk ke LCD.

Gambar 2.5.1 Flowchart Akses LED 16x2.


Pada percobaan pertama ini, praktikan menampilkan keluaran berupa teks
pada setiap baris dari LCD serta melakukan perhitungan secara otomatis
secara berkala. Langkah pertama praktikan mendeklarasikan serta
menginisialisasi variabel materi1 yang berisi kata “ADC”, materi2 yang
berisi kata “LCD” dengan tipe data String, kemudian variabel counter
dengan tipe data integer. Selanjutnya ditampilkan teks “Modul 2 -Mikro”
pada baris pertama LCD dengan perintah lcd.setCursor(0,0) untuk
memposisikan baris teks dan lcd.print(“Modul 2-Mikro”) untuk
menampilkan teks. Kemudian menampilkan teks pada baris kedua dengan
perintah lcd.setCursor(0,1) dan lcd.print(materi1) untuk menampilkan
kata yang ada dalam variabel materi1. Setelah itu menampilkan simbol
DAN (&) dengan perintah lcd.print(char(38)) dan menampilkan isi dari
variabel materi2 dengan perintah lcd.print(materi2) secara berurutan
dengan perintah masing lcd.setCursor(4,1) dan lcd.setCursor(6,1). Teks
akan tampil selama 1,5 detik dengan perintah delay(1500), kemudian layar
LCD dihapus dengan perintah lcd.clear() dan dilanjutnya dengan
menampilkan perhitungan otomatis secara berurutan dengan perintah
lcd.print(counter) dan counter++ agar nilainya terus bertambah +1 dan
perhitungan counter tampil setiap 1.5 detik sekali dengan durasi tampil
selama 1 detik. Pada akhir program terdapat perintah Serial.print dan
Serial.println untuk menampilkan keluaran langsung pada tampilan
komputer, hal ini berfungsi untuk mengecek kesalahan apabila saat source
code di-upload dan LCD gagal menampilkan teks. Program terus berulang
hingga perangkat Arduino mati seperti pada diagram alur di atas.
Percobaan kedua yaitu menampilkan nilai ADC(Analog to Digital
Converter) dengan tegangan pembanding atau tegangan referensi. Pertama
praktikan mendeklarasikan variabel vref pada pin 3, variabel volt serta
variabel adc. Kemudian membuat persamaan untuk mendapatkan nilai
tegangan Vin yang ditampung dalam variabel volt yaitu
volt=adc*vref/1024. Kemudian nilai ADC ditampilkan pada baris pertama
dengan perintah lcd.setCursor(0,0) dan lcd.print(adc). Selanjutnya nilai
dari variabel volt ditampilkan pada baris kedua dengan perintah
lcd.setCursor(0,1) dan lcd.print(volt). Program terus berulang hingga
perangkat Arduino mati seperti pada diagram alur di bawah. Pada
percobaan ini praktikan terlebih dahulu mengatur tegangan referensi
dengan bantuan multimeter digital. Kemudian membandingkan keluaran
dari LCD dengan hasil perhitungan. Setelah dilakukan pengujian pada 3
kondisi tegangan masukkan yang berbeda, didapatkan bahwa selisih dari
keluaran LCD dan perhitungan sangat kecil bahkan mendekati sama.

Gambar 2.5.2 Flowchart ADC dengan Tegangan Referensi Eksternal.


Percobaan ketiga yaitu pembacaan sensor LM35 atau sensor suhu
dengan ADC. Pertama praktikan mendeklarasikan beberapa variabel yaitu
vref pada pin 5, variabel adc yang berisi nilai yang dibaca oleh sensor
suhu, kemudian variabel mv yang menampung hasil dari persamaan
(adc/1024.0)*(vref*1000) dan variabel cel yang menampung hasil dari
mv/10. Selanjutnya praktikan menampilkan nilai dari temperatur yang
terbaca dengan perintah lcd.print(cel) dan lcd.print(char(223)) untuk
menampilkan simbol derajat (o) pada baris pertama. Kemudian pada baris
kedua ditampilkan nilai dari ADC dengan perintah lcd.print(adc), nilai
dari Vin dengan perintah lcd.print(mv). Dilakukan 3 kali percobaan untuk
membandingkan nilai dari Vin, ADC, dan Temperatu yang ditampilkan
LCD dengan yang dihitung secara manual. Setelah semua data terkumpul,
tidak didapatkan perbedaan yang jauh antara yang ditampilkan LCD dan
yang dihitung. Nilai dari temperatur hampir sama dengan dengan nilai
Vin, namun dikalikan 0,1. Program terus berulang hingga perangkat
Arduino mati seperti pada diagram alur di bawah.

Gambar 2.5.3 Flowchart Pembacaan Sensor LM35 dengan ADC.


Percobaan terakhir yaitu membuat alarm sederhana dengan bantuan
buzzer. Pertama praktikan mendeklarasikan variabel suhu_max dengan
nilai 29, variabel buzzer pada pin 7 sebagai output, variabel vref pada pin
5, variabel adc yang menampung nilai dari sensor suhu, kemudian variabel
mv yang menampung hasil dari persamaan (adc/1024.0)*(vref*1000) dan
variabel cel yang menampung hasil dari mv/10. Pada baris pertama
ditampilkan nilai temperatur dengan perintah lcd.print(cel). Selanjutnya
menggunakan fungsi IF-Else untuk melakukan pengecekan terhadap nilai
temperatur yang dibaca, jika nilai temperatur melebihi atau sama dengan
29oC, maka baris kedua akan menampilkan peringatan berupa teks
“WARNING....!!!” dengan perintah lcd.print(“WARNING....!!!”), dan
buzzer akan mengeluarkan bunyi peringatan dengan perintah
digitalWrite(buzzer, 1), nilai 1 menunjukkan HIGH atau menyala.
Kemudian apabila suhu tidak melebihi batas maksimal, maka teks dan
bunyi peringatan tidak akan tampil dan menyala. Suhu dapat diubah-ubah
dengan menyentuh sensor menggunakan jari tangan. Program terus
berulang hingga perangkat Arduino mati seperti pada diagram alur di
bawah.

Gambar 2.5.4 Flowchart Alarm Suhu Ruangan Sederhana dengan Buzzer.


VI. KESIMPULAN
1. Penentuan baris dan kolom pada LCD dapat ditentukan dengan
menggunakan perintah lcd.setCursor(kolom,baris), baris 1
menggunakan nilai 0 dan baris 2 menggunakan nilai 1, kemudian untuk
menampilkan informasi pada LCD menggunakan perintah
lcd.print(informasi), dan jika menampilkan teks secara langsung
menggunakan tanda petik(“informasi”).
2. Serial Monitor digunakan untuk menampilkan keluaran secara
langsung pada laptop/komputer untuk mengetahui kesalahan apabila
LCD gagal menampilkan keluaran.
3. Nilai ADC dan Vin dengan Vin pengukuran 1 V, 2 V, dan 3 V yang
ditampilkan LCD tidak jauh berbeda dengan hasil perhitungan bahkan
mendekati sama.
4. ADC (Analog to Digital Converter) merupakan metode untuk
mengubah sinyal analog yang diterima sensor LM35 berupa panas,
menjadi sinyal digital yang dapat ditampilkan dalam bentuk angka pada
LCD.
5. Bunyi peringatan buzzer digunakan untuk memberikan tanda jika
terjadi perubahan suhu yang tidak biasanya atau melewati batas
normalnya dengan menggunakan fungsi IF-Else.
DAFTAR PUSTAKA

[1] A. Munandar, “Liquid Crystal Display (LCD) 16 x 2,” 2012. [Online].


Available: http://www.leselektronika.com/2012/06/liguid-crystal-display-
lcd-16-x-2.html. [Accessed: 30-Mar-2019].

[2] E. Digital, “ADC (Analog To Digital Converter),” 2014. [Online].


Available: http://zonaelektro.net/adc-analog-to-digital-converter/.
[Accessed: 30-Mar-2019].

[3] U. Lokhande, “ADC in LPC2148 ARM7 Microcontroller Analog to Digital


Converter.” [Online]. Available: https://binaryupdates.com/adc-in-lpc2148-
arm7-microcontroller/.
LAMPIRAN
1. Apa yang dimaksud LCD 16x2 ?
LCD 16x2 merupakan media terbuat dari cristal cair yang dapat
menampilkan keluaran informasi dengan ukuran 16 kolom dan 2 baris.
2. Apa kegunaan dari lcd.setCursor() dan lcd.clear() ?
a) lcd.setCursor() : Perintah untuk menentukan posisi kursor mulai
penulisan.
b) lcd.clear() : Perintah untuk menghapus isi dari layar LCD.
3. Apa kegunaan dari Serial monitor ? Apakah sama dengan kegunaan
LCD ?
Serial monitor berfungsi untuk menampilkan informasi dari proses
Arduino langsung di laptop/komputer pengguna. Berbeda dengan LCD,
serial monitor akan menampilkan hasil apabila terjadi kesalahan program
Arduino, sedangkan LCD tidak akan menampilkan informasi jika terjadi
kesalahan dalam program Arduino.
4. Apa kegunaan dari potensio Aref ?
Potensio AREF digunakan untuk mengatur tegangan referensi yang masuk
ke Arduino.
5. Apa yang dimaksud sinyal analog dan digital pada pengertian ADC ?
Sinyal Analog : Sinyal berbentuk gelombang sinus yang bersifat kontinu.
Sinyal Digital : Sinyal berbentuk pulsa yang bernilai 1 (HIGH) dan 0
(LOW).
6. Mengapa pembacaan nilai ADC maksimal 1023/1024 ?
Karena pin analog Arduino dapat menerima nilai hingga 10 bit sehingga
data analog yang dapat dikonversi sebanyak 1024 keadaan. Nilai 1024
berasal dari 2 pangkat 10, dan nilai 1023 merupakan nilai terbesar karena
perhitungan dimulai dari angka 0.
7. Mengapa saat nilai Vin yang dibaca pada pin ADC tidak bisa melebihi dari
tegangan referensi yang diatur ?
Karena tegangan referensi merupakan tegangan pembanding yang stabil
terhadap tegangan yang diukur.
8. Berapakah nilai tegangan Referensi default jika kita tidak meng-input-kan
tegangan Referensi eksternal.
Tegangan referensi default bernilai 5 V sesuai dengan tegangan pada
board Arduino.
9. Jelaskan apa maksud dari script di bawah ini ?
➢ Int adc = analogRead(sensorsuhu); : Membaca nilai analog dari
sensor suhu dan menampungnya dalam variabel adc yang bertipe data
integer.
➢ float mv = (adc/1024.0)*(vref*1000); : Nilai adc yang didapat
sebelumnya, kemudian diproses ke dalam persamaan tersebut dengan
membagi nilai adc dengan 1024 dan mengalikan nilai vref dengan
1000, selanjutnya kedua hasil pembagian dan perkalian tersebut
dikalikan dan hasilnya ditampung dalam variabel mv yang bertipe data
float.
➢ float cel = mv/10; : Nilai mv yang didapatkan
sebelumnya kemudian dibagi dengan 10 dan hasilnya ditampung
dalam variabel cel yang bertipe data float.
10. Apa contoh sederhana dari kegunaan ADC pada kehidupan sehari-hari?
➢ Komunikasi Digital.
➢ Rangkaian pengukuran atau pengujian.
➢ Sensor suhu, sensor cahaya, sensor tekanan, sensor aliran.
11. Apa fungsi dari lcd.print(char(223)); ?
lcd.print(char(223)); : Perintah untuk menampilkan simbol derajat (O) di
LCD.
12. Buatlah Program Running Text dengan ketentuan sebagai berikut :
➢ Baris pertama berisi “Nama Praktikan”.
➢ Baris kedua berisi “NIM Praktikan”.
➢ NIM Ganjil : Running Text berjalan dari kiri ke kanan.
➢ NIM Genap : Running Text berjalan dari kanan ke kiri.
➢ Jeda pindah antar karakter adalah (125ms + XYZ).
XYZ = 3 Digit NIM Terakhir.
Tampilan Rangkaian Simulasi :

Gambar 1. Simulasi Rangkaian Running Text.

Source Code Program :


#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);

void setup()
{
lcd.begin(16,2);
}

void loop()
{
int i;
lcd.setCursor(0, 0);
lcd.print("Atwatan Malik Mahardi");
lcd.setCursor(0, 1);
lcd.print("NIM. 17101008");
for (;;)
{
lcd.scrollDisplayLeft();
delay(133); //NIM 17101008 --> 125+008 = 133
}
}

Link Simulasi Tinkercad :


https://www.tinkercad.com/things/erWazQHNwHo
Penjelasan Program :
Program running text dengan LCD 16x2 menampilkan nama
praktikan pada baris pertama dengan perintah lcd.setCursor(0, 0); dan
lcd.print("Atwatan Malik Mahardi");, kemudian pada baris kedua dengan
perintah lcd.setCursor(0, 1); dan lcd.print("NIM. 17101008");. Selanjutnya
perintah tersebut diulang terus menerus tanpa batas akhir dengan for (;;)
dan terus berjalan dari kanan ke kiri dengan perintah
lcd.scrollDisplayLeft();. Kemudian delay setiap karakter menyesuaikan
dengan nim praktikan yaitu delay(133); //NIM 17101008 --> 125+008 =
133.

Anda mungkin juga menyukai