Anda di halaman 1dari 108

PLAGIAT

PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

TUGAS AKHIR

PENGATURAN TIRAI BERDASARKAN


WAKTU NYATA

Diajukan untuk Memenuhi Salah Satu Syarat


Memperoleh Gelar Sarjana Teknik
Program Studi Teknik Elektro

Oleh:

ANINDITYA DICHI SAPTARINI


NIM: 085114009

PROGRAM STUDI TEKNIK ELEKTRO


JURUSAN TEKNIK ELEKTRO
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2014

i
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

FINAL PROJECT

CURTAIN CONTROL BASED ON


REAL TIME CLOCK

Presented as Partial Fullfillment of Requirements


To Obtain the Sarjana Teknik Degree
In Electrical Engineering Study Program

ANINDITYA DICHI SAPTARINI


NIM: 085114009

ELECTRICAL ENGINEERING STUDY PROGRAM


DEPARTMENT OF ELECTRICAL ENGINEERING
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2014

ii
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

HALAMAN PERSETUJUAFI

TUGAS AKHIR

PENGATURAN TIRAI BERDASARKAN


WAKTU NTYATA
(CURTAIN CQNTROL WITH REAL TIME CLOCK)

ffi6#ffi
ffifi;

ranggal : 24 ol2Ol4

1u
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

HALAMAN PENGESAHAN

TUGAS AKHIR ,
,

PENGATURAN TIRAI BERDASARKA}I


WAKTUI\IYATA

Tanda Tangan

Ketua

Sekretaris

Anggota Martanto, S.T., M.T.

Yoryakarta,Zg 3q^ 2ot4


Fakultas Sains dan Teknologi

Universitas Sanata Dharma

PrimaRosa, S.Si., M.Sc. ,


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

. PERSIYATAA}T KEASLIAN KARYA

*Saya meirydakan dengan sesmgguhya hhwa tugas akhir yang siya tutis ini

tidak me,muat karya eu bagian karya orang lain,


kecuali yeg tetah disobr*kan datam hrtipm dm ddar pudq
sebgaimsna lfrrnaknya kary& ilmiah."

v
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

HALAMAN PERSEMBAHAN DAN MOTTO HIDUP

MOTTO

Belajarlah dari siapapun, apapun, kapanpun, dimanapun


karena pada suatu saat hal itu akan bermanfaat bagi diri kita sendiri
dan kita akan berterima kasih pada diri kita sendiri karena hal itu.

Dengan ini kupersembahkan karyaku untuk


Tuhan Yesus Kristus dan Bunda Maria
Keluargaku tercinta
Teman-teman seperjuangan
Kekasih hatiku
Dan semua orang yang mengasihiku
Terima kasih untuk semuanya........

vi
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

IIALAMAN PER}TYATAAN PERSETUJUAI{


PUBLIKASI KARYA ILMIAH UNTUK
KEPENTINGAN AKADEMIS

Yaag bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata Dharma :

Nama : Aninditya Dichi Saptarini

Nomor Mahasiswa : 0851 14009

Demi pengembangan ilmu pengetahuan, saya memberikan kepada Perpustakaan


Universitas Sanata Dharma karya ilmiah saya yang berjudul :

PENGATIIRAN TIRAI BERDASARKAI\ WAKTU hIYATA

beserta peraagkat yang diperlukan (bila ada). Dengan demikian saya memberikan kepada

Perpustakaan Universitas Sanata Dharma hak rmtuk menyimpan, mengalihkan dalam

bentuk media lain, mengelolanya dalaur bentuk pangkalan data, mendistribusikan secara

terbatas, dan mempublikasikannya di intenret atau media lain untuk kepentingan akademis

tanpa perlu meminta ljin dari saya maupun memberikan royalti kepada saya selama tetap

mencantumkan nama saya sebagai penulis.

Demikian pernyataan ini yang sayabuat dengan sebenarnya.

Yogyakarta" 18 Desember 2013

v11
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

INTISARI

Setiap orang menginginkan segala sesuatu dapat dilakukan secara otomatis dan
mudah. Salah satu contohnya adalah membuka dan menutup tirai. Banyak rumah berjendela
besar menyulitkan penghuni rumah jika harus membuka dan menutup tirai berulang kali.
Padahal banyak manfaat sinar matahari yang masuk ke dalam ruangan jika tirai dibuka.
Pengaturan tirai secara otomatis membantu penghuni rumah untuk membuka tirai diwaktu
tertentu.
Pengguna terlebih dahulu memasukkan data waktu menggunakan keypad. Ada dua
menu pada alat yang dibuat yaitu menu otomatis dan menu manual. Pada menu otomatis,
pengguna dapat memilih 1 dari 7 mode yang sudah disediakan, sedangkan pada menu manual
pengguna dapat memasukkan waktu secara bebas sampai 3 kali. Mikrokontroler ATmega32
mengendalikan sistem sehingga saat data waktu masukan sama dengan waktu yang berjalan,
motor akan berputar membuka atau menutup tirai sampai limit switch tertekan dan motor
akan berhenti.
Hasil tugas akhir yang dirancang menggunakan mikrokontroler ATmega32 ini berupa
prototipe pengaturan tirai berdasarkan waktu nyata berhasil dibuat dan bekerja dengan baik.
Waktu nyata dirancang menggunakan RTC DS1307 dengan kesalahan 0 % dan waktu
ditampilkan pada LCD.

Kata kunci: tirai, RTC DS1307, ATmega32

viii
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

ABSTRACT

Everyone wants everything done automatically and easily. One of the examples is to
open and close the curtains. A house with lots of large windows complicate occupants when
they have to open and close the curtains repeatedly. Whereas there are many benefits of
sunlight entering the room when the curtain opened. Setting curtain automatically will help
occupants to open the curtain in certain time.
First, the user need to insert time using keypad. There are two options in the
appliance; automatic menu and manual menu. In the automatic menu, the user just need to
select one of seven provided mode, while on the manual menu the user can manually enter a
time freely until 3 inputs. ATmega32 microcontroller controls the system, so when the input
data time equal to the running time, the motor will rotate to open or close the curtains until
limit switch is pressed and the motor will stop.
The results of the final project which is designed by using the ATmega32
microcontroller prototype curtain arrangement based on real time has successfully created
and worked well. Real time is designed using DS1307 RTC with an error 0 % and the time
displayed on the LCD.

Keywords: curtain, RTC DS1307, ATmega32

ix
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

KATAPENGANTAR
Puji dan syukur penulis panjatkan kepada Tuhan Yesus Kristus karena telah
memberikan berkat-Nya sehingga penulis dapat menyelesaikan laporan akhir ini dengan
baik. Laporan akhir ini disusun untuk memenuhi syarat memperoleh gelar sarjana.
Penulis mengucapkan terima kasih kepada :

1. Dekan Fakultas Sains dan Teknologi Universitas Sanata Dharma Yogyakarta.


2. Ketua Program Studi Teknik Elekho Universitas Sanata Dharma Yogyakarta.
3. k. Tjendro, M.Kom., dosen pembimbing yang dengan penuh pengertian dan
ketulusan hati memberi bimbingan, kritilq saran, serta motivasi dalam penulisan
skripsi ini.
4. B. Wuri Haxini, S.T., M.T., dan Martanto, S.T., M.T., dosen penguji yang telah
memberikan masukan, bimbingan, saran dalam merevisi sluipsi ini.
5. Kedua orang tua dan adik-adik saya, atas dukungan, doa, cintq perhatian, kasih
sayang yang tiada henti.

6. Staffsekretariat Teknik Elekho, atas bantuan dalam melayani matrasiswa.


7. Jonatan Bagas, atas perhatian, sernangat dan dengan setia mendukung saya dalam
menyelesaikan skripsi ini.
8. Maria Ratna dan Rian, yang selalu mendukung dalam proses penyelesaian skripsi
ini.
9. Teman-teman seperjuangan Teknik Elekho angkatan 2008, teman-teman OMK
Laurensius, Socchissora Choir, dan semua teman yang mendukung saya dalam
menyelesaikan skripsi ini.
10. Semua pihak yang tidak dapat disebutkan satu persatu atas semua dukungan yang

telatr diberikan dalam penyelesaian slaipsi ini.


Penulis menyadari bahwa dalam penyusunan laporan alfiir ini masih mengalami
kesulitan dan tidak lepas dari kesalatran. Oleh karena itu, penulis mengharapkan masukan,
kritik dan saran yang membangun agar skripsi ini menjadi lebih baik. Dan semoga skripsi
ini dapat bermanfaat sebagaimana mestinya.

Penulis
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

DAFTAR ISI

HALAMAN JUDUL................................................................................................ i
HALAMAN PERSETUJUAN ............................................................................. iii
HALAMAN PENGESAHAN ............................................................................... iv
PERNYATAAN KEASLIAN KARYA ........................................................... v
HALAMAN PERSEMBAHAN DAN MOTTO HIDUP ........................... vi
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA
ILMIAH UNTUK KEPENTINGAN AKADEMIS ..................................... vii
INTISARI ................................................................................................................... viii
ABSTRACT .............................................................................................................. ix
KATA PENGANTAR ............................................................................................ x
DAFTAR ISI ............................................................................................................. xi
DAFTAR GAMBAR .............................................................................................. xiv
DAFTAR TABEL .................................................................................................... xvii
DAFTAR LAMPIRAN.......................................................................................... xviii
BAB I PENDAHULUAN
1.1 Latar Belakang ................................................................................................. 1
1.2 Tujuan dan Manfaat.......................................................................................... 2
1.3 Batasan Masalah............................................................................................... 2
1.4 Metodologi Penelitian ...................................................................................... 2

BAB II DASAR TEORI


2.1 Mikrokontroler ATmega8535 .......................................................................... 4
2.1.1 Arsitektur ATmega8535........................................... …………………. 4
2.1.2 Peta Memori ATmega8535........................................ …………………. 4
2.1.3 Reset .......................................................................... …………………. 7
2.1.4 Osilator Eksternal ....................................................... …………………. 7
2.1.5 Timer/Counter1 .......................................................... …………………. 8

xi
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

2.1.5.1 Register Pengendali Timer1 .................... ......…………………. 8


2.1.6 Mode Operasi ............................................................. …………………. 13
2.2 Real Time Clock DS1307 ................................................................................. 17
2.3 Komunikasi I2C ................................................................................................ 18
2.4 Liquid Crystal Display (LCD) 2x16................................................................. 21
2.5 Light-Emitting Diode (LED) ............................................................................ 24
2.6 Keypad ............................................................................................................... 25
2.7 Motor DC 12V.................................................................................................. 26
2.8 Limit Switch ..................................................................................................... 26
2.9 L298.................................................................................................................. 27

BAB III PERANCANGAN


3.1 Proses Kerja Sistem............................................................. …………………. 29
3.2 Perancangan Prototipe......................................................... …………………. 30
3.3 Perancangan Perangkat Keras .......................................................................... 31
3.3.1 Sistem Minimum ATmega8535 ................................. …………………. 31
3.3.2 Rangkaian LCD 2x16................................................. …………………. 33
3.3.3 Sensor LM35 .............................................................. …………………. 32
3.3.4 Rangkaian Motor DC ................................................. …………………. 34
3.3.5 Keypad........................................................................ …………………. 36
3.4 Perancangan Perangkat Lunak ......................................................................... 37
3.4.1 Diagram Alir Sistem…………………………………………………..... 37
3.4.2 Diagram Alir Pengaturan RTC................................... …………………. 38
3.4.3 Diagram Alir Subrutin Menu ..................................... …………………. 38
3.4.4 Diagram Alir Proses ................................................... …………………. 40

BAB IV HASIL DAN PEMBAHASAN


4.1. Hasil Implementasi Alat................................................................................... 42
4.2. Pengujian Keberhasilan Sistem ........................................................................ 45
4.3. Pengujian Rangkaian Penyearah ......................................... …………………. 47
4.4. Pengujian Rangkaian Penggerak ......................................... …………………. 48
4.5. Pengujian Rangkaian RTC ............................................................................... 48
4.6. Pembahasan Perangkat Lunak.......................................................................... 49

xii
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

4.6.1. Program Sistem ......................................................... …………………. 49


4.6.2. Program Pengaturan RTC ......................................... …………………. 51
4.6.3. Program Menu........................................................... …………………. 55
4.6.4. Program EEPROM .................................................... …………………. 56
4.6.5. Program Subrutin Menu ............................................ …………………. 57
4.6.6. Program Proses.......................................................... …………………. 61

BAB V KESIMPULAN DAN SARAN


5.1. Kesimpulan....................................................................................................... 62
5.2. Saran................................................................................................................. 62
DAFTAR PUSTAKA .............................................................................................. 63
LAMPIRAN ............................................................................................................... 64

xiii
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

DAFTAR GAMBAR

Halaman
Gambar 1.1. Diagram blok perancangan...................................................................... 3
Gambar 2.1. Konfigurasi pin Atmega8535 .................................................................. 5
Gambar 2.2. Rangkaian reset ....................................................................................... 7
Gambar 2.3. Kristal (XTAL)........................................................................................ 8
Gambar 2.4. Pulsa Fast PWM...................................................................................... 15
Gambar 2.5. Pulsa Phase Correct PWM...................................................................... 16
Gambar 2.6. Diagram blok DS1307............................................................................. 17
Gambar 2.7. Konfigurasi pin RTC DS1307 ................................................................. 17
Gambar 2.8. Konfigurasi umum DS1307 dengan mikrokontroler ............................... 19
Gambar 2.9. Urutan-urutan Slave Receiver Mode (Write Mode) ....................................... 20
Gambar 2.10. Urutan-urutan Slave Transmitter Mode (Read Mode)............................ 20
Gambar 2.11. Baris dan Kolom Karakter pada LCD ..................................................... 22
Gambar 2.12. LCD 2x16 ................................................................................................ 22
Gambar 2.13. Konfigurasi LED ..................................................................................... 24
Gambar 2.14. Rangkaian indikator LED........................................................................ 25
Gambar 2.15. Rangkaian keypad.................................................................................... 25
Gambar 2.16. Konstruksi motor DC .............................................................................. 26
Gambar 2.17. Konstruksi limit switch ............................................................................ 26
Gambar 2.18. Limit Switch ............................................................................................. 27
Gambar 2.19. Diagram blok L298.................................................................................. 27
Gambar 2.20. Konfigurasi pin L298 .............................................................................. 28
Gambar 3.1. Diagram blok perancangan...................................................................... 29
Gambar 3.2. Desain tampak belakang.......................................................................... 30
Gambar 3.3. Desain tampak dari dalam ....................................................................... 30
Gambar 3.4. Sistem minimum ATmega8535............................................................... 31
Gambar 3.5. Rangkaian sistem minimum ATmega8535 ............................................. 32
Gambar 3.6. Rangkaian LCD ....................................................................................... 33
Gambar 3.7. Rangkaian RTC DS1307 ......................................................................... 34
Gambar 3.8. Rangkaian driver L298............................................................................ 35

xiv
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

Gambar 3.9. Rangkaian keypad 4x4............................................................................. 36


Gambar 3.10. Diagram alir sistem.................................................................................. 37
Gambar 3.11. Diagram alir pengaturan RTC ................................................................. 38
Gambar 3.12. Diagram alir menu manual ...................................................................... 39
Gambar 3.13. Diagram alir menu otomatis .................................................................... 40
Gambar 3.14. Diagram alir proses.................................................................................. 41
Gambar 4.1. Prototipe ruangan..................................................................................... 42
Gambar 4.2. Perbandingan compiler program ............................................................ 42
Gambar 4.3. Rangkaian mikrokontroler....................................................................... 44
Gambar 4.4. Rangkaian driver ..................................................................................... 44
Gambar 4.5. Rangkaian RTC ...................................................................................... 44
Gambar 4.6. LCD ......................................................................................................... 44
Gambar 4.7. Rangkaian Penyearah 6 Volt ................................................................... 44
Gambar 4.8. Rangkaian Penyearah 12 Volt ................................................................. 44
Gambar 4.9. Keypad 4x4.............................................................................................. 44
Gambar 4.10. Frekuensi pada RTC ................................................................................ 48
Gambar 4.11. Listing program inisialisasi...................................................................... 49
Gambar 4.12. Tampilan awal ......................................................................................... 49
Gambar 4.13. Listing program sistem ............................................................................ 50
Gambar 4.14. Inisialisasi port komunikasi RTC............................................................ 51
Gambar 4.15. Listing program setting tanggal ............................................................... 51
Gambar 4.16. Tampilan setting tanggal ......................................................................... 52
Gambar 4.17. Listing batasan masukan tanggal ............................................................. 52
Gambar 4.18. Tampilan jika data masukan dari keypad salah ....................................... 52
Gambar 4.19. Listing program memasukkan data hari .................................................. 52
Gambar 4.19. (lanjutan) Listing program memasukkan data hari.................................. 53
Gambar 4.20. Tampilan pilihan hari .............................................................................. 53
Gambar 4.21. Listing nama hari ..................................................................................... 53
Gambar 4.22. Listing program setting waktu ................................................................. 54
Gambar 4.23. Tampilan setting waktu ........................................................................... 54
Gambar 4.24. Listing batas masukan waktu................................................................... 54
Gambar 4.25. Tampilan waktu, tanggal, dan hari .......................................................... 55
Gambar 4.26. Submenu pada sistem .............................................................................. 55

xv
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

Gambar 4.27. Listing program menu.............................................................................. 56


Gambar 4.28. Listing program EEPROM ...................................................................... 56
Gambar 4.29. Listing program menu otomatis............................................................... 57
Gambar 4.30. Tampilan setelah memilih menu otomatis............................................... 57
Gambar 4.31. Tampilan memilih mode 1 pada menu otomatis ..................................... 57
Gambar 4.32. Listing program waktu buka .................................................................... 58
Gambar 4.33. Tampilan memasukkan waktu buka ........................................................ 58
Gambar 4.34. Listing program waktu tutup ................................................................... 58
Gambar 4.34. (lanjutan) Listing program waktu tutup................................................... 59
Gambar 4.35. Tampilan memasukkan waktu tutup........................................................ 59
Gambar 4.36. Listing program menu manual................................................................. 59
Gambar 4.37. Tampilan waktuBuka[i]>=waktuTutup[i] ............................................... 60
Gambar 4.38. Tampilan waktuBuka[i]<waktuTutup[i-1] .............................................. 60
Gambar 4.39. Tampilan menambah data masukan pada menu manual ......................... 60
Gambar 4.40. Tampilan data masukan menu manual setelah 3 pasang data ................. 60
Gambar 4.41. Pengaturan PWM.................................................................................... 61
Gambar 4.42. Listing program proses ............................................................................ 61

xvi
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

DAFTAR TABEL
Halaman
Tabel 2.1. Fungsi khusus port B .................................................................................... 6
Tabel 2.2. Fungsi khusus port C .................................................................................... 6
Tabel 2.3. Fungsi khusus port D ................................................................................... 7
Tabel 2.4. Register TCCR1A ......................................................................................... 8
Tabel 2.5. Mode normal dan CTC ................................................................................. 9
Tabel 2.6. Mode Fast PWM .......................................................................................... 9
Tabel 2.7. Mode Phase Correct dan Phase & Frekuensi PWM.................................... 9
Tabel 2.8. Mode operasi ................................................................................................ 10
Tabel 2.9. Register TCCR1B ......................................................................................... 10
Tabel 2.10. Prescaler timer/counter1 .............................................................................. 11
Tabel 2.11. Register 1A .................................................................................................. 11
Tabel 2.12. Register 1B .................................................................................................. 12
Tabel 2.13. Register 1 ..................................................................................................... 12
Tabel 2.14. Register TIMSK .......................................................................................... 12
Tabel 2.15. Register TIFR .............................................................................................. 13
Tabel 2.16. Register-register pada DS1307 ................................................................... 21
Tabel 2.17. Fungsi Pin-pin LCD .................................................................................... 23
Tabel 3.1. Penggunaan port-port pada mikrokontroler ............................................... 32
Tabel 3.2. Penggunaan tombol pada keypad ................................................................ 34
Tabel 4.1. Hasil pengujian pergerakan motor pada menu otomatis ............................. 46
Tabel 4.2. Hasil pengujian limit switch pada menu otomatis ....................................... 46
Tabel 4.3. Hasil pengujian pergerakan motor pada menu manual ............................... 46
Tabel 4.4. Hasil pengujian limit switch pada menu manual ......................................... 47
Tabel 4.5. Hasil pengujian tegangan keluaran penyearah ............................................ 47
Tabel 4.6. Hasil pengujian rangkaian driver ................................................................ 48

xvii
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

DAFTAR LAMPIRAN

L.1. Hasil pengujian pergerakan motor pada menu otomatis...................................... L1


L.2. Hasil pengujian limit switch pada menu otomatis ............................................... L2
L.3. Hasil pengujian pergerakan motor pada menu manual dengan 1 pasang data
masukan ............................................................................................................... L3
L.4. Hasil pengujian pergerakan motor pada menu manual dengan 2 pasang data
masukan ............................................................................................................... L3
L.5. Hasil pengujian pergerakan motor pada menu manual dengan 3 pasang data
masukan ............................................................................................................... L3
L.6. Hasil pengujian limit switch pada menu manual dengan 1 pasang data masukan
............................................................................................................ .................. L4
L.7. Hasil pengujian limit switch pada menu manual dengan 2 pasang data masukan
............................................................................................................ .................. L4
L.8. Hasil pengujian limit switch pada menu manual dengan 3 pasang data masukan
............................................................................................................ .................. L4
L.9. Listing Program Keseluruhan ............................................................................ ... L5
L.10. Rangkaian Keseluruhan ........................................................................................ L27

xviii
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

BAB I
PENDAHULUAN

1.1. Latar Belakang


Pada dasarnya sebagian besar manusia ingin hidup serba enak. Seiring
perkembangan zaman yang semakin pesat berbagai peralatan elektronik diciptakan
menggunakan kendali jarak jauh maupun otomatis. Dalam perkembangan selanjutnya tidak
hanya menuntut manusia akan kebutuhannya tetapi juga gaya hidup peradaban modern.
Pada perumahan di daerah perkotaan misalnya, peralatan elektronik yang yang memakai
kendali jarak jauh maupun otomatis dan banyak dijumpai adalah air conditioner (AC) dan
remote televisi.
Setiap orang menginginkan segala sesuatu dapat dilakukan secara otomatis dan
mudah, salah satu contohnya adalah membuka dan menutup tirai. Kesibukan pekerjaan
maupun aktivitas sehari-hari menyebabkan manusia tidak memilih untuk membuka tirai
pada pagi hari padahal banyak sekali manfaat yang didapat saat tirai terbuka. Seperti yang
diketahui manfaat sinar matahari di pagi hari yang masuk ke ruangan dapat menyirkulasi
udara sehingga udara dalam ruangan bisa lebih segar dan sejuk. Pencahayaan pada ruangan
sebaiknya bersumber pada cahaya alami sehingga selain sehat juga dapat menghemat
energi pada siang hari dan tidak perlu menyalakan lampu di siang hari. Selain sebagai
sumber vitamin D pada pagi hari, sinar matahari juga bisa berfungsi untuk membunuh
beberapa jenis jamur dan bakteri negatif. Cahaya alami (yang berasal dari matahari) yang
masuk ke dalam ruangan dapat membersihkan ruangan sekaligus menghangatkan ruangan
agar tidak lembab [1].
Bagi penghuni rumah yang memiliki jendela besar tentu akan merasa kesulitan saat
harus menarik tali untuk membuka tirai dan menutup tirai jika dalam satu hari harus
melakukannya berulang kali. Dengan adanya tirai otomatis, maka dalam prosesnya akan
memudahkan pekerjaan manusia menjadi lebih efisien untuk mengerjakan sesuatu yang
lain dan penghematan waktu bagi mereka yang memiliki jendela besar. Melihat situasi
yang terjadi maka perlu didesain tirai otomatis untuk memenuhi kebutuhan manusia dalam
hal membuka dan menutup tirai secara otomatis diwaktu-waktu tertentu.
Penulis ingin mengaplikasikan suatu karya yang praktis dan berguna bagi masyarakat
dalam kehidupan sehari-hari. Hal inilah mendasari penulis untuk mengambil tema dalam

1
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
2

tugas akhir yang berjudul “Pengaturan Tirai Berdasarkan Waktu Nyata”. Sistem ini akan
membandingkan waktu nyata (berdasarkan pembagian waktu wilayah) dengan data yang
dipilih oleh pengguna. Jika waktu keduanya sama maka mikrokontroler sebagai pengendali
sistem akan menggerakkan motor secara otomatis untuk membuka atau menutup tirai.
Penulis melihat bahwa penggunaan tirai otomatis akan memeroleh tanggapan positif di
bidang arsitektur karena akan memiliki daya jual yang tinggi pada suatu proyek properti.

1.2. Tujuan dan Manfaat Penelitian


Tujuan penelitian ini adalah menghasilkan prototipe ruangan berupa tirai otomatis
menggunakan Real Time Clock (RTC) DS1307 dengan mikrokontroler ATmega8535.
Manfaat penelitian ini sebagai alat yang praktis untuk mempermudah memasukkan
unsur cahaya matahari ke dalam ruangan diwaktu-waktu tertentu.

1.3. Batasan Masalah


Penelitian dibatasi pada pembuatan prototipe sebagai sarana menyimulasikan alat
dengan menggunakan RTC dan program pengaksesan data untuk mengendalikan arah
putaran motor DC dengan masukan dari keypad.
Batasan masalah dalam penelitian ini adalah:
a. Menggunakan mikrokontroler ATmega8535
b. Menggunakan Real Time Clock (RTC) DS1307
c. Menggunakan driver seri L298
d. Penggerak tirai menggunakan motor DC 12V
e. Menyimpan 7 mode buka-tutup tirai sebagai menu otomatis dan 1 menu manual

1.4. Metodologi Penelitian


Berdasarkan tujuan yang ingin dicapai maka metode-metode yang digunakan dalam
penyusunan tugas akhir ini adalah:
a. Studi Literatur
Studi literatur yang dimaksudkan adalah mengumpulkan dan mencari literatur dari
buku, artikel maupun dari sumber lain yang menunjang dari perencanaan dan yang
berkaitan dengan masalah yang dibahas dalam tugas akhir ini.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
3

b. Perancangan subsistem hardware dan software


Perancangan bertujuan untuk memeroleh rancangan dari sistem tirai yang secara
otomatis bekerja saat dibutuhkan. Dalam perancangan ini ada proses yang
dikendalikan yaitu gerak arah putaran motor DC.
Rancangan hardware adalah untuk menentukan piranti-piranti yang dibutuhkan
selama proses dan juga rangkaian-rangkaian elektronika yang akan digunakan.
Sistem mekanik yang diperlukan untuk menggerakkan pengait tirai adalah motor DC
dan dari segi elektronika adalah rangkaian driver, sistem minimum mikrokontroler
dan rangkaian RTC. Untuk menjalankan sistem ini dibutuhkan rancangan software
yang meliputi pembuatan program dan logika-logika yang diperlukan untuk
mengendalikan gerak motor DC berdasarkan data masukan waktu nyata.
c. Pembuatan subsistem hardware dan software
Berdasarkan gambar 1.1., rangkaian akan bekerja saat pengguna memasukkan data
dengan mengatur pada waktu tertentu untuk membuka atau menutup tirai. Setelah
diproses, maka mikrokontroler mengendalikan driver agar motor bergerak searah
jarum jam atau berlawanan dengan arah jarum jam sesuai dengan posisi awal tirai.

Penampil

RTC Mikrokontroler Driver motor

Masukan Motor DC

Gambar 1.1. Diagram blok perancangan

d. Proses pengambilan data.


Pengambilan data dilakukan dengan cara mengatur masukan dari keypad pada pukul
berapa tirai akan dibuka atau ditutup secara manual maupun otomatis. Setelah itu
dilakukan pengamatan pada arah gerakan motor DC untuk dapat membuka maupun
menutup tirai dan pengamatan terhadap ketepatan waktu.
e. Analisis dan penyimpulan hasil percobaan.
Analisis data dilakukan dengan melihat persentase kesalahan yang terjadi pada
sistem, yaitu pada hardware dan software. Kesimpulan berupa hasil perancangan
yang terjadi.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

BAB II
DASAR TEORI

2.1 Mikrokontroler ATmega8535


Mikrokontroler adalah sebuah sistem microprocessor yang didalamnya sudah
terdapat CPU, ROM, RAM, I/O, clock dan peralatan internal lainnya yang sudah saling
terhubung dan terorganisasi (teralamati) dengan baik oleh pabrik pembuatnya dan dikemas
dalam satu chip yang siap pakai [2]. Sehingga pengguna tinggal memrogram isi ROM
sesuai aturan penggunaan oleh pabrik yang membuatnya.

2.1.1 Arsitektur ATmega8535


Mikrokontroler ATmega8535 memiliki arsitektur sebagai berikut [3] :
a. Saluran I/O sebanyak 32 buah, yaitu PortA, PortB, PortC dan PortD
b. ADC 10 bit sebanyak 8 channel
c. Tiga buah timer/counter yaitu Timer0, Timer1, dan Timer2
d. Watchdog Timer dengan osilator internal
e. SRAM sebanyak 512 byte
f. Memori Flash sebesar 8 Kbyte
g. Sumber Interupsi internal dan eksternal
h. Port SPI (Serial Pheriperal Interface)
i. EEPROM on board sebanyak 512 byte
j. Komparator analog
k. Port USART (Universal Shynchronous Ashynchronous Receiver Transmitter)

2.1.2 Peta Memori ATmega8535


Mikrokontroler ATmega8535 memiliki 3 jenis memori yaitu memori flash, memori
data dan memori EEPROM [2].
a. Memori flash
ATmega8535 memiliki kapasitas memori flash sebesar 8 Kbyte mulai dari alamat 0000h
– 0FFFh, masing-masing alamat memiliki lebar data 16 bit. Memori ini terbagi menjadi
2 bagian yaitu bagian aplikasi dan bagian boot.

4
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
5

b. Memori data
Memori data pada ATmega8535 memiliki kapasitas sebesar 608 byte yang terbagi
menjadi 3 bagian yaitu register serbaguna, register I/O dan SRAM. ATmega8535
memiliki 32 byte register serbaguna, 64 byte register I/O yang dapat diakses sebagai
bagian dari memori RAM (menggunakan instruksi LD atau ST) atau dapat juga diakses
sebagai I/O (menggunakan instruksi IN atau OUT), dan 512 byte digunakan untuk
memori data SRAM.
c. Memori EEPROM
Memori EEPROM adalah memori yang dapat menyimpan data ketika chip running atau
mati (off) yang biasanya digunakan untuk keperluan penyimpanan data yang tahan
terhadap gangguan catu daya. Memori EEPROM ATmega8535 memiliki kapasitas
sebesar 512 byte. Memori EEPROM ini hanya dapat diakses dengan menggunakan
register-register I/O yaitu register EEPROM Address, register EEPROM Data, dan
register EEPROM Control. Untuk mengakses memori EEPROM ini diperlakukan
seperti mengakses data eksternal, sehingga waktu eksekusinya relatif lebih lama bila
dibandingkan dengan mengakses data dari SRAM.

Gambar 2.1. Konfigurasi pin ATmega8535 [2]

Konfigurasi pin ATmega8535 dapat dilihat pada Gambar 2.1. dari gambar diatas
dapat dijelaskan fungsi dari masing-masing pin ATmega8535 sebagai berikut [2]:
1. VCC merupakan pin yang berfungsi sebagai input catu daya.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
6

2. GND merupakan pin Ground.


3. Port A (portA0...portA7) merupakan pin input/output dua arah dan pin input ADC.
4. Port B (portB0…portB7) merupakan pin input/output dua arah dan dan pin fungsi
khusus, seperti dapat dilihat pada Tabel 2.1.

Tabel 2.1. Fungsi khusus port B [2]

Pin Fungsi Khusus


PB7 SCK (SPI Bus Serial Clock)
PB6 MISO (SPI Bus Master Input/Slave Output)
PB5 MOSI (SPI Bus Master Output/Slave Input)
PB4 SS (SPI Slave Select Input)
AIN1 (Analog Comparator Negative Input)
PB3
OC0 (Timer/Counter0 Output Compare Match Output)
AIN0 (Analog Comparator Positive Input)
PB2
INT2 (External Interrupt 2 Input)
PB1 T1 (Timer/Counter1 External Counter Input)
T0 T1 (Timer/Counter External Counter Input)
PB0
XCK (USART External Clock Input/Output)

5. Port C (portC0…portC7) merupakan pin input/output dua arah dan pin fungsi khusus,
seperti dapat dilihat pada Tabel 2.2.

Tabel 2.2. Fungsi khusus portC [2]

Pin Fungsi khusus


PC7 TOSC2 ( Timer Oscillator Pin2)
PC6 TOSC1 ( Timer Oscillator Pin1)
PC5 Input/ Output
PC4 Input/ Output
PC3 Input/ Output
PC2 Input/ Output
PC1 SDA ( Two-wire Serial Bus Data Input/ Output Line)
PC0 SCL ( Two-wire Serial Bus Clock Line)

6. Port D (portD0…portD7) merupakan pin input/output dua arah dan pin fungsi khusus,
seperti yang terlihat pada Tabel 2.3.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
7

Tabel 2.3. Fungsi khusus port D [2]

Pin Fungsi khusus


PD7 OC2 (Timer/Counter Output Compare Match Output)
PD6 ICP (Timer/Counter1 Input Capture Pin)
PD5 OC1A (Timer/Counter1 Output Compare A Match Output)
PD4 OC1B (Timer/Counter1 Output Compare B Match Output)
PD3 INT1 (External Interrupt 1 Input)
PD2 INT0 (External Interrupt 0 Input)
PD1 TXD (USART Output Pin)
PD0 RXD (USART Input Pin)

7. RESET merupakan pin yang digunakan untuk me-reset mikrokontroler.


8. XTAL1 dan XTAL2 merupakan pin input clock eksternal.
9. AVCC merupakan pin input tegangan untuk ADC.
10. AREFF merupakan pin input tegangan referensi ADC.

2.1.3 Reset
Chip akan reset jika tegangan catu nol atau pin RST dipaksa 0 [2]. Jika
membutuhkan tombol reset, dapat ditambahkan dengan rangkaian reset seperti gambar 2.2.

Gambar 2.2. Rangkaian reset [2]

2.1.4 Osilator Eksternal


Rangkaian osilator eksternal adalah rangkaian pembangkit frekuensi untuk
menentukan besarnya waktu untuk tiap siklus pada mikrokontroler [2]. Waktu yang
dibutuhkan tiap satu siklus dapat dilakukan dengan persamaan berikut:

Tcycle = (2.1)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
8

dengan:
fosc adalah frekuensi clock chip
Tcycle adalah waktu untuk tiap satu siklus mikrokontroler

Komponen XTAL biasanya digunakan untuk membangkitkan clock mikrokontroler.


Keuntungan dari penggunaan komponen ini adalah penentuan frekuensi osilator yang
tepat. Nilai XTAL yang digunakan untuk sistem minimum ATmega8535 adalah 12MHz.

Gambar 2.3. Kristal (XTAL)

2.1.5 Timer/Counter1
Timer/counter1 adalah sebuah timer/counter yang mempunyai kapasitas cacahan 16
bit baik pulsa/ clock internal maupun eksternal yang dilengkapi prescaler sumber pulsa/
clock hingga 10 bit [2]. Timer/counter1 dapat digunakan untuk :
a. Timer/counter biasa
b. Clear Timer on Compare Match (auto reload)
c. Counter pulsa eksternal.
d. Sebagai pembangkit frekuensi
e. Sebagai pembangkit gelombang PWM

2.1.5.1 Register Pengendali Timer1


1. Timer/Counter1 Control RegisterA – TCCR1A
Tabel 2.4. Register TCCR1A [2]
Bit 7 6 5 4 3 2 1 0
COM1A1 COM1A0 COM1B1 COM1B0 FOC1A FOC1B WGM11 WGM10 TCCR1A
Read/Write W R/W R/W R/W R/W R/W R/W R/W
Initial Value 0 0 0 0 0 0 0 0

Bit 7:6 – COM1A1:0: Compare Output Mode for channel A


Bit 5:4 – COM1B1:0: Compare Output Mode for channel B
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
9

Bit-bit ini bertugas mengendalikan sifat pin OC1A atau OC1B yang berhubungan
dengan mode operasi yang digunakan.

Tabel 2.5. Mode normal dan CTC [2]


COM1A1/ COM1A0/
Keterangan
COM1B1 COM1B0
0 0 Tidak dihubungkan dengan pin OC1A/ OC1B
0 1 Toggle pin OC1A/ OC1B saat compare match
1 0 Clear pin OC1A/ OC1B saat compare match
1 1 Set pin OC1A/ OC1B saat compare match

Tabel 2.6. Mode fast PWM [2]


COM1A1/ COM1A0/
Keterangan
COM1B1 COM1B0
0 0 Tidak dihubungkan dengan pin OC1A/ OC1B
WGM13:0=15; toggle pin OC1A pada saat compare
match, pin OC1B tidak dihubungkan, untuk setting
0 1
WGM13:0 yang lain pin OC1A/ OC1B tidak
dihubungkan
Clear pin OC1A/ OC1B saat compare match, set pin
1 0
OC1A/ OC1B pada saat BOTTOM (noninverting)
Set pin OC1A/ OC1B saat compare match, clear
1 1
OC1A/ OC1B pada saat BOTTOM (inverting)

Tabel 2.7. Mode Phase Correct dan Phase & Frekuensi Correct PWM [2]
COM1A1/ COM1A0/
Keterangan
COM1B1 COM1B0
0 0 Tidak dihubungkan dengan pin OC1A/ OC1B
WGM13:0=9 atau 14; toggle pin OC1A pada saat
compare match, pin OC1B tidak dihubungkan, untuk
0 1
setting WGM13:0 yang lain pin OC1A/ OC1B tidak
dihubungkan
Clear OC1A/ OC1B saat compare match ketika
1 0 counting-up, set pin OC1A/ OC1B saat compare
match ketika counting-down (noninverting)
Set pin OC1A/ OC1B saat compare match ketika
1 1 counting-up, clear pin OC1A/ OC1B saat compare
match ketika counting-down (inverting)

Bit 3 – FOC1A: Force Output Compare for channel A


Bit 2 – FOC1B: Force Output Compare for channel B
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
10

Bit – FOC1A/FOC1B hanya dapat digunakan ketika menggunakan mode operasi non-
PWM. Jika bit-bit ini di-set, maka akan memaksa terjadinya compare match.
Bit 1:0 – WGM11:0: Waveform Generator Mode
Kedua bit ini bersamaan dengan bit WGM13:12 dalam register TCCR1B berguna
untuk memilih mode operasi yang akan kita gunakan [2].

Tabel 2.8. Mode operasi [2]

2. Timer/Counter1 Control RegisterB – TCCR1B


Tabel 2.9. Register TCCR1B [2]
Bit 7 6 5 4 3 2 1 0
ICNC1 ICES1 - WGM13 WGM12 CS12 CS11 CS10 TCCR1B
Read/Write R/W R/W R R/W R/W R/W R/W R/W
Initial Value 0 0 0 0 0 0 0 0

Bit 7 – INC1: Input Capture Noise Canceler


Penge-set-an bit ini akan mengaktifkan Input Capture Noise Canceler pada saat
menggunakan mode normal yang capture event [2]. Di mana noise canceler akan
menyaring triger yang masuk ke pin ICP1 akan disaring selama 4 siklus clock, jika
selama 4 siklus clock tersebut trigernya berubah, maka akan diabaikan.
Bit 6 – ICES1: Input Capture Edge Select
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
11

Bit ini mendefinisikan triger yang masuk ke pin ICP1 (PB0) yang digunakan untuk
menangkap kejadian (capture event). Jika ICES1=0, maka falling edge (perpindahan
dari 1 ke 0) digunakan sebagai triger dan jika ICES1=1, maka rising edge
(perpindahan dari 0 ke 1) digunakan sebagai triger.
Ketika ada triger pada pin ICP1 (PB0), maka secara otomatis oleh CPU isi register
pencacah TCNT1 akan disalin ke register penangkap ICR1 dan juga berkebalikan pada
flag status ICF1 yang digunakan untuk interupsi capture event.
Bit 5 – Reserved Bit
Tidak digunakan
Bit 4:3 – WGM13:2: Waveform Generator Mode
Lihat tabel Mode Operasi.
Bit 2:0 – CS12:0: Clock Select
Bit-bit ini bertugas untuk memilih/mendefinisikan/prescaler pulsa/clock yang masuk
ke dalam register TCNT1.

Tabel 2.10. Prescaler timer/counter1 [2]

CS02 CS01 CS00 Keterangan


0 0 0 Stop/ berhenti
0 0 1 Clk (sama dengan clock cpu)
0 1 0 Clk/8 (1 clk timer/counter1 = 8 clk cpu)
0 1 1 Clk/64 (1 clk timer/counter1 = 64 clk cpu)
1 0 0 Clk/256 (1 clk timer/counter1 = 256 clk cpu)
1 0 1 Clk/1024 (1 clk timer/counter1 = 1024 clk cpu)
1 1 0 Clk eksternal dari pin T1 pada kondisi falling edge
1 1 1 Clk eksternal dari pin T1 pada kondisi rising edge

3. Output Compare Register 1A – OCR1AH and OCR1AL


Tabel 2.11. Register 1A [2]
Bit 7 6 5 4 3 2 1 0
OCR1A[15:8] OCR1AH
OCR1A[7:0] OCR1AL
Read/Write R/W R/W R/W R/W R/W R/W R/W R/W
Initial Value 0 0 0 0 0 0 0 0

4. Output Compare Register 1B – OCR1BH and OCR1BL


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
12

Tabel 2.12. Register 1B [2]


Bit 7 6 5 4 3 2 1 0
OCR1B[15:8] OCR1BH
OCR1B[7:0] OCR1BL
Read/Write R/W R/W R/W R/W R/W R/W R/W R/W
Initial Value 0 0 0 0 0 0 0 0

Register ini bertugas sebagai register pembanding yang bisa kita tentukan besarnya
sesuai dengan kebutuhan [2]. Dalam praktiknya pada saat TCNT1 (TCNT1H:TCNT1L)
mencacah maka otomatis oleh CPU akan dibandingkan dengan isi OCR1
(OCR1H:OCR1L) secara kontinyu dan jika isi TCNT1 sama dengan isi OCR1 maka
akan terjadi compare match yang dapat dimanfaatkan untuk mode CTC dan PWM.

5. Input Capture Register 1 –ICR1H and ICR1L


Tabel 2.13. Register 1 [2]
Bit 7 6 5 4 3 2 1 0
ICR1[15:8] ICR1H
ICR1[7:0] ICR1L
Read/Write R/W R/W R/W R/W R/W R/W R/W R/W
Initial Value 0 0 0 0 0 0 0 0

Register ICR1 (ICR1H:ICR1L) akan selau diperbarui dengan isi register pencacah
TCNT1 (pada saat tersebut) sewaktu terjadi triger (capture event) pada pin ICP1 [2].
Register ICR1 juga mempunyai fungsi lain untuk mendefinisikan TOP value pada
mode tertentu (lihat tabel mode operasi).

6. Timer/Counter Interrupt Mask Register – TIMSK


Tabel 2.14. Register TIMSK [2]
Bit 7 6 5 4 3 2 1 0
OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 - TOIE0 TIMSK
Read/Write R/W R/W R/W R/W R/W R/W R R/W
Initial Value 0 0 0 0 0 0 0 0

Bit 5 – TICIE1: T/C1, Input Capture Interrupt Enable


Bit ini berguna untuk meng-aktif-kan interupsi input capture (penangkap kejadian
pada pin ICP1/PB0) ketika bit di-set [2].
Bit 4 – OCIE1A: T/C1, Output Compare A Match Interrupt Enable
Bit ini berguna untuk meng-aktif-kan interupsi Output Compare A Match ketika bit ini
di-set.
Bit 3 – OCIE1B: T/C1, Output Compare B Match Interrupt Enable
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
13

Bit ini berguna untuk meng-aktif-kan interupsi Output Compare B Match ketika bit ini
di-set.
Bit 2 – TOIE1: Timer/Counter1, Overflow Interrupt Enable
Bit ini berguna untuk meng-aktifkan interupsi overflow TCNT1 ketika bit ini di-set.

6. Timer/Counter Interrupt Flag Register – TIFR


Tabel 2.15. Register TIFR [2]
Bit 7 6 5 4 3 2 1 0
OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 - TOV0 TIFR
Read/Write R/W R/W R/W R/W R/W R/W R R/W
Initial Value 0 0 0 0 0 0 0 0

Bit 5 – ICP1: T/C1, Input Capture Flag


Bit ini akan set secara otomatis ketika menagkap triger pada pin ICP [2]. Bit ini akan
clear juga secara otomatis ketika mengeksekusi vektor interupsi input capture. Untuk
meng-clear secara manual bit ini maka bit ini harus di-set.
Bit 4 – OCF1A: T/C1, Output Compare A Match Flag
Bit ini akan set secara otomatis ketika terjadi compare match A. Bit ini akan clear juga
secara otomatis ketika mengeksekusi vektor interupsi output compare A. Untuk meng-
clear secara manual bit ini harus di-set.
Bit 3 – OCF1B: Timer/Counter1, Output Compare B Match Flag
Bit ini akan set secara otomatis ketika terjadi compare match B. Bit ini akan clear juga
secara otomatis ketika mengeksekusi vektor interupsi output compare B. Untuk meng-
clear secara manual bit ini maka bit ini harus di-set.
Bit 2 – TOV1: Timer/Counter1, Overflow Flag
Bit ini akan set secara otomatis ketika terjadi overflow pada register pencacah TCNT1.
Bit ini akan clear juga secara otomatis ketika mengeksekusi vektor overflow
timer/counter 1. Untuk meng-clear secara manual bit ini maka bit ini harus di-set.

2.1.6. Mode Operasi


1. Mode Normal
Normal Overflow:
Dalam mode ini register pencacah TCNT1 bekerja secara normal selalu mencacah/
menghitung ke atas atau counting-up hingga mencapai nilai maksimal 0xFFFF lalu
0x0000 lagi atau yang disebut overflow yang menyebabkan flag-TOV1 secara otomatis
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
14

set yang menandakan terjadinya interupsi jika interupsi timer/counter1 overflow


diaktifkan [2]. Nilai TCNT1 tidak harus selalu 0x0000 namun bisa ditentukan misalnya
0xF89 atau berapa pun sesuai kebutuhan.

Normal compare match:


Dalam mode ini register TCNT1 bekerja seperti mode normal overflow, hanya jika isi
register OCR1x (x = A atau B), maka ketika TCNT1==OCR1x, maka akan terjadi
compare match yang menyebabkan flag OCF1x secara otomatis set yang menandakan
terjadinya interupsi jika interupsi timer1 compare match x diaktifkan [2]. Ketika
compare match dalam mode ini TCNT1 akan terus menghitung hingga overflow dan
mulai dari nol lagi, maka dapat mengaktifkan ketiga interupsi ini secara bersamaan
(overflow, compare match A dan B).

2. CTC (Clear Timer on Compare match)


Dalam mode ini register pencacah TCNT1 mencacah naik (counting-up) hingga
mencapai TOP (nilai TCNT1 sama dengan nilai OCR1 yang telah ditentukan)
kemudian TCNT1 nol lagi yang otomatis akan menge-set flag OCF1 dan akan
membangkitkan interupsi timer/counter1 compare match jika diaktifkan.
Frekuensi CTC dapat dihitung dengan menggunakan persamaan:

(2.2)

dengan:
adalah frekuensi clock chip
N adalah prescaler sumber clock yang digunakan (1, 8, 64, 256, 1024)

3. Fast PWM (Pulse Width Modulation)


Timer/counter1 dalam mode fast PWM digunakan untuk mengendalikan lama ton dan
toff melaui isi register pembanding OCR1A atau OCR1B yang akan berakibat kepada
besar duty cycle yang dihasilkan. Untuk chanel (saluran) PWM timer/counter1 adalah
pin OC1A atau OC1B sebagai keluaran saluran PWM. Dalam mode fast PWM sifat
cacahan register pencacah TCNT1 mencacah dari BOTTOM (0x0000) terus mencacah
naik (counting-up) hingga mencapai TOP (nilai maksimal yang ditentukan sesuai
resolusi yang diinginkan, misalnya resolusinya 10 bit maka nilai TOP=0x01FF)
kemudian mulai dari BOTTOM lagi dan begitu seterusnya atau yang dinamakan single
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
15

slope (satu arah cacahan). Resolusi fast PWM dapat ditentukan dengan resolusi yang
sudah tetap seperti 8, 9, 10 bit atau bisa ditentukan melalui register ICR1 atau OCR1A.
Resolusi minimal yang diizinkan adalah 2-bit (ICR1 atau OCR1A diisi 0x0003), dan
resolusi maksimal yang diizinkan adalah 16-bit (ICR1 atau OCR1A diisi 0xFFFF).
Resolusi dapat dihitung dengan menggunakan persamaan berikut:

(2.3)

Dalam mode non-inverting saluran keluaran PWM pin OC1x di-clear pada saat
compare match (TCNT1==OCRx) dan di-set ketika BOTTOM (TCNT1=0x0000).

Gambar 2.4. Pulsa fast PWM [2]

Dalam mode inverting saluran keluaran PWM pin OC1x di-set pada saat compare
match (TCNT1==OCRx) dan di-clear ketika BOTTOM (TCNT1=0x0000).
Secara kasar memberdakan non-inverting dengan inverting dalam mode fast PWM
yaitu dilihat dari bentuk pulsanya. PWM non-inverting yang dikendalikan adalah lama
t on – nya melalui isi OCR1x, sedangkan PWM inverting yang dikendalikan adalah
lama t off – nya melalui isi OCR1x. Frekuensi fast PWM dihitung dengan
menggunakan persamaan berikut:

(2.4)

dengan:
adalah frekuensi clock chip
N adalah prescaler sumber clock yang digunakan (1, 8, 64, 256, 1024)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
16

4. Phase Correct PWM


Pada mode ini cara operasi cacahan register TCNT1 menggunakan dual slope (dua
arah/bolak-balik) di mana TCNT1 mencacah dari BOTTOM (0x0000) counting-up
hingga mencapai TOP (resolusi yang digunakan) kemudian counting-down hingga
BOTTOM (0x0000) dan begitu seterusnya.
Resolusi mode phase correct PWM dapat kita tentukan secara tetap 8-, 9-, 10-bit atau
kita tentukan menggunakan register ICR1 atau OCR1A dimana resolusi minimal yang
diizinkan adalah 2-bit (ICR1/OCR1A diisi dengan 0x0003) dan maksimal 16-bit
(ICR1/OCR1A diisi dengan 0xFFFF). Rumus untuk menentukan resolusi mode phase
correct PWM.

(2.5)

Dalam mode non-inverting saluran keluaran PWM pin OC1x di-clear pada saat
compare match (TCNT1=OCRx) ketika counting-up dan di-set pada saat compare
match ketika counting down. Dalam mode inverting saluran keluaran PWM pin OC1x
di-set pada saat compare match (TCNT1=OCRx) ketika counting-up dan di-clear pada
saat compare match ketika counting-down.

Gambar 2.5. Pulsa Phase Correct PWM [2]

Frekuensi Phase Correct PWM dihitung dengan persamaan:

(2.6)

dengan:
fclk_I/O adalah frekuensi clock chip
N adalah prescaler sumber clock yang digunakan (1, 8, 64, 256, 1024)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
17

2.2 Real Time Clock DS1307


Real Time Clock (RTC) merupakan suatu chip (IC) yang memiliki fungsi sebagai
penyimpan waktu dan tanggal. Fitur utama DS1307 adalah mampu menghitung detik,
menit, jam, tanggal, tahun dengan koreksi tahun kabisat hingga tahun 2100, data bisa
disimpan dengan bantuan baterai cadangan, dan antarmuka I2C.
IC yang mempunyai clock sumber sendiri dan internal batery untuk menyimpan
data waktu dan tanggal. Sehingga jika sistem komputer/ mikrokontroler mati waktu dan
tanggal di dalam memori RTC tetap up date. Gambar 2.6. menunjukkan diagram blok dari
DS1307.

Gambar 2.6. Diagram blok DS1307 [5]

DS1307 yang digunakan memiliki paket DIL8 (Dual In Line 8) seperti yang
ditunjukkan Gambar 2.7.

Gambar 2.7. Konfigurasi pin RTC DS1307 [5]

Pin-pin RTC DS1307 beserta penjelasannya adalah sebagai berikut:


1. X1 dan X2 dihubungkan dengan kristal quartz 32,768 kHz.
Rangkaian osilator internal ini didesain untuk beroperasi dengan sebuah kristal yang
mempunyai kapasitansi beban tertentu (CLoad) yakni 12,5 pF.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
18

2. Vcc, GND sebagai power supply utama.


Vcc merupakan tegangan input +5 volt sedangkan GND merupakan ground.
3. Vbat merupakan tegangan input baterai lithium cell 3 volt.
Tegangan baterai harus berada antara tegangan minimum dan tegangan maksimum
yaitu 2,5 volt sampai 3,5 volt. Ketika tegangan 5 volt digunakan pada batas normal,
RTC dapat diakses secara penuh dan data dapat ditulis dan dibaca. Ketika VCC kurang
dari 1,25 x Vbat, proses penulisan dan pembacaan menjadi terhalang. Namun
demikian, proses penghitungan waktu tetap berjalan. Pada saat VCC kurang dari Vbat,
RAM dan penghitung waktu terhubung dengan baterai 3 volt.
4. SCL (Serial Clock Input) berfungsi sebagai clock untuk input ke I2C dan digunakan
untuk menyinkronisasi pergerakan data dalam serial interface.
5. SDA (Serial Data Input/ Output) berfungsi sebagai masukan/ keluaran (I/O) untuk
I2C serial interface.
Pin ini bersifat open drain sehingga membutuhkan eksternal pull-up resistor.
6. SQW/OUT (Square Wave/ Output Driver) sebagai square wave/ output driver.
Jika diaktifkan maka akan menjadi 4 frekuensi gelombang kotak yaitu 1 Hz, 4 kHz, 8
kHz, 32 kHz. Sifat dari pin ini sama dengan sifat pin SDA dan SCL sehingga
membutuhkan eksternal pull-up resistor. Dapat dioperasikan dengan VCC maupun
Vbat.

2.3 Komunikasi I2C


I2C-Bus atau Inter-Integrated Circuit Bus merupakan bus serial. I2C atau Inter
Intergated Circuit dikembangkan Philips Semikonductor ® hampir 20 tahun silam untuk
memudahkan komunikasi antar komponen dalam sebuah papan PCB. I2C-Bus digunakan
untuk menghubungkan berbagai macam IC yang dikontrol oleh sistem mikroprosesor atau
mikrokontroler (intelleigent control aplication). Standar I2C-Bus telah banyak digunakan
di berbagai macam bidang elektronik terutama kontrol dengan kecepatan low-to-medium
[6].
Kelebihan dari I2C diantaranya adalah hanya membutuhkan dua jalur untuk
komunikasi; komunikasi master-slave yang sederhana; tidak memerlukan baud-rate seperti
halnya RS-232, master yang menghasilkan pulsa clock; setiap perangkat memiliki penanda
digital (ID) yang unik; serta mampu terdapat lebih dari satu master dalam jalur data. Dua
jalur tersebut adalah SDA dan SCL. SCL merupakan jalur yang digunakan untuk
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
19

menyinkronisasi transfer data pada jalur I2C, sedangkan SDA merupakan jalur untuk data.
Beberapa perangkat dapat terhubung ke dalam jalur I2C yang sama dimana SCL dan SDA
terhubung ke semua perangkat tersebut, hanya ada satu perangkat yang mengontrol SCL
yaitu perangkat master. Jalur data I2C memiliki tipe open drain, artinya perangkat hanya
bisa menarik jalur data menjadi low. Oleh karena itu, diperlukan pull-up resistor pada SDA
dan SCL untuk menarik jalur data menjadi high ketika tidak ada perangkat yang
berkomunikasi. Pull-up resistor adalah resistor yang dihubungkan antara jalur data dan
VCC.

Gambar 2.8. Konfigurasi umum DS1307 dengan mikrokontroler [5]

Gambar 2.8. menunjukkan rangkaian yang umum untuk menghubungkan DS1307


dengan mikrokontroler. Pin SQW/OUT sendiri bisa diatur untuk menghasilkan gelombang
kotak. Apabila fitur tersebut tidak digunakan, maka tidak perlu dipasang resistor.
DS1307 bisa beroperasi dalam 2 cara, yaitu Slave Receiver Mode (Write Mode) dan
Slave Transmiter Mode (Read Mode). Komunikasi serial I2C selalu diawali dengan kondisi
START dan diakhiri STOP. Kondisi START adalah ketika terjadi perubahan kondisi dari
high ke low pada SDA ketika SCL pada kondisi high. Sedangkan kondisi STOP adalah
ketika terjadi perubahan kondisi dari low ke high pada SDA ketika SCL pada kondisi high.
Write mode merupakan cara mikrokontroler menulis data ke dalam DS1307, misal ingin
mengatur tanggal dan jam. Setelah dikirim kondisi START, mikrokontroler mengirim 7 bit
alamat DS1307 yaitu “1101000” yang diikuti oleh direction bit (R/W), 0 untuk menulis
dan 1 untuk membaca. Setelah menerima alamat DS1307 dan direction bit 0, DS1307
mengirim sinyal acknowledge pada SDA. Lalu mikrokontroler akan mengirimkan data
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
20

yang akan ditulis. Setiap byte yang diterima akan diakhiri dengan sinyal acknowledge.
Apabila mikrokontroler sudah selesai mengirim data, maka dikirim kondisi STOP. Gambar
2.9. merupakan urutan-urutan Slave Receiver Mode (Write Mode).

Gambar 2.9. Urutan-urutan Slave Receiver Mode (Write Mode) [5]

Read Mode merupakan cara agar data yang terdapat di DS1307 dibaca oleh
mikrokontroler, misal ingin membaca waktu dan tanggal. Caranya sama saja seperti pada
write mode, hanya saja diikuti direction bit 1. Apabila “11010000” dikirim, maka DS1307
masuk write mode. Apabila “11010001” dikirim, DS1307 akan masuk read mode.
Terdapat tambahan sinyal not acknowledge (NACK) yang dikirim oleh mikrokontroler
apabila telah menerima semua data dari DS1307 sebelum kondisi STOP.
Gambar 2.10. menunjukkan urutan-urutan Slave Transmiter Mode (Read Mode).
Informasi waktu dan tanggal bisa didapat dengan mengakses register yang tepat. Register-
register ini bisa dibaca atau ditulis menggunakan mikrokontroler.

Gambar 2.10. Urutan-urutan Slave Transmiter Mode (Read Mode) [5]

Register DAY yang menunjukkan hari bertambah ketika tengah malam. Nilai yang
diperoleh berupa nilai 01-07 dan tidak mengikat kepada hari sebenarnya. Pengguna yang
harus menentukan nilai beserta definisinya, misal 1 adalah Minggu maka 2 adalah Senin
dan seterusnya. Bit 6 dari register HOUR menentukan jam dalam tipe 12 jam atau 24 jam.
Ketika bit 6 HIGH, maka akan masuk tipe 12 jam, sedang ketika LOW akan masuk tipe 24
jam. Waktu harus dimasukkan kembali ketika mengubah tipe jam yang digunakan.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
21

Register CH pada alamat 00H merupakan register enable oscillator yang akan menentukan
jalannya waktu pada DS1307, sehingga ketika inisialisasi perlu diperiksa nilai dari register
tersebut. Tabel 2.16. menunjukan register-register yang bisa diakses pada DS1307.

Tabel 2.16. Register-register pada DS1307 [5]

Ketika membaca maupun menulis register diatas diperlukan tempat penyimpanan


sementara pada mikrokontroler untuk mencegah kesalahan register internal. Tempat
penyimpanan atau secondary buffer ini berupa alokasi memori yang diletakkan di
mikrokontroler.

2.4 Liquid Crystal Display (LCD) 2x16


Liquid Crystal Display (LCD) adalah komponen yang berfungsi untuk
menampilkan suatu karakter pada suatu tampilan (display) dengan bahan utama yang
digunakan berupa Liquid Crystal [7]. Apabila diberi arus listrik sesuai dengan jalur yang
telah dirancang pada konstruksi LCD, Liquid Crystal akan menghasilkan suatu cahaya dan
cahaya tersebut akan membentuk suatu karakter tertentu.
Terdapat 2 jenis LCD yaitu LCD karakter dan LCD grafik. LCD karakter, adalah
LCD yang tampilannya terbatas pada tampilan karakter, khususnya karakter ASCII (seperti
karakter-karakter yang tercetak pada keyboard komputer). Sedangkan LCD grafik, adalah
LCD yang tampilannya tidak terbatas, bahkan dapat menampilkan foto. LCD grafik inilah
yang terus berkembang seperti layar LCD yang biasa dilihat di notebook/ laptop [8].
Jenis LCD karakter yang beredar di pasaran biasa dituliskan dengan bilangan
matriks dari jumlah karakter yang dapat dituliskan pada LCD tersebut, yaitu jumlah kolom
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
22

karakter dikali jumlah baris karakter. Sebagai contoh, LCD1952, artinya terdapat 16 kolom
dalam 2 baris ruang karakter seperti ditunjukan pada Gambar 2.11. yang berarti total
karakter yang dapat dituliskan adalah 32 karakter [8].

Gambar 2.11. Baris dan Kolom Karakter pada LCD 1952 [8]

LCD yang sering digunakan adalah jenis LCD M1632. M1632 merupakan modul
LCD dengan tampilan 2x16 (2 baris, 16 kolom) dengan konsumsi daya rendah. Modul
tersebut dilengkapi dengan mikrokontroler yang didesain khusus untuk mengendalikan
LCD. Mikrokontroler HD44780 buatan Hitachi yang berfungsi sebagai pengendali LCD
memiliki CGROM (Character General Read Only Memory), CGRAM (Character General
Random Access Memory), dan DDRAM (Display Data Random Access Memory). LCD
bertipe ini memungkinkan pemrogram untuk mengoperasikan komunikasi data 8 bit atau 4
bit. Jika menggunakan jalur data 4 bit, maka akan ada 7 jalur data (3 untuk jalur kontrol &
4 untuk jalur data). Jika menggunakan jalur data 8 bit, maka akan ada 11 jalur data (3
untuk jalur kontrol & 8 untuk jalur data). Tiga jalur kontrol ke LCD ini adalah EN
(Enable), RS (Register Select) dan R/W (Read/Write).

Gambar 2.12. LCD 2x16

LCD jenis M1623 memiliki jumlah pin sebanyak 16 yang memiliki fungsi berbeda-
beda. Fungsi pin LCD pada Tabel 2.17. adalah :
1. VLCD merupakan pin yang digunakan untuk mengatur tebal tipisnya karakter yang
tertampil dengan cara mengatur tegangan masukan.
2. DB0 s/d DB7 merupakan jalur data yang dipakai untuk menyalurkan kode ASCII
maupun perintah pengatur LCD.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
23

3. Register Select (RS) merupakan pin yang dipakai untuk membedakan jenis data
yang dikirim ke LCD. Jika RS berlogika „0‟, maka data yang dikirim adalah
perintah untuk mengatur kerja LCD. Jika RS berlogika „1‟, maka data yang
dikirimkan adalah kode ASCII yang ditampilkan.
4. Read/Write (R/W) merupakan pin yang digunakan untuk mengaktifkan pengiriman
dan pengembalian data ke dan dari LCD. Jika R/W berlogika „1‟, maka akan
diadakan pengambilan data dari LCD. Jika R/W berlogika „0‟, maka akan diadakan
pengiriman data ke LCD.
5. Enable (E) merupakan sinyal sinkronisasi. Saat E berubah dari logika „1‟ ke „0‟,
data di DB0 s/d DB7 akan diterima atau diambil dari port mikrokontroler.
6. Anoda (A) dan Katoda (K) merupakan pin yang digunakan untuk menyalakan
backlight dari layar LCD.

Tabel 2.17. Fungsi Pin-pin LCD [7]

Pin No Keterangan Konfigurasi


1 GND Ground
2 VCC Tegangan +5VDC
3 VEE Ground
4 RS Kendali Rs
5 R/W Ground
6 E Kendali E/Enable
7 D0 Bit 0
8 D1 Bit 1
9 D2 Bit 2
10 D3 Bit 3
11 D4 Bit 4
12 D5 Bit 5
13 D6 Bit 6
14 D7 Bit 7
15 A Anoda (+5VDC)
16 K Katoda (Ground)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
24

2.5 Light-Emitting Diode (LED)


LED adalah komponen elektronika yang terbuat dari bahan semi konduktor jenis
dioda yang mampu memancarkan cahaya [9]. LED mampu menghasilkan cahaya yang
berbeda menurut semi konduktor yang digunakan dan jenis bahan semi konduktor tersebut
akan menghasilkan panjang gelombang yang berbeda sehingga cahaya yang dihasilkan
berbeda pula.
LED adalah salah satu jenis dioda, maka LED memiliki 2 kutub yaitu anoda dan
katoda. LED akan menyala bila ada arus listrik mengalir dari anoda menuju katoda.
Pemasangan kutub LED tidak boleh terbalik karena apabila terbalik kutubnya maka LED
tersebut tidak akan menyala. Semakin tinggi arus yang mengalir pada LED maka semakin
terang pula cahaya yang dihasilkan, namun perlu diperhatikan bahwa arus yang
diperbolehkan 10mA-20mA dan pada tegangan 1,6V-3,5V menurut karakter warna yang
dihasilkan. Apabila arus yang mengalir lebih dari 20mA, maka LED akan terbakar. Untuk
menjaga agar LED tidak terbakar perlu digunakan resistor sebagai penghambat arus. LED
ditunjukkan pada gambar 2.13.

Gambar 2.13. Konfigurasi LED [9]

Berdasarkan gambar 2.14. persamaan untuk mencari nilai tegangan menggunakan hukum
ohm adalah . Sehingga persamaan untuk mencari nilai resistor yang digunakan
sebagai indikator adalah :
R= (2.7)

dengan:
V = tegangan (Volt)
I = arus listrik (Ampere)
R = resistor (Ohm/Ω)
VS = tegangan sumber (Volt)
VD = tegangan LED (Volt)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
25

Gambar 2.14. Rangkaian indikator LED

2.6 Keypad
Keypad matriks adalah tombol-tombol yang disusun secara matriks (baris x kolom)
sehingga dapat mengurangi penggunaan pin input. Sebagai contoh, keypad matriks 4×4
cukup menggunakan 8 pin untuk 16 tombol [10]. Hal tersebut dimungkinkan karena
rangkaian tombol disusun secara horizontal membentuk baris dan secara vertikal
membentuk kolom seperti pada gambar 2.15.
Proses pengecekkan dari tombol yang dirangkai secara matriks adalah dengan
teknik scanning. Metode scanning keypad adalah mendeteksi hubungan pin baris dan
kolom karena tombol ditekan, secara berurutan, bergantian dan satu per satu.

Gambar 2.15. Rangkaian keypad [10]

B1, B2, B3, dan B4 merupakan baris 1 sampai baris 4; sedangkan K1, K2, K3, dan
K4 merupakan kolom 1 sampai kolom 4 keypad. Pin-pin kolom menjadi output dan pin-pin
baris menjadi input. Contohnya ketika „*‟ ditekan maka arus mengalir dari kolom 1 ke
baris 4 dengan begitu mikrokontroler dapat mengetahui tombol tersebut aktif sedangkan
tombol lain mati.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
26

2.7 Motor DC 12V


Motor listrik merupakan perangkat elektromagnetis yang mengubah energi listrik
menjadi energi mekanik [11]. Motor DC memerlukan sumber tegangan yang searah pada
kumparan medan untuk diubah menjadi energi mekanik. Kumparan medan pada motor DC
disebut stator (bagian yang tidak berputar) dan kumparan jangkar disebut rotor (bagian
yang berputar). Dengan memberikan beda tegangan pada kedua terminal tersebut, motor
akan berputar pada satu arah, dan bila polaritas dari tegangan tersebut dibalik maka arah
putaran motor akan terbalik pula.

Gambar 2.16. Konstruksi motor DC [11]

2.8 Limit Switch


Limit switch atau sering juga disebut saklar batas adalah saklar yang dapat
dioperasikan secara manual maupun otomatis. Fungsi dan cara kerja dari limit switch sama
dengan saklar-saklar push on. Limit switch mempunyai kontak Normally Open (NO) dan
Normally Closed (NC). Roller yang terdapat pada limit switch, bila ditekan akan membuat
kontak yang tadinya NC menjadi NO, begitu juga sebaliknya. Ketika roller dilepas, maka
limit switch akan kembali kekeadaan awal. Konstruksi limit switch dapat dilihat pada
gambar 2.17.

Gambar 2.17. Konstruksi limit switch


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
27

Bentuk fisik limit switch bermacam-macam. Salah satu bentuk dari limit switch
dapat dilihat pada gambar 2.18.

Gambar 2.18. Limit Switch [12]

2.9 L298
L298 adalah komponen yang didalamnya terdiri dari dua rangkaian bridge yang
bisa dikontrol dari luar (Dual Full-Bridge Driver). Komponen ini biasa digunakan untuk
mengontrol komponen yang mengandung kumparan seperti motor DC, motor stepper,
relay dan solenoid. Enable A dan B digunakan untuk mengaktifkan atau menonaktifkan
perangkat secara bebas dari sinyal masukan. Tegangan masukan tambahan disediakan
sehingga dapat bekerja pada tegangan yang lebih rendah.
Gambar 2.19. menunjukan diagram blok L298. Dari IC ini terdapat 4 pin masukan
yang didesain untuk menerima masukan logika TTL. Masing-masing pin masukan
memiliki pin keluaran yang bersesuaian.

Gambar 2.19. Diagram blok L298 [14]


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
28

Pada pin enable dan pin 10 diberi logika 1 (high) dan pin 12 diberi logika 0 (low)
maka akan menggerakkan motor searah jarum jam. Jika logikanya dibalik maka motor
akan bergerak berlawanan dengan arah jarum jam. Pin enable yang diberi logika 0 (low)
maka motor akan berhenti berputar.

Gambar 2.20. Konfigurasi pin L298 [14]


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

BAB III
PERANCANGAN

3.1 Proses Kerja Sistem


Konfigurasi sistem perancangan ini meliputi beberapa bagian yang ditunjukkan
pada gambar 3.1. Bagian – bagian perancangan meliputi sistem minimum mikrokontroler,
RTC, motor DC, limit switch, LCD, dan keypad. Sistem minimum mikrokontroler
ATmega8535 pada perancangan sistem ini sudah menggunakan sistem minimum jadi.
Pengaturan tirai dapat diprogram pada jam-jam tertentu dan dengan mode-mode tertentu
yang sudah dipilih. Proses pergerakan motor diawali dengan memosisikan sistem dalam
keadaan nol dan saklar dalam keadaan on. Sistem bekerja saat pengguna mengatur
masukan data pada mikrokontroler dengan keypad agar tirai terbuka dan tirai akan kembali
menutup pada waktu yang sudah ditentukan.
Mikrokontroler akan mengendalikan gerak motor DC yang diaplikasikan pada
prototipe tirai. Mikrokontroler disinkronkan dengan RTC sehingga tirai dapat terbuka dan
tertutup secara otomatis. Jika data pada mikrokontroler sudah sama dengan RTC kemudian
mikrokontroler mengendalikan driver sehingga motor bergerak searah jarum jam atau yang
berlawanan dengan arah jarum jam dan data akan ditampilkan pada LCD. Selain itu
mikrokontroler juga mengaktifkan limit switch. Saat posisi tirai sudah terbuka atau tertutup
penuh akan menekan limit switch dan mikrokontroler akan menghentikan kinerja driver
sehingga motor berhenti berputar. Data yang telah dimasukkan pengguna dapat disimpan
pada menu manual dan data yang telah tersedia pada menu otomatis dapat dipakai dengan
langsung memilih pada menu yang sudah tersedia. Keseluruhan sistem dikendalikan oleh
mikrokontroler ATmega8535.

LCD

RTC DS1307 Mikrokontroler


Driver motor
ATmega8535

Keypad Limit switch Motor DC

Gambar 3.1. Diagram blok perancangan

29
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
30

3.2 Perancangan Prototipe


Pada tahap ini dilakukan perancangan prototipe ruangan, antara lain mendesain
ukuran prototipe ruangan. Perancangan prototipe ruangan ditunjukkan pada gambar 3.2.
dan gambar 3.3. Bahan yang digunakan untuk prototipe adalah acrylic, pengait pada tirai
dan motor DC menggunakan belt yang permukaannya kasar. Dimensi prototipe ruangan
yang akan didesain adalah 50 cm x 35 cm x 35 cm.

Keterangan:
1. Keypad
2. LCD
3. Roller
4. Limit switch
5. Motor DC

Gambar 3.2. Desain tampak belakang

Gambar 3.3. Desain tampak dari dalam


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
31

3.3 Perancangan Perangkat Keras


Ada beberapa bagian utama dalam perancangan subsistem perangkat keras
prototipe ruangan, yaitu :
a. Sistem minimum ATmega8535
b. Rangkaian LCD 2x16
c. Rangkaian RTC DS1307
d. Rangkaian motor DC
e. Keypad 4x4

3.3.1 Sistem Minimum ATmega8535


Sistem minimum yang digunakan pada tugas akhir ini merupakan produksi dari
Creative Vision dengan chip IC keluarga Atmel dengan seri ATmega8535. Sistem
minimum berfungsi sebagai I/O untuk mengolah data dari RTC dan mengendalikan motor
DC yang telah diprogram dalam mikrokontroler ATmega8535 pada prototipe ruangan.
Mikrokontroler membutuhkan sistem minimum yang terdiri dari rangkaian eksternal yaitu
rangkaian osilator dan rangkaian reset.

Gambar 3.4. Sistem minimum ATmega8535

Perancangan penggunaan port sebagai input dan output pada mikrokontroler


ATmega8535 disesuaikan dengan kebutuhan yaitu sejumlah 25 pin. Rangkaian RTC
membutuhkan 2 pin pada PortC, keypad 4x4 membutuhkan 8 pin pada PortA, limit switch
membutuhkan 2 pin, driver sebagai penggerak motor menggunakan 3 buah pin, sedangkan
LCD dengan 7 pin pada PortB. Tabel 3.1. menunjukan penggunaan port pada
mikrokontroler yang digunakan sebagai input dan output dari RTC dan motor DC. XTAL
yang digunakan untuk sistem minimum ini 12 MHz.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
32

Tabel 3.1. Penggunaan port-port pada mikrokontroler.

Fungsi PORT Mikro Keterangan

PortC.0 SCL pada RTC


RTC DS1307
PortC.1 SDA pada RTC
INPUT
Keypad PortA.0-7 Data dari pengguna
Limit switch PortD.0,1 Memutus gerak motor DC
PortD.4,6 Komunikasi mikro-driver
Driver
OUTPUT PortD.5 Keluaran PWM motor DC
LCD PortB.0-2, 4-7 Penampil

Secara keseluruhan rangkaian sistem minimum ATmega8535 ditunjukkan pada


gambar 3.5.

Gambar 3.5. Rangkaian Sistem Minimum ATmega8535 [2]


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
33

3.3.2 Rangkaian LCD 2x16


LCD digunakan untuk menampilkan data output dari mikrokontroler. LCD yang
digunakan adalah LCD 2x16 yang memiliki tipe LMB162A. Dalam perancangan ini mode
yang digunakan untuk menuliskan data ke LCD sebanyak 4 bit (mode nibble). Port B.0,
port B.2, port B.4 dan port B.6 digunakan sebagai port data, sedangkan port B.1, port B.3
dan port B.5 digunakan sebagai port pengatur interface LCD. Tegangan maksimal untuk
LCD sebesar 5VDC sehingga dalam perancangan digunakan resistor variabel sebesar 10 kΩ
yang berfungsi untuk membatasi tegangan yang masuk ke pin Vcc LCD. Dengan
menggunakan informasi pada tabel 2.16 maka dapat dibuat rangkaian LCD 2x16 seperti
pada gambar di bawah ini:

Gambar 3.6. Rangkaian LCD [7]

3.3.3 Rangkaian RTC DS1307


Jenis komunikasi RTC DS1307 adalah I2C. ATmega8535 memiliki hardware I2C
pada portC.1 sebagai SDA dan portC.0 sebagai SCL. RTC DS1307 membutuhkan 2 (dua)
buah pull-up resistor pada kaki SDA dan SCL. Resistor ini digunakan untuk membuat
kondisi logika pada jalur SDA dan SCL menjadi high ketika tidak ada sinyal dari
mikrokontroler. Sumber tenaga yang digunakan sebesar 5 volt. Nilai resistor yang
digunakan pada R1 dan R2 sebesar 4,7 KΩ. XTAL yang digunakan memiliki nilai 32,768
KHz sesuai dengan datasheet DS1307.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
34

Gambar 3.7. Rangkaian RTC DS1307

Pin 3 digunakan untuk pemasangan baterai cadangan, sedangkan pin 5 dan 6


disambungkan ke pin mikrokontroler sebagai masukan data. Sumber tenaga cadangan
diperlukan pada RTC DS1307 agar dapat menyimpan tanggal dan waktu sehingga tetap
berjalan ketika catu daya utama dimatikan. Oleh karena itu digunakan Micro Lithium Cell
dengan tegangan keluaran 3 volt.

3.3.4 Rangkaian Motor DC


Perancangan ini menggunakan sebuah driver untuk menggerakkan motor dengan
kecepatan tertentu. Jenis driver yang digunakan dengan seri L298. Rangkaian ini
membutuhkan sumber tegangan sebesar 5 volt sebagai tegangan masukan driver dan 6 volt
merupakan sumber tegangan untuk menggerakkan motor DC.
Port yang digunakan sebagai pengendali kecepatan motor adalah portD.5. PortD.4
dan portD.6 pada mikrokontroler digunakan sebagai komunikasi antara driver (pengendali
arah) dengan mikrokontroler. Pin enable diberi tegangan 5 volt dan PWM untuk kecepatan
rotasi antara 00h – FFh (8 bit). Motor DC membutuhkan pulsa PWM dan pengaturan
OCR1A/ OCR1B untuk menentukan arah putaran motor.
Modulasi PWM dilakukan dengan cara mengubah lebar pulsa dari suatu pulsa data.
Pengaturan register untuk memeroleh lebar pulsa yang akan digunakan pada mode phase
correct PWM adalah sebagai berikut:
1. TCCR1A = 0b10000001
Bit 7:6 dan bit 4:3 merupakan pengaturan keluaran pada pin OCR1A/ OCR1B mode
phase correct PWM.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
35

2. TCCR1B = 0b00000001
Bit 4:3 dilakukan untuk menentukan mode operasi Timer/Counter1 yaitu phase correct
PWM.
Bit 2:0 merupakan bit pengatur prescaler clock yang masuk ke dalam register TCNT1.
Clock osilator yang digunakan sama dengan clock CPU yaitu 12Mhz.

Gambar 3.8. Rangkaian driver L298

Untuk menentukan frekuensi phase correct PWM dapat diperoleh menggunakan


persamaan 2.4 sehingga diperoleh nilai sebagai berikut :

Nilai frekuensi yang diperoleh adalah 23,529 KHz, nilai frekuensi selalu berbanding
terbalik dengan waktu, sehingga dapat diperoleh lebar pulsa untuk satu siklus dengan
perhitungan sebagai berikut :
(3.1)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
36

3.3.5 Keypad
Keypad yang digunakan dengan matriks 4x4. Keypad berfungsi sebagai masukan
pada mikrokontroler untuk mengatur pada jam-jam tertentu tirai akan dibuka dan ditutup.
Port yang digunakan pada mikrokontroler untuk keypad adalah portA.0 sampai portA.7.
PortA.0, portA.1, portA.2, dan portA.3 atau port baris digunakan sebagai input, sedangkan
portA.4, portA.5, portA.6, dan portA.7 atau port kolom digunakan sebagai output.

Gambar 3.9. Rangkaian keypad 4x4

Pengaturan tombol pada keypad adalah sebagai berikut:


Tabel 3.2. Penggunaan tombol pada keypad
Tombol Fungsi
1 Angka 1
2 Angka 2
3 Angka 3
4 Angka 4
5 Angka 5
6 Angka 6
7 Angka 7
8 Angka 8
9 Angka 9
0 Angka 0
* Tombol geser kiri (←)
# Tombol geser kanan (→)
A Enter
B Menu
C Buka otomatis
D Tutup otomatis
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
37

3.4 Perancangan Perangkat Lunak


3.4.1 Diagram Alir Sistem
Diagram alir utama ditunjukkan pada gambar 3.10. Program utama menunjukkan
proses kerja secara keseluruhan. Program dimulai dengan melakukan inisialisasi terhadap
port-port mikrokontroler yang digunakan untuk proses pengendalian alat.

START

Inisialisasi port mikro

Pengaturan RTC

YA Ada data di
EEPROM

TIDAK

Pilih menu

TIDAK TIDAK
Menu = otomatis Menu = manual

YA YA

Otomatis Manual

Proses

YA
While (1)

TIDAK

STOP

Gambar 3.10. Diagram alir sistem

Pengaturan RTC dilakukan untuk mengatur waktu yang sedang berjalan dan diatur
berdasarkan waktu setempat (GMT +7). Setelah mengatur RTC, kemudian memilih menu
yang akan digunakan yaitu menu otomatis atau menu manual. Mode yang telah dipilih
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
38

akan tersimpan pada EEPROM sehingga pada saat catu daya utama mati maka mode yang
dipilih tetap tersimpan. Saat catu daya utama hidup lagi maka sistem akan melanjutkan ke
proses sehingga tirai dapat terbuka atau tertutup. Jika data bernilai benar maka program
akan terus melanjutkan eksekusi ke program pilih menu. Jika data bernilai salah maka
program tidak akan dilanjutkan/ stop.

3.4.2 Diagram Alir Pengaturan RTC


Pengaturan waktu RTC menjadi awal dalam proses menjalankan waktu
berdasarkan GMT +7 yaitu mengikuti aturan waktu yang berlaku. Pengaturan RTC yang
dimaksud adalah mengatur waktu yaitu tanggal, bulan, tahun, hari, jam, menit, dan detik.
LCD dirancang untuk tanggal, bulan, tahun, hari, jam, menit, dan detik. Data yang telah
diatur kemudian disimpan di RTC.

MULAI

Atur
Tanggal - bulan - tahun
Atur
Jam : menit : detik

Tampilan
Tanggal - bulan - tahun
Tampilan
Jam : menit : detik
Tampilan
hari
Simpan data di RTC

BERHENTI

Gambar 3.11. Diagram alir pengaturan RTC

3.4.3 Diagram Alir Subrutin Menu


Diagram alir subrutin menu dibagi dalam 2 menu. Subrutin ini dipakai untuk
mengatur waktu tirai terbuka dan tertutup. Setelah RTC diatur oleh mikrokontroler,
selanjutnya memilih menu yang akan dipakai. Terdapat 2 menu yang tersedia, yaitu menu
manual dan menu otomatis. Menu manual adalah menu yang dapat diatur waktu tirai untuk
terbuka maupun tertutup sesuai keinginan pengguna sedangkan menu otomatis adalah
menu yang sudah berisi data waktu dan pengguna hanya bisa memilih dari mode yang
sudah tersedia.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
39

Gambar 3.12. menunjukkan proses menggunakan menu manual. Pada menu ini,
pengguna mengatur waktu buka dan tutup tirai. Waktu buka tirai harus lebih kecil daripada
waktu tutup tirai. Jika waktu tutup kurang dari waktu buka maka akan terjadi kesalahan/
error. Data yang dapat dimasukkan oleh pengguna dibatasi maksimal 3 pasang waktu buka
- tutup tirai. Data-data pengaturan buka-tutup tirai disimpan pada EEPROM.
MULAI

Inisialisasi

Data lama YA
dipakai ?

TIDAK

Masukkan waktu
BUKA

Masukkan waktu
TUTUP

TIDAK
Buka [i] < Tutup [i] ERROR

YA

TIDAK
Lagi ? Simpan DATA

YA
BERHENTI
i=i+1

YA TIDAK
i <= 3

Gambar 3.12. Diagram Alir Menu Manual

Pengguna yang menggunakan menu otomatis memilih mode yang tersedia, dari
mode 1 sampai mode 7, dengan menekan tombol pada keypad. Mode yang telah dipilih
oleh pengguna akan tersimpan di EEPROM. Diagram alir menu otomatis dapat dilihat
pada gambar 3.13.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
40

MULAI

Pilih mode

TIDAK
Mode = 1

TIDAK
YA Mode = 2
BUKA [1] = 05:00
TUTUP [1] = 07:00
YA TIDAK
BUKA [2] = 16:00 Mode = 3
TUTUP [2] = 18:00 BUKA [1] = 05:00
TUTUP [1] = 08:00
YA TIDAK
BUKA [2] = 16:00 Mode = 4
TUTUP [2] = 18:00 BUKA [1] = 05:00
TUTUP [1] = 09:00
YA TIDAK
Mode = 5
BUKA [2] = 16:00
TUTUP [2] = 18:00 BUKA [1] = 05:00
TUTUP [1] = 10:00
YA TIDAK
BUKA [2] = 16:00 Mode = 6
TUTUP [2] = 18:00 BUKA [1] = 05:00
TUTUP [1] = 07:00
YA Mode = 7
BUKA [2] = 13:00
TUTUP [2] = 18:00 BUKA [1] = 05:00
TUTUP [1] = 08:00
BUKA [1] = 05:00
BUKA [2] = 14:00 TUTUP [1] = 10:00
TUTUP [2] = 18:00
BUKA [2] = 15:00
TUTUP [2] = 18:00

Mode disimpan
di EEPROM

BERHENTI

Gambar 3.13. Diagram Alir Menu Otomatis

3.4.4 Diagram Alir Proses


Data yang telah disimpan dalam mikrokontroler kemudian diproses dengan
membandingkan data pada RTC. Saat waktu RTC sama dengan atau lebih dari waktu buka
tirai, maka motor akan on dan bergerak searah jarum jam. Tirai akan terus bergerak sampai
menekan limit switch 1 sehingga motor akan off. Jika waktu RTC sama dengan atau lebih
dari waktu tutup, maka motor akan on dan bergerak menutup tirai yang arahnya
berkebalikan dengan arah jarum jam. Motor akan berhenti bergerak saat limit switch 2
tertekan tirai. Proses ini dapat bekerja lebih dari satu kali sesuai masukan yang diberikan
pengguna.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
41

MULAI

Inisialisasi

RTC => TIDAK


BUKA [j]

YA

Motor ON CW

TIDAK
Limit 1 = ON

YA

Motor OFF

RTC => TIDAK


TUTUP [j]

YA

Motor ON CCW

YA

TIDAK
Limit 2 = ON

YA

Motor OFF

j=j+1

j <= x

TIDAK

BERHENTI

Gambar 3.14. Diagram alir proses


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

BAB IV
HASIL PENGAMATAN DAN PEMBAHASAN

Bab ini berisi mengenai hasil pengamatan pengaturan tirai berdasarkan waktu nyata
dari prototipe ruangan. Hasil pengamatan berupa pengujian ketepatan waktu pada RTC,
pergerakan motor DC sebagai penggerak tirai dan tingkat keberhasilan prototipe secara
keseluruhan.
Pada perancangan tugas akhir ini, mikrokontroler yang akan digunakan adalah
ATmega8535 namun pada implementasi alat menggunakan mikrokontroler ATmega32.
Hal ini dikarenakan memori flash ATmega8535 hanya memiliki memori flash sebesar 8K
byte sehingga tidak cukup untuk menampung program yang digunakan yaitu sebesar 4296
kata (1 kata = 16 bit, maka 4296 kata = 68736 bit = 8592 byte) diganti dengan
mikrokontroler ATmega32 yang mempunyai memori lebih besar.

(a) Compiler ATmega8535 (b) Compiler ATmega32

Gambar 4.2. Perbandingan compiler program

42
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
43

4.1. Hasil Implementasi Alat


Hasil akhir perancangan prototipe pengaturan tirai berdasarkan waktu nyata secara
keseluruhan ditunjukkan pada gambar 4.2.

(a) Ruangan Tampak Depan (b) Ruangan Tampak Dalam

(c) Detail Bagian Kiri (d) Detail Bagian Kanan


Gambar 4.2. Prototipe ruangan
Keterangan gambar:
1. LCD 5. Motor DC

2. Keypad 6. Limit Switch 1

3. Saklar 7. Limit Switch 2

4. Tirai 8. Pulley

Sistem dapat digunakan saat saklar dinyalakan. Pada LCD akan muncul perintah
‘Menu tekan B’. Jika menekan tombol B pada keypad maka terdapat 3 pilihan menu, yaitu
menu otomatis, menu manual, dan set waktu. Jika pengguna tidak menekan tombol B akan
muncul data waktu dan tanggal secara otomatis. Tombol A berfungsi untuk memilih menu
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
44

yg diinginkan. Tombol ‘*’ dan ‘#’ berfungsi untuk menampilkan menu pada LCD dengan
menggeser ke kanan atau kiri. Tombol C berfungsi untuk membuka tirai dan tombol D
berfungsi untuk menutup tirai secara otomatis tanpa membandingkan waktu RTC dan data
masukan dari pengguna.
Rangkaian elektronika sebagai pendukung bekerjanya prototipe penelitian ini dapat
dilihat pada gambar di bawah ini:

Gambar 4.3. Rangkaian Mikrokontroler Gambar 4.4. Rangkaian Driver

Gambar 4.5. Rangkaian RTC Gambar 4.6. LCD

Gambar 4.7. Rangkaian Penyearah 6 Volt Gambar 4.8. Rangkaian Penyearah 12 Volt

Gambar 4.9. Keypad 4x4


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
45

Rangkaian mikrokontroler pada gambar 4.3 berfungsi sebagai I/O untuk mengolah
data dari RTC DS1307 dan keypad.
Keterangan gambar pada rangkaian mikrokontroler:
1. Output +5 volt 5. Port untuk downloader
2. GND 6. Port A.0 – A.7
3. Port D.0 – D.7 7. Port C.0 – C.7
4. Port B.0 – B.7 8. Input +12 volt

Gambar 4.4. menunjukkan rangkaian driver menggunakan IC driver L298 yang


berfungsi untuk mengendalikan kecepatan dan arah putar motor. Kecepatan saat waktu
buka dan tutup tirai dibuat berbeda dengan fasilitas PWM yang disediakan mikrokontroler
untuk mengendalikan pin enable dari IC driver L298. RTC sebagai pewaktu pada sistem
dapat dilihat pada gambar 4.5. LCD berfungsi untuk menampilkan data-data yang
diinginkan, antara lain memilih menu, kondisi motor DC, dan data waktu. Modul LCD
dapat dilihat pada gambar 4.6. Penyearah 6 volt menggunakan IC LM7806 untuk
menghasilkan tegangan 6 volt. Penyearah 6 volt berfungsi sebagai catu daya untuk motor
DC yang dapat dilihat pada gambar 4.7. Penyearah 12 volt menggunakan IC LM7812
untuk menghasilkan tegangan 12 volt pada gambar 4.8. sebagai catu daya regulator
mikrokontroler yang menggunakan IC LM7805. Keypad sebagai masukan untuk memilih
menu dapat dilihat pada gambar 4.9.

4.2. Pengujian Keberhasilan Sistem


Keberhasilan sistem dilihat saat pengguna memasukkan waktu yang diatur yaitu
pengaturan tanggal, hari dan waktu. Selanjutnya pengguna mengatur waktu buka dan tutup
tirai sesuai keinginan. Sistem menyediakan 2 pilihan menu sehingga pengguna dapat
memilih menu otomatis atau manual. Pada menu otomatis terdapat 2 kali waktu buka dan
tutup tirai, yaitu pada pagi dan sore hari. Jika pengguna memilih menu otomatis, pengguna
dapat memilih satu dari 7 mode yang disediakan.
Tabel 4.1. menunjukkan hasil pengujian salah satu mode dari 7 mode pada menu
otomatis. Jika pengguna memilih mode 1 maka data waktu buka dan tutup tirai akan
tersimpan di EEPROM. Mode 1 memiliki data buka pertama tirai pukul 05.00 dan pukul
07.00 tirai tertutup, pukul 16.00 tirai terbuka kembali dan pukul 18.00 tirai akan menutup.
Mikrokontroler mencocokkan data pada mode 1 dengan waktu RTC secara terus menerus.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
46

Jika waktu pada RTC dan data pada mode 1 sama, contohnya pada pukul 05.00 motor akan
bergerak sesuai arah jarum jam (cw) maka tirai akan akan terbuka. Kondisi limit switch1
ON ketika tertekan gerakan motor DC yang searah jarum jam (cw) dan kondisi limit
switch2 OFF. Kondisi limit switch ON menyebabkan motor DC berhenti berputar. Pada
pukul 07.00 motor DC akan bergerak berlawanan arah jarum jam. Kondisi limit switch1
OFF dan limit switch2 ON setelah tertekan gerakan motor DC sehingga motor DC berhenti
berputar. Tabel 4.2. menunjukkan kondisi limit switch sesuai arah pergerakan motor DC.

Tabel 4.1. Hasil pengujian pergerakan motor pada menu otomatis


Waktu Pergerakan Motor DC
Mode Buka Tutup Buka Tutup Buka Tutup Buka Tutup
[1] [1] [2] [2] [1] [1] [2] [2]

1 05.00 07.00 16.00 18.00 cw ccw cw ccw

Tabel 4.2. Hasil pengujian limit switch pada menu otomatis


Kondisi Limit Switch
Waktu Buka Tutup Buka Tutup
Mode [1] [1] [2] [2]
Buka Tutup Buka Tutup
1 2 1 2 1 2 1 2
[1] [1] [2] [2]

1 05.00 07.00 16.00 18.00 on off off on on off off on

Pengujian menu manual berbeda dengan pengujian menu otomatis. Pada menu
manual, pengguna dapat memasukkan waktu buka dan tutup tirai sesuai keinginan sesuai
syarat masukan waktu buka dan tutup. Jadi dalam 1 hari pengguna dapat memasukkan data
sampai 3 kali. Pada menu manual pengguna memasukkan waktu buka [1] dan waktu tutup
[1] nilainya harus lebih besar dari waktu buka [1]. Jika pengguna memasukkan waktu
sampai 3 kali maka nilai yang dimasukkan harus lebih besar dari nilai masukan
sebelumnya. Setelah pengguna memasukkan waktu buka dan tutup selesai, sistem akan
berjalan sesuai program yang telah dirancang.

. Tabel 4.3. Hasil pengujian pergerakan motor pada menu manual


Waktu Pergerakan Motor
Masukan Buka Tutup Buka Tutup Buka Tutup Buka Tutup Buka Tutup Buka Tutup
[1] [1] [2] [2] [3] [3] [1] [1] [2] [2] [3] [3]
3 09.00 09.30 12.00 12.30 17.00 17.30 cw ccw cw ccw cw ccw
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
47

Tabel 4.4. Hasil pengujian limit switch pada menu manual


Kondisi Limit Switch
Waktu
Buka [1] Tutup [1] Buka [2] Tutup[2] Buka [3] Tutup[3]
Masukan
Buka Tutup Buka Tutup Buka Tutup
1 2 1 2 1 2 1 2 1 2 1 2
[1] [1] [2] [2] [3] [3]

3 09.00 09.30 12.00 12.30 17.00 17.30 on off off on on off off on on off off on

Prinsip kerja dari menu manual sama dengan menu otomatis, yaitu pada saat nilai
yang dimasukkan, data disimpan pada mikrokontroler. Saat data pada mikrokontroler dan
waktu RTC sama, maka motor DC akan bergerak searah jarum jam untuk membuka tirai
dan bergerak berlawanan dengan arah jarum jam untuk menutup tirai. Setelah tirai terbuka,
kondisi limit switch1 ON dan limit switch2 OFF. Kondisi ON pada limit switch
menyebabkan motor DC berhenti berputar.

4.3. Pengujian Rangkaian Penyearah


Pengujian rangkaian penyearah 6 volt dan 12 volt menggunakan multimeter dengan
cara mengukur tegangan keluarannya. Hasil pengujian tegangan keluaran penyearah dapat
dilihat pada Tabel 4.5.

Tabel 4.5. Hasil pengujian tegangan keluaran penyearah


Tegangan Keluaran
Penyearah
(Volt)
6 volt 6,03
12 volt 12,02

Hasil pengukuran tegangan keluaran rangkaian penyearah 6 volt dan 12 volt


memiliki perbedaan dengan tegangan keluaran idealnya. Pada komponen IC LM7806
tegangan keluaran idealnya adalah 6 volt tetapi pada saat pengujian terukur 6,03 volt
sedangkan IC LM7812 idealnya adalah 12 volt tetapi pada saat pengujian terukur 12,02
volt. Range tegangan keluaran IC LM7806 adalah 5,7 volt sampai 6,3 volt dan IC LM7812
antara 11,4 volt sampai 12,6 volt. Rangkaian penyearah bekerja dengan baik karena nilai
tegangannya berada dalam range tegangan keluaran minimum dan maksimum.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
48

4.4. Pengujian Rangkaian Penggerak


Pengujian rangkaian driver dilakukan dengan memberikan nilai duty cycle pada
portD.4 yang berfungsi sebagai PWM pada mikrokontroler. Sumber tegangan untuk motor
DC sebesar 6 volt. Pada perancangan ini nilai duty cycle yang dipakai adalah 80% untuk
proses menutup tirai dan 100 % untuk membuka tirai. Nilai duty cycle dibawah 60% tidak
digunakan karena tidak mampu menggerakkan beban (motor DC) dan nilai duty cycle
antara 60% sampai 70% mampu menggerakkan beban namun tidak berhasil menekan limit
switch. Pengujian dilakukan dengan mencatat waktu yang ditempuh dengan jarak 13,5 cm.
Hasil pengujian rangkaian driver ditunjukkan pada Tabel 4.6.

Tabel 4.6. Hasil pengujian rangkaian driver


Nilai duty cycle Percobaan ke-
(%) 1 2 3 4 5
80 3 detik 3 detik 3 detik 3 detik 3 detik
100 2 detik 2 detik 2 detik 2 detik 2 detik

Berdasarkan percobaan yang dilakukan, diperoleh waktu yang ditempuh untuk duty
cycle 80% adalah 3 detik dan duty cycle 100% adalah 2 detik.

4.5. Pengujian Rangkaian RTC


Pengujian RTC dilakukan dengan mengamati nilai keluaran frekuensi pada pin
SQW (kaki 7) menggunakan frequency counter dengan model GFC-8055G.

Gambar 4.10. Frekuensi pada RTC

Pengukuran nilai kristal pada RTC menggunakan frequency counter adalah 1 Hz.
Sehingga nilai error-nya:

Berdasarkan nilai error yang dikeluarkan frekuensi IC DS1307 menunjukkan


bahwa pewaktuan yang digunakan tidak mempunyai kesalahan (errror 0%).
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
49

4.6. Pembahasan Perangkat Lunak


4.6.1. Program Sistem
Listing program sistem dapat dilihat pada Gambar 4.13. Program sistem dieksekusi
pada saat pengguna menyalakan saklar. Listing program inisialisasi dapat dilihat pada
Gambar 4.11. Program akan menampilkan data waktu dan tanggal yang telah disetting
sebelumnya. Pada saat saklar aktif, mikrokontroler akan mengeksekusi program inisialisasi
yaitu i2c_init dan rtc_init. Kemudian akan muncul tampilan pada LCD seperti yang
ditunjukkan pada Gambar 4.12. Jika pengguna menekan tombol B maka akan muncul
menu yang tersedia. Selanjutnya mikrokontroler mengecek jika ‘adakah=0’ atau tidak ada
data waktu,data tanggal dan data Pilih_Menu maka pengguna harus memasukkan data
tersebut. Setelah terpenuhi data waktu, data tanggal kemudian masuk ke program
Pilih_Menu sehingga data ‘adakah=1’ dan nilainya terpenuhi. Mikrokontroler akan
membaca data yang tersimpan di EEPROM.

Gambar 4.11. Listing program inisialisasi

Gambar 4.12. Tampilan awal

Program sistem akan mengakses waktu dan tanggal dari RTC. Jika menekan tombol
B maka akan mengeksekusi fungsi Pilih_Menu. Tombol C difungsikan untuk membuka
tirai tanpa mengatur waktu buka dan tombol D untuk menutup tirai tanpa mengatur waktu
tutup tirai. Waktu dan tanggal secara otomatis dibaca oleh mikrokontroler dengan variabel
RTC.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
50

Program sistem mengeksekusi data waktu saat waktu buka sama dengan waktu
sebenarnya sehingga motor akan otomatis membuka tirai. Saat waktu tutup sama dengan
waktu yang sebenarnya maka motor akan kembali menutup tirai. Motor akan bergerak
sesuai jumlah masukan waktu buka-tutup tirai. Proses membuka dan menutup tirai
dilakukan sesuai masukan yang telah diatur sebelumnya.

Gambar 4.13. Listing program sistem

Fungsi s!=sTemp adalah pada saat nilai s (detik) tidak sama dengan s sesudahnya
maka nilai s akan disamakan. Program ini dimaksudkan untuk menghindari pengiriman
data yang sama secara terus menerus pada LCD yang menimbulkan kedip dan tampilan
yang tidak jelas. Tampilan data di LCD hanya akan berubah ketika terjadi perubahan nilai
variabel s.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
51

4.6.2. Program Pengaturan RTC


Pengaturan RTC dilakukan saat awal pembuatan program untuk menentukan letak
jalur data (SDA) dan jalur clock (SCL). Inisialisasi port untuk komunikasi RTC dengan
mikrokontroler dapat dilihat pada gambar 4.14.

Gambar 4.14. Inisialisasi port komunikasi RTC

Program mengatur tanggal dapat dilihat pada gambar di bawah ini. Pengguna
memasukkan terlebih dahulu masing-masing 2 digit untuk tanggal, bulan dan tahun. Pada
kolom 1 dan 2 berisi tanggal puluhan dan satuan, kolom 4 dan 5 berisi bulan puluhan dan
satuan, dan kolom 7 dan 8 berisi tahun puluhan dan satuan. Setelah semua data terisi maka
akan dibandingkan pada program cekTanggal untuk memberi batas masukan tanggal. Data
tanggal yang sudah terisi kemudian di-set pada RTC.

Gambar 4.15. Listing program setting tanggal


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
52

Gambar 4.16. Tampilan setting tanggal

Program cekTanggal berfungsi sebagai batas masukan tanggal yang dapat dilihat
pada Gambar 4.17. Masukan tanggal tidak lebih dari 31 dan bulan tidak lebih dari 12. Jika
data yang dimasukkan salah maka akan mengulang sampai bernilai benar.

Gambar 4.17. Listing batasan masukan tanggal

Gambar 4.18. Tampilan jika data masukan dari keypad salah

Pengaturan hari dilakukan setelah pengaturan tanggal selesai. Pada gambar dibawah
ini adalah sebagian listing program untuk mengatur hari. Pengaturan hari menggunakan
tombol bintang (*) untuk geser ke kiri dan tombol pagar (#) untuk geser ke kanan. Tombol
A untuk memilih hari yang ditentukan. RTC akan secara otomatis menyimpan data hari
sesuai alamat register hari yaitu 0x03.

Gambar 4.19. Listing program memasukkan data hari


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
53

Gambar 4.19. (lanjutan) Listing program memasukkan data hari

Gambar 4.20. Tampilan pilihan hari

Pada gambar 4.19, indexGeser digunakan untuk mengecek data yang akan dipilih.
Jika indexGeser=1 maka hari yang diatur adalah Sunday. Setelah fungsi getSettingHari
selesai dieksekusi maka secara otomatis data yang ditampilkan di LCD adalah 3 huruf
seperti sun, mon sampai sat. Listing program nama hari dapat dilihat pada Gambar 4.21.
Variabel hari diisi data dari register hari pada RTC.

Gambar 4.21. Listing nama hari

Program mengatur waktu dapat dilihat pada gambar di bawah ini. Pengguna
memasukkan terlebih dahulu masing-masing 2 digit untuk jam, menit dan detik. Pada
kolom 1 dan 2 berisi jam puluhan dan satuan, kolom 4 dan 5 berisi menit puluhan dan
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
54

satuan, dan kolom 7 dan 8 berisi detik puluhan dan satuan. Setelah semua data terisi maka
akan dibandingkan pada program cekWaktu untuk memberi batas masukan angka jam,
menit, dan detik. Data waktu yang sudah terisi kemudian di-set pada RTC.

...............................

Gambar 4.22. Listing program setting waktu

Gambar 4.23. Tampilan setting waktu

Program batas masukan untuk mengatur waktu pada Gambar 4.24. Masukan untuk
jam tidak lebih dari 23, menit dan detik tidak lebih dari 59. Jika lebih dari angka tersebut
program akan mengulang masukan data waktu sampai angka yg dimasukkan sudah
memenuhi syarat.

Gambar 4.24. Listing batas masukan waktu


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
55

Saat pengguna telah selesai memasukkan data tanggal, hari dan waktu maka
tampilan pada LCD seperti pada Gambar 4.25.

Gambar 4.25. Tampilan waktu, tanggal, dan hari

4.6.3. Program Menu


Pada program menu ada 3 pilihan menu yang tersedia, yaitu menu mode otomatis,
menu manual dan set waktu yang dapat dilihat pada Gambar 4.26.

(a) Menu Otomatis (b) Menu Manual

(c) Set Waktu (d) Kembali


Gambar 4.26. Submenu pada sistem

Listing program menu dapat dilihat pada gambar 4.27. Fungsi tombol bintang (*)
adalah untuk menggeser menu ke kiri dan tombol pagar (#) untuk menggeser menu ke
kanan. Tombol A berfungsi untuk mengeksekusi menu yang telah dipilih. Tombol C dan D
merupakan tombol untuk membuka dan menutup tirai langsung tanpa perlu mencocokan
dengan waktu masukan. Pada saat pengguna memilih menu yang akan digunakan,
EEPROM akan dihapus terlebih dahulu. Hal ini dilakukan agar tidak ada penumpukan data
di EEPROM sehingga sistem tidak mengalami error.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
56

Gambar 4.27. Listing program menu

Menu otomatis adalah menu yang pewaktuannya sudah tersedia dan pengguna
hanya tinggal memilih pada jam berapa tirai akan dibuka dan ditutup. Pada menu manual
pengguna dapat memasukkan waktu buka dan tutup tirai secara bebas. Sedangkan menu set
waktu merupakan menu yang digunakan untuk mengatur ulang waktu.

4.6.4. Program EEPROM


Data waktu yang telah dipilih akan disimpan di EEPROM sehingga pada saat suplai
mati data tersebut masih dapat dijalankan setelah ada suplai pada sistem.

Gambar 4.28. Listing program EEPROM


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
57

4.6.5. Program Subrutin Menu


Program subrutin menu dibuat menjadi 2 menu yaitu menu otomatis dan menu
manual. Menu otomatis berfungsi untuk mengatur waktu tirai dibuka maupun ditutup
secara otomatis dengan cara memilih waktu pada mode-mode yang sudah disediakan. Pada
menu otomatis disediakan 2 pasang buka-tutup tirai.

Gambar 4.29. Listing program menu otomatis

Gambar 4.29 merupakan listing program menu otomatis. Jika pengguna menekan
tombol 1, maka waktu buka tirai yang pertama adalah pukul 05.00 dan waktu tutup tirai
pukul 07.00, waktu buka tirai yang kedua pada pukul 16.00 dan waktu tutup tirai pada
pukul 18.00 seperti pada Gambar 4.31. Tombol A berfungsi untuk mengeksekusi mode
yang telah dipilih dan menyimpan data waktu di EEPROM. Tombol B berfungsi untuk
kembali ke menu utama dan membatalkan pilihan menu otomatis.

Gambar 4.30. Tampilan setelah memilih menu otomatis

Gambar 4.31. Tampilan memilih mode 1 pada menu otomatis


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
58

Pada menu manual, pengguna terlebih dahulu memasukkan data waktu buka dan
tutup. Listing program untuk mengolah data buka dan tutup dapat dilihat pada Gambar
4.32. Pengguna terlebih dahulu memasukkan waktu buka berurutan dari jam puluhan, jam
satuan, menit puluhan, menit satuan, detik puluhan dan detik satuan. Nilai jam puluhan dan
jam satuan buka dikonversikan menjadi data jam buka. Kemudian jam, menit dan detik
dikonversikan lagi menjadi waktu buka yang berfungsi untuk syarat pada menu manual.

...............................

Gambar 4.32. Listing program waktu buka

Gambar 4.33. Tampilan memasukkan waktu buka

Listing olah data tutup memiliki penjelasan yang sama dengan listing olah data buka.

Gambar 4.34. Listing program waktu tutup


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
59

...............................

Gambar 4.34. (lanjutan) Listing program waktu tutup

Gambar 4.35. Tampilan memasukkan waktu tutup

Pada menu manual, pengguna akan memasukkan waktu buka terlebih dahulu,
kemudian memasukkan waktu tutup. Listing program menu manual dapat dilihat pada
Gambar 4.36. Menu manual memiliki syarat pertama yaitu waktu data tutup harus lebih
besar daripada waktu buka. Jika masukan tidak sesuai dengan syarat pertama maka pada
LCD akan tertampil ‘salah!buka>tutup’ seperti pada Gambar 4.37. Waktu buka tirai yang
kedua harus lebih besar dari waktu tutup tirai pertama, jika masukannya tidak sesuai maka
akan tertampil pada LCD ‘salah!’ seperti pada Gambar 4.28. Program akan terus
mengoreksi waktu yang tidak sesuai dan mengulang sampai syarat terpenuhi.

Gambar 4.36. Listing program menu manual


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
60

Data yang dimasukkan terpenuhi maka pengguna dapat memilih untuk menambah
data atau tidak. Pengguna dapat menambah data dengan menekan tombol A. Jika pengguna
tidak ingin menambah data pengguna dapat menekan tombol apa saja pada keypad kecuali
tombol C dan D. Saat pengguna selesai memasukkan data buka-tutup maka program akan
mengeksekusi dapat menambah waktu buka-tutup tirai dengan menekan tombol A. Waktu
buka-tutup yang dapat dimasukkan pengguna maksimal 3 pasang data. Data-data yang
sudah ditulis kemudian disimpan pada EEPROM.

Gambar 4.37. Tampilan waktuBuka[i]>=waktuTutup[i]

Gambar 4.38. Tampilan waktuBuka[i]<waktuTutup[i-1]

Gambar 4.39. Tampilan menambah data masukan pada menu manual

Gambar 4.40. Tampilan data masukan menu manual setelah 3 pasang data
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
61

4.6.6. Program Proses


Listing program pada Gambar 4.41 adalah pengaturan PWM mode phase correct 8
bit dengan portD.5 sebagai keluaran PWM.

Gambar 4.41. Pengaturan PWM

Listing program proses dapat dilihat pada gambar 4.42. Subprogram ini berfungsi
untuk mengatur arah putar dan kecepatan motor DC. Limit switch1 bernilai high. Ketika
waktu buka sama dengan waktu yang sedang berjalan maka motor akan ON. Motor
bergerak berlawanan arah jarum jam sampai menyentuh limit switch1 maka secara
otomatis motor akan OFF dan limit switch1 bernilai low. Saat waktu tutup sudah sama
dengan waktu nyata maka motor akan kembali ON dan bergerak searah jarum jam. Limit
switch2 bernilai high. Jika sudah menyentuh limit switch2 maka motor akan OFF dan limit
switch2 bernilai low.

Gambar 4.42. Listing program proses


PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

BAB V
KESIMPULAN DAN SARAN

5.1. Kesimpulan
Dari hasil percobaan dan pengujian pengaturan tirai berdasarkan waktu nyata
menggunakan prototipe ruangan dapat disimpulkan bahwa:
1. Berdasarkan pengujian yang telah dilakukan, sistem yang dirancang dapat bekerja
dengan baik sesuai mode yang dipilih.
2. Berdasarkan pengujian RTC, waktu yang ditampilkan tidak memiliki kesalahan (error
0%).

5.2. Saran
Saran untuk pengembangan pengaturan tirai berdasarkan waktu nyata menggunakan
prototipe ruangan adalah sebagai berikut:
1. Prototipe dikembangkan pada model sesungguhnya.
2. Mekanisme buka-tutup tirai ditambahkan dengan kondisi cuaca.
3. Dapat diprogram untuk jangka waktu yang lama.

62
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI

DAFTAR PUSTAKA

[1] http://architectaria.com/dekorasi-dan-desain-interior-untuk-menciptakan-ruang-
keluarga-yang-nyaman.html, diakses pada 20 September 2012
[2] Winoto, Ardi, 2008, Mikrokontroler AVR Atmega8/32/16/8535 dan pemrograman
dengan Bahasa C pada WinAVR, Bandung : Informatika.
[3] ----, 2011, Data Sheet Mikrokontroler Atmega8535, Atmel
[4] http://buayainstrumen.blogspot.com/2012/01/menggunakan-timer-0-overflow-
untuk.html, diakses 21 September 2012
[5] ----, Data Sheet DS1307, Dallas Semiconductor
[6] http://digilib.ittelkom.ac.id/index.php?option=com_content&view=article&id=772:rtc-
real-time-clock&catid=16:mikroprocessorkontroller&Itemid=14, diakses pada 2
November 2012
[7] Andrianto, Heri, 2008, Pemrograman Mikrokontroler AVR ATmega16 menggunakan
Bahasa C (CodeVision AVR), Bandung : Informatika.
[8] http://depokinstruments.com/2010/02/08/teknik-pengendalian-lcd-karakteri/#more-585,
diakses pada 2 November 2012
[9] Rahman, Fitri, 2010, Menghitung Nilai Resistor Pada Rangkaian LED,
http://elcottomotif.blogspot.com/2010/08/menghitung-nilai-resistor-pada.html, diakses
20 Agustus 2012.
[10] http://depokinstruments.com/2011/07/27/teori-keypad-matriks-4x4-dan-cara-
penggunaannya/, diakses tanggal 20 Agustus 2012.
[11] http://staff.ui.ac.id/internal/040603019/material/DCMotorPaperandQA.pdf diakses
pada 3 Januari 2013
[12] http://www.scribd.com/doc/54912333/15/A-4-3-Limit-Switch diakses pada 20 Agustus
2012
[13] http://dosen.narotama.ac.id/wp-content/uploads/2012/01/Sejarah-Robot.pdf diakses 17
Februari 2013
[14] ----, 2000, Data Sheet L298, STMikroelectronic

63
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
L1

Lampiran Tabel Hasil Pengujian Keberhasilan Sistem

Tabel L1. Hasil pengujian pergerakan motor pada menu otomatis


Waktu Pergerakan Motor
Mode Buka Tutup Buka Tutup 1 2 3
Buka Tutup Buka Tutup Buka Tutup Buka Tutup Buka Tutup Buka Tutup
[1] [1] [2] [2]
[1] [1] [2] [2] [1] [1] [2] [2] [1] [1] [2] [2]
1 05.00 07.00 16.00 18.00 cw ccw cw ccw cw ccw cw ccw cw ccw cw ccw
2 05.00 08.00 16.00 18.00 cw ccw cw ccw cw ccw cw ccw cw ccw cw ccw
3 05.00 09.00 16.00 18.00 cw ccw cw ccw cw ccw cw ccw cw ccw cw ccw
4 05.00 10.00 16.00 18.00 cw ccw cw ccw cw ccw cw ccw cw ccw cw ccw
5 05.00 07.00 13.00 18.00 cw ccw cw ccw cw ccw cw ccw cw ccw cw ccw
6 05.00 08.00 14.00 18.00 cw ccw cw ccw cw ccw cw ccw cw ccw cw ccw
7 05.00 10.00 15.00 18.00 cw ccw cw ccw cw ccw cw ccw cw ccw cw ccw

Keterangan:
cw = clockwise, berputar searah jarum jam
ccw = counter clockwise, berputar berlawanan arah jarum jam
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
L2

Tabel L2. Hasil pengujian limit switch pada menu otomatis


Kondisi Limit Switch
Waktu
1 2 3
Mode
Buka Tutup Buka Tutup Buka [1] Tutup[1] Buka [2] Tutup[2] Buka [1] Tutup[1] Buka [2] Tutup[2] Buka [1] Tutup[1] Buka [2] Tutup[2]
[1] [1] [2] [2] 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2
1 05.00 07.00 16.00 18.00 on off off on on off off on on off off on on off off on on off off on on off off on
2 05.00 08.00 16.00 18.00 on off off on on off off on on off off on on off off on on off off on on off off on
3 05.00 09.00 16.00 18.00 on off off on on off off on on off off on on off off on on off off on on off off on
4 05.00 10.00 16.00 18.00 on off off on on off off on on off off on on off off on on off off on on off off on
5 05.00 07.00 13.00 18.00 on off off on on off off on on off off on on off off on on off off on on off off on
6 05.00 08.00 14.00 18.00 on off off on on off off on on off off on on off off on on off off on on off off on
7 05.00 10.00 15.00 18.00 on off off on on off off on on off off on on off off on on off off on on off off on

Keterangan:
on = keadaan limit switch saat tertekan
off = keadaan limit switch saat tidak tertekan
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
L3

Lampiran Tabel Hasil Pengujian Keberhasilan Sistem

Tabel L3. Hasil pengujian pergerakan motor pada menu manual dengan 1 pasang data masukan
Waktu Pergerakan Motor
Buka Tutup 1 2 3
[1] [1] Buka [1] Tutup [1] Buka [1] Tutup [1] Buka [1] Tutup [1]
07.00 07.30 cw ccw cw ccw cw ccw

Tabel L4. Hasil pengujian pergerakan motor pada menu manual dengan 2 pasang data masukan
Waktu Pergerakan Motor
Buka Tutup Buka Tutup 1 2 3
Buka Tutup Buka Tutup Buka Tutup Buka Tutup Buka Tutup Buka Tutup
[1] [1] [2] [2]
[1] [1] [2] [2] [1] [1] [2] [2] [1] [1] [2] [2]
08.00 08.30 16.00 16.30 cw ccw cw ccw cw ccw cw ccw cw ccw cw ccw

Tabel L5. Hasil pengujian pergerakan motor pada menu manual dengan 3 pasang data masukan
Waktu Pergerakan Motor
Buka Tutup Buka Tutup Buka Tutup 1 2
Buka Tutup Buka Tutup Buka Tutup Buka Tutup Buka Tutup Buka Tutup
[1] [1] [2] [2] [3] [3]
[1] [1] [2] [2] [3] [3] [1] [1] [2] [2] [3] [3]
09.00 09.30 12.00 12.30 17.00 17.30 cw ccw cw ccw cw ccw cw ccw cw ccw cw ccw

Keterangan:
ccw = counter clockwise, berputar berlawanan arah jarum jam
cw = clockwise, berputar searah jarum jam
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
L4

Tabel L6. Hasil pengujian limit switch pada menu manual dengan 1 pasang data masukan
Waktu Kondisi Limit Switch
Buka Tutup 1 2 3
[1] [1] Buka [1] Tutup [1] Buka [1] Tutup [1] Buka [1] Tutup [1]
07.00 07.30 on off on off on off

Tabel L7. Hasil pengujian limit switch pada menu manual dengan 2 pasang data masukan
Waktu Kondisi Limit Switch
Buka Tutup Buka Tutup 1 2 3
Buka Tutup Buka Tutup Buka Tutup Buka Tutup Buka Tutup Buka Tutup
[1] [1] [2] [2]
[1] [1] [2] [2] [1] [1] [2] [2] [1] [1] [2] [2]
08.00 08.30 16.00 16.30 on off on off on off on off cw ccw cw ccw

Tabel L8. Hasil pengujian limit switch pada menu manual dengan 3 pasang data masukan
Pergerakan Motor
Waktu
1 2
Tutup Tutup Tutup Tutup Tutup Tutup
Buka Tutup Buka Tutup Buka Tutup Buka [1] Buka [2] Buka [3] Buka [1] Buka [2] Buka [3]
[1] [2] [3] [1] [2] [3]
[1] [1] [2] [2] [3] [3]
1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2
09.00 09.30 12.00 12.30 17.00 17.30 on off off on on off off on on off off on on off off on on off off on on off off on

Keterangan:
on = keadaan limit switch saat tertekan
off = keadaan limit switch saat tidak tertekan
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
L5

Listing Program
L.9. Listing Program Keseluruhan

/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.8 Professional
Automatic Program Generator
© Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : PENGATURAN TIRAI BERDASARKAN WAKTU NYATA


Version :
Date : 23/10/2013
Author : Aninditya
Company : Sapta
Comments:

Chip type : ATmega32


Program type : Application
Clock frequency : 16,000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 512
*****************************************************/

unsigned char h, m, s,sTemp, d, mo, y, temp[16];


unsigned char karakter;
unsigned char jamSet, menitSet, detikSet, tanggalSet, bulanSet, tahunSet;
unsigned char jamBuka[3],menitBuka[3],detikBuka[3];
unsigned char jamTutup[3],menitTutup[3],detikTutup[3];
unsigned char eeprom jamTutupE[3],menitTutupE[3],detikTutupE[3];
unsigned char eeprom jamBukaE[3],menitBukaE[3],detikBukaE[3];
char eeprom adakah;
int waktuBuka[3],waktuTutup[3];
unsigned char nilaiDetikPuluhanSet,nilaiDetikSatuanSet,nilaiJamPuluhanSet, nilaiJamSatuanSet, nilaiMenitSatuanSet,
nilaiMenitPuluhanSet,nilaiHariPuluhanSet, nilaiHariSatuanSet,
nilaiBulanPuluhanSet,nilaiBulanSatuanSet,nilaiTahunPuluhanSet,nilaiTahunSatuanSet;
unsigned char detikPuluhanSet,detikSatuanSet,jamPuluhanSet, jamSatuanSet, menitSatuanSet, menitPuluhanSet,hariPuluhanSet,
hariSatuanSet, bulanPuluhanSet,bulanSatuanSet,tahunPuluhanSet,tahunSatuanSet;
unsigned char jamPuluhanBuka,jamSatuanBuka,menitSatuanBuka,menitPuluhanBuka,detikPuluhanBuka,detikSatuanBuka;
unsigned char jamPuluhanTutup,jamSatuanTutup,menitSatuanTutup,menitPuluhanTutup,detikPuluhanTutup,detikSatuanTutup;
unsigned char
nilaiJamPuluhanBuka,nilaiJamSatuanBuka,nilaiMenitSatuanBuka,nilaiMenitPuluhanBuka,nilaiDetikPuluhanBuka,nilaiDetikSatuanBuka;
unsigned char nilaiJamPuluhanTutup,nilaiJamSatuanTutup,nilaiMenitSatuanTutup,nilaiMenitPuluhanTutup,nilaiDetikPuluhanTutup,
nilaiDetikSatuanTutup;
unsigned char hari;

char buffer[7],dataPilih ;
int latch,i=0;int latch1=1;
char lagi,pilihan,kondisiMasukkan;
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
L6

int a,indexMenu=0;
/*
h=hour, m=minute, s=second
d=day, mo=month, y=year
*/

#include <mega32.h>
#include <stdio.h>
#include <delay.h>
#include <stdlib.h>
#include <bcd.h>

// I2C Bus functions


#asm
.equ __i2c_port=0x15 ;PORTC //init i2c di portC
.equ __sda_bit=0 //portC.0 untuk sda
.equ __scl_bit=1 //portC.1 untuk scl
#endasm
#include <i2c.h>

// DS1307 Real Time Clock functions


#include <ds1307.h>

// Alphanumeric LCD Module functions


#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>

// Declare your global variables here

#define KEY_DIR DDRA


#define KEY_IN PINA
#define KEY_OUT PORTA
#define BOUNCING 30

char key;
const char KEYTABLE[4][4] = {{'1','2','3','A'},{'4','5','6','B'},{'7','8','9','C'},{'*','0','#','D'}};

char kbhit();
char getkeypad();

void initKeypad()
{
KEY_DIR=0x0F; //init keypad input output
KEY_OUT=0xF0; //mengaktifkan pull up pin pada output keypad
}

int cekWaktu(unsigned char jam,unsigned char menit,unsigned char detik)


{
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
L7

if(jam>23 || menit>59 || detik>59)


{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf(" masukan salah");
delay_ms(200);
return 1;
}
return 0;
}

int cekTanggal(unsigned char tanggal, unsigned char bulan)


{
if(tanggal>31 || bulan>12)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf(" masukan salah");
delay_ms(200);
return 1;
}
return 0;
}

void konversiCharToLcd(char angka,int baris,int kolom)


{
if(angka=='1')
{
lcd_gotoxy(baris,kolom);
lcd_putsf("1");
}
if(angka=='2')
{
lcd_gotoxy(baris,kolom);
lcd_putsf("2");
}
if(angka=='3')
{
lcd_gotoxy(baris,kolom);
lcd_putsf("3");
}
if(angka=='4')
{
lcd_gotoxy(baris,kolom);
lcd_putsf("4");
}
if(angka=='5')
{
lcd_gotoxy(baris,kolom);
lcd_putsf("5");
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
L8

}
if(angka=='6')
{
lcd_gotoxy(baris,kolom);
lcd_putsf("6");
}
if(angka=='7')
{
lcd_gotoxy(baris,kolom);
lcd_putsf("7");
}
if(angka=='8')
{
lcd_gotoxy(baris,kolom);
lcd_putsf("8");
}
if(angka=='9')
{
lcd_gotoxy(baris,kolom);
lcd_putsf("9");
}
if(angka=='0')
{
lcd_gotoxy(baris,kolom);
lcd_putsf("0");
}

char kbhit() //scanning keypad


{
unsigned char row, col, row_val, output;
unsigned char delaytime;
output=0;
for(col=0;col<4;col++)
{
KEY_OUT=~(1<<col);
for(delaytime=0x10; delaytime>0; delaytime--) ;
row_val=~((KEY_IN&0b11110000)>>4);
for(row=0;row<4;row++)
{
if(row_val & (1<<row))
{
output=KEYTABLE[row][col];
return output;
}
}
}
return output;
}
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
L9

char getkeypad()
{
unsigned char debcount; //debounce counter
static unsigned char newkey=0;
static unsigned char oldkey=0;
do {
newkey = kbhit();
}
while(newkey == oldkey);
for(debcount=0; debcount < BOUNCING; debcount++)
{
newkey = kbhit();
if(newkey == 0 || newkey != oldkey)
{
debcount=0;
}
oldkey = newkey;
}
return(newkey);
}

char getDataKeypad()
{
int looper=1;
while(looper==1)
{
key=0;
key=getkeypad();
if(key!=0)
{
switch(key)
{
case '1': karakter=1;break;
case '2': karakter=2;break;
case '3': karakter=3;break;
case '4': karakter=4;break;
case '5': karakter=5;break;
case '6': karakter=6;break;
case '7': karakter=7;break;
case '8': karakter=8;break;
case '9': karakter=9;break;
case '0': karakter=0;break;
case '*': karakter='*';break; //geser kanan
case '#': karakter='#';break; //geser kiri, kembali
case 'A': karakter='A';break; //enter
case 'B': karakter='B';break; //pilih menu
case 'C': karakter='C';break; //motor buka otomatis
case 'D': karakter='D';break; //motor tutup otomatis
}
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
L10

return key;
looper=0;
}
}
}

void tulis_data_ke_eeprom(int a)
{
int n;
for(n=0;n<=a;n++)
{
jamBukaE[n]=jamBuka[n];
menitBukaE[n]=menitBuka[n];
detikBukaE[n]=detikBuka[n];
jamTutupE[n]=jamTutup[n];
menitTutupE[n]=menitTutup[n];
detikTutupE[n]=detikTutup[n];
}
}

void hapus_eeprom()
{
int n;
for(n=0;n<=2;n++)
{
jamBukaE[n]=999; //nilai 999=data tidak tercapai
menitBukaE[n]=999;
detikBukaE[n]=999;
jamTutupE[n]=999;
menitTutupE[n]=999;
detikTutupE[n]=999;
}
}

void baca_data_ke_eeprom()
{
int n;
for(n=0;n<=2;n++)
{
jamBuka[n]=jamBukaE[n];
menitBuka[n]=menitBukaE[n];
detikBuka[n]=detikBukaE[n];
jamTutup[n]=jamTutupE[n];
menitTutup[n]=menitTutupE[n];
detikTutup[n]=detikTutupE[n];
}
}

void nama_hari()
{
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
L11

hari=rtc_read(0x03); //alamat register hari


lcd_gotoxy(13,1);
if (hari==1) lcd_putsf("sun");
else if (hari==2) lcd_putsf("mon");
else if (hari==3) lcd_putsf("tue");
else if (hari==4) lcd_putsf("wed");
else if (hari==5) lcd_putsf("thu");
else if (hari==6) lcd_putsf("fri");
else if (hari==7) lcd_putsf("sat");
}

void olahDataBuka()
{
lcd_clear();
lcd_gotoxy(0,0);lcd_putsf(" input waktuBuka");
lcd_gotoxy(2,1);lcd_putsf(":");
lcd_gotoxy(5,1);lcd_putsf(":");
delay_ms(100);

karakter=0;
jamPuluhanBuka = getDataKeypad();
nilaiJamPuluhanBuka=karakter;
konversiCharToLcd(jamPuluhanBuka,0,1);

jamSatuanBuka = getDataKeypad();
nilaiJamSatuanBuka=karakter;
konversiCharToLcd(jamSatuanBuka,1,1);

menitPuluhanBuka = getDataKeypad();
nilaiMenitPuluhanBuka=karakter;
konversiCharToLcd(menitPuluhanBuka,3,1);

menitSatuanBuka = getDataKeypad();
nilaiMenitSatuanBuka=karakter;
konversiCharToLcd( menitSatuanBuka,4,1);

detikPuluhanBuka = getDataKeypad();
nilaiDetikPuluhanBuka=karakter;
konversiCharToLcd(detikPuluhanBuka,6,1);

detikSatuanBuka = getDataKeypad();
nilaiDetikSatuanBuka=karakter;
konversiCharToLcd(detikSatuanBuka,7,1);
delay_ms(100);
lcd_clear();

jamBuka [i]=nilaiJamPuluhanBuka*10+nilaiJamSatuanBuka;
menitBuka[i]=nilaiMenitPuluhanBuka*10+nilaiMenitSatuanBuka;
detikBuka[i]=nilaiDetikPuluhanBuka*10+nilaiDetikSatuanBuka;
waktuBuka[i]=jamBuka[i]*3600+menitBuka[i]*60+detikBuka[i];
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
L12

if(cekWaktu(jamBuka[i],menitBuka[i],detikBuka[i]))
{
olahDataBuka();
}
}

void olahDataTutup()
{
lcd_gotoxy(2,1);lcd_putsf(":");
lcd_gotoxy(5,1);lcd_putsf(":");
lcd_gotoxy(0,0);lcd_putsf("input waktuTutup");

jamPuluhanTutup = getDataKeypad();
nilaiJamPuluhanTutup=karakter;
konversiCharToLcd(jamPuluhanTutup,0,1);

jamSatuanTutup = getDataKeypad();
nilaiJamSatuanTutup=karakter;
konversiCharToLcd(jamSatuanTutup,1,1);

menitPuluhanTutup = getDataKeypad();
nilaiMenitPuluhanTutup=karakter;
konversiCharToLcd(menitPuluhanTutup,3,1);

menitSatuanTutup = getDataKeypad();
nilaiMenitSatuanTutup=karakter;
konversiCharToLcd(menitSatuanTutup,4,1);

detikPuluhanTutup = getDataKeypad();
nilaiDetikPuluhanTutup=karakter;
konversiCharToLcd(detikPuluhanTutup,6,1);

detikSatuanTutup = getDataKeypad();
nilaiDetikSatuanTutup=karakter;
konversiCharToLcd(detikSatuanTutup,7,1);

jamTutup [i]=nilaiJamPuluhanTutup*10+nilaiJamSatuanTutup;
menitTutup[i]=nilaiMenitPuluhanTutup*10+nilaiMenitSatuanTutup;
detikTutup[i]=nilaiDetikPuluhanTutup*10+nilaiDetikSatuanTutup;
waktuTutup[i]=jamTutup[i]*3600+menitTutup[i]*60+detikTutup[i];
if(cekWaktu(jamTutup[i],menitTutup[i],detikTutup[i]))
{
olahDataTutup();
}
}

void menuManual()
{
olahDataBuka();
olahDataTutup();
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
L13

if(waktuBuka[i]>=waktuTutup[i])
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("salah!buka>tutup");
delay_ms(200);
menuManual();
}
if(i>0)
{
if(waktuBuka[i]<waktuTutup[i-1])
{
lcd_clear();
lcd_gotoxy(5,0);
lcd_putsf("salah!");
delay_ms(200);
menuManual();
}
}
delay_ms(100);
lcd_clear();
lcd_gotoxy(0,1);lcd_putsf("lagi?");
itoa(i,buffer); //char to int
lcd_puts(buffer);
if(i>=2)
{
lcd_clear();
lcd_gotoxy(1,1);
lcd_putsf("tekan sembarang");
}
lagi=getDataKeypad();
if(lagi=='A'&& i<2)
{
tulis_data_ke_eeprom(i);
i++;
menuManual();
}
}

void pwm_start(int speed)


{
OCR1AL = speed; //Load Pulse width
OCR1AH = 0;
DDRD |= (1<<5); //PortD.5 sbg o/p
TCCR1A = 0x81; //8-bit, Non-Inverted PWM
TCCR1B = 1; //Start PWM
}

void motorBuka()
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
L14

{
int tempBuka=0;
lcd_clear();
lcd_gotoxy(0,0);lcd_putsf(" buka tirai");

while(latch==1)
{
if(PIND.0==1&&tempBuka!=1) //limit switch1 on
{
PORTD=0b01100000; //motor ccw
pwm_start(255); //kecepatan 100%
tempBuka=1;
}
if(PIND.0==0) //limit switch1 off
{
PORTD=0x00; //motor off
delay_ms(300);
latch=0;
OCR1A=0;
}
}
}

void motorTutup()
{
int tempTutup=0;
lcd_clear();
lcd_gotoxy(0,0);lcd_putsf(" tutup tirai");
while(latch==1)
{
if(PIND.1==1&&tempTutup!=1) //limit switch2 on
{
PORTD=0b00110000; //motor cw
pwm_start(180); //kecepatan 70%
tempTutup=1;
}
if(PIND.1==0) //limit switch2 off
{
PORTD=0x00; //motor off
delay_ms(300);
latch=0;
OCR1A=0;
}
}
}

void getSettingWaktu()
{
lcd_clear();
lcd_gotoxy(2,1);lcd_putsf(":");
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
L15

lcd_gotoxy(5,1);lcd_putsf(":");
lcd_gotoxy(0,0);lcd_putsf("set Waktu");
karakter=0;
jamPuluhanSet=getDataKeypad();
nilaiJamPuluhanSet=karakter;
konversiCharToLcd(jamPuluhanSet,0,1);

jamSatuanSet=getDataKeypad();
nilaiJamSatuanSet=karakter;
konversiCharToLcd(jamSatuanSet,1,1);

menitPuluhanSet=getDataKeypad();
nilaiMenitPuluhanSet=karakter;
konversiCharToLcd(menitPuluhanSet,3,1);

menitSatuanSet=getDataKeypad();
nilaiMenitSatuanSet=karakter;
konversiCharToLcd(menitSatuanSet,4,1);

detikPuluhanSet=getDataKeypad();
nilaiDetikPuluhanSet=karakter;
konversiCharToLcd(detikPuluhanSet,6,1);

detikSatuanSet=getDataKeypad();
nilaiDetikSatuanSet=karakter;
konversiCharToLcd(detikSatuanSet,7,1);
delay_ms(30);

jamSet=nilaiJamPuluhanSet*10+nilaiJamSatuanSet;
menitSet=nilaiMenitPuluhanSet*10+nilaiMenitSatuanSet;
detikSet=nilaiDetikPuluhanSet*10+nilaiDetikSatuanSet;

if(cekWaktu(jamSet,menitSet,detikSet))
{
getSettingWaktu();
}
rtc_set_time(jamSet,menitSet,detikSet); //data waktu di-set di RTC
}

void getSettingHari()
{
unsigned char indexGeser=1,tempIndexGeser=0,latch=1;
char keypadButton;
lcd_gotoxy(0,0);
lcd_putsf("geser hari = */#");
lcd_gotoxy(0,1);
lcd_putsf("tekan A untuk ok");
while(latch==1)
{
keypadButton=getDataKeypad();
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
L16

if(keypadButton=='*')
{
indexGeser++;
}
if(keypadButton=='#')
{
indexGeser--;
}
if(keypadButton=='A')
{
i2c_start(); //mulai komunikasi
i2c_write(0xd0); //alamat ds1307
i2c_write(3); //alamat register day
i2c_write(bin2bcd(indexGeser));
i2c_stop(); //berhenti
latch=0;
}
if(indexGeser<1)
{
indexGeser=7;
}
if(indexGeser>7)
{
indexGeser=1;
}
if(indexGeser==1&&tempIndexGeser!=indexGeser)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf(" Sunday");
lcd_gotoxy(0,1);
lcd_putsf("tekan A untuk ok");
tempIndexGeser=1;
}
if(indexGeser==2&&tempIndexGeser!=indexGeser)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf(" Monday");
lcd_gotoxy(0,1);
lcd_putsf("tekan A untuk ok");
tempIndexGeser=2;
}
if(indexGeser==3&&tempIndexGeser!=indexGeser)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf(" Tuesday");
lcd_gotoxy(0,1);
lcd_putsf("tekan A untuk ok");
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
L17

tempIndexGeser=3;
}
if(indexGeser==4&&tempIndexGeser!=indexGeser)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf(" Wednesday");
lcd_gotoxy(0,1);
lcd_putsf("tekan A untuk ok");
tempIndexGeser=1;
}
if(indexGeser==5&&tempIndexGeser!=indexGeser)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf(" Thursday");
lcd_gotoxy(0,1);
lcd_putsf("tekan A untuk ok");
tempIndexGeser=5;
}
if(indexGeser==6&&tempIndexGeser!=indexGeser)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf(" Friday");
lcd_gotoxy(0,1);
lcd_putsf("tekan A untuk ok");
tempIndexGeser=6;
}
if(indexGeser==7&&tempIndexGeser!=indexGeser)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf(" Saturday");
lcd_gotoxy(0,1);
lcd_putsf("tekan A untuk ok");
tempIndexGeser=7;
}
}
}

void getSettingTanggal()
{
lcd_clear();
lcd_gotoxy(2,1);lcd_putsf("-");
lcd_gotoxy(5,1);lcd_putsf("-");
lcd_gotoxy(0,0);lcd_putsf("Set Tanggal");
hariPuluhanSet=getDataKeypad();
nilaiHariPuluhanSet=karakter;
konversiCharToLcd(hariPuluhanSet,0,1);
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
L18

hariSatuanSet=getDataKeypad();
nilaiHariSatuanSet=karakter;
konversiCharToLcd(hariSatuanSet,1,1);

bulanPuluhanSet=getDataKeypad();
nilaiBulanPuluhanSet=karakter;
konversiCharToLcd(bulanPuluhanSet,3,1);

bulanSatuanSet=getDataKeypad();
nilaiBulanSatuanSet=karakter;
konversiCharToLcd(bulanSatuanSet,4,1);

tahunPuluhanSet=getDataKeypad();
nilaiTahunPuluhanSet=karakter;
konversiCharToLcd(tahunPuluhanSet,6,1);

tahunSatuanSet=getDataKeypad();
nilaiTahunSatuanSet=karakter;
konversiCharToLcd(tahunSatuanSet,7,1);

tanggalSet=nilaiHariPuluhanSet*10+nilaiHariSatuanSet;
bulanSet=nilaiBulanPuluhanSet*10+nilaiBulanSatuanSet;
tahunSet=nilaiTahunPuluhanSet*10+nilaiTahunSatuanSet;

if(cekTanggal(tanggalSet,bulanSet))
{
getSettingTanggal();
}

delay_ms(100);
lcd_clear();
rtc_set_date(tanggalSet,bulanSet,tahunSet); //data tanggal di-set di RTC
getSettingHari(); //mengatur hari
}

void menuAuto()
{
lcd_clear();
i=2;

lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf(" tekan 1-7 ");
lcd_gotoxy(0,0);
lcd_putsf("A=ok B=kembali");
while(latch1==1)
{
pilihan=getDataKeypad();
switch(pilihan)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
L19

{
case '1':
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("1");
jamBuka[0]=5;
menitBuka[0]=0;
detikBuka[0]=0;
jamTutup[0]=7;
menitTutup[0]=0;
detikTutup[0]=0;

jamBuka[1]=16;
menitBuka[1]=0;
detikBuka[1]=0;
jamTutup[1]=18;
menitTutup[1]=0;
detikTutup[1]=0;

lcd_clear();
delay_ms(25);
lcd_gotoxy(0,0);lcd_putsf(" 05:00-07:00");
lcd_gotoxy(0,1);lcd_putsf(" 16:00-18:00");

break;

case '2':
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("2");
jamBuka[0]=5;
menitBuka[0]=0;
detikBuka[0]=0;
jamTutup[0]=8;
menitTutup[0]=0;
detikTutup[0]=0;

jamBuka[1]=16;
menitBuka[1]=0;
detikBuka[1]=0;
jamTutup[1]=18;
menitTutup[1]=0;
detikTutup[1]=0;

lcd_clear();
delay_ms(25);
lcd_gotoxy(0,0);lcd_putsf(" 05:00-08:00");
lcd_gotoxy(0,1);lcd_putsf(" 16:00-18:00");

break;
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
L20

case '3':
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("3");
jamBuka[0]=5;
menitBuka[0]=0;
detikBuka[0]=0;
jamTutup[0]=9;
menitTutup[0]=0;
detikTutup[0]=0;

jamBuka[1]=16;
menitBuka[1]=0;
detikBuka[1]=0;
jamTutup[1]=18;
menitTutup[1]=0;
detikTutup[1]=0;

lcd_clear();
delay_ms(25);
lcd_gotoxy(0,0);lcd_putsf(" 05:00-09:00");
lcd_gotoxy(0,1);lcd_putsf(" 16:00-18:00");

break;

case '4':
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("4");
jamBuka[0]=5;
menitBuka[0]=0;
detikBuka[0]=0;
jamTutup[0]=10;
menitTutup[0]=0;
detikTutup[0]=0;

jamBuka[1]=16;
menitBuka[1]=0;
detikBuka[1]=0;
jamTutup[1]=18;
menitTutup[1]=0;
detikTutup[1]=0;

lcd_clear();
delay_ms(25);
lcd_gotoxy(0,0);lcd_putsf(" 05:00-10:00");
lcd_gotoxy(0,1);lcd_putsf(" 16:00-18:00");

break;
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
L21

case '5':
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("5");
jamBuka[0]=5;
menitBuka[0]=0;
detikBuka[0]=0;
jamTutup[0]=7;
menitTutup[0]=0;
detikTutup[0]=0;

jamBuka[1]=13;
menitBuka[1]=0;
detikBuka[1]=0;
jamTutup[1]=18;
menitTutup[1]=0;
detikTutup[1]=0;

lcd_clear();
delay_ms(25);
lcd_gotoxy(0,0);lcd_putsf(" 05:00-07:00");
lcd_gotoxy(0,1);lcd_putsf(" 13:00-18:00");

break;

case '6':
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("6");
jamBuka[0]=5;
menitBuka[0]=0;
detikBuka[0]=0;
jamTutup[0]=8;
menitTutup[0]=0;
detikTutup[0]=0;

jamBuka[1]=14;
menitBuka[1]=0;
detikBuka[1]=0;
jamTutup[1]=18;
menitTutup[1]=0;
detikTutup[1]=0;

lcd_clear();
delay_ms(25);
lcd_gotoxy(0,0);lcd_putsf(" 05:00-08:00");
lcd_gotoxy(0,1);lcd_putsf(" 14:00-18:00");

break;
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
L22

case '7':
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("7");
jamBuka[0]=5;
menitBuka[0]=0;
detikBuka[0]=0;
jamTutup[0]=10;
menitTutup[0]=0;
detikTutup[0]=0;

jamBuka[1]=15;
menitBuka[1]=0;
detikBuka[1]=0;
jamTutup[1]=18;
menitTutup[1]=0;
detikTutup[1]=0;

lcd_clear();
delay_ms(25);
lcd_gotoxy(0,0);lcd_putsf(" 05:00-10:00");
lcd_gotoxy(0,1);lcd_putsf(" 15:00-18:00");

break;

case 'A': //enter


lcd_clear();
lcd_gotoxy(5,1);
i=2;
lcd_putsf("terpilih");
tulis_data_ke_eeprom(i);
latch1=0;

break;

case 'B':
lcd_clear();
lcd_gotoxy(5,1);
lcd_putsf("kembali ke menu");
latch1=0;
break;
}
}
}

void Pilih_Menu(void)
{
if(indexMenu>3)
{
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
L23

indexMenu=0;
}
if(indexMenu<0)
{
indexMenu=3;
}
if(indexMenu==0)
{
lcd_clear();
lcd_gotoxy(0,0);lcd_putsf("Menu Otomatis...");
lcd_gotoxy(0,1);lcd_putsf("ya=A *<<< #>>>");
}

if(indexMenu==1)
{
lcd_clear();
lcd_gotoxy(0,0);lcd_putsf("Menu Manual.....");
lcd_gotoxy(0,1);lcd_putsf("ya=A *<<< #>>>");
}
if(indexMenu==2)
{
lcd_clear();
lcd_gotoxy(0,0);lcd_putsf("Set waktu.......");
lcd_gotoxy(0,1);lcd_putsf("ya=A *<<< #>>>");
}
if(indexMenu==3)
{
lcd_clear();
lcd_gotoxy(0,0);lcd_putsf("kembali.........");
lcd_gotoxy(0,1);lcd_putsf("ya=A *<<< #>>>");
}

dataPilih=getDataKeypad();
if(dataPilih=='*')
{
dataPilih=0;
indexMenu++;
Pilih_Menu();
}
if(dataPilih=='#')
{
dataPilih=0;
indexMenu--;
Pilih_Menu();
}

if(dataPilih=='A')
{
dataPilih=0;
if(indexMenu==0)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
L24

{
hapus_eeprom();
menuAuto();
}
if(indexMenu==1)
{
hapus_eeprom();
menuManual();
}
if(indexMenu==2)
{
getSettingWaktu(); //mengatur waktu
getSettingTanggal(); //mengatur tanggal
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("berhasil");
delay_ms(2000);
}
if(indexMenu==3)
{
return;
}
}
}

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization


// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
// PORTA=0xF0;
// DDRA=0x0F;

// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
L25

// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0


PORTD=0x00;
DDRD=0xF0;

// Timer(s)/Counter(s) Interrupt(s) initialization


TIMSK=0x00;

// Analog Comparator initialization


// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// I2C Bus initialization

// DS1307 Real Time Clock initialization


// Square wave output on pin SQW/OUT: Off
// SQW/OUT pin state: 0

// LCD module initialization

i2c_init();
rtc_init(0,0,0);
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf("Menu tekan B"); //B untuk memilih menu
delay_ms(3000);
initKeypad(); //cek keypad
if(adakah=='0') //tidak ada data
{
getSettingWaktu(); //set waktu
getSettingTanggal(); //set tanggal
Pilih_Menu();
adakah='1'; //ada data
}
baca_data_ke_eeprom();

while (1)
{
kondisiMasukkan=kbhit();
switch(kondisiMasukkan)
{
case 'B': delay_ms(300);kondisiMasukkan=0;Pilih_Menu();break;
case 'C': delay_ms(300);latch=1;motorBuka();break; //buka otomatis
case 'D' :delay_ms(300);latch=1;motorTutup();break; //tutup otomatis
}
rtc_get_time(&h,&m,&s); //akses jam
rtc_get_date(&d,&mo,&y); //akses tanggal
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
L26

for(a=0;a<=i;a++)
{
if(h==jamBuka[i]&&m==menitBuka[i]&&s==detikBuka[i])
{
latch=1;
motorBuka();
lcd_clear();
}

if(h==jamTutup[i]&&m==menitTutup[i]&& s==detikTutup[i])
{
latch=1;
motorTutup();
lcd_clear();
}
}
if(s!=sTemp)
{
sTemp=s;
lcd_clear();
lcd_gotoxy(0,0);
sprintf(temp,"Time %d:%d:%d",h,m,s);
lcd_puts(temp);

lcd_gotoxy(0,1);
sprintf(temp,"Date %d-%d-%d",d,mo,y);
lcd_puts(temp);
nama_hari();
}
delay_ms(10);
};
}
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
L27

L.10. Rangkaian Keseluruhan

Anda mungkin juga menyukai