4 BAB II KAJIAN PUSTAKA 2.1 Tinjauan Mutakhir Penelitian ini di peruntukan untuk tugas akhir dengan judul “Rancang Bangun Sistem Monitoring Output dan Pencatatan Data pada Panel Surya Berbasis Mikrokontroler Arduino”.Penelitian ini mengacu pada beberapa sumber dan tinjauan yang sudah ada dimana masing-masing penulis menggunakan metode dan simulasi yang berbeda sesuai dengan permasalahan yang akan dibahas. Dari perbandingan tersebut akan terlihat perbedaan peneltian dengan yang dilakukan penulis. Berikut merupakan uraian singkat referensi tersebut : 1. Penelitian ini berjudul ”Rancang Bangun Sistem Monitoring Daya Listrik pada Fotovoltaik Secara Realtime Berbasis Mikrokontroler Atmega 16” oleh Alfiansyah, E. ; Jurusan Teknik Elektro, Fakultas Teknik, Universitas Indonesia ; Depok 2009. Pada penelitian ini membahas tentang merancang dan membangun sebuah sistem monitoring pada fotovoltaik dengan memannfaatkan mikrokotroler dan komputer, dimana mikrokontroler berfungsi sebagai kontrol aksi monitoring fotovoltaik sekaligus menghubungkannya dengan komputer. Komputer berfungsisebagai tempat memproses data-data yang dikirimkan oleh mikrokontroler dan menampilkannya pada monitor. Pada peelitian ini didapatkan hasil sebagai berikut : 1) Sistem monitoring secara realtime pada fotovoltaik dalam bentuk hardware dan software bertujuan untuk memberikan kemudahan pengumpulan dan pengolahan data energi listrik yang dihasilkan dari rangkaian modul fotovoltaik secara digital dengan memiliki keakurasian yang tinggi dalam ketelitian pengukuran mengenai informasi berupa tegangan dan arus dari fotovoltaik itu sendiri, sehingga daya output yang dihasilkan bisa langsung diketahui untuk penerapan aplikasi selanjutnya. 2) Dari pengujian rangkaian op-amp dapat diketahui bahwa nilai pengukuran selalu__lebih_besar_dari__teori_tetapi_tidak mengurangi ketelitian dalam 4 5 pengukuran tegangan dari fotovoltaik. Rangkaian Op-Amp ini berfungsi sebagai sensor tegangan yang dihasilkan dari fotovoltaik dengan memiliki keakurasian sebesar 97,34 %. 3) Pada DCS-01 sebagai sensor arus memiliki keakurasian yang lebih baik. Dimana sensor ini dapat mendeteksi arus sampai 20 Ampere. Tegangan terbesar yang dihasilkan dari sensor arus tersebut didapatkan saat tegangan yang dihasilkan dari modul fotovoltaik bernilai maksimum. Tegangan maksimum yang dihasilkan oleh sensor arus DCS-01 sebagai salah satu rangkaian monitoring untuk mendeteksi arus dari rangkaian modul photovoltaik dengan beban 220 Ω ini sebesar 2,58 Volt, sehingga dari grafik keluaran terhadap arus yang disensor menghasilkan arus sebesar 0,8 Ampere. 2. Penelitian ini berjudul ”Perancangan Sistem Data Logger Temperatur Baterai Berbasis Arduino Duemilanove” oleh Hartono, R. ; Jurusan Teknik Elektro, Fakultas Teknik, Universitas Jember ; Jember 2013. Pada penelitian ini menghasilkan data logger yang berguna menyimpan data suhu dan dapat difungsikan untuk menyimpan data suhu baterai mobil listrik Sinosi, Kapasitas SD Card / memori dalam data logger ini dapat menyimpan data selama 738 hari yang menyimpan data perdetik melalui pembacaan data suhu 4 buah sensor LM 35, Mikrokontroler digunakan untuk pengendalian sistem kerja dari rangkaian data logger ini adalah Modul Arduino Duemilanove 3. Penelitian ini berjudul ”Rancang Bangun Sistem Moitoring Tegangan, Arus da Temperatur pada Sistem Pencatu Daya Listrik di Teknik Elektro Berbasis Mikrokontroler Atmega 128” oleh Suryawan, D.W ; Jurusan Teknik Elektro, Fakultas Teknik, Universitas Diponogoro ; Semarang. Pada penelitian ini menghasilkan sebuah alat monitoring peralatan pencatu daya listrik. Parameter yang dimonitoring antara lain tegangan dan arus pada tiap fasa di sisi beban, temperatur generator, temperatur motor genset, temperatur cubical, temperatur ruangan LVMDP, temperatur sirip trafo. Alat ukur pencatu daya listrik ini menggunakan transformator step down sebagai sensor tegangan dengan kemampuan pengukuran tehadap tegangan antara 0 V – 240 V. CT ratio 100/5 A sebagai sensor arus dengan kemampuan pengukuran tehadap arus 6 antara 0 A – 87 A. Sensor temperatur yang digunakan adalah DS18B20 dengan kemampuan pengukuran temperatur antara -50°C sampai dengan 120°C. Sistem monitoring juga dilengkapi dengan tanda peringatan yang berupa sebuah alarm. 2.2 Tinjauan Pustaka 2.2.1 Sensor arus Sensor arus salah satu alat yang berfungsi untuk mengukur kuat arus listrik. Sensor arus ACS712 menggunakan metode Hall Effect Sensor. Hall Effect Sensor merupakan sensor yang digunakan untuk mendeteksi medan magnet. Gambar 2.1 Sensor Arus Sumber : http://www.aliexpress.com Hall Effect Sensor akan menghasilkan sebuah tegangan yang proporsional dengan kekuatan medan magnet yang diterima oleh sensor tersebut. Pendeteksian perubahan kekuatan medan magnet cukup mudah dan tidak memerlukan apapun selain sebuah inductor yang berfungsi sebagai sensornya. Kelemahan dari detektor dengan menggunakan induktor adalah kekuatan medan magnet yang statis (kekuatan medan magnetnya tidak berubah) tidak dapat dideteksi. Oleh sebab itu diperlukan cara yang lain untuk mendeteksinya yaitu dengan sensor yang dinamakan dengan ‘hall effect’ sensor. Sensor ini terdiri dari sebuah lapisan silikon yang berfungsi untuk mengalirkan arus listrik. Dengan metode ini arus yang dilewatkan akan terbaca pada fungsi besaran tegangan berbentuk gelombang sinusoidal. 7 2.2.2 Sensor tegangan Sensor tegangan salah satu jenis sensor yang berfungsi untuk mengukur tegangan listrik. Sensor ini didasarkan pada prinsip tekanan resistensi dan dapat membuat tegangan input dari terminal mengurangi 5 kali dari tegangan asli. Berikut ini adalah gambar dari sesor tegangan. Gambar 2.2 Sensor Tegangan Sumber : http://www.aliexpress.com Berikut ini adalah konfigurasi pemasangan dari sensor tegangan yang akan di hubungkan pada Arduino. Gambar 2.3 Konfigurasi Sensor Tegangan ke Arduino Sumber : http://www.emartee.com 2.2.3 Arduino Arduino adalah kit elektronik atau papan rangkaian elektronik open source yang didalamnya terdapat komponen utama yaitu sebuah chip mikrokontroler dengan jenis AVR dari perusahaan Atmel. 8 Arduino bersifat open source, tidak hanya softwarenya arduino yang bersifat opensource melainkan hardware arduino pun bersifat open source. Diagram rangkaian elektronik arduino digratiskan kepada semua orang. Semua orang bisa bebas mengunduh gambar rangkaian arduino, membeli komponenkomponennya, membuat PCB-nya dan merangkainya sendiri tanpa harus membayar kepada para pembuat Arduino. Arduino tidak hanya sekedar sebuah alat pengembangan, tetapi arduino merupakan kombinasi dari hardware, bahasa pemrograman dan Integrated Development Environment (IDE) yang canggih. IDE adalah sebuah software yang sangat berperan untuk menulis program, mengcompile menjadi kode biner dan meng-upload ke dalam memori mikrokontroler. Menurut Ardi Winoto (2008) mikrokontroler adalah sebuah sistem microprocessor dimana didalamnya sudah terdapat CPU, ROM, RAM, I/0, clock dan peralatan internal lainnya yang sudah terhubung dan terorganisasi dengan baik oleh pabrik pembuatannya dan dikemas dalam satu chip yang siap pakai, sehingga dapat langsung memprogram isi ROM sesuai dengan aturan penggunaan oleh pabrik pembuatannya. Mikrokontroler ada pada perangkat elektronik sehari-hari. Misalnya handphone, MP3 player, DVD, televisi, AC, dll. Mikrokontroler juga dipakai untuk keperluan mengendalikan robot, baik robot mainan, maupun robot industri. Komponen utama arduino adalah mikrokontroler, maka arduino juga dapat diprogram menggunakan komputer sesuai kebutuhan. 2.2.3.1 Bahasa pemrograman arduino Bahasa pemrograman Arduino menggunakan bahasa C yang sudah dipermudah menggunakan fungsi-fungsi yang sederhana sehingga pemula pun bisa mempelajarinya dengan cukup mudah. Software arduino IDE (Integrated Development Enviroment) dibutuhkan untuk membuat program arduino dan mengupload ke dalam board arduino. 9 A. Struktur pemrograman Struktur dasar dari bahasa pemrograman arduino terdiri dari dua bagian yaitu setup() dan loop(). Setup() berfungsi untuk inisialisasi program yang hanya dijalankan sekali di awal program, sedangkan loop() berfungsi untuk menjalankan bagian program yang akan di jalankan berulang-ulang untuk selamanya. void setup( ) { // Statement; } void loop( ) { // Statement; } Fungsi setup() hanya dipanggil satu kali diawal program dijalankan. Fungsi setup() biasaya digunakan untuk inisialisasi, menentukan mode pada pin, memulai komunikasi serial dan fungsi-fungsi lainnya. Fungsi setup() harus di terdapat pada program walaupun tidak ada statement yang di jalankan. void setup() { pinMode (5, INPUT); // Berfungsi mengatur pin 5 // pada arduino sebagai input } Setelah fungsi setup() di jalankan maka secara langsung akan di lanjutkan ke fungsi loop(). Fungsi loop() di jalankan berurutan dari statement awal sampai akhir dan kemudian akan terus-menerus diulang. void loop() { digitalWrite(3, HIGH);// menyalakan pin 3arduino delay(2000); // pause selama 2 detik .digitalWrit(3, LOW); //mematikan pin 3 arduino delay(500); // pause selama 1/2 detik } 10 Kurung kurawal (Curly brace, {}) berfungsi untuk mendefinisikan awal dan akhir dari sebuah blok fungsi. Ketika suatu blok fungsi tidak berisi kurung kurawal maka akan terjadi laporan error ketika di compile. Semicolon (;) berfungsi untuk memberikan batas antara statement program dan statement program lainnya. B. Function Function (fungsi) adalah blok pemrograman yang mempunyai nama dan mempunyai statement yang akan di jalankan ketika fungsi di panggil. Void setup() dan void loop() juga merupakan fungsi pada pemrograman arduino. Adapun fungsi lain dapat dibuat sesuai dengan keperluan. Adapun cara pendeklarasian fungsi adalah sebagai berikut : type functionName(parameters) { //statement; } Contoh: int jumlah() { int a; // membuat variabel ‘a’ bertipe integer a = analogRead(1); // baca nilai pada pin 1 return a; // return nilai a } Pada contoh di atas merupakan fungsi yang memiliki nilai balik int (integer). Jika suatu fungsi tidak membutuhkan adanya nilai balik maka type function harus void. C. Comment Pada pemrograman arduino ada dua jenis comment yaitu blok comment dan line comment. Semua statement yang terdapat pada blok comments tidak akan di jalankan dan tidak di compile pada board arduino sehingga tidak mempengaruhi besar program yang di masukkan ke dalan board arduino. 11 Line comment mempunyai fungsi yang sama seperti blok comment hanya pada line comment semua statement yang berada setelah garis miring (/) tidak akan dijalankan dan di compile pada board arduino. /* block comment */ // line comment D. Variabel Variabel berfungsi sebgai penyimpan nilai yang digunakan pada program. Variabel dapat dirubah nilainya sesuai dengan statement yang dijalankan. Variabel dapat dideklarasikan dengan menentukan tipe variabel dan nilai awal variabel. Type variableName = 0; Variabel yang dideklarasikan pada awal program sebelum void setup() disebut dengan variabel global. Variabel global dapat digunakan pada semua blok fungsi dan statement dalam program. Sedangkan variabel lokal dapat dideklarasikan secara lokal di dalam sebuah fungsi ataupun di dalam suatu blok pengulangan. Variabel lokal hanya dapat digunakan pada blok yang bersangkutan. E. Tipe Data Tabel 2.1 Tipe data bahasa pemrograman arduino. No. 1 Tipe Data Byte Penulisan byte Keterangan Range Tipe data yang dapat menyimpan 0-255 8-bit nilai angka bilangan asli tanapa koma. 2 Integer int Tipe data yang dapat menyimpan -32.768 16-bit nilai bilangan bulat tanpa 32.767 koma. s/d 12 2 Long long Tipe data yang lebih besar dari -2.147.483.648 integer, dapat menyimpan 32-bit s/d nilai bilangan bulat tanpa koma. 3 Float float 2.147.483.647 Tipe data yang dapat menyimpan 32-bit nilai angka bilangan 3.4028235E+38 desimal. s/d 3.4028235E+38 4 Word word Tipe data yang dapat menyimpan 0 s/d 65535 16-bit nilai bilangan bulat tanpa koma. 5 Short short Tipe data yang dapat menyimpan -32.768 s/d 16-bit nilai bilangan sama seperti 32.767 tipe data int. 6 Double double Tipe data yang dapat menyimpan 32-bit nilai angka bilangan 3.4028235E+38 decimal sama seperti tipe data s/d float. 7 Array 3.4028235E+38 tipeData Tipe data array merupakan x[] kumpulan nilai yang dapat di akses dengan indeks number dan perlu dideklarasikan tipe datanya terlebih dahulu. Nilai array dapat di panggil dengan cara menuliskan nama array dan index numbernya. Indeks pada array dimulai dari 0. 8 Boolean boolean Tipe data yang hanya mempunyai dua nilai, yaitu true atau false (benar atau salah). 13 9 Void void Tipe data yang hanya digunakan pada deklarasi fungsi. 10 Char char Tipe data yang dapat menyimpan nilai karakter. 11 String String Tipe data yang berfungsi untuk memanipulasi data teks. F. Operator Aritmatika Operator aritmatika pada bahasa pemrograman arduino terdiri dari penjumlahan (+), pengurangan(-), pengkalian(*), dan pembagian(/). Pemilihan tipe data harus diperhatikan dalam pemilihan operator aritmatika agar tidak terjadi overflow range data. Pada bahasa pemrograman arduino terdapat kombinasi operator aritmatika yang biasanya digunakan pada pengulangan. Berikut operator kombinasi pada bahasa pemrograman arduino : 1. x++; memiliki fungsi menaikan nilai x sebesar 1. 2. x--; memiliki fungsi mengurangi nilai x sebesar 1. 3. x += y; memiliki fungsi sama seperti x = x + y. 4. x -= y; memiliki fungsi sama seperti x = x – y. 5. x *= y; memiliki fungsi sama seperti x = x * y. 6. x /= y; memiliki fungsi sama seperti x = x / y. Pada bahasa pemrograman arduino terdapat operator perbandingan seperti pada bahasa pemrograman yang lain. Operator perbandingan pada bahasa pemrograman arduino membandingkan dua variabel dan apabila terpenuhi akan bernilai 1 atau true. Operator perbandingan ini banyak digunakan dalam operator bersyarat. Berikut operator perbandingan pada bahasa pemrograman arduino : 1. x == y; membandingkan nilai x sama dengan y. 2. x != y; membandingkan nilai x tidak sama dengan y. 3. x < y; membandingkan nilai x lebih kecil dari y. 4. x > y; membandingkan nilai x lebih besar dari y. 5. x <= y; membandingkan nilai x lebih kecil dari sama dengan y. 14 6. x >= y; membandingkan nilai x lebih besar dari sama dengan y. Pada bahasa pemrograman arduino terdapat 3 operator logika yaitu : AND, OR, dan NOT. Operator logika digunakan untuk membandingkan 2 ekspresi dan mengembalikan nilai balik baik benar ataupun salah. Operator logika biasanya digunakan pada if statement. 1. Logika AND Logika AND bernilai benar jika kedua operator perbandingan terpenuhi. Contoh : If ( x > 0 && x < 3) 2. Logika OR Logika OR bernilai benar jika salah satu operator perbandingan terpenuhi. Contoh : If (x < 5 || x = 0) 3. Logika NOT Logika NOT bernilai benar jika ekspresi operator salah. Contoh : If (x != 0) G. Konstanta Arduino mempunyai beberapa variabel konstanta. Konstanta di kelasifikasi berdasarkan group. 1. TRUE / FALSE Merupakan konstanta boolean yang mendefinisikan logika TRUE/FALSE. False mendifinisikan 0 dan True mendifinisikan 1. Contoh : 15 If ( { x == TRUE ); //statement } 2. HIGH / LOW Konstanta HIGH/LOW biasanya digunakan pada saat membaca dan menulis ke pin digital. HIGH di definisikan sebagai 1 sedangkan LOW sebagai 0. digitalWrite( 3, HIGH ); 3. INPUT / OUTPUT Konstanta INPUT/OUTPUT biasanya digunakan pada fungsi pinMode() untuk mendifinisikam mode pin digital sebagai input ataupun sebagai output. pinMode( 3, INPUT ); H. Flow Control 1. If Operator if akan menjalankan statement yang ada di dalamnya jika kondisi pada operator if sudah terpenuhi dan jika kondisi if tidak terpenuhi maka statement yang berada di dalam if akan diabaikan. Contoh : If ( variabel == value ) { //statement } 2. If... else Operator if .. else akan menjalankan statement yang ada di dalamnya apabila kondisi pada operator if sudah terpenuhi dan jika kondisi if tidak terpenuhi maka akan menjalankan statement yang berada di dalam operator else. Contoh : 16 If ( variabel == value ) { // statement } Else { // statement } 3. For Operator for berfungsi untuk melakukan pengulangan statement yang berada di dalam kurung kurawal, sampai kondisi pengulangan terpenuhi. Contoh : For ( initialization; condition; expression ) { // statement; } 4. While Operator berfungsi mengulang statement yang berada di dalam kurung kurawal terus-menerus apabila kondisi terpenuhi. Operator while akan berhenti dijalankan apabila kondisi pengulangan bernilai salah. While ( variabel == value ) { // statement; } 5. Do... while Operator do…while mempunyai fungsi yang sama dengan operator while, tetapi pada operator do…while pengecekan dilakukan diakhir, jadi pengulangan akan tetap dijalankan walaupun kondisi awalnya tidak terpenuhi. Do { // statement; } While ( variabel == value ); 17 I. Digital dan Analog I/O 1. Digital I/O Input / output digital pada board arduino mempunyai jumlah berbedabeda tergantung jenis board arduino yang digunakan. Pada board arduino mega 2560 terdapat 54 pin digital, pengalamatnya mulai 0 - 53, ada saat tertentu I/O 0 dan 1 tidak bisa di gunakan karena di pakai untuk komunikasi serial. Pada fungsi void setup() digunakan mengkonfigurasi pin sebagai input atau output. Pin digital arduino di konfigurasi awal diatur sebagai input sehingga untuk merubahnya harus menggunakan operator pinMode(pin, mode). pinMode (pin, OUTPUT); // mengset pin sebagai output digitalWrite(pin, HIGH); // pin ditulis HIGH digitalRead(pin); //membaca nilai dari pin 2. Analog I/O Input / ouput analog pada board arduino mempunyai jumlah berbeda-beda tergantung jenis board arduino yang digunakan. Pada board arduino mega 2560 terdapat 16 pin analog, pengalamatnya mulai 0 – 15. Membaca nilai pin analog yang memiliki resolusi 10-bit. Fungsi ini hanya dapat bekerja pada analog pin (0-15). Hasil dari pembacaan berupa nilai integer dengan range 0 sampai 1023. analogRead(pin); // membaca nilai analog pin analogWrite(pin, value); // menulis ke pin analog J. Time 1. Delay(ms) Delay berfungsi menghentikan program dalam waktu tertentu dengan satuan millisecond. delay(2000); // menunggu selama dua detik 18 2. Millis() Millis berfungsi mengembalikan nilai dalam millisecond dihitung sejak arduino board menyala. Penapungnya harus long integer. x = millis(); // set ‘x’ equal to millis() K. Math 1. Min(x,y) Min(x,y) berfungsi mengembalikan nilai yang paling kecil dengan membandingkan kedua variabel. 2. Max(x,y) Max(x,y) merupakan kebalikan dari min, berfungsi mengembalikan nilai yang paling kecil dengan membandingkan kedua variabel. L. Serial 1. Serial.begin(rate) Statement yang berfungsi untuk mengaktifkan komunikasi serial dan mengset baudrate. Contoh : / void setup() { Serial.begin(9600);//mengaktifkan serial port //mengatur baudrate 9600 bps } 2. Serial.prinln(x) Berfungsi mengirimkan x ke serial port. Contoh : Serial.println(25); // mengirimkan 25 dan 19 2.2.3.2 Arduino uno Arduino Uno adalah board berbasis mikrokontroler pada ATmega328. Board ini memiliki 14 digital input / output pin (dimana 6 pin dapat digunakan sebagai output PWM), 6 input analog, 16 MHz osilator kristal, koneksi USB, jack listrik tombol reset. Pin-pin ini berisi semua yang diperlukan untuk mendukung mikrokontroler, hanya terhubung ke komputer dengan kabel USB atau sumber tegangan bisa didapat dari adaptor AC-DC atau baterai untuk menggunakannya. Gambar 2.4 Arduino Uno Sumber : http://www.arduino.cc/ Arduino Uno adalah perangkat mikrokontroller yang terbaru dalam serangkaian papan Arduino USB, dan model referensi untuk platform Arduino, untuk perbandingan dengan versi sebelumnya dapat dilihat pada tabel 2.3 sebagai berikut : Tabel 2.2 Spesifikasi dari Arduino Uno ATmega 328 Mikrokontroler ATmega328 Tegangan Operasi 5V Input Tegangan (disarankan) 7-12V Input Tegangan (batas) 6-20V Digital I / O Pins Pins Masukan Analog 14 (dimana 6 memberikan output PWM) 6 20 DC Current per I / O Pin 40 mA DC saat ini untuk 3.3V Pin 50 mA Flash Memory 32 KB (ATmega328) yang 0,5 KB digunakan oleh bootloader SRAM 2 KB (ATmega328) EEPROM 1 KB (ATmega328) Kecepatan Jam 16 MHz A. Catu daya arduino uno Arduino uno dapat diaktifkan melalui koneksi USB atau dengan catu daya eksternal. Sumber listrik dipilih secara otomatis. Eksternal (non-USB) daya dapat datang baik dari AC-DC adaptor atau baterai. Adaptor ini dapat dihubungkan dengan cara menghubungkannya plug pusat-positif 2.1mm ke dalam board colokan listrik. Lead dari baterai dapat dimasukkan ke dalam header pin Gnd dan Vin dari konektor Power. Board dapat beroperasi pada pasokan daya dari 6 - 20 volt. Jika diberikan dengan kurang dari 7V pin 5V akan menyuplai kurang dari 5 volt dan board mungkin tidak stabil. Jika menggunakan lebih dari 12V, regulator tegangan bisa panas dan merusak board. Rentang yang dianjurkan adalah 7 - 12 volt. 2.2.4 Data logger shield Data Logger Shield merupakan shield yang digunakan untuk melakukan penyimpanan data (data logging) pada SD Card, dimana shield ini kompetibel dengan arduino uno, Duemilanove, Diecimila, Leonardo, Mega R3/Mega ADK. Shield ini dilengkapi dengan RTC (Real Time Clock) yang digunakan untuk mengetahui waktu penyimpanan data yang dilakukan, meskipun arduino yang digunakan sudah tidak teraliri power RTC akan tetap berjalan karena terdapat baterai pada modul ini, sehingga proses penyimpanan selanjutnya tetap akan memberikan waktu yang sesuai. Data logger shield ini dibuat menyerupai breadboard sehingga dapat memudahkan dalam meletakkan sensor, resistor, 21 transistor, IC, atau komponen lain di saat sedang membuat sebuah perangkat embedded. 2.2.4.1 SD card slot SD Card Slot digunakan utuk menyisipkan SD Card. Hal ini memungkinkan sistem untuk melakukan penyimpanan atau data logging untuk penyimpanan data sistem, sehingga data-data yang dihasilkan dari sistem yang dibuat dapat secara otomatis tersimpan dalam SD Card. Berikut ini adalah gambar dari skematik SD Card Slot. 2.2.4.2 RTC (real time clock) Pada data logger shield ini dilengkapi dengan RTC (Real Time Clock), dimana Real Time Clock merupakan suatu chip (IC) yang memiliki fungsi sebagai penyimpan waktu dan tanggal. RTC yang digunakan pada data logger shield ini adalah DS 1307. Dimana DS 1307 merupakan RTC menggunakan jalur data parallel yang dapat menyimpan data-data detik, menit, jam, tanggal, bulan, hari dalam seminggu, dan tahun valid hingga 2100. Secara otomatis bulan dan tanggal akan disesuaikan untuk bulan yang kurang dari 31 hari termasuk untuk tahun yang akan datang. Operasi jam baik 24 jam atau 12 jam dengan format indikator AM/PM. 2.2.5 LCD LCD (Liquid Cristal Display) adalah salah satu jenis display elektronik yang dibuat dengan teknologi CMOS logic yang bekerja dengan tidak menghasilkan cahaya tetapi memantulkan cahaya yang ada di sekelilingnya terhadap front-lit atau mentransmisikan cahaya dari back-lit. LCD (Liquid Cristal Display) berfungsi sebagai penampil data baik dalam bentuk karakter, huruf, angka ataupun grafik. LCD adalah lapisan dari campuran organik antara lapisan kaca bening dengan elektroda transparan indium oksida dalam bentuk tampilan seven-segment dan lapisan elektroda pada kaca belakang. Ketika elektroda diaktifkan dengan medan listrik (tegangan), molekul organik yang panjang dan silindris 22 menyesuaikan diri dengan elektroda dari segmen. Lapisan sandwich memiliki polarizer cahaya vertikal depan dan polarizer cahaya horisontal belakang yang diikuti dengan lapisan reflektor. Cahaya yang dipantulkan tidak dapat melewati molekul-molekul yang telah menyesuaikan diri dan segmen yang diaktifkan terlihat menjadi gelap dan_membentuk_karakter_data_yang_ingin_ditampilkan. Huruf atau angka yang dihasilkan pada LCD merupakan kode ASCII, kode ASCII yang ditampilkan merupakan proses dari bagian mikrokontroler yang mengolah titik-titik LCD menjadi angka ataupun huruf. Adapun fitur yang dimiliki LCD ini adalah : a. Terdiri dari 2 baris dan masing-masing 16 karakter. b. Mempunyai karakter generator terprogram. c. Terdapat kode ASCII 192 karakter. d. Dilengkapi dengan back light. e. Dapat dialamati dengan mode 4-bit dan 8-bit. Gambar 2.5 LCD 16 x 2 Karakter Sumber : http://www.emartee.com Adapun deskripsi pin pada LCD adalah sebagai berikut : Pin 1 = Ground. Pin 2 = Vcc. Pin 3 = Pengatur kontras. Pin 4 = Register Select (RS). Pin 5 = Read/Write (R/W) LCD Registers. Pin 6 = Enable (EN) Pin 7 s/d 14 = Data Input / Output Pins 23 Pin 15 = Vcc Pin 16 = Ground 2.2.5.1 Cara kerja LCD Interface LCD merupakan sebuah bus paralel yang berfungsi mempermudah dan mempercepat proses pembacaan dan penulisan data dari LCD. Kode ASCII yang ditampilkan pada LCD sepanjang 8 bit. Pengiriman data ke LCD dapat dilakukan dengan 2 cara yaitu secara 4 bit dan secara 8 bit. Jika menggunakan jalur 4 bit maka yang digunakan adalah DB4 sampai DB7 dan data akan dikirim dua kali yaitu 4 bit MSB kemudian 4 bit LSB dengan pulsa EN setiap pengirimannya, sedangkan jalur 8 bit menggunakan DB0 sampai DB7. Mode 8 bit sangat baik digunakan ketika kecepatan merupakan keutamaan dalam sebuah aplikasi tetapi jika menggunakan mode 8 bit dibutuhkan 11 pin I/O yaitu 3 pin untuk kontrol, 8 pin data. Berbeda dengan mode 4 bit hanya membutuhkan 7 pin yaitu 3 pin kontrol dan 4 pin data. Jalur kontrol EN digunakan untuk menginformasikan bahwa mikrokontroler mengirimkan data ke LCD. Agar dapat mengirimkan data ke LCD, jalur kontrol EN harus di atur dalam kondisi high “1”, mengatur jalur kontrol RS, R/W dan mengirimkan data ke jalur data bus. Jalur control RS digunakan untuk memilih data yang akan dikirimkan ke LCD. Pada saat jalur kontrol RS dalam kondisi low “0”, maka data yang dikirimkan ke LCD dianggap sebagai intruksi khusus seperti : membersihkan layar, set kursor, dan lain-lain. Ketika RS dalam konsisi high “1” maka data yang dikirimkan adalah data ASCII yang akan ditampilkan di layar. Jalur kontrol R/W harus berada dalam kondisi low “0” pada saat informasi akan dituliskan ke LCD, karena jika R/W berada dalam kodiri high “1” maka program akan melakukan query data dari LCD yaitu mengambil status LCD.