SAKLAR OTOMATIS TUGAS AKHIR Diajukan dalam rangka penyelesaian studi Diploma III untuk mencapai gelar Ahli Madya Disusun oleh : Nama : Joko Pitoyo NIM : 5352303506 Program Studi : D3 Teknik Elektro Jurusan : Teknik Elektro FAKULTAS TEKNIK UNIVERSITAS NEGERI SEMARANG 2007 ii
HALAMAN PENGESAHAN Laporan Tugas Akhir ini telah dipertahankan di hadapan sidang penguji Tugas Akhir Fakultas Teknik Universitas Negeri Semarang Pada hari : Rabu Tanggal : 15 Agustus 2007 Pembimbing, Drs. Y. Primadiyono, M.T NIP. 131 687 182 Penguji I, Penguji II, Drs.Y. Primadiyono, M.T Drs. Sugeng Purbawanto, M.T NIP. 131 687 182 NIP. 131 404 315 Ketua Jurusan Teknik Elektro, Kaprodi D3 Teknik Elektro, Drs. Djoko Adi Widodo, M.T Drs. Agus Murnomo, M.T NIP. 131 570 064 NIP. 131 616 610 Dekan Fakultas Teknik, Prof. Dr. Soesanto
NIP.130 875 753 iii ABSTRAK Joko Pitoyo. 2007. Penggunaan Programmable Timer Sebagai Saklar Otomatis. Tugas Akhir. D3 Teknik Elektro. Teknik Elektro. Fakultas Teknik. Universitas Negeri Semarang. Banyak peralatan elektronik yang pengoperasiannya berasal dari sumber energi listrik PLN. Sebagian dari peralatan listrik tersebut menggunakan cara manual untuk mematikannya yaitu dengan mencabut koneksi peralatan listrik dari sumber tegangannya. Hal ini tentunya akan menyita waktu orang yang mempergunakan peralatan listrik tersebut karena harus menunggu alat selesai bekerja dan setelah itu mematikannya. Selain itu resiko kemungkinan terjadinya kerusakan peralatan listrik tersebut akibat kelalaian pemakai dapat mengakibatkan kerugian. Tugas akhir ini meliputi perancangan dan realisasi sebuah alat pewaktu digital (Programmable Timer) yang digunakan untuk menghidupkan dan mematikan piranti elektronik yang terhubung dengan alat pewaktu digital tersebut. Alat pewaktu digital terprogram ini (Programmable Timer) menggunakan mikrokontroler AT89S51, keypad matrix 4X3, LCD 2X16 karakter seri M1632 dan beberapa komponen pendukung lainnya. Perancangan dan realisasi Programmable Timer tersebut berasal dari hasil eksperimen, sedangkan pendukung penulisan tugas akhir ini diperoleh dari beberapa sumber antara lain buku, internet, dan literatur. Programmable Timer ini menggunakan relay yang dikendalikan oleh mikrokontroler AT89S51 sebagai saklar elektroniknya. Sehingga pemilihan jenis relay yang sesuai dengan beban harus diperhatikan atau penggunaan relay dapat diganti dengan TRIAC jika diperlukan. Berdasarkan hasil percobaan yang dilakukan, Programmable Timer ini bekerja dengan cukup baik yaitu kontinuitas waktu cacahan dibandingkan dengan jam acuan selalu tetap. Cacahan waktu maksimal alat ini adalah 99 jam 99 menit 99 detik sehingga pada beberapa aplikasinya, alat cukup dapat diandalkan kerjanya. Karena Programmable Timer yang dibuat masih jauh dari kesempurnaan, diharapkan perancangan Programmable Timer ini dapat dikembangkan lebih lanjut dan dapat dimanfaatkan untuk keperluan tertentu. iv
MOTTO DAN PERSEMBAHAN MOTTO
Pain make us stronger [ Max Cavalera ]
Face this life with opened-mind, although this life is so painful for you PERSEMBAHAN : This is dedicated to :
The AlMighty God for my hardship.
My Parents and families at home.
For those loving me. v
KATA PENGANTAR Alhamdulillah, puji syukur kepada Alloh SWT atas segala rahmat dan karunia-Nya sehingga penulis dapat menyelesaikan laporan Tugas Akhir yang berjudul PENGGUNAAN PROGRAMMABLE TIMER SEBAGAI SAKLAR OTOMATIS . Sebelumnya, penulis mengucapkan terima kasih yang tak ternilai kepada : 1. Bpk. Drs. Y. Primadiyono, M.T selaku Dosen pembimbing Tugas Akhir. 2. Bpk. Drs. Agus Murnomo, M.T, Kaprodi D3 Teknik Elektro UNNES. 3. Bpk. Drs. Djoko Adi Widodo, M.T, Ketua Jurusan Teknik Elektro UNNES. 4. Bpk. Prof. Dr. Soesanto, Dekan Fakultas Teknik UNNES. 5. Bpk. Ir. Yudiansyah Lubis ( Staf Engineer PT. LEN Industri Bandung ) atas perkenalan dan ilmunya. 6. My Parents and families at home for prayer, money, and everything Forgive me for my wrong forgive me with much remorseI just want to hold my pain.!! . 7. Rekan rekan di mailist DELTA Electronic dan Moderatornya Pak Paulus Andi Nalwan, S.T ( DELTA Electronic Surabaya ) untuk tanya jawabnya. 8. Rekan rekan di mailist Mikrokontroler Atmel Indonesia beserta moderatornya Pak Widodo Budiharto atas bimbingannya. 9. Mr. Wichit Sirichote ( Applied Physics Department, Faculty of Science King Mongkuts Institute of Technology Ladkrabang, Thailand ) for your greatest projects. vi
10. All the lads of D3 TE Instrumentasi Kendali UNNES Akt. 2003, Thanks for everything you gave me sincerely and I want to say thanks for all of our jokes, smiles, helps, and all your abuse on me I will miss you all guysmy regards for you all . 11. For my best partner ever, he is Untung Gunawan, A.Md Thanks for everything and I will never forget your sincerity on me see you next time and I think you are my best partner ever who understand me and someday later I will need your helps again my best friend keep spiritmy best regard for you !!. 12. All of WISMA SANTAI camp society. I like our crazy friendship and I will miss everything weve done together . 13. The big family of IMBARA ( Ikatan Mahasiswa Banjarnegara ) wherever you stand up. Pokoke ngapak terus bae lah yaaamake it real guys, thanks for our friendship and keep it exist . 14. Semarang extreme metal music communities and all around the world. Keep on enjoy our fucking music to control our pain and keep in touch guyskill your suffer with it !! . 15. Thanks a lot for my big Boss ( Mr. Subhan of D.O.T Production Semarang ) with their clans for our friendship. 16. Wina Zaetun. This is someone who asked me to write her name here!! 17. For all of beautiful chicks in my heart. You make me sick!! 18. For everyone who gave me supports, helps, and everything sincerely. 19. All of my past that so painful for me. I dont want you comes to me again you make me sick!! vii
Dalam penulisan laporan tugas akhir ini penulis menyadari masih banyak kekurangan, oleh karena itu maka kritik dan saran yang bersifat membangun sangat penulis harapkan. Semoga laporan laporan tugas akhir ini dapat bermanfaat bagi pihak yang memerlukannya. Semarang, 10 September 2007 Penulis viii DAFTAR ISI Halaman HALAMAN JUDUL ..i LEMBAR PENGESAHAN ii ABSTRAK...iii MOTTO DAN PERSEMBAHAN ..iv KATA PENGANTAR.v DAFTAR ISI vii DAFTAR GAMBAR.viii DAFTAR TABEL ..ix DAFTAR LAMPIRAN x BAB I. PENDAHULUAN .1 A. Latar Belakang Masalah 1 B. Permasalahan ..2 C. Pembatasan Masalah ...2 D. Tujuan 2 E. Manfaat 3 F. Sumber Data ...3 G. Sistematika Laporan Tugas Akhir 3 BAB II. LANDASAN TEORI ...5 A. Mikrokontroler AT89S51 ..5 1. Arsitektur Mikrokontroler AT89S51 ..5 1.1. Organisasi Mikrokontroler AT89S51 ..7 1.1.1. Memori Data AT89S51 7 ix
1.1.2. Memori Program AT89S51 ...8 1.2. Hardware Mikrokontroler AT89S51 ..9 2. Assembler MCS-51.10 B. Keypad Matrix 4X3 Non Common 11 1. Keypad Matrix 4X3 Non Common ..11 2. Penggunaan Keypad Matrix 4X3 Non Common 12 C. Modul LCD ( Liquid Crystal Display ) M1632 13 1. Hardware LCD M1632 .13 2. Teori LCD M1632 14 3. Penggunaan LCD Karakter M1632....16 D. Komponen Pendukung ..17 1. Resistor ..17 2. Kapasitor ..17 3. Dioda 18 4. Transistor ..19 5. Relay .20 BAB III. PERANCANGAN DAN REALISASI ALAT ..21 A. Perancangan Alat 21 1. Perancangan Hardware .22 1.1. Hardware Input ..22 1.2. Hardware Output ..24 1.3. Catu Daya ..26 2. Perancangan Software 29 2.1. Program Utama ..29 x
2.2. Program Layanan Interupsi .40 B. Hasil dan Pembahasan 47 BAB IV. PENUTUP .48 A. Kesimpulan 48 B. Saran ...48 DAFTAR PUSTAKA 50 LAMPIRAN xi
DAFTAR GAMBAR Halaman Gambar 1. Konfigurasi Kaki Mikrokontroler AT89S51 6 Gambar 2. Peta Memori Data AT89S51 7 Gambar 3. Peta Memori Program AT89S51 8 Gambar 4. Keypad Matrix 4X3 Non Common 11 Gambar 5. Skema Keypad Matrix 4X3 Non Common 12 Gambar 6. LCD ( Liquid Crystal Display ) Karakter M1632 14 Gambar 7. Hubungan HD44780 Dengan Layar LCD M1632 14 Gambar 8. Diagram Internal Controller HD44780 15 Gambar 9. Simbol Resistor 17 Gambar 10. Simbol Kapasitor 18 Gambar 11. Simbol Dioda 19 Gambar 12. Simbol Transistor 19 Gambar 13. Simbol Relay 20 Gambar 14. Diagram Blok Sistem Programmable Timer 21 Gambar 15. Skema Keypad Dengan AT89S51 23 Gambar 16. Skema LCD M1632 Dengan AT89S51 24 Gambar 17. Skema Saklar Relay dan Buzzer Pada AT89S51 25 Gambar 18. Skema Catu daya Programmable Timer 26 Gambar 19. Skema Lengkap Programmable Timer 28 Gambar 20. Diagram pembagian software Programmable Timer 29 Gambar 21. Flowchart Programmable Timer 30 Gambar 22. Flowchart program utama pengaktifan timer 0 31 Gambar 23. Flowchart timer saat selesai menghitung 38 xii
Gambar 24. Flowchart layanan interupsi timer 0 41 Gambar 25. Gambar Programmable Timer yang dikemas 46 xiii DAFTAR TABEL Halaman Tabel 1. Tabel Fungsi Pin LCD M1632 16 Tabel 2. Koneksi Keypad Dengan AT89S51 23 Tabel 3. Daftar Komponen Programmable Timer 27 Tabel 4. Tabel Pengujian Programmable Timer 47 xiv
DAFTAR LAMPIRAN Lampiran 1. Listing Program Lengkap Programmable Timer Lampiran 2. Datasheet Mikrokontroler AT89S51 1
BAB I PENDAHULUAN A. Latar Belakang Masalah Di dalam kehidupan sehari-hari banyak ditemui piranti-piranti elektronik yang digunakan oleh manusia. Sebagian piranti-piranti tersebut masih menggunakan aliran listrik PLN untuk menghidupkannya dan juga memiliki rangkaian pewaktu terintegrasi (integrated timer) yang berfungsi untuk mematikan piranti itu sendiri setelah dipergunakan untuk beberapa waktu. Misalkan televisi, microwave, rice cooker dan lain sebagainya. Pada kenyataannya tidak semua piranti-piranti elektronik yang sering kita jumpai memiliki pewaktu yang terintegrasi didalamnya, sehingga untuk mematikannya setelah digunakan harus dengan mencabut aliran listrik melalui steker maupun saklar. Sebenarnya banyak rangkaian pewaktu (timer) yang dijual dipasaran tetapi pada umumnya memiliki batas pewaktuan yang kurang fleksibel yaitu hanya beberapa jam saja. Begitu juga akurasi waktu umumnya hingga dalam ukuran menit. Dalam perancangan Programmable Timer ini akan dibuat alat pewaktu dengan akurasi hingga dalam jangkah detik sehingga lebih akurat. Selain itu Programmable Timer ini dapat diseting dengan mudah melalui keypad matrix. Dari latar belakang yang dikemukakan diatas maka dipilih judul Penggunaan Programmable Timer Sebagai Saklar Otomatis. 2
B. Permasalahan Berdasarkan latar belakang diatas maka permasalahannya adalah : 1. Bagaimana perancangan Programmable Timer agar dapat digunakan sebagai saklar elektronik ? 2. Bagaimana unjuk kerja Programmable Timer pada penerapannya ? C. Pembatasan Masalah Alat pewaktu terprogram (Programmable Timer) ini memiliki beberapa keterbatasan yaitu : 1. Pewaktu ini mencacah mundur berdasarkan pengaturan data waktu melalui keypad dengan batas nilai waktu maksimum 99 jam, 99 menit, dan 99 detik. 2. Programmable timer ini menggunakan catu daya yang diambil dari jaringan listrik PLN. Tetapi tidak menutup kemungkinan digunakannya Aki ( Accumulator ) sebagai sumber arus dengan mengubah rangkaian catu daya Programmable Timer. D. Tujuan Tujuan dari perancangan alat pewaktu (Programmable Timer) ini adalah membuat alat pewaktu yang dapat dimanfaatkan sebagai saklar elektronik. 3
E. Manfaat Berdasarkan tujuan penulisan laporan tugas akhir diatas maka didapatkan beberapa manfaat dari perancangan alat pewaktu (Programmable Timer) ini yaitu : 1. Mencegah hal hal yang tidak diinginkan sebagai akibat kelalaian penggunaan peralatan elektronik.. 2. Mengurangi pemborosan energi listrik sebagai akibat penggunaan peralatan elektronik yang berlebihan. F. Sumber Data Pengumpulan data untuk penulisan laporan tugas akhir ini diambil dari literatur, buku, eksperimen dan internet. G. Sistematika Laporan Tugas Akhir Sistematika penyusunan laporan tugas akhir ini adalah sebagai berikut : 1. Bab I. Pendahuluan terdiri dari latar belakang masalah, permasalahan, pembatasan masalah, tujuan, manfaat, sumber data dan sistematika penulisan laporan tugas akhir. 2. Bab II. Tinjauan pustaka berisi penguraian landasan teori dan peralatan atau komponen yang digunakan. 3. Bab III. Perancangan alat berisi cara kerja alat pewaktu yang akan dibuat, pembuatan alat, hasil dan pembahasannya. 4
4. Bab IV. Penutup berisi kesimpulan dan saran. Daftar pustaka berisi tentang daftar pustaka yang diambil sebagai rujukan dalam penyusunan laporan tugas akhir. Lampiran berisi data yang berhubungan dengan pembuatan tugas akhir. 5
BAB II LANDASAN TEORI A. Mikrokontroler AT89S51 1. Arsitektur Mikrokontroler AT89S51 Mikrokontroler merupakan sebuah IC processor skala kecil (microprocessor) yang populer saat ini sebagai sebuah IC keping tunggal yang mampu bekerja layaknya komputer mini. Mikrokontroler hanya dapat dijalankan jika diisi program dengan menggunakan bahasa pemrograman tertentu. Pada penulisan dan perancangan laporan tugas akhir ini digunakan mikrokontroler AT89S51 buatan ATMEL Corp. Mikrokontroler ini memiliki kapasitas memori untuk menyimpan program sebesar 4 Kbyte Flash PEROM (Programmable and Erasable Read Only Memory) yang dapat diisi dan dihapus berkali-kali. Memori ini digunakan oleh mikrokontroler AT89S51 untuk menyimpan perintah (instruction set) sehingga memungkinkan mikrokontroler ini bekerja dengan mode keping tunggal (single chip) maupun mode memori tambahan (external memory) hingga 64 Kbyte. Selain mempunyai memori untuk menyimpan program kerja, mikrokontroler AT89S51 juga memiliki RAM internal sebesar 128 byte untuk menyimpan data sementara. Jika RAM internal kurang mencukupi maka mikrokontroler AT89S51 dapat menggunakan RAM eksternal hingga 64 Kbyte. Berikut ini adalah keunggulan mikrokontroler AT89S51 yang digunakan pada tugas akhir ini: 6
1. Memory Program Internal 4 Kbyte Flash PEROM. 2. Dual Data Pointer (Dual DPTR) 3. Watchdog Timer 4. Frekuensi operasi 0 33 MHz. 5. RAM internal 128 byte 6. 32 pin I/O (Input Output) 7. 2 buah timer/counter 16 bit 8. 6 sumber interupsi 9. Serial UART untuk komunikasi serial 10. Dapat diprogram secara serial ISP (In-System Programming) Gambar 1. Konfigurasi kaki mikrokontroler AT89S51 ( Sumber: Datasheet AT89S51, www.atmel.com
) 7
1.1 Organisasi Mikrokontroler AT89S51 AT89S51 mempunyai struktur ruang memori yang terdiri atas RAM Internal sebesar 128 byte untuk menyimpan data atau variabel yang bersifat sementara, Register Fungsi Khusus (SFR) yang berisi register-register yang mempunyai fungsi khusus, dan flash PEROM 4 Kbytes untuk menyimpan program utama. 1.1.1 Memori Data AT89S51 Memori data RAM (Random Acces Memory) pada AT89S51 sebesar 128 byte yang dapat diakses secara langsung maupun tidak dan digunakan untuk menyimpan data sementara. Diatas lokasi RAM terdapat register fungsi khusus (SFR) sebesar 128 byte yang hanya dapat diakses secara langsung. Gambar 2. Peta memori data AT89S51 ( Sumber: 8051 Memory Organization, www.atmel.com
) 8
Pada gambar 2 diatas terdapat 2 jenis memori data yang dapat diakses oleh mikrokontroler AT89S51, yaitu memori data internal sebesar 128 byte yang terletak di dalam chip mikrokontroler dan memori data external. Jangkauan maksimal akses memori data sebesar 64 Kbyte untuk memori data internal dan external. Memori data internal AT89S51 terletak pada alamat awal 00h hingga 7Fh (Gambar 2) sedangkan alamat diatasnya yaitu 80h sampai FFh adalah register fungsi khusus (SFR). 1.1.2 Memori Program AT89S51 Memori program internal pada mikrokontroler AT89S51 sebesar 4 Kbyte yang terletak pada alamat 0000h hingga 0FFFh. Berikut adalah peta memori program mikrokontroler AT89S51. Gambar 3. Peta memori program AT89S51 ( Sumber: 8051 Memory Organization, www.atmel.com
) 9
Pada gambar peta memori program AT89S51 diatas, memori program pada AT89S51 terdiri dari 2 jenis. Pertama adalah memori program internal dengan alamat 0000h hingga 0FFFh dan kedua adalah memori program eksternal dengan kapasitas maksimal memori sebesar 64 Kbyte. 1.2 Hardware Mikrokontroler AT89S51 Mikrokontroler seri AT89S51 buatan ATMEL Corp. ini memiliki kaki pin I/O sebanyak 32 pin dari jumlah keseluruhan kaki pin yaitu 40 kaki untuk kemasan PDIP (Plastic Dual In-Line Package). Dari 32 I/O (Input-Output) tersebut terbagi menjadi 4 port yaitu Port 0 (P0), Port 1 (P1), Port 2 (P2), dan Port 3 (P3). Keempat port tersebut semuanya bersifat dua arah (bidirectional) yaitu dapat berfungsi sebagai masukan maupun keluaran. Selain itu mikrokontroler AT89S51 memiliki 2 buah timer/counter 16 bit, 6 sumber interupsi internal maupun eksternal, full duplex serial UART, Dual DPTR, Watchdog Timer, dan banyak fitur fitur lainnya. Salah satu fitur yang paling menarik dari mikrokontroler AT89S51 adalah kemampuan In-System Programming (ISP) yaitu sistem pemrograman secara serial sehingga memungkinkan mikrokontroler untuk diprogram di dalam sistem target tanpa perlu mencabut chip AT89S51 dari sistem tersebut. 10
2 Assembler MCS-51 Seperti layaknya komputer yang memerlukan perangkat lunak untuk dapat menggunakannya, mikrokontroler juga memerlukan perangkat lunak (software) agar dapat digunakan. Pada mikrokontroler AT89S51 yang akan digunakan pada perancanangan Programmable Timer ini dapat diprogram dengan menggunakan bahasa pemrograman tertentu, misalnya bahasa assembler MCS-51, bahasa C, dan bahasa basic. Dari ketiga bahasa yang umum digunakan dalam pemrograman mikrokontroler AT89S51 tersebut, bahasa C dan bahasa basic merupakan bahasa pemrograman tingkat tinggi. Sedangkan bahasa assembler MCS-51 merupakan bahasa tingkat bawah dibandingkan dengan kedua bahasa pemrograman diatas. Meskipun assembler merupakan bahasa tingkat bawah tetapi kode kode mesin yang dihasilkan memiliki waktu eksekusi lebih cepat dibandingkan dengan bahasa lainnya. Selain itu kapasitas kode program memori yang dihasilkan juga relatif lebih sedikit dibandingkan dengan bahasa pemrograman lainnya. Instruksi set mikrokontroler AT89S51 bersumber dari perusahaan prosesor Intel Corp. karena mikrokontroler AT89S51 buatan ATMEL merupakan keturunan dari mikroprosesor 8 bit seri 8051 yang pada awalnya dibuat oleh Intel Corp. dan hingga saat ini sudah ribuan varian dari mikroprosesor 8051 Intel yang diproduksi oleh beberapa perusahaan semikonduktor dengan berbagai fitur tambahan. 11
B. Keypad Matrix 4X3 No Common 1. Keypad Matrix 4X3 No Common Keypad matrix 4X3 non common sering digunakan sebagai media untuk memasukan data. Pada tugas akhir ini media keypad digunakan untuk memasukan data pengaturan waktu untuk Programmable Timer. Setelah data waktu yang diinginkan dimasukan melalui keypad maka data tersebut akan diolah oleh mikrokontroler AT89S51. Pengolahan data waktu yaitu berupa pencacahan mundur untuk setiap detik. Keypad matrix 4X3 yang akan digunakan memiliki 4 baris dan 3 kolom tanpa common sehingga pengambilan data dilakukan dengan teknik scanning. Berikut adalah gambar keypad matrix 4X3 non common yang digunakan dalam tugas akhir ini. Gambar 4. Keypad matrix 4X3 non common ( Sumber: AN Teknik Scanning Keypad 4X3 non common, www.delta-electronic.com
) 12
2. Penggunaan Keypad Matrix 4X3 Non Common Metode scanning untuk pengambilan data pada keypad ini dilakukan dengan memberikan logika 0 secara bergantian pada bagian kolom (column scanning). Sesuai pada gambar 5, jika tombol 1 ditekan maka pada saat proses scanning mengirimkan logika 0 pada kolom 1, baris 1 (B1) yang juga terhubung pada kolom satu akibat penekanan tombol 1 juga akan berlogika 0. Gambar 5. Skema keypad matrix 4X3 non common ( Sumber: AN Teknik Scanning Keypad 4X3 Non Common. www.delta-electronic.com
) Proses pengambilan data diawali dengan mengirimkan logika 0 pada kolom 1 dan mengambil kondisi baris. Bila kondisi baris tidak ada yang berlogika 0, maka proses dilanjutkan dengan mengirimkan logika 0 pada kolom 2 serta kembali memeriksa kondisi baris. Bila masih belum ditemukan logika 0 pada baris, maka proses berlanjut ke kolom 3. 13
Demikian seterusnya hingga ditemukan salah satu kondisi baris berlogika 0 yang menandakan adanya penekanan keypad. Setelah kondisi baris dan kolom saat penekanan tombol ditemukan maka program akan mengkonversi kondisi-kondisi tersebut ke dalam bentuk ASCII sesuai dengan tombol yang ditekan sehingga data tersebut dapat dikirim ke LCD. C. Modul LCD ( Liquid Crystal Display ) M1632 1. Hardware LCD M1632 LCD (Liquid Crystal Display) M1632 adalah LCD karakter 16 kolom dan 2 baris yang dilengkapi dengan internal controller sehingga proses scanning LCD dilakukan oleh internal controller tersebut. Didalam LCD M1632 terdapat 3 buah memori utama yaitu CGROM (Character Generator Read Only Memory), CGRAM (Character Generator Random Access Memory), dan DDRAM (Display Data Random Access Memory). DDRAM merupakan memori tempat karakter yang akan ditampilkan. CGRAM merupakan memori untuk menggambarkan pola sebuah karakter dimana bentuk dari karakter dapat diubah ubah sesuai dengan keinginan. Tetapi jika aliran arus atau catu daya LCD hilang maka pola karakter di dalam memori CGRAM juga hilang. Sedangkan memori CGROM berfungsi untuk menggambarkan pola - pola karakter dimana pola tersebut adalah pola pola permanen yang tidak dapat diubah lagi atau bersifat tetap. 14
Gambar 6. LCD ( Liquid Crystal Display ) Karakter M1632 ( Sumber : LCD Character M1632 Tutorial, www.mytutorialcafe.com
) 2. Teori LCD M1632 M1632 merupakan modul LCD matrix dengan konfigurasi 16 karakter dan 2 baris dengan setiap karakternya dibentuk oleh 8 baris pixel dan 5 kolom pixel (1 baris pixel terakhir adalah kursor). Gambar 7 menunjukan hubungan antara layar LCD M1632 dengan internal controller chip ( HD44780U ). Gambar 7. Hubungan HD44780 dengan layar LCD M1632 ( Sumber: Datasheet HD44780, www.hitachi.com
) 15
Pada gambar 7 tersebut tampak karakter A terbentuk oleh COM1 (pixel baris 1) hingga COM8 (pixel baris 8) dan SEG1 (pixel kolom 1) hingga SEG5 (pixel kolom 5). LCD matrix M1632 memiliki internal controller chip HD44780 yaitu sebuah chip yang mengatur proses scanning pada layar LCD yang disusun oleh 16 COM dan 40 SEG sehingga mikrokontroler yang mengakses LCD ini tidak perlu lagi mengatur proses scanning. Mikrokontroler hanya perlu untuk mengirimkan data-data yang merupakan karakter yang akan ditampilkan pada layar LCD maupun perintah-perintah pengaturan tampilan LCD. Diagran internal controller LCD matrix M1632 adalah sebagai berikut: Gambar 8. Diagram internal controller HD44780 ( Sumber : Datasheet HD44780, www.hitachi.com
) 16
3. Penggunaan LCD Karakter M1632 LCD karakter M1632 memiliki 16 kaki dengan fungsi masing masing. Berikut ini adalah tabel fungsi dari masing masing kaki LCD M1632. Tabel 1. Tabel fungsi pin LCD M1632 No Nama Pin
Keterangan 1 Gnd 0 Volt 2 Vcc + 5 Volt 3 Vee Tegangan masukan LCD untuk mengatur kontras tampilan ( 0 - 5 Volt ) 4 RS Register Select, jika 0 = Register Perintah atau 1 = Register Data 5 R/W Read/Write (Baca/Tulis), jika logika 0 = Write atau Logika 1 = Read 6 E Enable LCD Clock, di-set 1 untuk pengiriman atau pembacaan data 7 D0 Data Bus 0 8 D1 Data Bus 1 9 D2 Data Bus 2 10 D3 Data Bus 3 11 D4 Data Bus 4 12 D5 Data Bus 5 13 D6 Data Bus 6 14 D7 Data Bus 7 15 Anoda Tegangan positif 4,5 Volt untuk M1632 yg dilengkapi backlight 16 Katoda Ground backlight
( Sumber: LCD Character M1632 Tutorial, www.mytutorialcafe.com
) LCD M1632 mempunyai dua buah register yang aksesnya diatur dengan menggunakan kaki RS. Pada saat RS berlogika 0, maka register yang diakses adalah register perintah dan pada saat RS berlogika 1, maka register yang diakses adalah register data. Register perintah merupakan register di mana perintah-perintah dari mikrokontroler ke M1632 pada saat proses penulisan data atau status dari M1632 dapat dibaca saat pembacaan data. Mode pembacaan LCD M1632 dilakukan melalui pin R/W dimana jika logika 1 diberikan pada pin ini maka LCD sedang dalam mode 17
pembacaan kondisi atau status LCD. Jika logika 0 diberikan pada pin R/W berarti LCD dalam mode pembacaan. Jika aplikasi tidak memerlukan akses pembacaan kondisi atau status dari LCD maka pin R/W pada LCD M1632 dapat dihubungkan ke ground. Akses ke atau dari M1632 dapat dilakukan dengan antarmuka 4 bit maupun 8 bit dan ditentukan pada saat inisialisasi LCD. Proses inisialisasi LCD M1632 dilakukan oleh mikrokontroler AT89S51. D. Komponen Pendukung 1. Resistor Resistor adalah salah satu komponen elektronik yang berfungsi untuk menghambat aliran arus listrik. Resistor pada umumnya terdiri dari 2 jenis yaitu resistor dengan nilai hambatan (resistance) yang tetap, dan resistor dengan nilai hambatan yang dapat berubah (variable resistor). Resistor memiliki satuan Ohm ( ? ). (a) (b) Resistor tetap Resistor variabel Gambar 9. Simbol resistor 2. Kapasitor Kapasitor secara umum berfungsi untuk menyimpan muatan muatan listrik. Kapasitor terdiri dari 2 jenis yaitu kapasitor berkutub (polar capasitor) dan kapasitor tanpa kutub (nonpolar capasitor). Pada kapasitor 18
tanpa kutub dapat dibagi lagi menjadi 2 jenis yaitu kapasitor tetap (fixed capasitor) dan kapasitor tidak tetap (variable capasitor). Pemasangan kapasitor berkutub tidak boleh terbalik kakinya, sedangkan untuk kapasitor tanpa kutub pemasangannya dapat dibolak balik. Kapasitor tersusun dari 2 buah plat logam yang dipisahkan oleh penyekat dielektrik tertentu. Satuan dari kapasitas kapasitor diukur dalam satuan Farad. (a) (b) (c) Kapasitor polar Kapasitor non polar Kapasitor variabel Gambar 10. Simbol kapasitor 3. Dioda Dioda adalah komponen elektronik yang terbuat dari bahan semikonduktor. Dioda merupakan komponen yang secara umum berfungsi sebagai penyearah arus bolak balik sehingga sering dimanfaatkan sebagai rangkaian penyearah arus AC pada rangkaian catu daya. Dioda hanya dapat menghantarkan arus listrik DC pada satu arah. Pada kenyataannya banyak jenis dioda yang sesuai dengan fungsinya antara lain dioda penyearah, dioda zener yang digunakan untuk menstabilkan tegangan, dioda varactor pada rangkaian osilator frekuensi, dan dioda sinyal yang bisa ditemui pada rangkaian pengolahan sinyal. Berikut adalah beberapa simbol dioda yang banyak digunakan dalam rangkaian elektronika. 19
(a) (b) (c) Dioda tunnel Dioda zener Dioda penyearah Gambar 11. Simbol dioda 4. Transistor Transistor merupakan komponen elektronik yang paling banyak digunakan sebagai penguat (amplifier). Transistor ada 2 jenis yaitu transistor bipolar dan transistor FET. Penggunaan transistor cukup luas pada setiap rangkaian elektronika, misalkan sebagai penguat sinyal AC, penguat arus DC, penguat audio, rangkaian switching, dan masih banyak yang lainnya. Transistor adalah komponen aktif dengan arus, tegangan, atau daya keluaran yang dikendalikan oleh masukannya (Thomas Sri Widodo 2002: 46). (a) (b) Bipolar NPN Bipolar PNP (c) (d) FET kanal N FET kanal P Gambar 12. Simbol transistor 20
Pada Programmable Timer komponen transistor yang digunakan pada rangkaian saklar relay digital adalah jenis bipolar NPN. Transistor tersebut berfungsi sebagai penguat arus bagi relay. 5. Relay Relay merupakan saklar elektro-mekanik yang bekerja karena pengaruh elektromagnetik pada lilitannya. Ketika lilitan atau kumparan relay dialiri arus listrik DC maka kumparan tersebut menimbulkan medan magnet. Kemudian medan magnet tersebut digunakan untuk menarik logam yang telah tersusun sedemikian rupa yang membentuk saklar mekanik. Gambar 13. Simbol relay Pada gambar 13, jika arus mengalir melewati kumparan dari Vcc menuju ground maka kumparan akan menimbulkan medan magnet dan menarik saklar A ke bawah sehingga tersambung dengan B A B Vcc Relay 21
BAB III PERANCANGAN DAN REALISASI ALAT A. Perancangan Alat Programmable Timer ini secara umum terdiri dari 6 bagian, antara lain bagian keypad matrix 4X3 sebagai masukan data, bagian sistem mikrokontroler AT89S51 sebagai pengendali utama, bagian LCD M1632 sebagai media penampil waktu cacahan, bagian relay aktuator sebagai saklar elektronik, bagian buzzer sebagai indikator bunyi, dan terakhir adalah bagian catu daya sebagai sumber energi listrik bagi sistem secara keseluruhan. Berikut adalah diagram blok dari sistem Programmable Timer yang akan dirancang. Gambar 14. Diagram blok sistem Programmable Timer KEYPAD MATRIX 4X3
MIKROKONTROLER AT89S51
LCD KARAKTER M1632 RELAY AKTUATOR BUZZER CATU DAYA
22
1. Perancangan Hardware Perancangan perangkat keras Programmable Timer diawali dengan menentukan prinsip kerja alat. Pengguna memasukan data waktu melalui keypad matrix 4X3 sebagai nilai penentu lama pencacahan (counting down). Nilai ini menentukan waktu yang diperlukan pencacah (down counter) untuk mencacah sampai nilai nol. Setelah seluruh data masuk ke memori data mikrokontroler, maka pencacahan secara otomatis berjalan dan nilai data waktu yang telah dimasukan berkurang setiap detik hingga bernilai nol dan dapat dilihat pada layar LCD M1632. Setelah cacahan mencapai nol maka Programmable Timer akan menonaktifkan keluarannya. Proses penghitungan waktu timer diatas merupakan proses yang berjalan tahap demi tahap yang dilakukan oleh mikrokontroler. Pada aplikasi atau kenyataannya setiap proses tentunya terdiri dari sekumpulan sub- proses yang berjalan secara bertahap. 1.1 Hardware Input Hardware input merupakan hadware yang digunakan sebagai masukan data. Dalam Programmable Timer hardware input berupa keypad matrix 4X3. Selanjutnya akan ditentukan bagaimana pemasangan keypad matrix 4X3. Pemasangan keypad matrix hanya membutuhkan 7 pin pada salah satu port mikrokontroler AT89S51, karena keypad matrix 4X3 non 23
common hanya memiliki 7 kaki. Ketujuh keluaran keypad akan dihubungkan ke port 1 (P1) mikrokontroler AT89S51. Gambar 15. Skema keypad dengan AT89S51 ( Sumber : AN Teknik Scanning Keypad 4X3 Non Common. www.delta-electronic.com
) Bentuk fisik keypad matrix yang digunakan seperti pada gambar 4. Pada gambar tersebut keluaran keypad terdiri dari C1, C2, dan C3 yang merupakan jalur column (kolom) dan R1, R2, R3 dan R4 yang merupakan jalur row (baris). Koneksi kaki keypad matrix ke port 1 mikrokontroler dapat dilihat pada tabel 2 berikut. Tabel 2. Koneksi keypad dengan AT89S51 Output Keypad Input Port 1 R2 P1.0 R3 P1.1 C3 P1.2 R4 P1.3 C1 P1.4 C2 P1.6
1.2 Hardware Output Hardware output terdiri dari LCD M1632 dan rangkaian saklar relay digital. Modul LCD M1632 terdiri dari 16 pin kaki dan 7 pin diantaranya terhubung ke port 0 (P0) mikrokontroler AT89S51 dimana 4 pin digunakan sebagai antarmuka data 4 bit dan 3 pin untuk kontrol. Kaki nomor 3 dari M1632 digunakan sebagai pengatur kontras atau kecerahan tampilan karakter pada LCD dan dihubungkan dengan trimpot untuk pengaturan kontras. Gambar 16. Skema LCD M1632 dengan AT89S51. ( Sumber : Antarmuka Modul SC-51 ISP dengan LCD M1632, www.delta-electronic.com
) Rangkaian saklar relay digital terdiri dari relay, sebuah transistor bipolar NPN sebagai penguat arus yang terhubung pada port 3.2 AT89S51, dan logic inverter ( IC 74LS04 ). Saklar relay ini digunakan sebagai saklar otomatis yang keaktifannya dikendalikan oleh mikrokontroler AT89S51. 11 D4 E VR1 TRIMPOT 10K D5 D5 D4 D7 14 RS 2 R/W D6 RW 4 LCD M1632 6 3 5 AT89S51 9 18 19 29 30 31 1 2 3 4 5 6 7 8 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17 39 38 37 36 35 34 33 32 RST XTAL2 XTAL1 PSEN ALE/PROG EA/VPP P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 1 E D6 13 D7 RS Vcc 5V 12 25
Gambar 17. Skema saklar relay dan buzzer pada AT89S51 ( Sumber : Programmable Timer Menggunakan Modul DST-51, www.delta-electronic.com
) Transistor akan aktif jika kaki basis sebagai masukannya memperoleh tegangan high (TTL Level) dari keluaran logic inverter 74LS04 sehingga basis dan emitor mendapat bias maju dan mengalirkan arus dari emitor menuju kolektor dan arus tersebut juga akan melintasi relay menuju ground. Hal ini mengakibatkan relay akan aktif (On) dan menghubungkan kontak saklar pada relay. Jika masukan logic inverter mendapat tegangan tinggi (TTL Level) dari port 3.2 mikrokontroler maka keluaran IC logic inverter 74LS04 menjadi rendah sehingga transistor tidak mendapatkan bias maju dan relay tidak bekerja. Dioda D5 digunakan untuk melindungi transistor dari tegangan balik induksi relay. Speaker (SP) merupakan buzzer sebagai indikator suara jika waktu pencacahan Programmable Timer telah selesai. R1 SP BUZZER 5 V Vcc 12 V Q2 1N4002 10K 1/6 IC3A IC3 74LS04 1 2 BD400 Vcc 5V IC2 AT89S51 9 18 19 29 30 31 1 2 3 4 5 6 7 8 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17 39 38 37 36 35 34 33 32 RST XTAL2 XTAL1 PSEN ALE/PROG EA/VPP P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 RELAY 12 V 3 5 4 1 2 D3 26
1.3 Catu Daya Catu daya yang digunakan pada rangkaian programmable timer ini memerlukan catu daya yang stabil serta harus mampu mengalirkan arus yang cukup untuk rangkaian. Untuk itu digunakan IC stabilizer LM7805 yang menghasilkan tegangan DC sebesar 5 Volt yang telah teregulasi dengan baik. Agar keluaran IC LM7805 tersebut mampu mengalirkan arus yang cukup untuk rangkaian programmable timer maka ditambahkan sebuah transistor daya tipe 2N3055. Gunakan pendingin yang cukup untuk transistor daya tersebut. Gambar 18. Skema catu daya Programmable Timer ( Sumber : RONICA Electronics ) T1 TRAFO 2 Amp 1 5 6 4 8 D2 1N4002 D1 1N4002 CT LM7805 IC1 Vcc 12 Volt 2200uF/25V 100uF/25V C4 100uF/25V 100nF + C1 VI G N D VO + C3 12 Volt + C2 Vcc 5 Volt 220 Volt 12 Volt Q1 2N3055 27
Komponen-komponen elektronik utama yang diperlukan untuk Programmbale Timer beserta catu dayanya adalah sebagai berikut : Tabel 3. Daftar komponen Programmable Timer No
Nama Komponen Nilai Tipe 1 Resistor R1 10K Standar 2 Resistor R2 10K Standar 3 Kapasitor elektrolit C1 2200 F/25V Standar 4 Kapasitor elektrolit C2 100 F/25V Standar 5 Kapasitor elektrolit C3 100 F/25V Standar 6 Kapasitor keramik C4 100 nF Standar 7 Kapasitor elektrolit C5 10 F/25V Standar 8 Kapasitor keramik C6 30 pF Standar 9 Kapasitor keramik C7 30 pF Standar 10 Dioda D1, D2, D3 1N4002 Standar 11 Trimpot VR1 10K Preset 12 Transistor Q1 2N3055 TO-3 13 Transistor Q2 C945 TO-92 14 IC1 LM7805 5 Volt TO-220 15 IC2 AT89S51 - P-DIP 16 IC3 74LS04 - P-DIP 17 Relay 12 Volt Standar 18 Kristal 11,0592 MHz Standar 19 Buzzer 5 Volt Standar 20 Keypad matrix 4 X 3 No-common 21 LCD Karakter 2 X 16 Karakter M1632 22 Transformator T1 2 Ampere Standar 23 Saklar SW1 Push-On Standar 24 Pendingin/Heatsink Q1 Standar TO-3 25 PCB - Polos
2 Perancangan Software Pada bagian perangkat lunak Programmable Timer secara garis besar terdiri dari 2 bagian yaitu program utama dan program layanan interupsi. 2.1 Program Utama Program utama terdiri dari dua bagian yaitu untuk mengaktifkan timer dan bagian yang bekerja saat timer selesai menghitung. Gambar 20. Diagram pembagian software Programmable Timer Sedangkan flowchart Programmable Timer secara keseluruhan dapat dilihat pada gambar 21. Program Utama Program Interupsi Software Programmable Timer Program Utama Pengaktif Timer Program Utama Saat Timer Selesai Menghitung 30
tidak ya tidak ya tidak ya Gambar 21. Flowchart Programmable Timer START T
Subrutin Kurangi Waktu Kembali dari Interupsi Subrutin Pesan TIME OUT Subrutin Inisialisasi LCD Matikan Relay Dan Buzzer Waktu Habis ?
Hardware Reset
?
31
Pada bagian flowchart program utama untuk mengaktifkan timer, proses dimulai dengan inisialisasi LCD dan reset nilai timer di mana pada bagian reset nilai timer, nilai-nilai waktu tersebut akan dimasukkan melalui keypad matrix. Setelah nilai timer terisi melalui keypad sesuai dengan keinginan pengguna, maka timer akan aktif sehingga proses penghitungan waktu terjadi. Proses penghitungan waktu waktu dilakukan dengan menggunakan layanan interupsi timer 0. Layanan interupsi berjalan terpisah (independent) sehingga program utama dapat berhenti pada suatu lokasi tertentu atau menjalankan fungsi lainnya selama fungsi tersebut tidak menggunakan timer 0. Dibawah ini adalah alur program utama (flowchart) bagian pengaktifan timer. tidak ya Gambar 22. Flowchart program utama pengaktifan timer 0 Inisialisasi LCD Reset Nilai Timer Start Timer 0 Interupsi Timer 0 ? Layanan Interupsi Timer 0 32
Berikut adalah potongan listing program utama yang berisi sub-program inisialisasi LCD, sub-program pengisian (reset) nilai timer melalui keypad, dan pengaktifan timer 0. DSEG ORG 60H NilaiTimer: Ds 6 StackTimer: Ds 1 Digit1: Ds 1 Digit2: Ds 1 CSEG ORG 00H RS Bit P2.1 EClock Bit P2.7 RW Bit P2.6 Start: Lcall Init_LCD ; panggil subprogram inisialisasi LCD Acall ResetNilaiTimer ; panggil subprogram pengisian timer Acall StartTimer0 ; aktifkan timer 0 Ajmp $ ;====subprogram inisialisasi LCD M1632==== Init_LCD: Setb RS Clr EClock Lcall Delay_5mS ;tunda selama 20mSekon Lcall Delay_5mS ;untuk memastikan tegangan Lcall Delay_5mS ;catu daya telah mencapai Lcall Delay_5mS ;4,5 Volt agar LCD siap Mov A,#30H Acall Kirim_Perintah Lcall Delay_5mS Mov A,#30H Acall Kirim_Perintah Push B Mov B,#100 Djnz B,$ Pop B Mov A,#30H Acall Kirim_Perintah Mov A,#20H ; masuk ke pengaturan mode & fungsi Acall Kirim_Perintah ; kirim isi Acc ke register perintah LCD 33
;***********pengaturan fungsi dan mode LCD******** Mov A,#28H ; font 5x8, 2 baris, antarmuka 4 bit Acall Kirim_Perintah ; kirim isi Acc ke register perintah Mov A,#08H ; matikan display Acall Kirim_Perintah ; kirim isi Acc ke register perintah Mov A,#01H ; hapus DDRAM LCD Acall Kirim_Perintah ; kirim isi Acc ke register perintah Mov A,#0EH ; aktifkan layar LCD Acall Kirim_Perintah ; kirim isi Acc ke register perintah Mov A,#06H ; mode increment address Acall Kirim_Perintah ; kirim isi Acc ke register perintah Ret ;==========subprogram reset nilai timer=========== ResetNilaiTimer: Mov R0,#NilaiTimer+3 Acall Ambil2digitKeypad ; panggil subrutin ambil keypad Mov @R0,A Dec R0 Mov A,#':' Lcall Kirim_Karakter Acall Ambil2digitKeypad ; panggil subrutin ambil keypad Mov @R0,A Dec R0 Mov A,#':' Lcall Kirim_Karakter Acall Ambil2digitKeypad ; panggil subrutin ambil keypad Mov @R0,A Dec R0 Mov @R0,#00 Ret ;======subprogram pengambilan 2 digit dari keypad======= Ambil2DigitKeypad: Acall KeypadPolling Acall KeypadHex Push Acc Add A,#30H Mov Digit1,A Lcall Kirim_Karakter Acall KeypadLepas Pop Acc Mov B,#10 Mul AB Push Acc Acall KeypadPolling Acall KeypadHex Push Acc 34
Add A,#30H Mov Digit2,A Lcall Kirim_Karakter Acall KeypadLepas Pop Acc Pop B Add A,B Ret KeypadPolling: Acall Ambil_Keypad Jc KeypadPolling Ret Ambil_Keypad: Mov A,#10111111b Push Acc Mov P1,A Mov R7,A Mov A,P1 Anl A,#10101011b Mov R6,A Cjne A,#10101011b,Ditekan Pop Acc Mov A,#11101111b Push Acc Mov P1,A Mov R7,A Mov A,P1 Anl A,#10101011b Mov R6,A Cjne A,#10101011b,Ditekan Pop Acc Mov A,#11111011b Push Acc Mov P1,A Mov R7,A Mov A,P1 Anl A,#10101011b Mov R6,A Cjne A,#10101011b,Ditekan Pop Acc Setb C Ret 35
;=======subprogram pengaktifan timer 0======== StartTimer0: Mov StackTimer,SP Mov A,TMOD Anl A,#0F0H Orl A,#01H Mov TMOD,A Acall ResetTimer0 Setb EA Setb ET0 Setb TR0 Ret ResetTimer0: Mov TH0,#0DCH Mov TL0,#00H Ret Subprogram diatas diawali dengan inisialisasi LCD M1632 termasuk menampilkan tulisan-tulisan atau karakter antarmuka pengguna. Proses inisialisasi dilakukan untuk mempersiapkan LCD dan mengatur mode LCD. Mode yang ditentukan pada LCD Programmable Timer ini adalah : 1. Panjang data (8 bit atau 4 bit). 2. Jumlah baris LCD yang aktif (1 baris atau 2 baris). 3. Ukuran font (5x8 atau 5x10). Subprogram selanjutnya adalah ResetNilaiTimer yang digunakan untuk mengambil data keypad dan menyimpannya di dalam variabel NilaiTimer. Variabel NilaiTimer berisi 6 byte register untuk menyimpan 3 data waktu yaitu jam, menit, dan detik yang masing-masing sebesar 2 byte. Keypad yang digunakan pada Programmable Timer ini adalah keypad matrix non-common sehingga pengambilan data keypad dilakukan 38
melalui teknik scanning. Subprogram ketiga adalah subprogram StartTimer0 yang digunakan untuk menjalankan timer 0. Timer tersebut diatur agar interupsi terjadi setiap 10 milidetik. Pengaturan interupsi tersebut dilakukan pada subprogram ResetTimer0 yaitu dengan mengisi timer 0 low (TL0) sebesar #00H dan timer 0 high (TH0) sebesar #0DCH. Program utama yang kedua adalah subprogram TimerSelesai yang digunakan saat timer selesai menghitung nilai reset timer yang sebelumnya dimasukan melalui keypad. Program ini akan menampilkan pesan TIME OUT pada layar LCD, menonaktifkan relay sebagai indikasi waktu telah selesai dan membunyikan buzzer. Program akan berhenti terus (infinite-loop) setelah menon-aktifkan relay dan mengaktifkan buzzer hingga terjadi reset hardware. Berikut ini adalah flowchart program utama yang digunakan saat timer selesai menghitung. Gambar 23. Flowchart timer saat selesai menghitung Posisi awal LCD
Tampilkan Pesan TIME OUT Non Aktifkan
Relay
Aktifkan Buzzer
Program Berhenti
39
Listing program timer saat selesai menghitung adalah sebagai berikut. TimerSelesai: Lcall PosisiAwal_LCD Mov DPTR,#PesanTimeOut Lcall KirimPesan_LCD Setb P3.2 ; matikan saklar relay Clr P3.3 ; aktifkan buzzer Ajmp $ ; berhenti (infinite loop) ;================ PosisiAwal_LCD: Mov A,#02h Lcall Kirim_Perintah Ret ;=========================== KirimPesan_LCD: LoopKirimPesan_LCD: Mov A,#00H Movc A,@A+Dptr Cjne A,#0FH,Kirim_LCD Ret Kirim_LCD: Acall Kirim_Karakter Inc Dptr Ajmp LoopKirimPesan_LCD Kirim_Karakter: Clr RW Setb RS Acall Kirim_DataLCD Swap A Acall Kirim_DataLCD Acall PeriksaBusy Ret Kirim_DataLCD: Setb EClock Mov P0,A Clr EClock Ret PesanTimeOut: DB ' TIME OUT ',0FH 40
2.2 Program Layanan Interupsi Flowchart program bagian kedua adalah flowchart program layanan interupsi yang berisi program penghitungan mundur dari nilai awal yang sebelumnya telah dimasukan melalui keypad. Proses penghitungan waktu dilakukan dengan menggunakan layanan interupsi timer0. Layanan interupsi berjalan secara terpisah (independent) sehingga program utama dapat berhenti saja pada suatu lokasi tertentu. Selama penghitungan waktu belum selesai, maka program akan kembali dari interupsi yang artinya kembali ke lokasi dimana proses interupsi terjadi dan melanjutkan jalannya program disana sampai interupsi berikutnya terjadi. Jika timer telah selesai menghitung, maka program akan masuk ke bagian program utama saat timer selesai menghitung untuk menampilkan pesan TIME OUT pada layar LCD, membunyikan buzzer dan menonaktifkan saklar relay. Jika ingin menyeting waktu kembali, maka dilakukan dengan reset hardware mikrokontroler AT89S51 melalui saklar reset. Hardware reset akan menyebabkan sistem mikrokontroler kembali ke keadaan seperti pada saat pertama kali diberi catu daya. 41
Ya Tidak Gambar 24. Flowchart layanan interupsi timer 0 Berikut adalah program layanan interupsi timer 0 yang berfungsi untuk mengurangi nilai timer setiap 10 milidetik yang berada pada variabel nilai timer hingga bernilai nol. Timer0_Interrupt: Acall ResetTimer0 ; panggil subprogram reset timer 0 Acall KurangiWaktu ; panggil subprogram kurangi waktu Setb ET0 ; aktifkan interupsi timer 0 Reti ; kembali dari interupsi ResetTimer0: Mov TH0,#0DCH ; isi ulang register timer0 agar Mov TL0,#00H ; terjadi interupsi tiap 10 milidetik Ret KurangiWaktu: Mov R0,#NilaiTimer Dec @R0 Mov A,@R0 Cjne A,#-1,TidakReset Mov @R0,#99 Acall DisplayTimer Reset Timer 0 Kurangi Waktu Kembali dari Interupsi Waktu Habis ? Lompat ke bagian program utama saat timer berhenti 42
Inc R0 Dec @R0 Mov A,@R0 Cjne A,#-1,TidakReset Mov @R0,#59 Inc R0 Dec @R0 Mov A,@R0 Cjne A,#-1,TidakReset Mov @R0,#59 Inc R0 Dec @R0 Mov A,@R0 Cjne A,#-1,TidakReset Clr TR0 Mov RTemp+5,DPH Mov RTemp+4,DPL Mov RTemp+3,00 Mov RTemp+2,A Mov RTemp+1,B Mov RTemp,PSW Mov B,StackTimer Mov A,SP Clr C Subb A,B LoopRecover: Pop 00H Djnz ACC,LoopRecover Pop 00H Pop 00H Mov DPTR,#TimerSelesai Push DPL Push DPH Mov PSW,RTemp Mov B,RTemp+1 Mov A,RTemp+2 Mov 00H,RTemp+3 Mov DPL,RTemp+4 Mov DPH,RTemp+5 TidakReset: Ret 43
Pop Acc Inc R6 Jc KonversiSelesai Div AB Mov @R0,B Inc R0 Ajmp LoopKonversi TidakKonversi: Inc R6 KonversiSelesai: Mov @R0,A Pop B Pop ACC Pop 00H Ret Subrutin Timer0_Interupt diawali dengan melakukan reset nilai timer 0 melalui subrutin ResetTimer0 dengan memberi nilai pre-scaler. Nilai pre-scaler ini akan menentukan lama waktu terjadinya interupsi timer 0 yaitu 10 milidetik. Nilai yang dimasukan diperoleh dengan persamaan berikut : Jumlah siklus = 10 mS x = 10 mS x = 9216 (desimal) Hal ini berarti timer harus dipantau cacahannya hingga mencapai nilai 9216 cacahan. Karena timer 0 diset pada mode 16 bit maka nilai maksimal cacahan timer dalam desimal yaitu 65535. Maka timer 0 harus di inisialisasi dengan nilai selisih antara 65535 dengan 9216 yaitu sebesar 56319. Sehingga register timer 0 low (TL0) diset dengan nilai 00H dan register 12 ) (Hz ristal FrekuensiK 12 11059200Hz 45
timer 0 high (TH0) diset dengan nilai selisih (56319) dibagi dengan nilai maksimum register timer 0 high (256) yaitu 219,996 220 (desimal) yang setara dengan DC (heksadesimal). Subrutin pengurangan waktu pada prinsipnya digunakan untuk mengurangi variabel timer setiap 10 milidetik yang telah dimasukan melalui keypad. Subrutin Konversi1Bdesimal digunakan untuk mengkonversi 1 byte bilangan hexadesimal ke dalam bentuk desimal. Bilangan hexadesimal yang akan diubah disimpan terlebih dahulu di dalam akumulator dan kemudian hasil konversi disimpan di dalam tabel desimal. Potongan-potongan listing program diatas adalah sebagian dari keseluruhan program yang digunakan dalam Programmable Timer. Program lengkap dapat dilihat pada bagian lampiran halaman akhir laporan tugas akhir ini. Program lengkap tersebut di assembly menggunakan software 8051 Cross-Assembler ASM-51. 46
Gambar 25 adalah gambar bentuk dari perancangan dan realisasi Programmable Timer pada tugas akhir ini yang telah dikemas. Gambar 25. Gambar Programmable Timer yang dikemas. 47
B. Hasil dan Pembahasan Pengujian Programmable Timer dilakukan dengan percobaan yaitu membandingkan dengan rangkaian pewaktu lain yang dinilai lebih akurat. Pengujian tersebut menggunakan sebuah lampu pijar 5 Watt yang dipasangkan pada keluaran Programmable Timer. Setiap percobaan dilakukan dengan menyalakan lampu pijar 5 Watt tersebut untuk tiap-tiap waktu yang telah ditentukan sebelumnya menggunakan Programmable Timer (protimer) dan lama cacahan waktu yang ditampilkan pada LCD Programmable Timer dibandingkan dengan timer acuan yang digunakan. Berikut adalah tabel waktu sampel pengujian alat dengan timer acuan. Timer acuan yang digunakan adalah software Timeleft yang dijalankan di komputer. Perbandingan waktu berdasarkan pada tampilan software Timeleft dengan tampilan LCD Programmable Timer. Tabel 4. Tabel pengujian Programmable Timer No Seting protimer Seting Timer Acuan Selisih Waktu 1 10 detik 10 detik 0 detik 2 1 menit 1 menit 0 detik 3 5 menit 5 menit 0 detik 4 30 menit 30 menit 0 detik 5 45 menit 45 menit 0 detik 6 1 jam 1 jam 0 detik 7 1 jam, 30 menit 1 jam, 30 menit 0 detik 8 2 jam 2 jam 0 detik 9 4 jam 4 jam 0 detik 10 10 jam 10 jam 0 detik
Berdasarkan tabel pengujian, selisih antara tampilan waktu timer pada software Timeleft dengan tampilan waktu timer pada LCD Programmable Timer adalah 0 (nol) detik. 48
BAB IV PENUTUP A. Kesimpulan Berdasarkan uraian diatas dapat diambil beberapa kesimpulan penting sebagai berikut : 1. Berdasarkan tabel pengujian diatas, Programmable Timer dapat bekerja dengan baik. 2. Selisih waktu antara tampilan LCD Programmable Timer dengan tampilan timer acuan (software Timeleft) adalah 0 (nol) detik sehingga cukup akurat. B. Saran 1. Programmable Timer ini menggunakan relay sebagai saklar elektronik untuk meng-on/off-kan piranti listrik luar yang terhubung dengannya. Hal ini dapat menimbulkan medan elektromagnetik yang dapat mengganggu sistem kerja alat (mikrokontroler). Sebaiknya penggunaan saklar dengan relay diganti menggunakan TRIAC (Triode Alternating Current) untuk mengatasi hal tersebut. 2. Jika beban piranti luar cukup besar maka pemilihan jenis relay yang tepat harus diperhatikan. Gunakan relay dengan kontak yang mampu mengalirkan arus AC (Alternating Current) besar. 49
3. Pada listing program assembler, pemasukan karakter bintang (*) dan pagar (#) tetap diterjemahkan sebagai suatu bentuk data. Listing program hendaknya dikembangkan lebih lanjut untuk memperbaiki kekurangan tersebut yaitu agar karakter bintang (*) dan pagar (#) tidak dikenali oleh sistem sehingga tidak dianggap sebagai sebuah masukan data waktu. 1
BukanTombolHex6: Cjne R6,#0A9H,BukanTombolHex9 Mov A,#9 Ajmp KeypadBenar BukanTombolHex9: Cjne R6,#0A3H,SalahTekan Mov A,#0CH Ajmp KeypadBenar KeypadBenar: Clr C Ret SalahTekan: Setb C Ret ;***************************************** ; SUBRUTIN UNTUK MENGAKTIFKAN TIMER ;***************************************** StartTimer0: Mov StackTimer,SP Mov A,TMOD Anl A,#0F0H Orl A,#01H Mov TMOD,A Acall ResetTimer0 Setb EA Setb ET0 Setb TR0 Ret ;********************************************************** ; HARGA AWAL TIMER 0 ; - Rutin memberi harga awal nilai timer 0 yang berfungsi sebagai pre scaler ; dari timer ; - Jumlah siklus x 12/Frekwensi crystal = 10 mS ; Jumlah siklus = 10 mS x Frekwensi crystal / 12 ; Jumlah siklus = 9216 => 2400H ; - Nilai Timer = -jumlah siklus = -2400H = DC00H ;********************************************************** ResetTimer0: Mov TH0,#0DCH Mov TL0,#00H Ret 9
Mov A,TabelDesimal Add A,#30H Lcall Kirim_Karakter Dec R0 Djnz R7,TampilkanTerus Pop 07H Pop 0H Pop ACC Ret TampilkanTerus: Mov A,#':' Lcall Kirim_Karakter Ajmp LoopDisplayTimer ;========================================================== Konversi1BDesimal: Push 00H Push Acc Push B Mov R0,#TabelDesimal Mov @R0,#00H Inc R0 Mov @R0,#00H Dec R0 Mov R6,#00H Jz TidakKonversi LoopKonversi: Mov B,#10 Push Acc Clr C Subb A,B Pop Acc Inc R6 Jc KonversiSelesai Div AB Mov @R0,B Inc R0 Ajmp LoopKonversi TidakKonversi: Inc R6 12
KonversiSelesai: Mov @R0,A Pop B Pop ACC Pop 00H Ret ;************************** ;KARAKTER TAMPILAN LCD ;************************** PesanTimeOut: DB ' TIME OUT ',0FH Geser_Kanan: DB ' ',0Fh Pesan_1: DB ' PROGRAMMABLE ',0FH Pesan_2: DB ' TIMER ',0FH ;****************** ;SUBRUTIN TUNDA ;****************** Delay_5mS: Push TMOD Mov TMOD,#21H Mov TH0,#0EDH Mov TL0,#0FFH Setb TR0 Tunggu_5mS: Jbc TF0,Sudah_5mS Ajmp Tunggu_5mS Sudah_5mS: Clr TR0 Pop TMOD Ret Delay_1detik: Mov Counter_5mS,#0200 Tunggu_1detik: Acall Delay_5mS Djnz Counter_5mS,Tunggu_1detik Ret END PRESENTASI TUGAS AKHIR PENGGUNAAN PROGRAMMABLE TIMER SEBAGAI SAKLAR OTOMATIS Oleh : Nama : JOKO PITOYO NIM : 5352303506 Prodi : D3 TEKNIK ELEKTRO D3 TEKNIK ELEKTRO UNIVERSITAS NEGERI SEMARANG 2007 JUDUL
PENGGUNAAN PROGRAMMABLE TIMER SEBAGAI SAKLAR OTOMATIS PENDAHULUAN
A. Latar Belakang 1. Tidak adanya rangkaian pewaktu internal pada sebagian piranti elektronik yang digunakan untuk mematikannya secara otomatis. 2. Akurasi beberapa rangkaian pewaktu yang dijual dipasaran umumnya hingga jangkah waktu menit. B. Harapan Memudahkan pemakai dalam menggunakan piranti elektronik yang tidak dilengkapi rangkaian pewaktu internal untuk mengaktifkan dan menonaktifkan piranti secara otomatis. C. Realita Umum Untuk mematikan sebagian piranti elektronik umumnya masih dilakukan secara manual yaitu mencabut saluran listrik piranti elektronik tersebut dari sumbernya. D. Kebutuhan Alat pewaktu terprogram yang digunakan untuk menyalakan dan sekaligus mematikan piranti elektronik sesuai dengan waktu yang diinginkan secara otomatis. E. Solusi Menggunakan programmable timer sebagai saklar elektronik otomatis. F. Permasalahan Bagaimana perancangan programmable timer agar dapat digunakan sebagai saklar otomatis ? G. Pembatasan Masalah 1. Programmable Timer ini memiliki batas waktu pencacahan mundur maksimal sebesar 99 jam 99 menit 99 detik. 2. Catu daya programmable timer menggunakan sumber listrik PLN (220 Volt). H. Tujuan Tujuan dari perancangan programmable timer ini adalah membuat alat pewaktu yang dapat dimanfaatkan sebagai saklar elektronik otomatis. I. Manfaat 1. Menghindari hal-hal yang merugikan sebagai akibat kelalaian mematikan peralatan elektronik. 2. Menghemat energi listrik karena keaktifan piranti elektronik dapat dikendalikan sesuai dengan waktu yang telah diseting sebelumnya. Diagram Blok Sistem Programmable Timer PERENCANAAN
1. Blok Diagram Sistem KEYPAD MATRIX 4X3
MIKROKONTROLER AT89S51
LCD KARAKTER M1632 RELAY AKTUATOR BUZZER CATU DAYA 2. Flowchart Program tidak ya tidak ya tidak ya START Subrutin Inisialisasi LCD dan Mikrokontroler
Subrutin Kurangi Waktu Kembali dari Interupsi Subrutin Pesan TIME OUT Subrutin Inisialisasi LCD Matikan Relay Dan Buzzer Waktu Habis ?
Hardware Reset ?
Berikut adalah tabel percobaan pembandingan waktu cacahan programmable timer dengan software timeleft yang dijalankan pada komputer. No Seting protimer Seting Timer Acuan Selisih Waktu Akhir 1 10 detik 10 detik 0 detik 2 1 menit 1 menit 0 detik 3 5 menit 5 menit 0 detik 4 30 menit 30 menit 0 detik 5 45 menit 45 menit 0 detik 6 1 jam 1 jam 0 detik 7 1 jam, 30 menit 1 jam, 30 menit 0 detik 8 2 jam 2 jam 0 detik 9 4 jam 4 jam 0 detik 10 10 jam 10 jam 0 detik
Pembandingan diatas dilihat berdasarkan tampilan cacahan software timeleft pada monitor PC dengan tampilan cacahan LCD M1632 yang terdapat pada programmable timer. KESIMPULAN
1. Berdasarkan tabel pengujian diatas programmable timer bekerja dengan baik. 2. Saklar relay pada programmable timer akan aktif ketika digit terakhir masuk melalui keypad dan relay kembali non-aktif setelah waktu seting cacahan mencapai 0 (nol). 3. Buzzer berbunyi setelah cacahan mencapai 0 (nol) sebagai tanda bahwa alat yang dikendalikan telah mati (off-state). SARAN
1. Penggunaan relay sebagai saklar dapat menyebabkan interferensi elektromagnet akibat bunga api pada kontak relay dan dapat menimbulkan gangguan pada sistem mikrokontroler. Sebagai gantinya dapat menggunakan TRIAC (Triode Alternating Current) sebagai saklar elektroniknya. 2. Jika arus beban peralatan elektronik yang dikendalikan cukup besar, maka pemilihan relay harus diperhatikan. Gunakan relay dengan kontak yang dapat mengalirkan arus beban yang besar. 3. Listing program assembly harus dikembangkan karena pemasukan karakter bintang (*) dan pagar (#) melalui keypad diterjemahkan dan dimasukan sebagai sebuah data oleh sistem.