TUGAS AKHIR MINIATUR ELEVATOR EMPAT LANTAI BERBASIS MIKROKONTROLER AT89S51 Diajukan Guna Melengkapi Sebagian Syarat Dalam Mencapai Gelar Sarjana Strata Satu (S1)
Disusun Oleh : Nama : Iwan Hermawan NIM : 4140411-009 Program Studi : Teknik Elektro
PROGRAM STUDI TEKNIK ELEKTRO FAKULTAS TEKNOLOGI INDUSTRI UNIVERSITAS MERCU BUANA JAKARTA 2009
LEMBAR PERNYATAAN
Yang bertanda tangan di bawah ini,
Nama
: Iwan Hermawan
NIM
: 4140411-009
Program Studi
: Teknik Elektro
Fakultas
: Teknologi Industri
Judul
: Miniatur Elevator Empat Lantai Berbasis Mikrokontroler AT89S51
Dengan ini menyatakan bahwa hasil penulisan Tugas Akhir yang telah saya buat ini merupakan hasil karya sendiri dan benar keasliannya. Apabila ternyata di kemudian hari penulisan Tugas Akhir ini merupakan hasil plagiat atau penjiplakan terhadap karya orang lain, maka saya bersedia mempertanggungjawabkan sekaligus bersedia menerima sanksi berdasarkan aturan tata tertib di Universitas Mercu Buana.
Demikian, pernyataan ini saya buat dalam keadaan sadar dan tidak dipaksakan.
Penulis,
( Iwan Hermawan )
ii
LEMBAR PENGESAHAN MINIATUR ELEVATOR EMPAT LANTAI BERBASIS MIKROKONTROLER AT89S51
Disusun Oleh : Nama NIM Program Studi
: Iwan Hermawan : 4140411-009 : Teknik Elektro
Koordinator TA / KAPRODI
Pembimbing
Dr.Ir. Andi Adriansyah, M.Eng
Yudhi Gunardi, ST, MT
iii
ABSTRAK
Seiring dengan semakin banyaknya pembangunan gedung-gedung bertingkat terutama di kota-kota besar, maka semakin tinggi pula kebutuhan akan sarana angkut yang dapat membawa manusia dan barang pada setiap lantainya. Elevator merupakan sarana angkut yang sangat populer pada gedung-gedung bertingkat saat ini. Saat ini banyak sekali elevator-elevator yang dijual dengan berbagai merk, namun tentu saja harganya tidaklah murah. Berangkat dari hal ini penulis ingin sekali mencoba bagaimana membuat sistem kendali elevator yang harganya murah, mudah dibuat tetapi dapat diandalkan. Pada tugas akhir ini penulis mencoba merancang suatu miniatur elevator empat lantai dengan sistem mikrokontroler AT89S51. Sistem kendali yang dibuat terdiri dari tiga bagian, yaitu yang pertama adalah bagian masukan, antara lain tombol-tombol untuk permintaan, encoder sebagai penentu posisi pergerakan elevator car dan limit switch untuk membatasi gerakan elevator car dan pintu. Bagian kedua atau bagian utama adalah bagian pengendali yang merupakan sebuah single chip mikrokontroler AT89S51. Bagian ketiga yaitu bagian keluaran, antara lain indikator lantai, lampu tombol, lampu arah dan motor penggerak. Program yang digunakan ditulis dengan bahasa assembler yang dapat dilihat pada lampiran 1. Setelah dilakukan pegujian terhadap alat yang dibuat maka dapat disimpulkan
bahwa
sistem
kendali
elevator
empat
lantai
menggunakan
mikrokontroler AT89S51 ini dapat berjalan dengan baik. Setiap bagian bekerja sesuai fungsinya dan dapat berintegrasi dengan bagian yang lain membentuk suatu sistem kendali yang dapat diandalkan.
iv
KATA PENGANTAR
Puji syukur penulis panjatkan kehadirat Alloh SWT, yang mana dengan rahmat dan hidayah-Nya, telah membimbing dan menyertai penulis dalam menyelesaikan penyusunan tugas akhir ini. Penyusunan tugas akhir ini mengambil tema perancangan miniatur elevator empat lantai dengan sistem kendali berbasis mikrokontroler AT89S51. Dalam menyelesaikan penulisan tugas akhir ini penulis telah mendapatkan banyak ide, gagasan dan pemikiran serta dorongan moril dari berbagai pihak. Oleh karena itu dalam kesempatan ini penulis ingin sekali mengucapkan rasa terima kasih yang sebesar-besarnya kepada:
1. Kedua orang tua penulis yang telah melahirkan, membesarkan dan memberikan dukungan serta doa restunya kepada penulis. 2. Istri penulis tercinta yang telah membantu dengan segenap tenaga dan fikiran serta dengan setia mendampingi penulis selama ini. 3. Bapak Dr.Ir. Andi Adriansyah, M.Eng selaku dosen pembimbing atas arahan dan bimbingannya selama penyusunan tugas akhir ini. 4. Bapak Yudhi Gunardi, ST, MT selaku koordinator tugas akhir dan Ketua Program Studi Teknik Elektro Universitas Mercu Buana. 5. Segenap pimpinan, dosen, staf dan karyawan Universitas Mercu Buana atas arahan, bantuan dan bibmbingannya kepada penulis. 6. Kawan-kawan Teknik Elektro angkatan ke-5 tahun 2004 yang telah membantu dan memberikan semangat serta dorongan sehingga penulisan tugas akhir ini dapat segera terselesaikan. 7. Semua pihak yang telah membantu baik secara langsung maupun tidak langsung yang tidak dapat penulis sebutkan satu persatu.
Penulis menyadari bahwa dalam penulisan tugas akhir ini masih terdapat banyak kesalahan dan kekurangan baik dalam penyusunan maupun dalam penulisan.
v
Oleh sebab itu penulis mengharapkan kritik dan saran yang bersifat membangun dari berbagai pihak, sehingga dapat bermanfaat bagi penulis dimasa mendatang. Akhir kata penulis hanya mengharapkan semoga penyusunan tugas akhir ini dapat bermanfaat bagi semua pihak.
Jakarta, Februari 2009
Penulis
vi
DAFTAR ISI
HALAMAN JUDUL ..................................................… ..........................
i
PERNYATAAN KEASLIAN TUGAS AKHIR.............. ..........................
ii
LEMBAR PENGESAHAN ............................................. ..........................
iii
ABSTRAK..................................................…............................................
iv
KATA PENGANTAR ..................................................…..........................
v
DAFTAR ISI ................................................................... ..........................
vii
DAFTAR TABEL .......................................................... ..........................
x
DAFTAR GAMBAR ................................................................................
xi
BAB I
PENDAHULUAN 1.1. Latar Belakang.......................................... ..........................
1
1.2. Perumusan Masalah.............................................................
2
1.3. Pembatasan Masalah................................. ..........................
2
1.4. Tujuan ..................................................… ..........................
2
1.5. Metode Perancangan ................................ ..........................
2
1.6. Sistematika Penulisan..........................................................
3
BAB II TEORI DASAR PENUNJANG 2.1. Elevator .................................................... ..........................
4
2.1.1. Elevator Hidrolik .......................... ..........................
4
2.1.2. Elevator Dengan Tali..................... ..........................
6
2.1.3. Sistem Keselamatan Pada Elevator..........................
8
2.1.4. Cara Kerja Elevator ...................... ..........................
10
2.2. Mikrokontroler AT89S51....................................................
12
2.2.1. Struktur Perangkat Keras .............. ..........................
12
2.2.2. Struktur Memory .....................................................
15
2.2.3. Metode Pengalamatan Memory .... ..........................
20
2.2.4. Timer dan Counter......................... ..........................
22
2.2.5. Interupsi ........................................ ..........................
24
2.3. Motor DC ................................................. ..........................
28
2.3.1. Motor DC dengan Field Terpisah . ..........................
29
2.3.2. Motor DC dengan Field Paralel .... ..........................
30
2.3.3. Motor DC dengan Field Seri ...................................
30
2.3.4. Motor DC Kompon ....................... ..........................
31
vii
2.4. Penampil Tujuh Segmen .......................... ..........................
32
2.4.1. Seven Segment Common Anoda .. ..........................
32
2.4.2. Seven Segment Common Katoda . ..........................
33
BAB III PROSES PERANCANGAN 3.1. Tinjauan Umum ..................................................................
34
3.2. Perangkat Keras ..................................................................
38
3.2.1. Controller ...................................... ..........................
38
3.2.2. Tombol ....................................................................
40
3.2.3. Lampu Indikator............................ ..........................
41
3.2.4. Indikator Lantai .......................................................
42
3.2.5. Encoder ......................................... ..........................
44
3.2.6. Motor penggerak .....................................................
45
3.2.7. Saklar Pembatas (Limit Switch).... ..........................
47
3.3. Perangkat Lunak..................................................................
48
3.3.1. Program Utama.............................. ..........................
49
3.3.2. Inisialisasi Sistem ......................... ..........................
53
3.3.3. Proses Stop ..............................................................
54
3.3.4. Encoder dan Indikator Lantai ....... ..........................
56
3.3.5. Pembacaan Tombol ................................................
57
3.3.6. Penyalaan Lampu Indikator ......... ..........................
59
BAB IV ANALISA HASIL PERANCANGAN 4.1. Pengendali Motor .................................... ..........................
62
4.2. Tombol .................................................... ..........................
63
4.3. Lampu Indikator ...................................... ..........................
64
4.4. Encoder ..............................................................................
65
4.5. Indikator Lantai ....................................... ..........................
66
4.6. Pengujian Kinerja Sistem ........................ ..........................
67
4.6.1. Pengujian Kinerja Pintu ............... ..........................
67
4.6.2. Pengujian Proses Inisialisasi ........ ..........................
67
4.6.3. Pengujian Proses stop ................... ..........................
68
4.6.4. Pengujian Proses Naik ................. ..........................
68
4.6.5. Pengujian Proses Turun ............... ..........................
69
viii
BAB V KESIMPULAN DAN SARAN 5.1. Kesimpulan ........................................................................
71
5.2. Saran-saran ............................................... ..........................
71
DAFTAR PUSTAKA ................................................................................
72
Lampiran 1
Daftar Komponen .................................... ..........................
73
Lampiran 2
Listing Program .................................................................
74
Lampiran 3
Salinan Kartu Asistensi............................. ..........................
83
ix
DAFTAR TABEL
Tabel 2.1. Fungsi Pin-pin Mikrokontroler AT89S51
14
Tabel 2.2
26
Prioritas Interupsi
Tabel 2.3. Alamat Vektor Interupsi
27
Tabel 3.1. Tampilan Seven Segment
43
Tabel 4.1. Hasil Pengujian Pengendali Motor
62
Tabel 4.2. Hasil Pengujian Rangkaian Tombol
63
Tabel 4.3. Hasil Pengujian Lampu Indikator
64
Tabel 4.4. Hasil Pengujian Encoder
65
Tabel 4.5. Hasil Pengujian Indikator Lantai
66
Tabel 4.6. Hasil Pengujian Kinerja Pintu
67
Tabel 4.7. Hasil Pengujian Proses Inisialisasi
67
Tabel 4.8. Hasil Pengujian Proses Stop
68
Tabel 4.9. Hasil Pengujian Proses Naik
69
Tabel 4.10. Waktu Tempuh Elevator Car Saat Naik
69
Tabel 4.11. Hasil Pengujian Proses Turun
70
Tabel 4.12. Waktu Tempuh Elevator Car Saat Turun
70
x
DAFTAR GAMBAR
Gambar 2.1.
Elevator Hidrolik
5
Gambar 2.2.
Elevator dengan Tali
7
Gambar 2.3.
Governor
9
Gambar 2.4.
Bentuk Fisik Mikrokontroler AT89S51
13
Gambar 2.5.
Struktur RAM dan PEROM
15
Gambar 2.6.
Peta memory RAM dan SFR
17
Gambar 2.7.
Register PSW
19
Gambar 2.8.
Register TMOD
23
Gambar 2.9.
Register TCON
24
Gambar 2.10. Register IE
25
Gambar 2.11. Register IP
26
Gambar 2.12. Prinsip Motor DC
28
Gambar 2.13. Motor DC dengan Field Terpisah
29
Gambar 2.14. Motor DC dengan Field Paralel
30
Gambar 2.15. Motor DC dengan Field Seri
30
Gambar 2.16. Motor DC Kompon
31
Gambar 2.17. Seven Segment
32
Gambar 2.18 Seven Segment Common Anoda
33
Gambar 2.19. Seven Segment Common Kathoda
33
Gambar 3.1.
Blok Diagram Sistem
35
Gambar 3.2
Skema Rangkaian Sistem
37
Gambar 3.3.
Rangkaian Controller
39
Gambar 3.4.
Rangkaian Tombol-tombol
40
Gambar 3.5.
Lampu Indikator
41
Gambar 3.6.
Indikator Lantai
43
Gambar 3.7.
Encoder
44
Gambar 3.8.
Pulsa Keluaran Encoder
45
Gambar 3.9.
Motor Penggerak
46
Gambar 3.10. Limit Switch
47
Gambar 3.11. Modifikasi Limit Switch
48
Gambar 3.12. Proses naik
50
Gambar 3.13. Proses Turun
52
xi
Gambar 3.14. Proses Inisialisasi
54
Gambar 3.15. Proses Stop
55
Gambar 3.16. Pembacaan Encoder
56
Gambar 3.17. Pembacaan Tombol
58
Gambar 3.18. Penyalaan Lampu Indikator
60
Gambar 4.1.
65
Blok Diagram Pengujian Encoder
xii
BAB I PENDAHULUAN
1.1.
Latar Belakang Perkembangan pembangunan infrastruktur terutama dikota-kota besar
semakin lama semakin pesat. Setiap saat selalu ada saja kegiatan pembuatan bangunan entah pemukiman, perkantoran, hotel, industri dan lain sebagainya. Permasalahan yang muncul hampir di semua kota di dunia adalah terbatasnya ketersediaan lahan karena penghuni kota yang semakin padat. Dengan sendirinya harga tanahpun akan semakin mahal. Berawal dari masalah ini, para arsitek membuat rancangan bangunanbangunan dengan menyesuaikan lahan yang tersedia namun tetap harus mempunyai kapasitas yang besar. Untuk itulah mengapa bangunan-bangunan dikota besar seolah berlomba-lomba untuk menjadi yang paling tinggi diantara yang lainnya. Seiring dengan semakin banyaknya pembangunan gedung-gedung bertingkat itu, keperluan akan sarana akomodasi di dalam gedungpun semakin meningkat. Elevator adalah salah satu sarana utama yang sangat diperlukan disetiap gedung bertingkat. Semakin tinggi gedung tentu akan semakin memerlukan elevator sebagai sarana angkut antar lantai gedung, baik orang maupun barang. Elevator yang ada sekarang ini terdiri dari seperangkat mekanis dengan beberapa motor sebangai penggerak yang dikendalikan dengan suatu sistem kontrol tertentu baik konvensional maupun elektronik. Sistem pengendali konvensional biasanya menggunakan relai-relai yang bekerja berdasarkan sequence yang tetap. Kelemahan sistem ini antara lain: 1. Ukurannya sangat besar sehingga memerlukan tempat yang cukup luas. 2. Kontak-kontak relai yang mudah sekali mengalami keausan atau kotor sehingga sistem tidak bekerja dengan benar. 3. Jika terjadi kerusakan sangat sulit bagi teknisi untuk menelusurinya. 4. Biaya perawatan tinggi karena harus sering dilakukan perawatan dan pergantian komponen.
1
2 Pada makalah ini penulis mencoba mengetengahkan salah satu alternatif pengendali elevator menggunakan mikrokontroler. Divais ini mempunyai beberapa keunggulan diantaranya : 1. Harganya sangat murah, hal ini memungkinkan pembuatan elevator dengan biaya yang sangat terjangkau. 2. Mudah didapat di pasaran lokal 3. Hanya memerlukan rangkaian sederhana untuk membentuk suatu sistem kendali 4. Cukup fleksibel dalam penggunaannya karena dapat diprogram
1.2.
Perumusan Masalah Pada tulisan ini akan dibahas bagaimanakah merancang suatu sistem kendali
elevator yang dapat diandalkan namun mudah dibuat dengan biaya yang sangat terjangkau.
1.3.
Pembatasan Masalah Pembahasan pada perancangan ini akan dibatasi hanya pada bagian
pengendali yang meliputi pergerakan turun atau naik, buka atau tutup pintu sesuai prioritas permintaan serta penentuan posisi lantai. Adapun bagian-bagian lain seperti mekanis, motor penggerak serta pengendali kecepatan motor, tidak akan dibahas.
1.4.
Tujuan Tujuan dari pembahasan ini adalah untuk merancang suatu alternatif sistem
kendali elevator secara elektronik yang mudah dibuat, dengan biaya cukup murah namun dapat diandalkan, yaitu dengan menggunakan mikrokontroler AT89S51.
1.5.
Metode Perancangan Perancangan tugas akhir ini menggunakan beberapa metode yaitu : 1. Study Pustaka Yaitu dengan mempelajari
buku-buku atau literatur yang berkaitan
dengan perancangan ini. 2. Pengujian alat Yaitu dengan melakukan percobaan-percobaan pada alat yang dibuat.
3 1.6.
Sistematika Penulisan Secara garis besar sistematika penulisan tugas akhir ini terdiri dari beberapa
bab, dengan metode penyampaian sebagai berikut :
BAB I PENDAHULUAN Menerangkan latar belakang masalah, maksud dan tujuan, pembatasan masalah, metodologi perancangan dan sistematika penulisan.
BAB II TEORI DASAR PENUNJANG Berisi teori dasar yang dapat menunjang proses perancangan ini antara lain : 1. Prinsip dasar Elevator. 2. Teori dasar mikrokontroler AT89S51. 3. Teori dasar komponen-komponen elektronika yang dibatasi pada motor DC dan seven segment.
BAB III PROSES PERANCANGAN Menerangkan proses perancangan miniatur elevator empat lantai dengan menggunakan mikrokontroler AT89S51 yang dilakukan.
BAB IV ANALISA HASIL PERANCANGAN Merupakan analisa hasil perancangan miniatur elevator empat lantai dengan menggunakan mikrokontroler AT89S51.
BAB V KESIMPULAN Merupakan kesimpulan dari hasil perancangan.
BAB II TEORI DASAR PENUNJANG
2.1.
Elevator Elevator adalah sebuah sarana angkut baik orang atau barang, biasanya
terdapat pada gedung-gedung atau bangunan-bangunan bertingkat yang dapat mengantarkan orang atau barang dari satu lantai ke lantai yang lain. Pada kenyataannya elevator dapat berupa sebuah kotak yang terpasang pada dua buah rel yang hanya digerakkan oleh tarikan tangan manusia saja, ataupun menjadi sebuah sistem modern yang dikendalikan oleh perangkat elektronik yang rumit atau bahkan komputer. Jika ditinjau dari segi mekanisme penggeraknya, elevator modern tediri dari dua jenis yaitu elevator hidrolik (hydraulic elevator) dan elevator dengan tali (roped elevator). Sedangkan pengendali yang digunakan bisa terdiri dari control dengan relay, rangkaian elektronik atau menggunakan programable logic controller (PLC).
2.1.1. Elevator Hidrolik Elevator hidrolik menggunakan sistem hidrolik sebagai penggerak utamanya. Biasanya sistem ini terdiri dari sebuah silinder, sebuah pompa hidrolik yang digerakkan oleh motor listrik, tanki cairan (biasanya minyak) dan katup kendali (Solenoid Valve) Pompa hidrolik mendorong cairan dari tanki menuju silinder. Ketika katup terbuka, cairan akan mengambil jalan yang lebih rendah tekanannya yaitu kembali ke tanki. Namun jika katup ditutup maka tak ada jalan lain bagi cairan kecuali mengisi ruang pada silinder. Dengan demikian tekanan cairan akan mendorong piston keluar silinder dan mengangkat elevator car. Ketika elevator car mendekati lantai yang dituju, controller akan memerintahkan motor pompa agar menghentikan pompa, sehingga tidak ada lagi cairan yang mengalir ke silinder. Namun demikian, cairan yang telah ada pada silinder tidak dapat kembali lagi baik melalui pompa maupun katup karena katup masih tertutup. Pada keadaan seperti ini elevator car ditahan pada posisi lantai bersangkutan.
4
5
Elevator Car
Solenoid Valve
Oil Tank
Cylider
Oil Pump
Gambar 2.1. Elevator hidrolik
Untuk membuat elevator car turun, controller mengirimkan signal pada katup yang digerakkan oleh solenoid agar katup membuka. Ketika katup terbuka, cairan mengalir dari silinder kembali ke tanki. Piston pada silinder akan terdorong masuk karena berat elevator car dan isinya sehingga elevator car akan bergerak turun. Untuk menghentikan elevator pada lantai yang lebih rendah, controller mengirimkan signal perintah agar katup tertutup. Elevator hidrolik memiliki kelebihan disamping beberapa kelemahan. Keuntungan utama elevator adalah dapat dengan mudah melipatgandakan gaya yang dihasilkan oleh pompa yang relatif kecil menjadi gaya yang lebih besar untuk mengangkat elevator car. Ini dimungkinkan dengan memperbesar ukuran silinder. Semakin besar silinder semakin besar gaya yang dihasilkan, namun tentu saja gerakannya semakin lambat. Masalah utama elevator hidrolik adalah ukuran peralatannya. Untuk mencapai lantai yang lebih tinggi elevator hidrolik memerlukan ukuran piston yang lebih panjang pula. Tentu saja silinder harus sedikit lebih panjang dari piston karena silinder harus mampu membenamkan seluruh panjang piston ketika elevator berada dilantai paling bawah. Dengan kata lain semakin tinggi gedung semakin panjang piston yang diperlukan, padahal seluruh panjang silinder harus dibenamkan dibawah
6 lantai dasar. Ini berarti semakin tinggi bangunan maka kita harus menggali semakin dalam. Tentu saja akan menjadi masalah besar pada gedung-gedung pencakar langit di masa sekarang ini. Untuk membangun gedung sepuluh tingkat saja minimal harus menggali sedalam ukuran gedung sembilan tingkat. Kelemahan lain elevator hidrolik adalah perlunya banyak energi yang digunakan untuk mengangkat elevator car. Pada elevator hidrolik standar tidak ada cara untuk menyimpan energi ini. Energi potensial dari piston hanya dapat digunakan untuk mendorong cairan kembali ke tanki. Untuk mengangkat lagi elevator car diperlukan energi yang tetap besar.
2.1.2. Elevator dengan Tali (Roped Elevator) Elevator dengan tali adalah elevator yang paling populer saat ini. Pada elevator ini, elevator car bukannya diangkat dari bawah melainkan ditarik dengan tali yang terbuat dari baja. Tali baja ini diikatkan pada elevator car dan dililitkan pada pulley sebuah motor listrik. Jika motor berputar pada satu arah maka elevator car akan tertarik naik, dan jika motor berputar pada arah lain maka elevator car akan turun. Tali yang digunakan untuk mengangkat elevator car juga diikatkan pada sebuah bandul pada ujung yang lain. Berat bandul ini kira-kira seberat elevator car ketika bermuatan 40 persen dari kapasitas maksimalnya. Dengan kata lain jika elevator car bermuatan 40 persen kapasitasnya maka berat bandul dan elevator car akan seimbang. Kegunaan bandul ini adalah untuk menghemat energi. Dengan beban yang sama pada kedua sisi maka hanya diperlukan sedikit energi untuk menggerakkan beban kesuatu arah maupun kebalikannya, karena motor hanya perlu mengkompensasi friksi mekanis saja. Elevator car dan bandul pemberat bergerak pada beberapa rel sepanjang shaft elevator. Rel-rel ini berfungsi untuk mencegah elevator car dan bandul mengayun kedepan, belakang atau samping, sehingga elevator car dapat meluncur dengan mulus. Selain itu, pada rel-rel ini ditempatkan peralatan pengaman untuk menghentikan elevator car pada keadaan darurat.
7
1. Controller 2. Motor Penggerak 3. Pulley 4. Bandul Pemberat 5. Rel
Gambar 2.2. Elevator dengan tali
8 2.1.3. Sistem Keselamatan pada Elevator Elevator dibuat dengan menyertakan sistem keselamatan berlapis untuk menjaga agar tetap pada kondisi yang semestinya serta terhindar dari hal-hal yang akan membahayakan terutama bagi jiwa manusia. Pertama adalah sistem pada tali pengikat elevator car. Setiap tali elevator terdiri dari beberapa kawat baja yang dililitkan satu sama lain. Satu buah tali saja sudah dapat menahan beban elevator car dan bandul pemberat, sedangkan elevator menggunakan antara empat sampai delapan tali (jumlahnya bervariasi). Dengan demikian jika satu buah tali putus maka tali yang lain masih dapat menahannya. Bahkan jika semua tali putus, elevator tidak akan jatuh sampai ke dasar. Elevator dengan tali mempunyai sistem pengereman terintegrasi yang akan mencengkeram pada rel jika elevator car bergerak terlalu cepat. Sistem pengereman seperti ini diaktifkan oleh suatu alat yang dinamakan governor yang biasanya ditempatkan dibagian atas elevator. Alat ini mempunyai pulley yang terhubung dengan elevator car menggunakan tali sehingga governor akan beputar ketika elevator naik atau turun. Shaft governor dilengkapi dengan dua buah lengan pemberat yang ditempatkan sedemikian rupa sehingga salah satu ujungnya dapat bergerak bebas. Sedangkan ujung yang lain bertumpu pada sebuah poros. Pada kondisi normal kedua lengan ini akan tetap pada posisi semula karena ditahan oleh pegas. Ketika shaft governor berputar, gaya centrifugal akan menggerakkan kedua lengan ini ke arah luar melawan gaya pegas. Jika elevator jatuh cukup cepat maka gaya centrifugal pada lengan governor akan cukup kuat untuk mendorongnya sampai batas paling luar dari governor sehingga mencapai sebuah roda gigi yang tidak bergerak. Karena kedua lengan ini mempunyai pengait pada ujung-ujungnya maka ketika tersangkut roda gigi, putaran governor akan berhenti. Tali governor disambungkan pada elevator car melalui sebuah lengan aktuator yang terpasang pada sebuah pengungkit. Bila governor dapat berputar bebas maka lengan aktuator akan berada pada posisinya dengan bantuan pegas. Namun bila shaft governor terkunci maka tali governor akan menjadi tegang sehingga lengan aktuator bergerak mendorong pengungkit yang kemudian akan mengaktifkan sistem pengereman.
9
Gambar 2.3. Governor
Sistem pengereman biasanya berupa sebuah jepitan yang bila digerakkan akan menjepit rel dan menghentikan elevator. Selain itu elevator juga dilengkapi dengan rem elektromagnet yang bekerja saat elevator berhenti. Pada saat elevator car sedang bergerak naik atau turun, elektromagnet menarik rem agar membuka, baru pada saat stop elektromagnet melepas rem sehingga mencengkeram. Dengan desain seperti ini pada saat terjadi pemadaman listrik rem akan bekerja secara otomatis. Elevator juga mempunyai sistem pengereman otomatis diujung atas dan bawah. Sistem ini akan menghentikan elevator jika turun atau naik melebihi batas. Jika semua sistem pengereman gagal menghentikan elevator sehingga elevator car tetap saja jatuh maka terdapat satu pengaman terakhir yang mungkin akan menyelamatkan penggunanya. Di bagian bawah lorong elevator terdapat sebuah shock absorber besar yang biasanya berupa piston yang terpasang pada silinder yang diisi minyak. Shock absorber ini bekerja seperti kasur raksasa untuk memperhalus pendaratan elevator car agar terhindar dari benturan keras dengan lantai lorong.
10 2.1.4. Cara Kerja Elevator Elevator modern biasanya telah dlengkapi dengan sebuah sistem kontrol baik menggunakan elektronik, PLC, bahkan komputer. Tugas controller adalah memproses berbagai informasi mengenai kondisi elevator dan mengatur putaran motor penggerak untuk mengantarkan elevator car ke tempat yang semestinya. Untuk melakukan semua ini controller memerlukan minimal tiga informasi sebagai berikut: •
kemana pengguna akan pergi
•
dimana letak tiap lantai
•
dimana letak elevator car
Untuk mengetahui kemana pengguna akan pergi elevator dilengkapi dengan tombol-tombol pada bagian dalam elevator car yang mewakili masing-masing lantai. Demikian juga pada setiap lantai terdapat tombol untuk permintaan jemput. Semua tombol-tombol ini terkoneksi ke controller sehingga controller dapat menerima informasi darinya. Banyak cara untuk mengetahui dimana posisi elevator car. Biasanya sebuah sensor cahaya atau sensor magnetik dibagian samping elevator car membaca serangkaian lobang pada pita panjang yang terpasang vertikal pada lorong elevator. Dengan menghitung lobang-lobang ini, controller dapat mengetahui dengan tepat posisi elevator car. Kebanyakan
elevator
dilengkapi
pengatur
kecepatan
motor
yang
dikendalikan controller sehingga ketika mencapai tiap-tiap lantai yang dituju, elevator dapat berhenti secara perlahan. Dengan demikian elevator dapat terasa nyaman bagi penggunanya. Pada
bangunan
yang
mempunyai
banyak
lantai,
controller
harus
menggunakan strategi tertentu agar elevator car dapat bergerak seefisien mungkin. Pada sistem lama, strateginya adalah menghindari berbalik arah yaitu elevator akan terus naik selama masih ada permintaan naik dari lantai yang lebih tinggi. Elevator hanya akan melayani permintaan turun setelah semua permintaan naik dilayani. Namun sekali bergerak turun, elevator tidak akan melayani permintaan naik sampai tidak ada lagi permintaan turun dari lantai yang lebih rendah. Program seperti ini
11 memang sangat baik untuk melayani pengguna secepat mungkin, namun demikian untuk kondisi tertentu program ini menjadi kurang fleksibel. Elevator dengan controller yang lebih maju, menggunakan program yang lebih kompleks untuk mengetahui lantai mana yang mempunyai prioritas tertinggi pada jam-jam tertentu dan hari-hari tertentu, kemudian mengarahkan elevator car ketempat ini. Pada elevator yang menggunakan elevator car lebih dari satu, pengaturan satu elevator car didasarkan pula pada posisi elevator car yang lain. Bahkan pada suatu sistem, loby elevator bekerja seperti stasiun kereta api. Tidak hanya menekan tombol keatas atau kebawah, seseorang yang menunggu elevator dapat membuat permintaan untuk lantai tertentu. Berdasarkan lokasi dan arah semua elevator car, controller dapat memberitahu pengguna, elevator car yang mana yang dapat digunakan paling cepat. Kebanyakan elevator juga dilengkapi sensor beban pada lantai elevator yang akan memberitahu controller seberapa penuh muatan pada elevator car. Jika beban telah mendekati kapasitas maksimum, elevator tidak akan melayani permintaan dari luar sampai sebagian muatannya keluar. Sensor beban juga sebuah pengaman yang baik, controller tidak akan menutup pintu elevator car jika beban melampaui kapasitas maksimum. Bagian elevator yang tidak kalah penting dari bagian yang lain adalah pintu elevator. Pintu ini akan menjaga pengguna agar tidak jatuh ke lorong elevator. Elevator menggunakan dua set pintu yang berbeda, pintu pada elevator car dan pintu yang terpasang pada tiap-tiap lantai. Pintu pada elevator car digerakkan oleh sebuah motor listrik yang dikendalikan oleh controller. Controller memerintahkan motor untuk membuka pintu ketika elevator car tiba dilantai tujuan dan menutup pintu sesaat sebelum elevator car naik atau turun lagi. Pada kebanyakan elevator pintu dilengkapi dengan sensor yang akan mencegah pintu tertutup jika ada seseorang di depannya. Pada pintu elevator car terpasang sistem mekanis yang akan membawa pintu luar membuka dan menutup bersamanya. Dengan demikian, pintu luar hanya akan membuka jika terdapat elevator car pada lantai yang bersangkutan. Hal ini akan menjaga agar pintu luar tidak terbuka pada saat lorong elevator yang kosong.
12 2.2.
Mikrokontroler AT89S51 AT89S51 adalah salah satu mikrokontroler buatan Atmel yang telah
dilengkapi dengan memory jenis PEROM (Programable and Erasable Read Only Memory) yang merupakan memory dengan teknologi nonvolatile yang dapat diisi maupun dihapus berkali-kali. Mikrokontroler ini menggunakan instruksi berstandar MCS51-Code sehingga memungkinkan bekerja dengan mode singgle chip operation, artinya tidak diperlukan tambahan memory eksternal untuk menyimpan instruksi-instruksinya. Keunggulan lain dari mikrokontriler jenis ini adalah telah mendukung metode In System Programming (ISP) sehingga memungkinkan pemrograman dilakukan tanpa harus melepasnya dari rangkaian aplikasi, cukup hanya dengan menghubungkan kabel ISP ke header yang disediakan pada rangkaian aplikasi. AT89S51 juga merupakan chip yang konsumsi dayanya cukup rendah, selain itu chip ini dilengkapi dengan fasilitas power management sehingga memungkinkan mode power saving yang dikontrol secara software. Mode power saving yang dimilikinya adalah mode Idle dan mode Power Down. Pada mode Idle, CPU berhenti bekerja namun RAM, Timer/Counter, Port Serial dan Sistem Interupsi tetap bekerja. Sedang pada mode Power Down, isi RAM disimpan dan oscilator dihentikan sehingga semua fungsi lain dari chip tidak bekerja sampai terjadi interupsi. Dengan kelebihan ini AT89S51 cocok untuk penggunaan pada perangkat yang mempunyai sumber tegangan terbatas seperti battery.
2.2.1. Struktur Perangkat Keras Bentuk fisik mikrokontroler AT89S1 dapat dilihat pada gambar 2.4. Mikrokontroler ini memiliki 40, 42 ATAU 44 buah kaki / pin dengan beberapa bentuk kemasan antara lain 40-lead PDIP, 42-lead PDIP, 44-lead PLCC dan 44-lead TQFP. Fungsi dari masing-masing pin dapat dilihat pada tabel 2.1.
13
Gambar 2.4. Bentuk fisik mikrokontroler AT89S51
14 Tabel 2.1. Fungsi pin-pin mikrokontroler AT89S51
NO Pin Nama Pin
Alternatif
Keterangan
20
GND
Ground
40
VCC
Power Supply Port 0 dapat berfungsi sebagai I/O biasa, low order multiplex address/data ataupun menerima kode byte pada saat Flash Programming. Pada fungsi sebagai I/O biasa port ini dapat memberikan output sink ke delapan buah TTL Output atau dapat diubah sebagai input dengan memberikan logika 1 pada port tersebut.
32... 39 P0.7…P0.0
D7…D0 & A7…A0 Pada fungsi sebagai low order multiplex address/data port ini akan mempunyai internal pull up Pada saat Flash Programming diperlukan external pull up terutama pada saat verifikasi program.
Port 1 berfungsi sebagai I/O biasa atau menerima low order address bytes selama pada saat flash programming. 1…8
Port ini mempunyai internal pull up dan berfungsi sebagai input dengan memberikan logika 1
P1.0…P1.7
Sebagai output port ini dapat memberikan output sink keempat buah input TTL Port 2 berfungsi sebagai I/O biasa atau high order address, pada saat mengakses memori secara 16 bit (Movx @Dptr) 21…28 P2.0…P2.7
Pada saat mengakses memori secara 8 bit, (Mov @Rn) port ini akan A8…A15 mengeluarkan isi dari P2 Special Function Register Port ini mempunyai internal pull up dan berfungsi sebagai input dengan memberikan logika 1 Sebagai output port ini dapat memberikan output sink keempat buah input TTL Sebagai I/O biasa port 3 mempunyai sifat yang sama dengan Port 1 maupun Port 2. Sedangkan sebagai fungsi spesial port-port ini mempunyai keterangan sebagai berikut:
10…17
Port 3
10
P3.0
RXD
Port Serial Input
11
P3.1
TXD
Port Serial output
12
P3.2
INT0
Port External Interrupt 0
13
P3.3
INT1
Port External Interrupt 1
14
P3.4
T0
Port External Timer 0 Input
15
P3.5
T1
Port External Timer 1 Input
16
P3.6
WR
External Data Memory Write Strobe
17
P3.7
RD
External Data Memory Read Strobe
9
RST
30
ALE
29
PSEN
Reset akan aktif dengan memberikan input high selama 2 cycle Pin ini dapat berfungsi sebagai Address Latch Enable (ALE) yang me-latch low byte address pada saat mengakses memori external PROG
Sedangkan pada saat Flash Programming (PROG) berfungsi sebagai pulse input untuk pada operasi normal ALE akan mengeluarkan sinyal clock sebesar 1/16 frekwensi oscillator kecuali pada saat mengakses memori external Sinyal clock pada pin ini dapat pula di disable dengan men-set bit 0 dari Special Function Register di alamat 8CH ALE hanya akan aktif pada saat mengakses memori external (MOVX & MOVC) Pin ini berfungsi pada saat mengeksekusi program yang terletak pada memori external. PSEN akan aktif dua kali setiap cicle Pada kondisi low, pin ini akan berfungsi sebagai EA yaitu mikrokontroler akan menjalankan program yang ada pada memori external setelah sistem di-reset
VP
Jika berkondisi high, pin ini akan berfungsi untuk menjalankan program yang ada pada memori internal
31
EA
19
XTAL1
Input Oscillator
18
XTAL2
Output oscillator
Pada saat Flash Programming pin ini akan mendapat tegangan 12 Volt (VP)
15 2.2.2. Struktur Memory AT89S51 mempunyai struktur memory yang terdiri dari tiga bagian utama yaitu RAM, Special Function Register (SFR) dan Flash PEROM. RAM dan PEROM mempunyai struktur yang terpisah. RAM dialamati oleh RAM address register sedangkan PEROM dialamati oleh Program Address Register sehingga walaupun mempunyai alamat awal yang sama namun secara fisik keduanya tidak saling berhubungan.
7FF
FF SPECIAL FUNCTION REGISTER RAM ADRESS REGISTER
PROGRAM ADDRESS REGISTER
80 7F RAM
FLASH PEROM
00
000
Gambar 2.5. Struktur RAM dan PEROM
a. RAM RAM merupakan memory sebesar 128 byte yang biasanya digunakan untuk menyimpan variabel atau data yang bersifat sementara. Gambar 2.4 memperlihatkan gambaran umum peta pengalamatan pada RAM. Terlihat bahwa secara keseluruhan RAM mempunyai alamat antara 00H sampai dengan 7FH, namun demikian tidak
16 semua alamat RAM mempunyai fungsi yang sama melainkan terbagi menjadi tiga fungsi yang berbeda yaitu Register Banks, Bit Addressable RAM dan General Purpose RAM. •
Register Banks Terdapat empat buah Register Bank yaitu bank 0 sampai dengan bank 3. Masing-masing Register Banks terdiri dari delapan buah register yaitu R0 hingga R7. Pada saat sistem di reset, R0 hingga R7 selalu terletak pada bank 0 yaitu alamat 00H sampai 07H. Namun demikian, register-register ini bisa dipindahkan ke bank 1 (08H hingga 0FH), bank 2 (10H hingga 17H) dan bank 3 (18H hingga 1FH).
•
Bit Addressable RAM Bit addressalble RAM adalah kelompok RAM yang dapat diakses langsung pada tiap-tiap bit disamping akses per-byte seperti RAM pada umumnya. Kelompok RAM ini terdapat pada alamat 20H hingga 2FH. Dengan mode bit addressing maka alamat 20H hingga 2FH dapat juga diakses menjadi bit 00H sampai dengan bit 7FH (gambar 2.4). Dengan demikian alamat-alamat bit ini dapat langsung ditunjuk saat program memerlukan operasi yang hanya melibatkan bitbit tertentu dari memory.
•
General Pupose RAM Kelompok yang termasuk pada General Purpose RAM (RAM Keperluan Umum) terdapat pada alamat 30H sampai dengan alamat 7FH. Kelompok ini hanya dapat diakses per-byte, tidak dapat dialamati pada tiap-tiap bit-nya. Seperti namanya kelompok RAM ini diperuntukkan sebagai lokasi penyimpanan data yang bersifat umum pada operasi program yang tidak memerlukan fungsi khusus.
17 Byte Address
Bit Address
7F
Bit Address
FF
General Purpose RAM
30
Bit Addressable Locations
Byte Address
2F
7F 7E 7D 7C 7B 7A 79 78
2E
77 76 75 74 73 72 71 70
2D
6F 6E 6D 6C 6B 6A 69 68
2C
67 66 65 64 63 62 61 60
2B
5F 5E 5D 5C 5B 5A 59 58
2A
57 56 55 54 53 52 51 50
29
4F 4E 4D 4C 4B 4A 49 48
28
47 46 45 44 43 42 41 40
27
3F 3E 3D 3C 3B 3A 39 38
26
F0
F7 F6 F5 F4 F3 F2 F1 F0
E0
E7 E6 E5 E4 E3 E2 E1 E0
D0
D7 D6 D5 D4 D3 D2
B8
-
-
-
D0
- BC BB BA B9 B8
B0
B7 B6 B5 B4 B3 B2 B1 B0
A8
AF AE AD AC AB AA A9 A8
A0
A7 A6 A5 A4 A3 A2 A1 A0
37 36 35 34 33 32 31 30
99
Not Bit Addressable
25
2F 2E 2D 2C 2B 2A 29 28
98
9F 9E 9D 9C 9B 9A 99 98
24
27 26 25 24 23 22 21 20
23
1F 1E 1D 1C 1B 1A 19 18
90
97 96 95 94 93 92 91 90
22
17 16 15 14 13 12 11 10
21
0F 0E 0D 0C 0B 0A 09 08
8D
Not Bit Addressable
20
07 06 05 04 03 02 01 00
8C
Not Bit Addressable
Bank3
8B
Not Bit Addressable
8A
Not Bit Addressable
89
Not Bit Addressable
88
F7 F6 F5 F4 F3 F2 F1 F0
87
Not Bit Addressable
83
Not Bit Addressable
82
Not Bit Addressable
81
Not Bit Addressable
80
F7 F6 F5 F4 F3 F2 F1 F0
1F 18 17 10 0F 08 07 00
Bank 2 Bank 1 Bank 0
Gambar 2.6. Peta Memory RAM dan SFR
18 b. Special Function Register (SFR) Special Function Register atau Register Fungsi Khusus adalah memory yang berisi register-register yang memiliki fungsi khusus misalnya untuk pengaturan timer, counter, serial dan lain-lain. Register-register ini pada peta memory menempati alamat antara 80H sampai dengan FFH (Gambar 2.6). Sebagian diantaranya dapat dialamati dengan pengalamatan bit dan sebagian lainnya hanya bisa dialamati per byte. •
Akumulator Register ini hampir selalu digunakan oleh semua operasi baik aritmatik maupun logika, demikian juga dengan proses pengambilan dan pengiriman data. Letak register ini terdapat pada alamat E0H.
•
Register B Register B mempunyai fungsi sebagai register bantu pada operasi-operasi tertentu yang tidak bisa hanya menggunakan akumulator. Namun demikian register ini dapat juga dialamati dengan pengalamatan per bit.
•
Port Port merupakan register yang berhubungan langsung dengan pin-pin pada perangkat fisik mikrokontroler. Jika sebuah operasi menghasilkan perubahan data pada sebuah port, maka dengan sendirinya kondisi pada pin-pin yang behubungan dengan port tersebut akan berubah pula. Sebaliknya, jika sebuah operasi mengambil data dari sebuah port, maka sama halnya dengan membaca masukan dari pin-pin yang berhubungan dengan port tersebut. AT89S51 mempunyai empat buah port yaitu port 0, port 1, port 2 dan port 3, masing masing mempunyai alamat 80H, 90H, A0H dan B0h. Semua port ini dapat diakses dengan pengalamatan secara bit sehingga dapat dilakukan pembacaan status masukan atau perubahan keluaran pada setiap pin mikrokontroler tanpa mempengaruhi pin-pin lainnya.
•
Program Status Word Seperti namanya, Program Status Word (PSW) berfungsi sebagai register yang selalu memonitor berbagai kondisi yang diakibatkan oleh berbagai operasi program. Letak register ini adalah pada alamat D0H. Berikut adalah fungsi dari masing-masing bit pada PSW:
19
PSW.7
PSW.6
PSW.5
PSW.4
PSW.3
PSW.2
PSW.1
PSW.0
CY
AC
F0
RS1
RS0
OV
-
P
Gambar 2.7. Register PSW
Flag Carry (CY) berfungsi sebagai pendeteksi adanya kelebihan pada operasi penjumlahan atau adanya pinjam (borrow) pada operasi pengurangan. Flag Auxiliary Carry (AC) akan selalu set jika terjadi carry dari bit ketiga hingga bit keempat pada proses penjumlahan. Flag 0 (F0) digunakan untuk tujuan umum tergantung pada kebutuhan pemakai. Register Bank Select (RS0 dan RS1) digunakan untuk memilih lokasi Register Bank (R0 sampai R7). Flag Overflow (OV) akan diset jika hasil operasi aritmatik lebih besar dari 128 atau lebih kecil dari –128 Bit Pariti (P) akan set jika jumlah bit 1 pada akumulator adalah ganjil, sebaliknya jika jumlah bit 1 pada akumulator genap maka bit ini akan reset. •
Stack Pointer Stack pointer terletak pada alamat 81H, ia merupakan sebuah register 8 bit yang berfungsi untuk menyimpan alamat dari data yang disimpan di stack. Beberapa operasi yang menggunakan register ini adalah Push, Pop, Acall dan Lcall.
•
Data Pointer (DPTR) Digunakan pada operasi-operasi yang menggunakan pengalamatan tidak langsung (indirect addressing). DPTR adalah register 16 bit yang terdiri dari 8 bit DPL pada alamat 82H dan8 bit DPH pada alamat 83H.
•
Register Timer Terdapat dua buah timer pada AT89S51 yaitu timer 0 dan timer 1. Masingmasing timer terdiri dari dua buah register 8 bit yaitu TL dan TH. Untuk timer 0, TL0 berada pada alamat 8AH, dan TH0 pada alamat 8CH. Sedangkan untuk timer 1, TL1 terletak pada alamat 8BH dan TH1 pada alamat 8DH. Untuk pengaturan timer timer ini tersedia dua buah register yaitu register Tmod pada alamat 89H dan Tcon pada alamat 88H.
20 •
Register Port Serial Berfungsi untuk mengatur komunikasi mikrokontroler dengan perangkat lain secara serial. Data yang dikirim dan diterima pada port serial harus melalui sebuah register penyangga yaitu register SBUFF pada alamat 99H, sedangkan untuk pengaturannya digunakan register SCON pada alamat 98H.
•
Register Interupsi Pengaturan interupsi pada AT89S51 dilaksanakan dengan mengatur isi dari dua buah register interupsi yaitu Interrupt Enable Register (IE) yang terletak pada alamat A8H dan Interrupt Priority Register (IP) pada alamat B8H.
•
Register Kontrol Power Berfungsi untuk menempatkan mode controller pada mode idle atau power down.
c. Flash PEROM Flash PEROM (Programmable and Erasable Read Only Memory) pada AT89S51 adalah memory yang digunakan untuk menyimpan instruksi-instruksi MCS51. Memory ini diisi dan dihapus dengan sebuah pengangkat In Systen Programmer (ISP) melalui port ISP. Perangkat ISP terdiri dari sebuah kabel ISP yang menghubungkan port printer (LPT) pada komputer dengan mikrokontroler dan perangkat lunak yaitu Atmel ISP. AT89S51 mempunyai 4 Kb internal Flash PEROM yang mempunyai kemampuan untuk ditulis ulang hingga 1000 kali. Semua rangkaian perintah operasi yang berbentuk program dalam kode biner disimpan pada memory ini. Namun jika diperlukan, dapat pula ditambahkan memory diluar chip mikrokontroler atau sering kali disebut External Memory.
2.2.3. Metode Pengalamatan Memory Seperti telah dibahas pada bagian sebelumnya, AT89S51 mempunyai tiga macam lokasi memory yaitu RAM, SFR dan Flash PEROM. Untuk mengakses data yang terdapat pada lokasi-lokasi tertentu diperlukan berbagai macam operasi program yang sering disebut dengan istilah instruksi. Secara garis besar ada empat macam cara atau metode untuk mengakses lokasi-lokasi memory, baik untuk membaca maupun menulis data ke lokasi tersebut.
21 a. Immediate Addressing Cara pengalamatan ini digunakan bila operand kedua yang digunakan pada instruksi merupakan data yang akan diproses. Biasanya operand tersebut selalu diawali dengan tanda ‘#’. Operand pertama adalah alamat memory yang bisa berupa RAM internal, Register atau SFR. Berikut adalah beberapa contoh instruksi immediate Addressing Move
A,#20H
Move
R1,#30H
Pada instruksi pertama, data 20H dicopy ke akumulator sedang pada instruksi kedua, data 30H dicopy ke register R1. b. Register Addressing Register addressing atau pengalamatan register adalah metode pengalamatan dimana operand kedua pada suatu instruksi berupa register. Berikut adalah contoh metode pengalamatan register: Move
A,R1
Move
30H,R3
Pada instruksi pertama, isi dari R1 dicopy ke akumulator, sedang pada instruksi kedua isi dari R3 dicopy ke memori dengan alamat 30H. c. Direct Addressing Pada metode direct addressing atau pengalamatan langsung, data yang akan dilibatkan dalam operasi instruksi berada pada RAM internal atau SFR misalnya: Move
A,P1
Move
30H,40H
Pada instruksi pertama, isi dari P1 dicopy ke akumulator, sedang pada instruksi kedua isi dari alamat 40H dicopy ke alamat 30H. d. Indirect Addressing Pada indirect addressing atau pengalamatan tak langsung isi dari suatu register dijadikan penunjuk alamat memory yang datanya akan digunakan pada operasi.
22 Register yang dapat digunakan sebagai penunjuk alamat memory adalah R0, R1 dan DPTR. Berikut contoh pengalamatan tak langsung: Move
R1,#30H
Move
A,@R1
Pada baris pertama R1 diisi dengan data 30H, kemudian pada baris kedua isi dari R1 digunakan sebagai penunjuk alamat memory yang isinya akan di copy ke accumulator. Dengan demikian kedua instruksi ini berarti data pada alamat 30H dicopy ke accumulator.
2.2.4. Timer dan Counter AT 89S51 telah dilengkapi dengan dua buah fasilitas yang dapat digunakan sebagai timer maupun counter. Walaupun mempunyai fungsi sebagai timer atau counter fasilitas ini lebih dikenal dengan istilah timer. Kedua timer itu adalah Timer 0 dan Timer 1 jika menggunakan sumber clock dengan frekuensi tertentu maka fasilitas ini berfungsi sebagai timer, sedangkan jika difungsikan sebagai counter maka sumber clock adalah pulsa yang akan dihitung jumlahnya. Timer digunakan sebagai penghitung lamanya kejadian sedangkan counter digunakan untuk menghitung jumlah sesuatu. Masing-masing timer pada AT 89S51 mempunyai 16 bit counter yang terdiri dari dua buah register 8 bit. Untuk mengatur kinerjanya, kedua timer ini mempunyai 6 buah SFR yang harus diatur sedemikian rupa sesuai operasi yang diinginkan. Keenam SFR itu adalah Timer Mode Register (TMOD), Timer 0 High byte (TH0), Timer 0 Low byte (TL0), Timer 1 high byte (TH1), Timer 1 Low byte (TL1), dan Timer Control Register (TCON). Timer Mode Register (TMOD) merupakan sebuah register 8 bit yang berperan untuk pengaturan mode operasi timer. Register ini terbagi menjadi dua yang masing-masing 4 bit kiri untuk pengaturan timer1 dan 4 bit kanan untuk pengaturan timer 0.
23 7
6
GATE
5
4
TIMER 1 C/T M1
M0
3 GATE
2
1
TIMER 0 C/T M1
0 MO
Gambar 2.8. Register TMOD
Akses pada register ini hanya dapat dilakukan dengan pengalamatan word karena register TMOD tidak dapat dialamati secara bit (not bit addressable). Fungsi dari masing-masing bit adalah sebagai berikut : •
Gate Bit ini berfungsi untuk menentukan cara mengaktifkan timer. Jika bit ini low maka timer hanya bisa diaktifkan dengan program yaitu melalui bit TR1 atau TR0 pada register TCON. Timer 1 akan aktif jika TR1 berlogika high. Tetapi jika bit gate berlogika high maka kendali timer tergantung dari kendali eksternal yaitu melalui INT1 untuk Timer 1 dan INT0 untuk Timer 0. Timer 1 akan aktif jika INT1 high dan Timer 0 akan aktif jika INT0 high.
•
C/T Bit ini berfungsi sebagai penentu jenis operasi. Jika bit C/T berlogika low maka fasilitas ini berfungsi sebagai timer, artinya ia mendapat clock dari sumber internal yaitu frekuensi oscilator yang telah dibagi 12. Jika bit C/T berlogika high maka fasilitas ini berfungsi sebagai counter, artinya sumber clock didapat dari luar, yaitu pin T1 untuk counter 1 dan pin T0 untuk counter 0.
•
M1 dan M0 Dua buah bit ini berperan sebagai penentu mode timer. Pada AT 89S51 dapat dipilih empat mode timer yaitu mode 0 sampai dengan mode 4. Pada mode 0 (M1 dan M0=00) timer bekerja pada mode 13 bit atau kapasitas maksimumnya adalah 8192 pulsa. Mode 1 (M1 dan M0=01) berarti timer bekerja pada mode 16 bit atau kapasitas maksimumnya adalah 65536 pulsa. Mode ini adalah mode dengan kapasitas paling besar dibanding mode-mode yang lain. Pada mode 2 (M1 dan M0=10) timer berfungsi sebagai timer 8 bit reload dimana nilai timer tersimpan pada TL1 untuk timer 1 dan TL0 untuk timer 0, sedangkan TH1 dan TH0 berisi nilai isi ulang (Reload Value) yang akan dikirim ke TL1 atau TL0 setiap kali terjadi overflow.
24 Jika bit M1 dan M0 bernilai 11 maka timer bekerja pada mode 3. pada mode ini AT 89S51 seakan-akan mempunyai tiga buah timer. Timer 0 terbagi menjadi dua buah 8 bit timer yaitu TL0 dengan TF0 sebagai overflow flag-nya dan TH0 dengan TF1 sebagai overflow flag-nya. Timer 1 tetap berfungsi sebagai 16 bit timer. Timer high byte dan timer low byte yang terdiri dari TH0, TL0, TH1, dan TL1 adalah empat buah register yang berfungsi sebagai tempat penyimpanan data timer atau counter yang masing-masing terdiri dari 8 bit. Timer 1 tersimpan pada TH1 dan TL1 sehingga membentuk timer 16 bit, demikian juga dengan timer 0 terdiri dari TH0 dan TL0. Timer Control Register (TCON) sebenarnya terbagi menjadi dua bagian masing-masing 4 bit untuk pengaturan timer dan 4 bit berikutnya untuk pengaturan fungsi interrupt.
7
6
TF1
5
4
REGISTER TIMER TR1 TF0
TR0
3
2
1
0
REGISTER INTERRUPT IE1 IT1 IE0 IT0
Gambar 2.9. Register TCON
Register ini bersifat bit addressable sehingga dapat diatur masing-masing bit secara terpisah. Fungsi yang berhubungan dengan pengaturan timer terdapat pada 4 bit kiri dari register TCON yang terdiri dari TF1, TR1, TF0 dan TR0. TF1 dan TF0 adalah timer overflow flag yang akan diset saat timer mengalami overflow. TR1 dan TR0 berfungsi untuk mengaktifkan timer secara software. Jika TR1 berlogika high maka timer 1 aktif dan jika TR1 berlogika high maka timer 0 aktif.
2.2.5. Interupsi Pengertian interupsi pada mikrokontroler adalah kondisi yang memaksa mikrokontroler meninggalkan program apapun yang sedang dikerjakannya untuk mengerjakan program lain yang telah ditetapkan. Program yang akan dikerjakan saat terjadi interupsi disimpan pada sebuah rutin khusus yang dikenal dengan istilah
25 interrupt service routine (ISR). Setelah program pada ISR selesai dikerjakan, mikrokontroler akan kembali mengerjakan program yang sebelumnya ditinggalkan karena adanya interupsi. Perbedaan antara rutin biasa dengan ISR adalah jika rutin biasa dikerjakan saat terjadi instruksi call atau jmp dan selalu diakhiri dengan instruksi ret. Sedangkan ISR akan dikerjakan saat terjadi interupsi dan diakhiri dengan instruksi reti. AT 89S51 mempunyai lima macam interupsi yang masing-masing dapat diaktifkan atau dinonaktifkan sesuai kebutuhan program. Kelima macam interupsi tersebut adalah interupsi eksternal 0 dan 1, interupsi timer 0 dan 1, serta satu buah interupsi serial. Untuk mengatur kapan interupsi diperbolehkan atau tidak dilakukan pada sebuah register khusus yaitu Interrupt Enable Register (IE).
7
6
5
4
3
2
1
0
EA
-
-
ES
ET1
EX1
ET0
EX0
Gambar 2.10. Register IE
Fungsi dari masing-masing bit pada register IE dijelaskan sebagai berikut : •
EA sebagai pengaktif utama untuk semua interupsi. Jika bit ini berlogika low maka semua interupsi tidak akan dilayani apapun kondisi bit yang lain, dengan demikian jika akan mengaktifkan salah satu interupsi maka bit ini harus berlogika high.
•
ES berfungsi untuk mengaktifkan interupsi serial. Jika bit ini bernilai 1 maka interupsi serial akan dilayani. Interupsi serial terjadi ketika ada yang masuk ataupun keluar melalui serial port.
•
ET1 berfungsi untuk mengaktifkan interupsi timer 1. Jika bit ini bernilai 1 maka interupsi timer 1 dilayani. Interupsi timer terjadi saat timer yang bersangkutan mengalami overflow.
•
EX1 berfungsi untuk mengaktifkan interupsi eksternal 1. Jika bit ini satu maka interupsi eksternal 1 dilayani. Interupsi eksternal terjadi jika pin INT 1 atau INT 0 bernilai 0.
26 •
ET0 berfungsi untuk mengaktifkan interupsi timer 0, seperti interupsi timer 1.
•
EX0 untuk mengaktifkan interupsi eksternal 0 seperti interupsi eksternal 1.
Apabila interupsi yang diaktifkan lebih dari satu maka sangat mungkin pada saat mikrokontroler sedang melaksanakan satu interupsi, interupsi yang lain terjadi. Untuk
menentukan
apakah
interupsi
yang
terjadi
dapat
menginterupsi
mikrokontroler saat sedang melaksanakan interupsi yang lain maka perlu adanya pengaturan prioritas interupsi. Pada kondisi standard urutan prioritas interupsi adalah seperti pada tabel berikut:
Tabel 2.2. Prioritas Interupsi
PRIORITAS
JENIS INTERUPSI
1 2
Interupsi Eksternal 0 Interupsi Timer 0
3
Interupsi Eksternal 1
4 5
Interupsi Timer 1 Interupsi Serial
Interupsi pada prioritas lebih tinggi tidak dapat diinterupsi oleh interupsi dengan prioritas lebih rendah. Jika diinginkan perubahan prioritas interupsi maka dapat dilakukan dengan pengaturan pada register Interrupt Priority (IP).
7
6
5
4
3
2
1
0
-
-
PT2
PS
PT1
PX1
PT0
PX0
Gambar 2.11. Register IP
27 Fungsi dari masing-masing bit pada register IP adalah sebagai berikut: •
PS (Priority Serial Interrupt) bit ini berfungsi untuk mengatur prioritas interupsi serial.
•
PT1 (Priority Timer Interrupt 1) bit ini berfungsi untuk mengatur prioritas interupsi timer 1.
•
PX1 (Priority External Interrupt 1) bit ini berfungsi untuk mengatur prioritas interupsi eksternal 1.
•
PT0 (Priority Timer Interrupt 0) bit ini berfungsi untuk mengatur prioritas interupsi timer 0.
•
PX0 (Priority External Interrupt 0) bit ini berfungsi untuk mengatur prioritas interupsi eksternal 0. Untuk merubah prioritas sebuah interupsi menjadi tinggi maka bit prioritas
interupsi yang bersangkutan harus dibuat logika 1. Pada saat terjadi interupsi, program counter pada mikrokontroler akan diisi dengan nilai tertentu sehingga eksekusi program akan melompat ke alamat yang diisikan tersebut. Alamat program yang dituju saat terjadi interupsi dinamakan vektor interupsi (interrupt vector). Alamat vektor interupsi untuk kelima macam interupsi dapat dilihat pada tabel berikut:
Tabel 2.3. Alamat Vektor interupsi
INTERUPSI
FLAG
ALAMAT VECTOR
Sistem Reset
RST
0000H
Interupsi Eksternal 0 Interupsi Timer 0
IE0 TF0
0003H 000BH
Interupsi Eksternal 1
IE1
0013H
TF1 RI dan TI
001BH 0023H
Interupsi Timer 1 Interupsi Serial
Jarak antara satu alamat vektor interupsi dengan alamat vektor interupsi yang lain sangat berdekatan sehingga tidak mencukupi untuk kebanyakan ISR pada umumnya, dengan demikian biasanya pada alamat vektor interupsi hanya dituliskan instruksi untuk melompat ke suatu sub rutin sebagai ISR yang lengkap.
28 2.3.
Motor DC Motor DC adalah suatu perangkat yang digunakan untuk menghasilkan daya
mekanis berupa putaran dengan masukan berupa tegangan yang dihasilkan dari sumber tegangan DC. Putaran pada motor DC didapat dari dorongan medan magnet yang dihasilkan penghantar yang dialiri arus DC. Penghantar ini biasanya berupa lilitan kawat tembaga yang di tempatkan pada bagian motor yang berputar. Bagian ini dikenal dengan istilah jangkar atau armature.
Sikat Karbon
Field
U
Armature
S
Field
Komutator
Gambar 2.12. Prinsip Motor DC
Medan magnet yang dihasilkan armature akan saling tolak menolak dengan medan magnet dari penguat medan atau field. Field pada motor DC terletak pada bagian motor yang tidak berputar (stator). Medan magnet field bisa di dapat dari magnet permanen ataupun berasal dari penghantar yang dialiri arus DC. Jika digunakan magnet permanen maka kuat medan akan tetap, namun jika di dapat dari aliran arus DC maka kuat medan dapat diatur yaitu dengan mengatur kuat arus yang mengalir. Karena lilitan magnet tembaga pada armature ikut berputar dengan putaran armature maka tidak mungkin dilakukan penyambungan langsung sumber arus dari luar ke lilitan armature. Untuk itu harus digunakan cara penyambungan dengan gesekan cincin berputar dengan sikat yang terbuat dari karbon. Namun masalahnya jika digunakan cincin berputar atau slip ring maka motor DC tidak akan dapat
29 berputar 360
o
karena saat armature telah berputar 180 o maka medan magnet pada
armature akan menjadi sekutub dengan medan magnet pada field. Untuk itu diperlukan arus yang polaritasnya berbalik agar motor dapat meneruskan putarannya sampai 360
o.
Dengan demikian motor DC tidak
menggunakan slip ring untuk penyambung arus armature melainkan menggunakan alat yang disebut komutator. Komutator mempunyai kemampuan membalik polaritas arus DC dengan memanfaatkan putaran motor itu sendiri. Berdasarkan cara penyambungan dan pemberian arus field, motor DC dibagi menjadi empat jenis yaitu:
1. Motor DC dengan field terpisah 2. Motor DC dengan field paralel 3. Motor DC dengan field seri 4. Motor DC Kompon
2.3.1. Motor DC dengan Field Terpisah
DC Supply
A
DC Supply
Gambar 2.13. Motor DC dengan field terpisah
Karena antara lilitan armature dan lilitan field tidak saling berhubungan dan masing-masing mempunyai sumber tegangan yang terpisah maka pada motor jenis ini akan sangat mudah untuk mengatur kecepatan dan torsi. Bila diinginkan putaran yang lebih cepat maka tegangan armature harus dinaikkan, demikian pula sebaliknya. Pengaturan torsi dengan mengatur arus field juga akan mempengaruhi kecepatan motor. Bila arus field dinaikkan maka torsi akan naik namun kecepatan motor akan berkurang.
30 2.3.2. Motor DC dengan Field Paralel
DC Supply
A
Gambar 2.14. Motor DC dengan field paralel Motor jenis ini seringkali disebut dengan motor shunt atau shunt field motor. Pada motor shunt lilitan field dipasang paralel dengan lilitan armature. Pengaturan arus motor akan berpengaruh sekaligus baik pada kecepatan motor maupun torsinya. Jika diinginkan kecepatan motor yang lebih tinggi maka tegangan supply harus dinaikkan supaya arus armature naik. Pada saat yang bersamaan tegangan field juga akan naik sehingga arus field naik. Dengan demikian torsi motorpun akan naik.
2.3.3. Motor DC dengan Field Seri
DC Supply
A
Gambar 2.15. Motor DC dengan field seri
Motor field seri atau series field motor menggunakan lilitan field yang terpasang seri dengan lilitan armature. Pada saat kondisi motor tanpa beban, maka arus armature akan sangat kecil. Karena lilitan field terpasang seri dengan lilitan armature maka arus field akan sama persis dengan arus armature. Ketika arus
31 armature kecil karena tidak ada beban pada motor maka arus field juga kecil. Hasilnya adalah kecepatan motor sangat tinggi namun torsinya sangat rendah. Ketika motor diberi beban maka arus armature akan naik. Pada saat yang sama arus field juga naik sehingga yang terjadi adalah kecepatan motor turun sangat drastis namun torsi akan naik.
2.3.4. Motor DC Kompon
DC Supply
A
Gambar 2.16. Motor DC Kompon Motor kompon merupakan gabungan antara motor field seri dengan motor field paralel. Motor jenis ini mempunyai dua buah lilitan field yang terpasang seri dan paralel dengan lilitan armature. Karena merupakan gabungan seri – paralel maka motor ini memiliki karakteristik dari kelebihan yang dimiliki oleh kedua jenis motor ini. Lilitan field paralel mempunyai karakter kecepatan yang stabil sedangkan lilitan field seri mempunyai karakter kenaikan torsi saat beban motor bertambah. Dengan karakter demikian motor ini sering kali digunakan untuk memutar beban yang sering mengalami perubahan mendadak. Bila terjadi kenaikan beban maka motor ini akan dapat bertahan karena field serinya akan menaikkan torsi.
32 2.4.
Penampil Tujuh Segmen Penampilan tujuh segmen akan lebih dikenal dengan sebutan seven segment.
Seven segment adalah komponen elektronika yang mampu menampilkan informasi bilangan desimal 0 – 9 dengan tampilan cahaya berwarna tertentu. Pada kenyataannya tampilan ini dibentuk dengan menempatkan tujuh buah LED membentuk dua buah segi empat sehingga apabila ketujuh LED menyala akan menampilkan angka 8. masing-masing LED akan menjadi bagian dari satu buah tampilan angka sehingga satu buah LED disebut satu segment. Sebenarnya pada komponen ini tidak hanya terdapat 7 LED melainkan 8 LED karena satu buah LED digunakan untuk menampilkan titik yang akan berguna untuk mewakili koma saat menampilkan bilangan pecahan desimal. Bahkan pada seven segment ukuran besar, satu segment bisa saja terdiri lebih dari satu LED hanya saja ditempatkan pada segmen yang sama.
Gambar 2.17. Seven Segment
Bila dilihat dari cara penyambungnya seven segment dibagi menjadi dua jenis yaitu common anoda dan common cathoda.
2.4.1. Seven Segment Common Anoda LED-LED pada seven segment common anoda terpasang dengan semua anodanya terhubung menjadi satu, sedangkan katoda-katodanya terhubung langsung dengan pin seven segment masing-masing pada pin terpisah.
33
Common a f
b
g a
b
c
d
e
f
g
e
c d
Gambar 2.18. Seven segment common anoda
Pada saat penyambungan seven segment jenis ini semua pin selain common harus mendapatkan polaritas negatif sedangkan common mendapat polaritas positif.
2.4.2. Seven Segment Common Katoda Seven segment common katoda merupakan kebalikan dari common anoda. Semua katoda LED tersambung menjadi satu, sedangkan yang lainnya langsung terhubung dengan pin seven segment.
a a
b
c
d
e
f
g
f
b
g e
c d
Common
Gambar 2.19. Seven segment common katoda
Penyambungan seven segment jenis ini adalah polaritas positif untuk semua pin selain common sedangkan common mendapat polaritas negatif.
BAB III PROSES PERANCANGAN
3.1.
Tinjauan Umum Perancangan miniatur elevator empat lantai ini mengacu pada elevator-
elevator yang telah ada secara umum dengan tujuan agar hasil perancangan bisa menyerupai elevator yang sebenarnya. Namun demikian ada beberapa fungsi yang tidak diterapkan karena keterbatasan dalam segala hal mengenai sistem ini. Fungsifungsi yang tidak diterapkan pada perancangan kali ini antara lain sistem pengereman dan pengendalian kecepatan motor penggerak. Secara garis besar sistem miniatur elevator ini terdiri dari tiga bagian utama yaitu: 1. Bagian masukan 2. Bagian pengendali / controller 3. Bagian keluaran
Bagian masukan bertugas memberikan segala informasi mengenai kondisi yang sedang terjadi pada elevator kepada controller. Controller akan mengolah semua informasi dari bagian masukan kemudian akan menentukan langkah-langkah apa saja yang seharusnya dilakukan. Langkah-langkah yang harus dilakukan ini dikirim ke bagian keluaran, maka komponen-komponen pada bagian keluaran akan melakukan tugas masing-masing sesuai perintah controller antara lain menampilkan posisi lantai, menggerakkan motor dan lain-lain. Sedangkan rangkaian catu daya bertugas mengatur suplay tegangan yang diperlukan oleh seluruh sistem. Untuk lebih jelasnya dapat dilihat pada blok diagram pada gambar 3.1. Seperti telah disinggung sebelumnya, controller dalam hal ini AT89S51 berfungsi sebagai otak dari keseluruhan sistem. Ia akan mengatur kinerja keseluruhan sistem berdasarkan informasi yang didapat dari komponen-komponen masukan. Informasi pertama didapat dari tombol-tombol yang terpasang di bagian luar elevator pada setiap lantai dan di dalam elevator car. Tombol-tombol ini berfungsi sebagai sarana bagi pengguna elevator untuk memberitahu controller kemana elevator car harus pergi. Pengguna elevator yang ingin pergi ke lantai yang lebih tinggi akan
34
35 menekan tombol naik sedangkan pengguna yang ingin pergi ke lantai yang lebih rendah akan menekan tombol turun. Setelah pengguna ada di dalam elevator car ia tinggal menekan tombol sesuai dengan lantai yang ia tuju.
INPUT
CONTROLLER
OUTPUT INDIKATOR LANTAI
TOMBOL
LAMPU TOMBOL ENCODER
AT89S51 LAMPU ARAH
LIMIT SWITCH
MOTOR PENGGERAK
Gambar 3.1. Blok Diagram Sistem
Controller akan membaca kondisi tombol-tombol setiap saat. Jika ada tombol yang ditekan, hal pertama kali yang dilakukan controller adalah menyalakan lampu pada tombol yang bersangkutan. Dengan demikian semua orang akan tahu bahwa tombol tersebut telah ditekan sehingga tidak ditekan berulang-ulang. Berdasarkan kondisi semua tombol serta arah pergerakan elevator car yang sedang terjadi, controller akan memutuskan panggilan mana yang akan dilayani terlebih dahulu. Kemudian controller memerintahkan motor utama untuk berputar menggerakkan elevator car ke lantai tersebut. Saat
elevator
bergerak,
encoder
akan
menghitung
seberapa
jauh
pergerakannya. Berdasarkan jumlah pulsa encoder yang di hitung saat elevator car bergerak, controller akan tahu persis dimana posisi elevator car setiap saat. Jika telah sampai pada lantai yang dituju, maka controller akan memerintahkan motor utama untuk berhenti, lalu memerintahkan motor penggerak pintu untuk membuka pintu elevator. Setelah menunggu beberapa saat, pintu elevator akan tertutup kembali secara otomatis. Jika elevator car pada kondisi stop, maka untuk membuka atau menutup pintu dapat dilakukan dengan menekan tombol buka / tutup manual. Namun untuk
36 tujuan keselamatan pengguna, fasilitas ini tidak akan bekerja saat elevator car berjalan naik atau turun. Untuk mencegah motor penggerak pintu berputar terus menerus saat pintu sudah terbuka penuh atau tertutup penuh maka di kedua tepi pintu di pasang switch pembatas (limit switch). Kedua limit switch ini akan memberitahu controller posisi buka atau tutupnya pintu. Dengan demikian controller akan memerintahkan motor untuk berhenti begitu tahu bahwa pintu telah terbuka atau tertutup penuh. Selain dua limit switch yang terpasang pada tepi pintu, terdapat dua limit switch lagi yang diletakkan di bagian paling bawah dan paling atas lorong elevator. Switch paling bawah berfungsi untuk mencegah elevator bergerak melewati batas bawah, selain itu switch ini difungsikan sebagai penentu posisi awal atau posisi nol hitungan encoder. Sedangkan switch paling atas berfungsi untuk mencegah elevator bergerak melewati batas atas. Supaya pengguna elevator bisa tahu posisi elevator car setiap saat maka di tiap-tiap lantai dipasang sebuah indikator posisi lantai dengan menggunakan seven segment. Pada saat elevator car mencapai lantai tertentu, controller akan mengirim signal pada seven segment driver sesuai posisi lantai saat itu. Kemudian seven segment akan menampilkan angka sesuai signal posisi lantai dari controller. Satu lagi indikator yang akan memudahkan pengguna saat memanfaatkan elevator yaitu lampu penunjuk arah. Lampu ini terdiri dari dua buah yaitu lampu arah naik dan lampu arah turun. Saat elevator car sedang naik maka yang menyala adalah lampu arah naik, sebaliknya saat elevator car sedang turun maka lampu yang menyala adalah lampu arah turun. Dengan demikian pengguna akan tahu sedang kemana arah elevator car saat itu. Untuk mewujudkan kinerja sistem seperti yang telah di bahas, sistem ini di buat seperti skema pada gambar 3.2. Pada skema rangkaian dapat dilihat bagaimana penyambungan berbagai komponen baik komponen masukan maupun komponen keluaran dengan controller AT89S51. PB1 sampai PB4 adalah tombol-tombol yang terpasang pada lantai satu sampai dengan lantai empat, U berarti arah naik (up) dan D berarti arah turun (down). Pada lantai satu dan lantai empat hanya terdapat satu tombol saja sedang pada lantai dua dan tiga terdapat dua tombol (naik dan turun). PB IN1 sampai dengan PB IN4 adalah tombol yang terdapat pada bagian dalam elevator car yang mewakili tiap-tiap lantai, demikian juga PB DR-C dan PB DR-0 yaitu tombol untuk menutup dan membuka pintu secara manual.
12V
VCC
D1
R9
K4
MOTOR PENGGERAK
D2
IC3
ENCODER
TR4
NO
P3.4 C
M
K3
P3.0
MOTOR PINTU
IC4
D3
NC
R8
R7
R6
P3.2
NO
P3.5
R5
C
D4
NC
IC5
K2
P3.6 NO
b c d e f g
R11 R12 R13 R14 R15 R16
C
D5
NC
M
K1
MOTOR UTAMA
IC6
NO
C
R1
C1
XTAL1
XTAL2
X1
AT 89S51
P2.6 P2.5 P2.4 P2.3 P2.2 P2.1
P3.4 P3.5 P3.6 P3.7 XTAL2 XTAL1
C3
C2
P1.7
P1.6
P1.5
P1.4
LIMIT SWITCH
Ls 2
Ls 1
Ls 4
Ls 3
P2.0
P2.7
P3.3
GND
PSEN
ALE
EA
P0.7
P3.2
P3.1
P3.0
RST
P0.6
P0.5
P1.6 P1.7
P0.4
VCC
Gambar 3.2. Skema Rangkaian sistem
NC
VCC
P0.3
P0.2
P1.3
P1.5
P0.1
P1.2
P1.4
P0.0
8
14
VCC
P1.1
5
IC1 P1.0
4
RST
P1.1 P1.2
P1.0
15
3
6
2
1
7
9
10
11
12
13
16
IC2
74247
INDICATOR LANTAI
a
R10
P3.7
VCC
VCC
P2.2
P2.1
P2.0
P2.7
P2.6
P2.5
P2.4
P0.7
P0.6
P0.5
P0.4
P0.1 P0.0
P0.2
R4
R3
R2 TR2
LAMPU INDIKATOR
TR1
L3U
L2D
L2U
L1
PB3U
PB2D
PB2U
PB1
LIN2
LIN1
L4
L3D
PBIN2
PBIN1
PB4
PB3D
TR3
5V
L-DOWN
L-UP
LIN4
LIN3
PBDR-O
PBDR-C
PBIN4
PBIN3
TOMBOL
37
38 Lampu-lampu tombol pada rangkaian ini direalisasikan dengan beberapa buah LED. L1 sampai dengan L4 adalah lampu untuk PB1 sampai PB4 dan LIN1 sampai LIN4 adalah lampu untuk PB IN1 sampai PB IN4. Terdapat dua buah motor DC yang dapat diputar balik dengan bantuan empat buah relai. M-car adalah motor utama sedangkan M-Door adalah motor penggerak pintu. Sedangkan seven segment dalam rangkaian ini hanya diwakili oleh satu buah seven segment saja namun pada kenyataannya terdapat empat buah seven segment yang dipasang paralel. Terakhir adalah encoder dan empat buah limit switch. LS DR-C dan LS DR-0 adalah limit switch-limit switch pada pintu elevator car sedang LS car –u dan LS carL adalah limit switch batas atas dan batas bawah.
3.2.
Perangkat Keras Pada bagian yang lalu telah dibahas cara kerja sistem secara umum yaitu
bagaimana sistem merespon permintaan pengguna dan mengerjakan langkah-langkah sesuai urutan prioritas. Pada bagian kali ini akan dibahas cara kerja rangkaian dengan lebih rinci pada tiap-tiap bagian pada rangkaian.
3.2.1. Controller Rangkaian controller merupakan suatu rangkaian yang dibentuk dengan sebuah single chip mikrokontroler dan beberapa komponen pendukung untuk menjalankannya (gambar 3.3). Mikrokontroler yang digunakan adalah AT89S51 yang telah mempunyai internal flash memory sehingga tidak perlu lagi tambahan memory di luar chip mikrokontroler. Untuk menjalankan semua fungsinya AT89S51 mendapat catu daya sebesar 5 V melalui pin 40 (+) dan pin 20 (Gnd). Sedangkan pin 31(EA) harus disambung ke tegangan 5 V (VCC) karena program yang digunakan adalah program-program yang berada pada memory internal. Pin 9 (RST) disambung ke sebuah rangkaian reset yang terdiri dari sebuah kapasitor yang terhubung ke VCC dan sebuah resistor yang terhubung ke ground. Ini adalah rangkaian auto reset yang paling sederhana namun cukup optimal. Pada saat sistem dinyalakan, maka C1 seolah-olah menjadi hubung singkat dan menghubugkan pin reset ke VCC. Dengan demikian pin reset akan
39 berlogika satu sehingga mikrokontroler akan reset. Sesaat kemudian tegangan kapasitas akan naik sampai sama dengan VCC, maka tegangan pada kaki reset akan turun sampai 0 volt dan mikrokontroler mulai menjalankan program. Rangkaian reset seperti ini dimaksudkan supaya mikrokontroler selalu reset saat sistem pertama kali dinyalakan dan baru akan menjalankan program setelah kondisi power suplay stabil.
VCC
VCC
C1
P1.0
VCC
P1.1
P0.0
P1.2
P0.1
P1.3
P0.2
P1.4
P0.3
P1.5
P0.4
P1.6
P0.5
P1.7
P0.6
RST P3.0 R1
X1
C2
P3.1
AT 89S51
P0.7 EA ALE
P3.2
PSEN
P3.3
P2.7
P3.4
P2.6
P3.5
P2.5
P3.6
P2.4
P3.7
P2.3
XTAL2
P2.2
XTAL1
P2.1
GND
P2.0
C3
Gambar 3.3. Rangkaian Controller
Detak atau clock untuk mengaktifkan mikrokontroler didapat dari sebuah rangkaian oscilator kristal. Rangkaian ini terdiri dari sebuah kristal dengan frekuensi 11,0592 MHZ yang di sambung pada pin 19 (X TAL1) dan 18 (XTAL2) dan dua buah kapasitor 33 pf yang di sambung ke ground. Frekuensi oscilator seperti ini di pilih karena dengan frekuensi 11,0592 MHZ mikrokontroler akan mudah di konfigurasi untuk menyesuaikan band rate jika diinginkan komunikasi melalui port serial dengan sistem lain. Walaupun pada sistem yang di rancang kali ini fasilitas ini
40 tidak digunakan, namun hal ini akan berguna jika sistem akan dikembangkan lebih lanjut.
3.2.2. Tombol Rancangan miniatur elevator empat lantai ini menggunakan 12 buah tombol yang terbagi menjadi dua bagian yaitu 6 buah tombol sebagai tombol eksternal yaitu di pasang pada tiap-tiap lantai dan 6 buah tombol sebagai tombol internal yaitu di pasang pada panel elevator car. Kedua belas tombol ini terhubung ke controller melalui port 0 secara matriks (gambar 3.4). Matriks yang dibuat adalah tiga kolom dan empat baris sehingga diperlukan tujuh pin mikrokontroler, dalam hal ini dari semua pin port 0 hanya P0.3 yang tidak digunakan. Kolom 1 sampai dengan kolom 3 dihubungkan ke P0.0 sampai dengan P0.2 sedangkan baris ke 1 sampai dengan baris ke 4 dihubungkan ke P0.4 sampai dengan P0.7
P0.2 P0.1 P0.0
PB1
PB3D
PBIN3
PB2U
PB4
PBIN4
PB2D
PBIN1
PBDR-C
PB3U
PBIN2
PBDR-O
P0.4
P0.5
P0.6
P0.7
Gambar 3.4. Rangkaian Tombol-Tombol
Untuk dapat membaca kondisi tiap-tiap tombol digunakan metode penyisiran (scanning). Intinya adalah memberikan suatu kondisi logika pada suatu kolom lalu membaca semua baris apakah ada baris yang kondisi logikanya sama dengan kondisi
41 logika kolom tersebut. Baris dengan logika sama dengan kolom yang sedang di triger menandakan tombol yang terhubung padanya sedang di tekan. Sebagai contoh jika kolom 1 diberi logika 0 kemudian semua baris dibaca kondisi logikanya. Jika baris ke 1 berlogika 0 artinya PB1 sedang ditekan, namun jika baris ketiga yang berlogika 0 berarti tombol yang sedang ditekan adalah PB2D. Contoh lain, misalnya kolom ketiga diberi logika 0 berarti tombol PB DR-C sedang ditekan, jika PB DR-0 yang ditekan maka
baris ke empat akan berlogika 0.
pengkondisian dan pengecekan ini dilakukan secara bergantian dan terus menerus pada setiap kolom dan baris sehingga semua tombol dapat di ketahui statusnya.
3.2.3. Lampu Indikator Lampu-lampu tombol pada perancangan ini diwujudkan dengan 12 buah LED. Rangkaian lampu-lampu ini dihubungkan dengan controller melalui port 2. Seperti halnya rangkaian tombol, rangkaian lampu-lampu ini juga menggunakan metode matriks dalam merangkainya serta dalam penyalaannya menggunakan metode scanning.
L1
L3D
LIN3
L2U
L4
LIN4
L2D
LIN1
L-UP
L3U
LIN2
L-DOWN
P2.4
P2.5
P2.6
P2.7
P2.0 P2.1 P2.2
R2
TR1
TR2
R3 R4
Gambar 3.5. Lampu Indikator
TR3
5V
42 Kolom 1 sampai kolom 3 dihubungkan ke P2.0 sampai dengan P2.2 sedang baris ke 1 sampai baris ke 4 dihubungkan ke P2.4 sampai dengan P2.7, P2.3 tidak digunakan. Ketiga kolom matriks LED ini tidak langsung terhubung dengan port 2 melainkan melalui tiga buah transistor PNP yang dikonfigurasi open colector. Transistor-transistor ini berfungsi sebagai pembalik polaritas karena anoda LED harus diberi tegangan positif untuk menyalakannya, sedangkan pin-pin AT89S51 adalah aktif low, artinya saat aktif akan terhubung ke ground. Jika basis transistor terhubung kan ke ground oleh mikrokontroler melalui R10K maka transisitor akan hubung singkat antara colector dan emitternya sehingga anoda LED terhubung ke VCC. Sedikit perbedaan dengan pembacaan tombol, pada penyalaan LED controller harus mengkondisikan kolom maupun baris bukan membacanya. Untuk menyalakan sebuah LED controller harus membuat anodanya berlogika 1 dan katodanya berlogika 0. Jika diinginkan L1 menyala maka controller harus P2.0 dan P2.4 berlogika 0 sehingga anoda L1 mendapat tegangan positif dari TR1 sedang katodanya terhubung ke ground melalui P2.4. Dalam hal ini tidak diperlukan resistor pembatas arus LED karena AT89S51 sudah mempunyai resistor internal sehingga dapat langsung menyalakan LED. Contoh lain jika diinginkan LIN2 menyala maka controller harus membuat P2.1 dan P2.7 berlogika 0 sehingga anoda LIN2 mendapat tegangan positif dari TR2 dan katoda LIN2 terhubung ke ground melalui P2.7. Karena hanya satu kolom dan satu baris saja yang boleh berlogika 0 pada waktu yang bersamaan maka penyalaan tiap-tiap LED harus bergantian. Hal ini direalisasikan melalui metode scanning sehingga setiap LED akan menyala dalam waktu yang tidak bersamaan. Namun karena proses scanning dilakukan dengan sangat cepat maka nyala LED tidak terlihat berkedip.
3.2.4. Indikator Lantai Indikator lantai terdiri dari empat buah seven segment yang masing-masing terpasang di tiap-tiap lantai. Rangkaian indikator ini dapat di lihat pada gambar berikut :
43 VCC
b c d e f g
16
7
P1.0
13
1
P1.1
12
2
P1.2
11 10
74247
a
6 3
9
4
15
5
14
8
Gambar 3.6. Indikator Lantai
Keempat seven segment disangga dengan sebuah IC TTL 74247 sebagai seven segment driver. Masukan IC ini berupa empat bit BCD yang mewakili angka 0 sampai dengan 9 yang dapat ditampilkan oleh seven segment. Karena yang diperlukan hanya angka 1 sampai dengan angka 4 maka controller hanya perlu mengeluarkan 3 bit biner / BCD saja. Korelasi masukan IC 74247 yang didapat dari P1.0 sampai dengan P1.3 dengan tampilan seven segment dapat dilihat pada tabel berikut :
Tabel 3.1. Tampilan Seven Segment
P1.2
P1.1
P1.0
TAMPILAN
0
0
1
1
0
1
0
2
0
1
1
3
1
0
0
4
Karena masukan yang digunakan hanya 3 bit yaitu A, B dan C maka pin D pada 74247 harus dihubungkan ke ground supaya berlogika 0. Jika tidak maka seven segmen akan menampilkan angka yang tidak benar. Keluaran IC 74247 merupakan open colector sehingga diperlukan resistor pembatas arus agar seven segment dan IC 74247 tidak rusak.
44 3.2.5. Encoder Encoder adalah suatu alat yang sudah sangat umum digunakan di lingkungan industri untuk mengukur kecepatan putaran mesin. Namun tak jarang alat ini digunakan untuk mengukur seberapa jauh gerakan mesin ke suatu arah tertentu. Umumnya encoder telah dikemas sedemikian rupa dengan bentuk dan ukuran yang sangat beragam. Pada dasarnya encoder adalah satu atau lebih sensor yang membaca putaran sebuah roda gigi dan memberikan keluaran berupa pulsa listrik. Jumlah pulsa pada tiap putaran roda gigi akan tergantung dari banyaknya gerigi pada roda gigi yang mempunyai satuan pulse per rotation (PPR). Pada perancangan ini digunakan sebuah encoder yang sangat sederhana yaitu dibentuk dari satu buah LED infra merah dan dua buah photo transistor yang dikemas pada satu kemasan terintegrasi (gambar 3.7). Sebuah roda gigi dari bahan plastik diselipkan di antara LED dan photo transistor. Saat roda gigi berputar, sinar infra merah yang dipancarkan oleh LED menjadi terputus-putus karena terhalang oleh gerigi dari roda gigi. Saat gerigi menutup LED maka sinar infra merah tidak sampai pada photo transistor sehingga photo transistor dalam keadaan cut off dan tegangan output sama dengan 0 volt. Saat sinar infra merah menembus celah roda gigi dan sampai pada photo
transistor maka photo transistor akan menghubung sehingga
tegangan output sama dengan VCC. Dengan demikian terbentuklah pulsa-pulsa listrik pada keluaran encoder, salah satu keluaran encoder dihubungkan dengan pin interupsi eksternal dari AT89S51 yaitu pin INT0 akan P3.2 hal ini dimaksudkan untuk menjamin bahwa tidak ada pulsa encoder yang terlewatkan atau tidak terbaca oleh controller. VCC P3.2
P3.0
Gambar 3.7. Encoder
45 Konstruksi roda gigi telah diatur sedemikian rupa sehingga kedua photo transistor tidak aktif secara bersamaan, melainkan berbeda sekitar 90 ° (gambar 3.8).
V P3.2
t V P3.0
t
Gambar 3.8. Pulsa Keluaran Encoder
Dengan pulsa keluaran yang demikian maka controller dapat membedakan arah putaran roda gigi apakah sedang berputar searah jarum jam atau sebaliknya. Hal ini akan sangat bermanfaat pada sistem yang mempunyai arah pergerakan bolak-balik karena controller tidak akan kehilangan informasi mengenai posisi benda yang diukur.
3.2.6. Motor Penggerak Miniatur elevator ini mempunyai dua buah motor penggerak yaitu satu buah motor utama yang menggerakkan elevator car naik turun dan satu lagi terpasang pada elevator car yaitu untuk menggerakkan pintu elevator membuka atau menutup. Motor yang digunakan adalah motor DC magnet permanen sehingga relatif lebih mudah dalam pengaturannya. Motor ini telah di lengkapi gear box untuk menurunkan kecepatan dan menaikkan torsi, sehingga cukup kuat untuk mengangkat elevator car dan berfungsi sebagai rem saat motor berhenti sehingga tidak diperlukan pengereman tambahan. Karena tidak menerapkan pengaturan kecepatan pada sistem ini maka pengendalian motor cukup dengan menggunakan relai-relai yang di konfigurasi sedemikian rupa sehingga motor dapat berputar bolak-balik (gambar 3.9) masingmasing motor dihubungkan dengan catu daya 12V DC melalui dua buah relai yang membentuk jembatan H (H-bridge). Setiap relai disangga dengan satu buah opto coupler sehingga tegangan balik yang ditimbulkan oleh coil relai tidak mengganggu kinerja controller. Pada kaki-kaki coil relai di pasang satu buah dioda dengan polaritas
46 reverse bias terhadap catu daya coil. Dioda ini berfungsi untuk melindungi opto coupler dari kerusakan akibat tegangan balik dari coil relai. Konfigurasi
H-bridge
menggunakan
dua
buah
relai
memungkinkan
pengendalian arah putaran motor dengan controller. Sebagai contoh apabila P3.7 ON dan P3.6 OFF maka motor utama akan mendapat tegangan maju dan arus akan mengalir dari kutub positif catu daya melalui kontak NC K2 ke kutub positif motor lalu keluar dari kutub negatif motor ke ground melalui kontak NO K1. maka motor utama akan berputar arah maju membuat elevator car naik. Jika P3.6 yang ON dan P3.7 OFF maka arus akan mengalir dari kutub positif catu daya melalui kontak NC K1 ke kutub negatif motor lalu keluar dari kutub positif motor ke ground melalui kontak NO K2. maka motor akan berputar arah balik dan membuat elevator car turun.
P3.4
P3.5
P3.6
P3.7
VCC
12V
NO
K4
NC
NO
C
K3
NC
C
NO
K2
NC
NO
C
K1
M
M
MOTOR PINTU
MOTOR UTAMA
NC
C
Gambar 3.9. Motor Penggerak
Namun jika tidak ada relai yang ON maka motor tidak akan berputar karena kedua kutub motor mendapat polaritas positif melalui kontak NC K1 dan K2, demikian juga jika kedua relai ON maka motor tetap tidak berputar karena kedua kutub motor mendapat polaritas negatif melalui kontak NO K1 dan K2. Hal yang
47 sama terjadi pada motor penggerak pintu, jika P3.5 ON dan P3.4 OFF maka motor berputar arah maju untuk membuka pintu dan jika P3.4 yang On dan P3.5 OFF maka motor akan berputar arah balik untuk menutup pintu. Jika tidak ada relai yang ON atau kedua relai ON maka motor tidak berputar.
3.2.7. Saklar Pembatas (Limit Switch) Empat buah limit switch seperti pada gambar 3.10 digunakan sebagai pembatas gerakan elevator car dan pintu elevator agar tidak melebihi batas. Saat elevator bergerak ke atas dan mencapai batas paling atas maka ia akan menyentuh LS1 yang akan menginformasikan kondisi ini pada controller sehingga controller segera memerintahkan motor utama untuk berhenti. Hal ini adalah pengaman saat terjadi kegagalan atau kerusakan pada encoder sehingga controller tidak dapat mengetahui bahwa pergerakan elevator car telah melampaui batas. Demikian juga saat elevator bergerak turun dan mencapai batas bawah, maka ia akan menyentuh LS2 yang segera memberitahu controller agar menghentikan motor utama. Selain itu LS2 berfungsi sebagai patokan saat inisialisasi sistem. Pada saat elevator baru di ON maka dimanapun posisi elevator car, ia akan segera bergerak turun sampai menyentuh LS2. Setelah itu pada encoder akan dinolkan sebagai pertanda bahwa elevator car pada posisi standby di lantai 1 (home position). Setelah home position di dapat barulah elevator beroperasi normal. Metode ini digunakan supaya sistem tidak perlu mengingat posisi elevator car saat aliran listrik dimatikan. Jika tidak demikian maka diperlukan batterai back up atau non valatile RAM untuk mengingat posisi terakhir dari elevator car.
Ls 3 P1.4 Ls 4 P1.5 Ls 1 P1.6 Ls 2 P1.7
Gambar 3.10. Limit Switch
LS3 digunakan untuk memberitahu controller bahwa pintu telah tertutup penuh sehingga controller akan segera memerintahkan motor penggerak pintu supaya
48 berhenti, sedang LS4 berfungsi untuk memberitahu controller saat pintu telah terbuka penuh agar menghentikan motor penggerak pintu. Pada kenyataannya beberapa limit switch telah di modifikasi menggunakan LED infra merah dan photo transistor. Hal ini bertujuan untuk memudahkan pemasangan dan penyetelan. Rangkaian modifikasi limit switch ini dapat dilihat pada gambar 3.11
VCC
OUT
Gambar 3.11. Modifikasi Limit Switch
Saat tidak tertutup sinar infra merah yang dipancarkan LED membuat photo transistor menghubung sehingga keluaran photo transistor berlogika 1. Saat tertutup maka sinar infra merah tidak mengenai photo transistor sehingga photo transistor cutoff dan keluaran photo transistor berlogika 0.
3.3.
Perangkat Lunak Perancangan perangkat lunak di tulis menggunakan bahasa assembler dengan
bantuan suatu software development yaitu read 51. Software ini memiliki fasilitas deklarasi standard MCS51 yaitu dengan menyertakan (include) file sfr51.inc sehingga semua alamat SFR dapat dialamati sesuai dengan nama alamat standard pada MCS51. Selain itu dapat pula dibuat file.inc lainnya sesuai kebutuhan programer, misalnya untuk mendeklarasikan alamat-alamat memory yang akan digunakan sehingga dapat di akses dengan metode simbolik. Pada perancangan ini penulis sengaja membuat deklarasi untuk semua alamat memory yang digunakan dengan nama simbolik yang disesuaikan dengan kondisi sistem yang di buat yaitu pada file elevator.inc. Untuk menyertakan file-file .inc pada program yang dibuat adalah dengan cara seperti berikut:
49 ; pada awal program sebelum vektor reset tambahkan: include <sfr51.inc> include <elevator.inc> ; barulah mulai vektor reset yaitu: org 0000h
3.3.1. Program Utama Secara garis besar urutan perintah pada miniatur elevator ini dapat dilihat pada flow chart gambar 3.12. Saat sistem di reset atau pertama kali mendapat catu daya pertama kali controller akan melakukan inisialisasi sistem. Langkah-langkah yang dilakukan saat inisialisasi sistem akan dibahas pada sub bab mendatang. Jika inisialisasi telah selesai, sistem-sistem akan berada pada posisi siap yaitu elevator car berada di lantai 1 dan pulsa encoder di reset. Kondisi seperti ini selanjutnya kita sebut dengan istilah car home. Segera setelah posisi home dicapai, sistem akan melihat apakah ada panggilan naik atau tidak. Panggilan naik di tandai dengan tekanan tombol pada lantai yang lebih tinggi dari lantai tempat elevator car berada. Jika ada satu atau lebih panggilan naik maka controller memberi instruksi elevator car naik. Selama elevator car sedang naik, controller akan terus-menerus menghitung pulsa encoder untuk mengetahui di mana posisi elevator car saat itu. Jika elevator car sampai pada lantai 2 maka ia segera melihat kondisi tomboltombol yang berhubungan pada lantai dua. Jika tombol PB IN2 aktif maka elevator car melaksanakan proses stop untuk menjemput atau menurunkan muatannya. (Proses elevator stop akan dibahas lebih detil pada sub bab yang lain). Selesai proses stop sistem kembali melihat apakah masih ada panggilan ke atas atau tidak. Jika ya maka elevator car naik dan jika tidak maka elevator car akan turun. Jika PB IN2 tidak aktif maka sistem akan melihat tombol yang lain yaitu PB 2U apakah aktif atau tidak. Jika aktif maka elevator akan melaksanakan proses stop seperti di atas, namun jika tidak aktif maka giliran PB 2D yang di lihat apakah aktif atau tidak karena PB 2D merupakan salah satu panggilan turun maka jika tombol ini aktif, elevator tidak langsung stop melainkan akan melihat terlebih dahulu apakah masih ada panggilan naik atau tidak.
50 Inisialisasi sistem
T Home ?
Y T
Panggilan naik ?
Y Naik
Lantai 2 ?
Y
PB IN2 = ON ?
Y
T
T
PB 2U = ON ?
Y
Proses Stop
Panggilan naik ?
Y
T PB 2D = ON ?
T
Y
Panggilan naik ?
T
Proses Stop
Y
T
Naik
Lantai 3 ?
T
Y
PB IN3 = ON ?
Y
T PB 3U = ON ?
Y
Proses Stop
Panggilan naik ?
T PB 3D = ON ?
T
Y Y
Panggilan naik ?
T
Proses Stop
Y Naik
T
Lantai 4 ?
Y Proses Stop
Keluaran 2
Keluaran 1
T
PROSES TURUN
Gambar 3.12. Proses Naik
51 Jika masih ada, maka elevator tidak melakukan proses stop, jika sudah tidak ada lagi barulah elevator melakukan proses stop. Seandainya tidak ada tombol yang aktif pada lantai 2 maka elevator car akan terus naik menuju lantai 3. Apa yang terjadi pada lantai 3 sama persis dengan apa yang dilakukan sistem pada lantai 2, hanya saja yang di lihat kondisinya adalah tombol-tombol yang berhubungan dengan lantai 3 yaitu berturut-turut dari PB IN3, PB 3U dan PB 3D. Jika di antara ketiganya tidak ada yang aktif maka elevator car akan melanjutkan perjalanan menuju lantai 4. Begitu sampai pada lantai 4 elevator langsung melakukan proses stop tanpa memperhatikan apapun terlebih dahulu. Ini dikarenakan lantai 4 adalah lantai terakhir atau lantai paling tinggi, jadi tidak mungkin ada panggilan naik lagi. Selesai melakukan proses stop elevator car langsung bergerak turun dan melakukan prosesproses yang diperuntukkan saat elevator turun. Proses-proses ini dapat dilihat pada flow chart gambar 3.13. Selama elevator car bergerak turun, sistem secara terus menerus menghitung pulsa encoder untuk mendapatkan informasi letak elevator car.
Dengan
membandingkan jumlah pulsa encoder dengan nilai yang telah ditetapkan untuk tiaptiap lantai maka controller dapat mengetahui bahwa elevator berada di lantai tertentu. Ketika elevator car turun sampai di lantai 3 yaitu PB IN3, PB 3D dan PB 3U. Jika PB IN3 aktif maka elevator segera melakukan proses stop. Setelah proses stop selesai, sistem kembali melihat apakah masih ada panggilan turun atau tidak. Jika masih ada maka elevator car langsung bergerak turun menuju lantai 2, jika tidak ada lagi panggilan turun maka sistem akan melihat lagi apakah ada panggilan naik atau tidak. Jika ada maka elevator car akan bergerak naik, namun jika tidak ada maka elevator car akan turun menuju lantai 1 untuk membuat posisi home. Apabila PB IN3 tidak aktif maka sistem akan menelusuri tombol berikutnya yaitu PB 3D. Jika tombol ini aktif maka sistem akan melakukan pekerjaan persis seperti saat PB IN3 aktif. Namun bila tombol PB 3D tidak aktif maka sistem melanjutkan penelusuran pada PB 3U. Tapi walaupun PB 3U aktif, sistem tidak langsung melakukan proses stop melainkan akan melihat terlebih dahulu apakah masih ada panggilan turun atau tidak. Jika masih ada maka tombol PB 3U tidak akan dihiraukan, elevator car akan terus turun menuju lantai 2. Jika sudah tidak ada lagi panggilan turun maka sistem akan melakukan proses stop lalu akan melihat kembali apakah ada panggilan naik atau tidak. Jika ada maka elevator car akan naik namun
52 jika tidak ada maka elevator car akan turun. Apabila tidak ada satupun dari ketiga tombol tersebut yang aktif maka elevator car akan terus turun menuju lantai 2.
Turun
Y Lantai 3 ?
PB IN3 = ON ?
Y
T
T
Y
PB 3D = ON ?
T Proses Stop
T
Panggilan Turun ?
Panggilan Naik ?
T
Y Y
PB 3U = ON ?
T
Panggilan Turun ?
T
Y
Proses Stop
Panggilan Naik ?
Y
T
Y Turun
Y Lantai 2 ?
T
PB IN2 = ON ?
Y
T PB 2D = ON ?
Y
Proses Stop
T PB 2U = ON ?
T
T
Panggilan Turun ?
Panggilan Turun ?
T
Y
T
Y Y
Panggilan Naik ?
Proses Stop
Panggilan Naik ?
Y
T
Y Turun
T
Home ?
Y Proses Stop
Keluaran 1
Keluaran 2
Gambar 3.13. Proses Turun
Ketika sampai pada lantai 2, sistem akan melakukan hal yang sama ketika sampai di lantai 3. Namun yang diperhatikan adalah tombol-tombol yang berada pada lantai 2 yaitu PB IN2, PB 2D dan PB 2U. Jika ketiga tombol tersebut tidak ada yang aktif maka elevator car akan terus turun menuju lantai satu. Sesampainya di lantai 1, sistem akan langsung melakukan proses stop dan elevator car kembali ke posisi home, lalu bersiap untuk melayani panggilan naik berikutnya. Proses ini akan terus berulang selama controller dalam mode run.
53 3.3.2. Inisialisasi Sistem Inisialisasi sistem adalah potongan program yang diletakkan pada vektor reset (alamat 0000h). Program inilah yang akan di eksekusi oleh controller pertama kali setelah sistem di reset atau baru dinyalakan. Eksekusi program inisialisasi hanya terjadi satu kali selama controller jalan. Setelah controller menjalankan program utama, program inisialisasi tidak akan pernah di eksekusi lagi selama sistem tidak di reset. Isi dari program inisialisasi adalah penetapan kondisi awal dari parameterparameter tertentu yang akan digunakan pada program utama dan sub-sub program lainnya. Parameter-parameter ini antara lain interrupt enable, nilai delay time, kondisi awal motor penggerak, kondisi awal indikator-indikator, nilai pembanding pulsa encoder untuk tiap-tiap lantai serta nilai awal pulsa encoder sendiri. Selain penetapan parameter-parameter di atas, pada program inisialisasi juga terdapat program untuk menentukan posisi awal elevator car. Pada saat controller sedang melakukan proses inisialisasi semua panggilan akan diabaikan dan controller tidak akan merespon kondisi apapun dari luar controller kecuali yang diperlukan untuk proses inisialisasi. Pertama kali yang dilakukan controller adalah membuka jalur interupsi utama sehingga memungkinkan dibukanya jalur-jalur interupsi tertentu. Berikutnya adalah memasukkan nilai yang akan digunakan oleh timer waktu tanda pembukaan pintu elevator. Menyusul kemudian controller memberikan logika 1 pada semua keluaran untuk motor penggerak. Hal ini untuk meyakinkan bahwa tidak ada motor yang berputar saat sistem direset. Jika semua motor penggerak di beri logika 1 agar tidak bekerja, namun semua status flag di reset (diberi logika 0) kecuali status car-stop, yang satu ini malah diberi logika 1 yang berarti elevator car berstatus stop. Setelah semua kondisi awal di penuhi maka sistem akan memeriksa keadaan elevator car yaitu kondisi pintu dan posisi elevator car berada. Jika pintu elevator dalam keadaan terbuka maka sistem akan segera menutupnya. Informasi ini di dapat dari dua buah limit switch yang terpasang pada dua tepi pintu elevator car.
54 Mulai
Set Parameter awal
T Pintu tertutup ?
Tutup pintu
Y Y
Pintu tertutup ?
T
T Home ?
Turun
Y Y
Home ?
T
Program Utama
Gambar 3.14. Proses Inisialisasi
Jika pintu sudah tertutup maka sistem kemudian melihat posisi elevator car apakah pada posisi home atau tidak. Posisi home di dapat dari sebuah limit seitch yang terdapat di bagian paling bawah pada lorong elevator. Jika limit switch ini tidak tersentuh berarti elevator car berada diatasnya (tidak pada posisi home), maka controller akan segera memberi perintah pada motor utama agar berputar menurunkan elevator car. Begitu limit switch tersentuh maka elevator car berhenti. Ini adalah posisi awal elevator car (home position) dimana nilai pulsa encoder adalah nol. Segera setelah posisi home tercapai, sistem akan menjalankan program utama dan elevator mulai beroperasi normal.
3.3.3. Proses Stop Proses stop adalah bagian progam untuk menghentikan elevator car saat tiba di suatu lantai yang dituju. Disini juga terdapat proses buka dan tutup pintu elevator baik secara otomatis maupun manual. Selengkapnya mengenai proses-proses ini dapat dilihat pada flow chart gambar 3.15.
55
Stop Elv Car
T
Elv Car stop ?
Y Buka pintu
T PB DR-C = ON ?
T
Pintu terbuka ?
Y
Y Y
Tutup pintu
PB DR-C = ON ?
T Y
PB DR-O = ON ?
Tunggu 5 detik
T T Pintu tertutup ?
Y Keluar
Gambar 3.15. Proses Stop
Begitu sampai pada lantai tujuan maka sistem segera menghentikan elevator car lalu membuka pintunya. Selama pintu elevator mulai terbuka sampai terbuka penuh dan mulai tertutup lagi, controller akan selalu melihat apakah tombol tutup pintu manual (PB DR-C) aktif atau tidak. Jika tombol ini aktif maka controller akan segera menutup kembali pintu elevator. Jika tidak maka proses membuka pintu dilanjutkan sampai pintu terbuka sepenuhnya. Informasi terbuka atau tertutup penuh pintu didapat dari dua buah limit switch yang terdapat pada kedua tepi pintu elevator. Setelah pintu terbuka sepenuhnya dan tidak ada permintaan tutup manual maka sistem akan menunggu sekitar 5 detik sebelum menutup pintu secara otomatis. Saat pintu mulai tertutup sampai tertutup penuh controller akan selalu melihat apakah ada permintaan buka manual dari PB DR-0 atau tidak. Jika tombol PB DR-0 aktif maka controller akan segera membuka pintu kembali. Namun jika sampai pintu
56 tertutup penuh tidak ada permintaan buka manual maka sistem akan meneruskan proses yaitu naik atau turun sesuai urutan pada program utama.
3.3.4. Encoder dan Indikator Lantai Pembacaan encoder dilakukan dengan proses interupsi yaitu melalui interupsi eksternal 0 (INT0)yang terdapat pada pin P3.2. Untuk mengaktifkan interupsi ini terlebih dahulu flag exo harus di set. Saat terjadi interupsi pada INT0 maka apapun yang sedang dikerjakan controller akan segera ditinggalkan untuk mengeksekusi program yang ada pada ISR interupsi eksternal 0.
INT1 =0?
P3.0 =0?
T
Counter = Counter - 1
Y Counter = Counter + 1
Counter =0?
Y
Display =1
T Counter = 58 ?
Y
Display =2
T Counter = 116 ?
Y
Display =3
T Counter = 174 ?
Y
Display =4
T Keluar
Gambar 3.16. Pembacaan Encoder
57
Seperti telah dijelaskan pada bagian terdahulu bahwa pulsa encoder yang dihasilkan dari kedua keluaran encoder berbeda fasa sekitar 90°. Hal ini dapat dimanfaatkan untuk mengetahui arah putaran roda gigi encoder yang mewakili arah gerakan elevator car naik atau turun. Jika arah elevator car naik maka setiap pulsa encoder akan menambah nilai counter penghitung pulsa. Namun jika arah elevator car turun maka nilai counter akan dikurangi satu pada setiap pulsa encoder. Untuk mengenali arah putaran encoder dari bentuk pulsa keluarannya adalah sebagai berikut: setiap terjadi interupsi yang diakibatkan oleh pulsa dari keluaran encoder pada P3.2 maka controller akan melihat kondisi keluaran encoder yang lain yaitu P3.0. Jika P3.0 bernilai 0 maka berarti elevator car sedang naik dan counter akan ditambah satu. Namun jka P3.0 bernilai 1 maka berarti elevator car sedang turun dan counter akan dikurangi satu. Nilai dari counter pulsa encoder selalu dibandingkan dengan nilai-nilai tertentu yang ditetapkan saat inisialisasi. Nilai-nilai ini mewakili nilai pulsa encoder pada tiap-tiap lantai elevator. Jika nilai counter sama dengan 0 berarti elevator car berada dilantai satu dan controller akan mengirimkan nilai 1 pada indikator lantai untuk ditampilkan. Jika nilai counter sama dengan 58 artinya elevator car tiba dilantai 2 maka controller mengirimkan nilai 2 pada indikator lantai. Demikian seterusnya, pada lantai 3 dan lantai 4 diwakili dengan nilai 174. nilai-nilai ini didapat dengan cara percobaan atau pengukuran dan akan tergantung dari tinggi lantai yang bersangkutan.
3.3.5. Pembacaan Tombol Karena pengawatan tombol-tombol dengan controller menggunakan metode matriks maka pembacaan kondisi tombol-tombol tersebut tidak dapat menggunakan metode langsung seperti jika satu tombol disambung pada satu input controller. Untuk itu kali ini digunakan metode penyisiran atau scanning (gambar 3.17)
58 Aktifkan Kolom 1
Baris 1 Aktif ?
Y Set Flag L1
T Baris 2 Aktif ?
Y Set Flag L2U
T Baris 3 Aktif ?
Y Set Flag L2D
T Baris 4 Aktif ?
Y Set Flag L3U
T Aktifkan Kolom 2
Baris 1 Aktif ?
Y Set Flag L3D
T Baris 2 Aktif ?
Y Set Flag L4
T Baris 3 Aktif ?
Y Set Flag LIN1
T Baris 4 Aktif ?
Y Set Flag LIN2
T Aktifkan Kolom 3
Baris 1 Aktif ?
Y Set Flag LIN3
T Baris 2 Aktif ?
Y Set Flag LIN4
T Baris 3 Aktif ?
Y Set Flag LDR-C
T Baris 4 Aktif ?
Y Set Flag LDR-O
T Keluar
Gambar 3.17. Pembacaan Tombol
59 Perlu diingat bahwa I/O pada AT89S51 adalah active low maka jika pada gambar 3.17 terdapat proses aktifkan kolom, itu artinya kolom yang bersangkutan diberi nilai 0 sedang kolom yang lain diberi nilai 1. Demikian juga saat pengecekan apakah suatu baris aktif atau tidak maka suatu baris dikatakan aktif jika baris tersebut bernilai 0. Untuk dapat lebih jelas ada baiknya dilihat kembali rangkaian pengawatan tombol-tombol pada gambar 3.4. Penyisiran dilakukan mulai dari kolom 1, berarti kolom ini harus diaktifkan. Setelah kolom 1 diaktifkan, maka dilakukan pemeriksaan pada tiap-tiap baris. Jika baris 1 aktif maka flag untuk lampu 1 di set. Jika tidak pemeriksaan dilanjutkan pada baris 2. Jika baris 2 aktif maka flag untuk lampu L2U di set, jika tidak pemeriksaan dilanjutkan pada baris 3. Jika baris 3 aktif, flag L2D diset jika tidak maka baris 4 mendapat giliran diperiksa. Jika baris 4 aktif, flag L3U diset, namun jika tidak maka controller akan melanjutkan penyisiran pada kolom 2 dan 3. Apa yang dilakukan pada kolom 2 dan kolom 3 sama persis seperti pada kolom 1 hanya saja flag yang diaktifkan adalah flag yang berhubungan dengan tombol yang ada pada kolom yang bersangkutan yang dapat dilihat pada gambar 3.4
3.3.6. Penyalaan Lampu Indikator Cara penyalaan lampu-lampu indikator merupakan kebalikan dari pembacaan tombol-tombol. Ini dikarenakan penyambungan lampu-lampu ini pada controller menggunakan metode matriks juga seperti halnya penyambungan tombol. Bedanya adalah untuk penyalaan lampu, controller mengatur nilai keluaran pada pin-pin tertentu, bukan membacanya. Pin-pin controller yang digunakan untuk menyalakan lampu-lampu ini adalah semua pin pada P2 kecuali P2.3. Dua belas buah lampu indikator yang digunakan dibagi menjadi 3 kolom dan 4 baris. Proses penyalaannya dapat dilihat pada flow chart gambar 3.18. Apabila ada salah satu lampu yang akan dinyalakan yang ditandai dengan flag yang berhubungan dengan lampu tersebut berlogika 1, maka controller akan membuat kolom dan baris yang terhubung dengan lampu itu berlogika 0. Suatu contoh bila flag L1 ON maka kolom 1 dan baris 1 diaktifkan atau diberi nilai 0. Contoh lain jika flag L4 ON maka kolom 2 dan baris 2 diaktifkan.
60
L1 = ON ?
Y
Aktifkan Kolom 1 dan Baris 1
Jeda waktu
Nonaktifkan Kolom 1 dan Baris 1
Y
Aktifkan Kolom 1 dan Baris 2
Jeda waktu
Nonaktifkan Kolom 1 dan Baris 2
Y
Aktifkan Kolom 1 dan Baris 3
Jeda waktu
Nonaktifkan Kolom 1 dan Baris 3
Y
Aktifkan Kolom 1 dan Baris 4
Jeda waktu
Nonaktifkan Kolom 1 dan Baris 4
Y
Aktifkan Kolom 2 dan Baris 1
Jeda waktu
Nonaktifkan Kolom 2 dan Baris 1
Y
Aktifkan Kolom 2 dan Baris 2
Jeda waktu
Nonaktifkan Kolom 2 dan Baris 2
Y
Aktifkan Kolom 2 dan Baris 3
Jeda waktu
Nonaktifkan Kolom 2 dan Baris 3
Y
Aktifkan Kolom 2 dan Baris 4
Jeda waktu
Nonaktifkan Kolom 2 dan Baris 4
Y
Aktifkan Kolom 3 dan Baris 1
Jeda waktu
Nonaktifkan Kolom 3 dan Baris 1
Y
Aktifkan Kolom 3 dan Baris 2
Jeda waktu
Nonaktifkan Kolom 3 dan Baris 2
Y
Aktifkan Kolom 3 dan Baris 3
Jeda waktu
Nonaktifkan Kolom 3 dan Baris 3
Y
Aktifkan Kolom 3 dan Baris 4
Jeda waktu
Nonaktifkan Kolom 3 dan Baris 4
T L2U = ON ?
T L2D = ON ?
T L3U = ON ?
T L3D = ON ?
T L4 = ON ?
T LIN1 = ON ?
T LIN2 = ON ?
T LIN3 = ON ?
T LIN4 = ON ?
T LDR-C = ON ?
T LDR-O = ON ?
T Keluar
Gambar 3.18. Penyalaan Lampu Indikator
61 Penyalaan satu buah lampu tidak bisa bersamaan dengan lampu yang lain, maka dari itu setiap lampu dinyalakan secara bergantian. Selesai menyalakan satu lampu maka lampu tersebut segera dimatikan kembali setelah menunggu beberapa saat barulah lampu yang lain mendapat giliran penyalaan. Namun hanya lampu yang flagnya ON saja yang akan dinyalakan, sedang yang flagnya OFF akan diabaikan. Bila proses bergantian seperti diatas dilakukan secara perlahan sudah barang tentu lampu-lampu ini akan terlihat berkedip, namun karena prosesnya sangat cepat maka kedipan lampu-lampu ini tidak terlihat.
BAB IV ANALISA HASIL PERANCANGAN
Pengujian pada miniatur elevator empat lantai ini dilakukan secara bertahap, mulai dari pengujian pada blok-blok yang dibuat sampai pada tahap pengujian keseluruhan sistem. Pengujian pada tiap-tiap blok dilakukan saat pembuatan perangkat keras pada blok tersebut selesai dikerjakan, sebagian perangkat keras diuji tanpa menggunakan perangkat lunak atau program, namun ada juga yang diuji dengan bantuan perangkat uji dan program uji. Pengujian pada keseluruhan sistem dilakukan setelah seluruh bagian sistem baik perangkat keras maupun perangkat lunak telah selesai dikerjakan. Pada saat pengujian baik masing-masing blok maupun secara keseluruhan tidak terlepas dari masalah-masalah yang timbul, namun hasil pengujian yang tercatat pada bagian ini adalah data hasil pengujian setelah perangkat yang diuji dapat bekerja sesuai dengan yang diharapkan.
4.1.
Pengendali Motor Bagian ini diuji kemampuannya untuk menjalankan dua buah motor yaitu
motor utama dan motor pintu agar dapat berputar dengan arah yang sesuai dengan nilai logika pada masukannya. Hasil pengujian dapat dilihat pada Tabel 4.1.
Tabel 4.1. Hasil Pengujian Pengendali Motor
P3.4
MASUKAN P3.5 P3.6
P3.7
ARAH PUTARAN MOTOR UTAMA MOTOR PINTU
0
0
0
0
Off
Off
0
0
0
1
CW ( Naik )
Off
0
0
1
0
CCW ( Turun )
Off
0
1
0
0
Off
CCW ( Buka )
1
0
0
0
Off
CW ( Tutup )
Keterangan : 1. CW = Clockwise (searah putaran jarum jam) 2. CCW = Counterclockwise (Berlawanan arah jarum jam)
62
63 Walaupun sempat mengalami berbagai kendala pada saat perancangan, namun setelah dilakukan beberapa perbaikan, pengendali motor yang dibuat akhirnya dapat menunjukkan kinerja yang sangat baik. Pemberian logika 1 pada P3.7 membuat motor utama berputar searah jarum jam. Putaran ini akan digunakan untuk menggerakkan elevator car arah naik. Nilai 1 pada P3.6 membuat motor utama berputar berlawanan dengan arah jarum jam. Putaran dengan arah berlawanan dengan arah jarum jam akan membuat elevator car turun. Ketika P3.7 dan P3.6 sama-sama diberi nilai 0 atau nilai1 maka motor tidak akan berputar. Untuk motor pintu diuji dengan memberi masukan pada P3.5 dan P3.4. Saat P3.5 bernilai 1, motor pintu berputar berlawanan dengan arah jarum jam. Putaran arah ini akan membuat pintu bergerak terbuka. Saat P3.4 bernilai 1, motor berputar searah putaran jarum jam. Putaran ini akan membuat pintu tertutup. Saat kedua masukan P3.5 dan P3.4 sama-sama diberi nilai 0 dan nilai 1, motor tidak berputar.
4.2.
Tombol Pengujian rangkaian tombol-tombol dilakukan untuk mengetahui apakah
matriks yang dibuat telah tersambung dengan benar.
Tabel 4.2. Hasil Pengujian Rangkaian Tombol
MASUKAN
TEKANAN TOMBOL PADA PB…
P0.0
P0.1
P0.2
1
1
0
0
V
1
0
0
1
0
0
1
0
0
0
1
0
0
1
0
0
1
0
0
1
0
0
0
1
0
0
1
0
0
1
0
0
1
2U
2D
3U
3D
4
IN1
IN2
IN3
IN4
KELUARAN
DR-C
DR-O
V V V V V V V V V V V
P0.4
P0.5
P0.6
P0.7
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
64 Hal ini dilakukan dengan menyuntikkan tegangan 5 volt pada satu kolom yang akan diuji, tombol-tombol yang berada pada kolom tersebut ditekan satu persatu dan tegangan pada baris yang terhubung pada tombol yang ditekan diukur. Saat tombol ditekan tegangan pada baris yang bersangkutan harus 5 volt, sedangkan saat tombol dilepas, tegangan baris itu harus 0 volt. Hasil pengujian rangkaian tombol-tombol dapat dilihat pada Tabel 4.2. Data yang ditunjukkan pada Tabel 4.2 memperlihatkan bahwa rangkaian tombol sudah bekerja dengan baik. Masing-masing tombol yang ditekan memberikan logika 1 pada baris yang terhubung padanya ketika kolom yang bersangkutan juga berlogika 1.
4.3.
Lampu Indikator Seperti halnya rangkaian tombol, rangkaian lampu-lampu indikator juga diuji
untuk meyakinkan bahwa matriks yang dibentuk telah tersambung dengan benar. Pegujian ini dilakukan dengan cara menghubungkan kolom dan baris yang terhubung dengan lampu yang akan diuji dengan ground atau 0 volt. Dengan demikian lampu yang bersangkutan akan menyala yang pada Tabel 4.3 diwakili dengan logika 1.
Tabel 4.3. Hasil Pengujian Lampu Indikator
MASUKAN
STATUS LAMPU ( L…)
P0.0
P0.1
P0.2
P0.4
P0.5
P0.6
P0.7
1
2U
2D
3U
3D
4
IN1
IN2
IN3
IN4
UP
DOWN
0
1
1
0
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
0
1
1
0
1
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
0
1
0
0
1
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
1
0
1
1
1
0
0
0
0
1
0
0
0
0
0
0
0
1
0
1
1
0
1
1
0
0
0
0
0
1
0
0
0
0
0
0
1
0
1
1
1
0
1
0
0
0
0
0
0
1
0
0
0
0
0
1
0
1
1
1
1
0
0
0
0
0
0
0
0
1
0
0
0
0
1
1
0
0
1
1
1
0
0
0
0
0
0
0
0
1
0
0
0
1
1
0
1
0
1
1
0
0
0
0
0
0
0
0
0
1
0
0
1
1
0
1
1
0
1
0
0
0
0
0
0
0
0
0
0
1
0
1
1
0
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
1
65 Tabel 4.3 menunjukkan bahwa rangkaian lampu indikator dapat bekerja sebagaimana mestinya. Semua lampu menyala saat baris dan kolom yang terhubung padanya diberi logika 0 atau terhubung ke ground.
4.4.
Encoder Karena keluaran encoder berupa pulsa-pulsa yang tidak dapat terukur dengan
mudah dengan multimeter maka untuk mengujinya diperlukan perangkat uji berupa rangkaian mikrokontroler yang tersambung dengan tiga digit seven segment seperti gambar 4.1.
TAMPILAN COUNTER ENCODER
AT89S51
Gambar 4.1 Blok Diagram Pengujian Encoder
Perangkat uji ini dikonfigurasi sebagai counter yang akan menghitung jumlah pulsa encoder saat elevator car dinaikkan atau diturunkan. Untuk itu mikrokontroler untuk alat uji ini harus diisi program penghitung pulsa dan penampil seven segment.
Tabel 4.4. Hasil Pengujian Encoder
ARAH
LANTAI 1
NAIK
TURUN
I
NILAI COUNTER II III IV
V
0
0
0
0
0
2
58
58
58
58
58
3
115
115
115
115
115
4
173
173
173
173
173
4
173
173
173
173
173
3
115
115
115
115
115
2
58
58
58
58
58
1
0
0
0
0
0
66 Tabel 4.4 menunjukkan hasil penghitungan pulsa encoder pada empat lantai elevator saat naik dan turun. Awal penghitungan ketika nilai counter sama dengan 0 adalah saat elevator car berada tepat pada lantai1. Untuk menguji sejauh mana kestabilan hitungan pulsa encoder ini maka pengujian dilakukan sebanyak lima kali. Dari hasil penghitungan pulsa yang terlihat pada Tabel 4.4 dapat dikatakan bahwa encoder ini bekerja cukup stabil walaupun dibentuk dengan sangat sederhana.
4.5.
Indikator Lantai Cara pengujian indikator lantai sangat sederhana yaitu dengan memberikan
masukan kode biner / BCD pada masukan rangkaian lalu tampilan pada seven segment diamati. Karena masukan yang digunakan hanyalah tiga bit saja maka pengujian dilakukan dengan masukan nilai 0 sampai dengan 7 dalam kode biner saperti terlihat pada Tabel 4.5.
Tabel 4.5. Hasil Pengujian Indikator Lantai
MASUKAN
TAMPILAN
P1.2
P1.1
P1.0
0
0
0
0
0
0
1
1
0
1
0
2
0
1
1
3
1
0
0
4
1
0
1
5
1
1
0
6
1
1
1
7
Tabel 4.5 memperlihatkan bahwa rangkaian indikator lantai ini dapat bekerja dengan baik. Seven segment dapat menampilkan angka yang sesuai dengan kode biner pada masukan.
67 4.6.
Pengujian Kinerja Sistem Setelah semua blok yang telah dibuat digabungkan menjadi satu kesatuan
sistem, maka dilakukan pengujian terhadap kinerjanya. Pengujian ini merupakan pengujian akhir yang melibatkan sistem secara keseluruhan.
4.6.1. Pengujian Kinerja Pintu
Tabel 4.6. Hasil Pengujian Kinerja Pintu
PB DR-0
PB DR-C
STATUS
0
1
tertutup penuh
REAKSI stop
0
1
sedang membuka
menutup menutup
0
1
tebuka penuh
1
0
terbuka penuh
stop
1
0
sedang menutup
terbuka
1
0
tertutup penuh
terbuka
Kinerja pintu diuji dengan mengoperasikannya secara manual melalui PB DR-0 untuk membuka dan PB DR-C untuk menutup. Tabel 4.6 memperlihatkan hasil pengujian dimana tiap-tiap tombol ditekan masing-masing pada tiga kondisi yaitu untuk PB DR-0 ditekan saat pintu sedang tertutup penuh, sedang proses menutup dan sedang terbuka penuh. Sedangkan untuk PB DR-C ditekan saat pintu sedang terbuka penuh, sedang proses membuka dan sedang tertutup penuh. Dari hasil pengujian dapat diketahui bahwa pintu sudah dapat dioperasikan secara manual.
4.6.2. Pengujian Proses Inisialisasi
Tabel 4.7. Hasil Pengujian Proses Inisialisasi
NO
KONDISI
REAKSI SISTEM
1
Pintu tertutup dan posisi elevatorcar Sistem stop tepat dilantai 1
2
Pintu terbuka tapi elevator car berada tepat dilantai 1
Pintu menutup sampai tertutup penuh lalu sistem siap
3
Pintu tertutup tapi elevator car berada diatas lantai1
elevator car turun sampai tepat dilantai1 lalu sistem siap
4
Pintu terbuka dan elevator car berada diatas lantai1
Pintu menutup sampai tertutup penuh lalu elevator car turun sampai tepat dilantai 1 dan sistem siap
68 Pengujian proses inisialisasi dilakukan dengan meletakkan elevator car pada sembarang posisi lantai dan posisi pintu dicoba dalam keadaan terbuka maupun tertutup, lalu sistem dinyalakan. Tabel 4.7 memperlihatkan hasil pengujian ini dan menunjukkan bahwa proses inisialisasi berjalan dengan baik.
4.6.3. Pengujian Proses Stop
Tabel 4.8. Hasil Pengujian Proses Stop
Arah
Proses Stop
Lantai
Elevator Car Stop Pintu Terbuka Waktu Tunda (detik) Pintu Tertutup
Naik
Turun
2
Ya
Ya
2.9
Ya
3
Ya
Ya
3.0
Ya
4
Ya
Ya
3.0
Ya
3
Ya
Ya
3.3
Ya
2
Ya
Ya
3.4
Ya
1
Ya
Ya
2.8
Ya
Proses stop tak lain adalah proses buka dan tutup pintu secara otomatis setiap elevator car berhenti pada suatu lantai yang diminta pengguna elevator. Tahapan dari proses ini adalah elevator car stop, pintu terbuka, tunggu beberapa saat dan pintu tertutup kembali. Hasil pengujian proses stop pada tiap-tiap lantai dicatat pada Tabel 4.8.
4.6.4. Pengujian Proses Naik Pengujian proses naik adalah untuk mengetahui apakah kinerja sistem saat naik sudah sesuai yang diharapkan atau belum. Hal ini dilakukan dengan mengaktifkan tombol-tombol pada lantai-lantai yang akan diuji saat elevator car bergerak naik, lalu reaksi sistem diamati. Hasil pengujian proses naik diperlihatkan pada Tabel 4.9. Selain itu diukur juga waktu yang ditempuh elevator car saat bergerak dari lantai satu ke lantai yang lain yang hasilnya diperlihatkan pada Tabel 4.10.
69 Tabel 4.9. Hasil Pengujian Proses Naik
LANTAI TOMBOL YANG AKTIF PANGGILAN NAIK
2
3
4
REAKSI SISTEM
PB IN2
X
Melakukan Proses Stop
PB 2D
Ada
Terus Naik
PB 2D
Tidak Ada
Melakukan Proses Stop
PB 2U
X
Melakukan Proses Stop
PB IN3
X
Melakukan Proses Stop
PB 3D
Ada
Terus Naik
PB 3D
Tidak Ada
Melakukan Proses Stop
PB 3U
X
Melakukan Proses Stop
PB IN4
Tidak Ada
Melakukan Proses Stop
PB 4
Tidak Ada
Melakukan Proses Stop
Tabel 4.10. Waktu Tempuh Elevator car Saat Naik
WAKTU TEMPUH
LANTAI I
II
III
IV
V
1 ke 2
10.8
11.1
11.0
11.0
10.7
2 ke 3
10.5
10.5
10.2
10.3
10.3
3 ke 4
10.2
10.2
10.3
10.1
10.4
Tabel 4.9 menunjukkan bahwa sistem dapat menjalankan proses naik dengan baik. Dalam hal ini, saat naik elevator hanya melayani panggilan naik dan permintaan stop dari panel internal saja. Panggilan turun hanya dilayani jika tidak ada lagi panggilan naik yang tersisa.
4.6.5. Pengujian Proses Turun Seperti halnya proses naik, proses turun juga diuji dengan mengaktifkan tombol-tombol pada lantai-lantai yang sedang diuji saat elevator car bergerak turun. Hasil pengujian proses turun ditunjukkan pada Tabel 4.11, sedangkan Tabel 4.12 adalah hasil pengujian waktu tempuh elevator car dari satu lantai ke lantai yang lain saat elevator turun.
70 Tabel 4.11. Hasil Pengujian Proses Turun
LANTAI TOMBOL YANG AKTIF PANGGILAN TURUN
3
2
1
REAKSI SISTEM
PB IN3
X
Melakukan Proses Stop
PB 3U
Ada
Terus Turun
PB 3U
Tidak Ada
Melakukan Proses Stop
PB 3D
X
Melakukan Proses Stop
PB IN2
X
Melakukan Proses Stop
PB 2U
Ada
Terus Turun
PB 2U
Tidak Ada
Melakukan Proses Stop
PB 2D
X
Melakukan Proses Stop
PB IN1
Tidak Ada
Melakukan Proses Stop
PB 1
Tidak Ada
Melakukan Proses Stop
Tabel 4.12. Waktu Tempuh Elevator car Saat Turun
WAKTU TEMPUH
LANTAI I
II
III
IV
V
4 ke 3
10.1
10.1
10.1
9.9
10.3
3 ke 2
10.2
9.9
9.8
9.8
10.1
2 ke 1
9.6
9.7
9.4
9.6
10.0
Hasil yang ditunjukkan pada Tabel 4.11 memperlihatkan bahwa sistem dapat menjalankan proses turun sesuai yang telah ditetapkan. Pada proses turun, elevator hanya melayani permintaan turun dan permintaan stop dari panel internal saja, sedangkan panggilan naik hanya dilayani jika tidak ada lagi panggilan turun.
BAB V KESIMPULAN DAN SARAN
5.1.
Kesimpulan Dari hasil pengujian-pengujian yang telah dilakukan maka dapat diambil
beberapa kesimpulan antara lain: 1. Blok-blok rangkaian yang dibuat dapat bekerja dengan baik sesuai yang diharapkan yaitu, arah putaran motor-motor penggerak telah sesuai dengan sinyal kendali dari mikrokontroler, nilai keluaran rangkaian matriks tombol telah sesuai dengan tombol yang ditekan, rangkaian matriks lampu indikator telah dapat menyala sesuai dengan sinyal keluaran dari mikrokontroler, jumlah pulsa encoder pada tiap-tiap lantai tidak mengalami perubahan dalam lima kali pengukuran serta indikator lantai dapat mengindikasikan angka yang sesuai dengan biner masukannya. 2. Setelah semua blok digabungkan menjadi satu kesatuan, sistem secara keseluruhan menunjukkan kinerja yang cukup baik. Pintu elevator dapat membuka dan menutup dengan benar, baik secara manual maupun secara otomatis, waktu tunda pembukaan pintu pada tiap-tiap lantai juga hampir sama yaitu sekitar 3 detik. Proses inisialisasi sistem berjalan dengan baik, demikian juga proses naik dan proses turun dapat berjalan sesuai permintaan di tiap-tiap lantai. Waktu tempuh elevator pada tiap-tiap lantai saat elevator naik sedikit lebih lama (rata-rata 0.6 detik) dibandingkan saat elevator turun, hal ini disebabkan karena tidak adanya regulasi kecepatan motor penggerak sehingga sangat dipengaruhi oleh faktor beban.
5.2.
Saran-saran Untuk pengembangan lebih lanjut dimasa mendatang penulis menyarankan
beberapa hal, antara lain: 1. Penambahan pengendali kecepatan motor penggerak agar gerakan elevator car lebih halus saat pertama jalan dan saat stop. 2. Penambahan sensor pada pintu supaya pintu tidak menabrak jika saat menutup ada yang melintasinya.
71
72 DAFTAR PUSTAKA
a. Tom
Harris,
How
Elevator
Work,
http://science.howstuffworks.com/
elevator.htm, February 16, 2008 b. Paulus Andi Nalwan, 2003, Panduan Praktis Teknik Antarmuka dan Pemrograman Mikrokontroler AT89C51, Jakarta, PT Elex Media Komputindo. c. Andi Pratomo, 2004, Belajar Cepat dan Mudah Mikrokontroler PIC16F84, Jakarta, PT Elex Media Komputindo. d. Lukman Rosyidi dan Elvanto Yanuar Ikhsan,. 2001, Mikrokontroler 8051 Level Basic, Modul Training Prasimax Mikron Technology Development Center. e. Lukman Rosyidi dan Elvanto Yanuar Ikhsan, 2002, Intermediate of Microcontroller
8051,
Modul
Training
Prasimax
Mikron
Technology
Development Center. f. Modul Pelatihan, 2007, Perawatan Pengendali Motor Listrik AC dan DC, P2MDepartemen Teknik Mesin Fakultas Teknik Universitas Indonesia.
73 Lampiran 1. Daftar Komponen
DAFTAR KOMPONEN:
IC1
: AT 89S51
IC2
: 74LS247
IC3 s/d IC6
: TLP521
TR1 s/d TR3
: FCS9012
TR4
: Dual Infra Red Transistor
R1 s/d R8
: 10 K Ohm
R9
: 220 Ohm
R10 S/D R16
: 330 Ohm
C1
: 10 uF/25V
C2 dan C3
: 33 pF
D1
: LED Infra Red
D2 s/d D5
: 1N4001
X1
: 11.0592 MHz
K1 s/d K4
: Relay SPDT 12VDC
LS1 s/d LS4
: Limit Switch SPST
PB1 s/d PBDR-O
: Micro Switch Push On
L1 s/d L_DOWN
: LED warna Kuning
Seven Segment
: PLTS-5101BS
Motor
: DC12V
74 Lampiran 2. Listing Program
File: MainProgram.asm #include <sfr51.inc> #include <elevator.inc>org 0000h sjmp Initial org 33h ljmp EncoderIncrease Initial:
Zero:
MainProg: M001:
M002: M003: M004:
setb ea mov DelayValue_1,#200 mov DelayValue_2,#50 setb DoorOpenCmd setb DoorCloseCmd setb CarUpCmd setb CarDownCmd clr car_st_up clr car_st_down setb car_st_stop clr CarUpRequest clr CarDownRequest clr LastUpCall clr LastDownCall clr CallerClr clr DoorClosing clr DoorClosed mov 20h,#0 mov 21h,#0 mov floor1,#0 mov floor2,#58 mov floor3,#115 mov floor4,#173 mov PulseCounter,#0 jnb sdoor_c,Zero acall door_close jb sdoor_c,$ setb DoorCloseCmd jnb CarLowLimit,MainProg acall car_down jb CarLowLimit,$ setb CarDownCmd sjmp Initial jnb int0,M001 setb ex0 acall PushButtonScan acall LedDisplay acall SvnSegDisplay acall MotorStop acall FloorLevel acall CloseDet acall UpCall acall DownCall acall DoorManOpr acall Direction jnb CarUpRequest,M002 acall car_up jb CarLowLimit,M003 mov PulseCounter,#0 jb CarHiLimit,M004 mov PulseCounter,#173 jnb CarDownRequest,DoorDelay acall car_down
75 DoorDelay:
jb sdoor_o,MainProg djnz DelayValue_1,MainProg djnz DelayValue_2,MainProg acall door_close sjmp MainProg
;=========================== ;deteksi saat pintu tertutup ;============================ CloseDet: jnb DoorClosing,EndCloseDet jb sdoor_c,EndCloseDet setb DoorClosed clr DoorClosing EndCloseDet:ret ;==================== ;posisi standby/home ;==================== CarHome: jnb car_st_down,H001 jb car_st_stop,CH01 acall car_stop CH01: jb sdoor_o,H010 clr car_st_down clr lin1 H001: jnb l1,H002 setb ldro clr l1 H002: jnb l2u,H003 setb CarUpRequest H003: jnb l2d,H004 setb CarUpRequest H004: jnb l3u,H005 setb CarUpRequest H005: jnb l3d,H006 setb CarUpRequest H006: jnb l4,H007 setb CarUpRequest H007: jnb lin2,H008 setb CarUpRequest H008: jnb lin3,H009 setb CarUpRequest H009: jnb lin4,H010 setb CarUpRequest H010: ret ;================================= ;rutin-rutin untuk motor penggerak ;================================= door_open: jnb sdoor_o,back setb DoorCloseCmd clr DoorOpenCmd clr ldro ret door_close: jnb sdoor_c,back mov DelayValue_1,#200 mov DelayValue_2,#50 setb DoorOpenCmd clr DoorCloseCmd setb DoorClosing clr ldrc ret car_up: jb sdoor_c,back setb car_st_up clr car_st_down clr car_st_home clr car_st_stop clr CarUpCmd
76
car_down:
car_stop:
back:
clr CarUpRequest clr DoorClosed ret jb sdoor_c,back setb car_st_down clr car_st_up clr car_st_home clr car_st_stop clr CarDownCmd clr CarDownRequest clr DoorClosed ret setb car_st_stop setb CarUpCmd setb CarDownCmd setb ldro
ret
;=========================== ;rutin deteksi posisi lantai ;=========================== FloorLevel: nop mov a,HighestCall cjne a,PulseCounter,FL001 setb LastUpCall sjmp FL002 FL001: clr LastUpCall FL002: mov a,LowestCall cjne a,PulseCounter,FL003 setb LastDownCall sjmp level1 FL003: clr LastDownCall level1: mov a,PulseCounter cjne a,floor1,level2 mov level,#1 setb car_st_home acall CarHome ret level2: mov a,PulseCounter cjne a,floor2,level3 mov level,#2 jnb lin2,L202 acall FloorStop jnb CallerClr,EndL2 clr lin2 clr l2u clr l2d clr CallerClr ret L202: jnb car_st_up,L204 jnb l2u,L203 acall FloorStop jnb CallerClr,EndL2 clr l2u clr CallerClr ret L203: jnb l2d,L204 jb car_st_stop,L203A jnb LastUpCall,L204 L203A: acall FloorStop jnb CallerClr,EndL2 clr l2d clr CallerClr ret L204: jnb car_st_down,level3 jnb l2d,L205 acall FloorStop
77 jnb CallerClr,EndL2 clr l2d clr CallerClr L205: jnb l2u,EndL2 jb car_st_stop,L205A jnb LastDownCall,EndL2 L205A: acall FloorStop jnb CallerClr,EndL2 clr l2u clr CallerClr EndL2: ret level3: mov a,PulseCounter cjne a,floor3,level4 mov level,#3 jnb lin3,L302 acall FloorStop jnb CallerClr,end_level clr lin3 clr l3u clr l3d clr CallerClr ret L302: jnb car_st_up,L304 jnb l3u,L303 acall FloorStop jnb CallerClr,end_level clr l3u clr CallerClr ret L303: jnb l3d,L304 jb car_st_stop,L303A jnb LastUpCall,L304 L303A: acall FloorStop jnb CallerClr,end_level clr l3d clr CallerClr ret L304: jnb car_st_down,level4 jnb l3d,L305 acall FloorStop jnb CallerClr,end_level clr l3d clr CallerClr ret L305: jnb l3u,end_level jb car_st_stop,L305A jnb LastDownCall,end_level L305A: acall FloorStop jnb CallerClr,end_level clr l3u clr CallerClr level4: mov a,PulseCounter cjne a,floor4,end_level mov level,#4 jnb lin4,L402 acall FloorStop jnb CallerClr,end_level clr lin4 clr l4 clr CallerClr ret L402: jnb l4,end_level acall FloorStop jnb CallerClr,end_level clr l4 clr CallerClr ret end_level: ret
78
FloorStop:
FS001:
FS002:
FS003:
FS004: FS005:
FS006:
EndFS:
jnb car_st_up,FS003 jb car_st_stop,FS001 acall car_stop jnb LastUpCall,FS002 jnb DoorClosed,EndFS setb CarDownRequest setb CallerClr clr LastUpCall ret jnb DoorClosed,EndFS setb CarUpRequest setb CallerClr ret jnb car_st_down,EndFS jb car_st_stop,FS004 acall car_stop jnb LastDownCall,FS006 jb LastUpCall,FS006 jnb DoorClosed,EndFS setb CarUpRequest setb CallerClr clr LastDownCall clr LastUpCall ret jnb DoorClosed,EndFS setb CarDownRequest setb CallerClr ret
;================================ ;Rutin Deteksi Panggilan Terakhir ;================================ UpCall: jb l4,call_4u jb lin4,call_4u jb l3d,call_3u jb l3u,call_3u jb lin3,call_3u jb l2d,call_2u jb l2u,call_2u jb lin2,call_2u mov HighestCall,floor1 ret call_4u: mov HighestCall,floor4 sjmp EndUpCall call_3u: mov HighestCall,floor3 sjmp EndUpCall call_2u: mov HighestCall,floor2 EndUpCall: ret DownCall:
jb l1,call_1d jb lin1,call_1d jb l2u,call_2d jb l2d,call_2d jb lin2,call_2d jb l3u,call_3d jb l3d,call_3d jb lin3,call_3d mov LowestCall,floor4 ret call_1d: mov LowestCall,floor1 sjmp EndDownCall call_2d: mov LowestCall,floor2 sjmp EndDownCall call_3d: mov LowestCall,floor3 EndDownCall:ret
79 ;=============================== ;rutin operasi manual pintu ;=============================== DoorManOpr: jnb car_st_stop,ManEnd jnb ldro,ManClose acall door_open ManClose: jnb ldrc,ManEnd acall door_close ManEnd: ret ;=============================== ;rutin untuk pushbutton scanning ;=============================== PushButtonScan: nop scan_1: clr pbcol1 setb pbcol2 setb pbcol3 setb pbcol4 satu: jb pbrow1,dua_u setb l1 dua_u: jb pbrow2,dua_d setb l2u dua_d: jb pbrow3,tiga_u setb l2d tiga_u: jb pbrow4,scan_2 setb l3u scan_2: setb pbcol1 clr pbcol2 setb pbcol3 setb pbcol4 tiga_d: jb pbrow1,empat setb l3d empat: jb pbrow2,in1 setb l4 in1: jb pbrow3,in2 setb lin1 in2: jb pbrow4,scan_3 setb lin2 scan_3: setb pbcol1 setb pbcol2 clr pbcol3 setb pbcol4 in3: jb pbrow1,in4 setb lin3 in4: jb pbrow2,drc setb lin4 drc: jb pbrow3,dro setb ldrc dro: jb pbrow4,end_pb setb ldro end_pb: ret ;======================== ;rutin untuk led scanning ;======================== LedDisplay: nop lsatu:
jnb l1,ldua_u clr lcol1 clr lrow1 acall delay2 acall end_led
ldua_u:
jnb l2u,ldua_d clr lcol1
80 clr lrow2 acall delay2 acall end_led ldua_d:
jnb l2d,ltiga_u clr lcol1 clr lrow3 acall delay2 acall end_led
ltiga_u: jnb l3u,ltiga_d clr lcol1 clr lrow4 acall delay2 acall end_led ltiga_d: jnb l3d,lempat clr lcol2 clr lrow1 acall delay2 acall end_led lempat:
lin_1:
jnb l4,lin_1 clr lcol2 clr lrow2 acall delay2 acall end_led jnb lin1,lin_2 clr lcol2 clr lrow3 acall delay2 acall end_led
lin_2: jnb lin2,lin_3 clr lcol2 clr lrow4 acall delay2 acall end_led lin_3: jnb lin3,lin_4 clr lcol3 clr lrow1 acall delay2 acall end_led lin_4: jnb lin4,ldr_c clr lcol3 clr lrow2 acall delay2 acall end_led ldr_c: jnb l_up,ldr_o clr lcol3 clr lrow3 acall delay2 acall end_led ldr_o: jnb l_down,end_led clr lcol3 clr lrow4 acall delay2 acall end_led end_led: mov p2,#11111111b ret
81 delay1: mov r6,#10 del1: djnz r6,del1 ret delay2: mov r7,#10 del2: djnz r7,del2 ret ;============= ;rutin display ;============= SvnSegDisplay: nop mov a,level orl a,#11111000b mov p1,a ret ;=============================== ;rutin motor stop (limit switch) ;=============================== MotorStop: nop door_c_stop: jb sdoor_c,door_o_stop setb DoorCloseCmd door_o_stop: jb sdoor_o,end_stop setb DoorOpenCmd end_stop: ret ;============================= ;rutin indikator penunjuk arah ;============================= Direction: jnb car_st_up,D001 clr l_down setb l_up D001: jnb car_st_down,D002 clr l_up setb l_down D002: jnb car_st_home,EndDirect clr l_up clr l_down EndDirect: ret ;============================= ;rutin untuk pembacaan encoder ;============================= EncoderIncrease: jb p3.0,EncoderDecrease inc PulseCounter clr ex0 reti EncoderDecrease: dec PulseCounter clr ex0 reti end
File: elevator.inc ;======================= ;leds memory declaration ;======================= l1 bit 0h l2u bit 1h l2d bit 2h l3u bit 3h l3d bit 4h l4 bit 5h lin1 bit 6h lin2 bit 7h
82 lin3 bit 8h lin4 bit 9h ldro bit ah ldrc bit bh l_up bit ch l_down bit dh ;============================ ;pushbuttons scan declaration ;============================ pbcol1 bit p0.0 pbcol2 bit p0.1 pbcol3 bit p0.2 pbcol4 bit p0.3 pbrow1 bit p0.4 pbrow2 bit p0.5 pbrow3 bit p0.6 pbrow4 bit p0.7 ;===================== ;leds scan declaration ;===================== lcol1 bit p2.0 lcol2 bit p2.1 lcol3 bit p2.2 lrow1 bit p2.4 lrow2 bit p2.5 lrow3 bit p2.6 lrow4 bit p2.7 ;======================= ;display bit declaration ;======================= dsp0 bit p1.0 dsp1 bit p1.1 dsp2 bit p1.2 ;====================== ;others declaration ;====================== PulseCounter equ 30h level equ 35h floor1 equ 3ah floor2 equ 3bh floor3 equ 3ch floor4 equ 3dh HighestCall equ 40h LowestCall equ 41h DelayValue_1 equ 42h DelayValue_2 equ 43h DoorCloseCmd bit p3.4 DoorOpenCmd bit p3.5 CarDownCmd bit p3.6 CarUpCmd bit p3.7 sdoor_o bit p1.4 sdoor_c bit p1.5 CarHiLimit bit p1.6 CarLowLimit bit p1.7 car_st_home bit 10h car_st_up bit 11h car_st_down bit 12h car_st_stop bit 13h CarUpRequest bit 14h CarDownRequest bit 15h LastUpCall bit 16h LastDownCall bit 17h CallerClr bit 18h DoorClosing bit 19h DoorClosed bit 1Ah