Perancangan Robot Penghindar Dinding Dengan Menggunakan Sensor Infra Merah Berbasis Mikrokontroler AT89S51

(1)

PERANCANGAN

ROBOT PENGHINDAR DINDING DENGAN

MENGGUNAKAN SENSOR INFRA MERAH

BERBASIS MIKROKONTROLER AT89S51

Oleh

KURNIADI

Nim. 025203033

Diajukan untuk memenuhi salah satu persyaratan untuk memperoleh Gelar Sarjana Sains Terapan

PROGRAM DIPLOMA IV

TEKNOLOGI INSTRUMENTASI PABRIK

FAKULTAS TEKNIK

UNIVERSITAS SUMATERA UTARA

MEDAN


(2)

PERANCANGAN

ROBOT PENGHINDAR DINDING DENGAN

MENGGUNAKAN SENSOR INFRA MERAH

BERBASIS MIKROKONTROLER AT89S51

Oleh K u r n i a d i Nim. 02 5203 033

Disetujui Oleh Pembimbing

Ir. M. Zulfin, MT Nip. 131 945 356

Diketahui Oleh

Ketua Program Diploma-IV Teknologi Instrumentasi Pabrik

Prof. Dr. Ir. Usman Baafai Nip. 130 365 322

PROGRAM DIPLOMA IV

TEKNOLOGI INSTRUMENTASI PABRIK

FAKULTAS TEKNIK

UNIVERSITAS SUMATERA UTARA

MEDAN


(3)

ABSTRAK

Robot merupakan hasil penggabungan antara perangkat keras dan perangkat lunak yang menyerupai bentuk benda tertentu dan dapat bergerak dengan sendirinya sesuai dengan program yang menggerakkannya.

Agar robot dapat bergerak sesuai dengan yang diinginkan, diperlukan perancangan khusus juga peralatan khusus yang mendukungnya, seperti peralatan mekanik dan elektrik.

Salah satu bentuk kombinasi antara peralatan mekanik dan elektrik juga perangkat lunak adalah mobil dengan sensor infra merah dan Mikrokontroller AT89S51. Dengan merancang program yang dimasukkan ke dalam Mikrokontroller AT89S51, maka robot dapat berjalan dan bergerak menghindar jika terdapat ada halangan yang berada di depan, kiri dan kanannya.

Dari perancangan yang dilakukan, maka dihasilkanlah sebuah robot yang dapat menghindar jika terdapat penghalang yang berada di depan, kiri maupun kanannya.


(4)

KATA PENGANTAR

Alhamdulillah, puji dan syukur penulis ucapkan kehadirat Allah SWT, karena berkat rahmat dan hidayah-Nya penulis dapat menyelesaikan Karya Akhir ini, yang merupakan salah satu persyaratan untuk menyelesaikan perkuliahan pada Program Diploma IV Teknologi Instrumentasi Industri Fakultas Teknik Universitas Sumatera Utara. Tak lupa pula selawat beriring salam penulis ucapkan kepada junjungan Nabi besar Muhammad SAW, yang telah membawa umatnya dari Zaman Jahilliyah menuju Zaman Islamiah yang penuh dengan ilmu pengetahuan seperti saat sekarang ini.

Karya akhir ini ditulis berdasarkan penelitian dan percobaan langsung terhadap rangkaian yang telah diteliti dan dipelajari dari buku dan internet. Pada Karya Akhir ini penulis membahas masalah proses pembuatan sebuah Robot yang dapat menghindari halangan yang ada di depan, kanan dan kirinya. Karya akhir ini penulis beri judul “Perancangan Robot Penghindar Dinding Dengan Menggunakan Sensor Infra Merah Berbasis Mikrokontroler AT89S51”.

Walaupun skripsi ini telah diselesaikan dengan sedemikian rupa namun penulis masih merasa ada kekurangan-kekurangan baik isi maupun teknik penulisan. Oleh sebab itu penulis mengharapkan kritik dan saran dari siapa saja yang sifatnya membangun.

Selama berlangsungnya penulisan Karya Akhir ini hingga menyelesaikannya, penulis banyak mendapat bantuan dan dukungan serta masukan dalam penulisan Karya Akhir. Pada kesempatan ini penulis


(5)

menyampaikan penghargaan yang setinggi-tingginya serta ucapan terima kasih yang sebesar-besarnya kepada :

1. Ayahanda penulis Syarifuddin.B dan Ibunda penulis Nursiah. Yang tercinta, serta saudara-saudara penulis Rachmad Agustian, Syafriansyah, M.Mirza, M.Rizky, Miftah Farid.

2. Bapak Prof. Dr. Ir. Usman Baafai selaku Ketua Program Diploma IV Teknologi Instrumentasi Industri Fakultas Teknik Universitas Sumatera Utara.

3. Bapak Drs. Hasdari Helmi, MT. selaku Sekretaris Program Diploma IV Teknologi Instrumentasi Industri.

4. Bapak Ir. M. Zulfin, MT. selaku Dosen Pembimbing Karya Akhir. 5. Seluruh staf pengajar serta pegawai administrasi.

6. Teman - teman angkatan 2002 khususnya Indra, Angga, Yuliandra, Lany, Mia, Safwan, Faisal, Dannie, Riza, Dava,Ayul dan lain-lain. 7. Teman – teman di Fisika Bang Aan, Zairul dan Brian.

Penulis menyadari bahwa Karya Akhir ini masih belum sempurna dan masih banyak kekurangan dan masih jauh dari kesempurnaan dikarenakan keterbatasan pengetahuan penulis. Oleh karena itu, penulis mengharapkan saran serta kritikan yang konstruktif dan edukatif guna penyempurnaan Karya Akhir ini. Semoga Karya Akhir ini bermanfaat bagi penulis khususnya dan para pembaca pada umumnya.

Medan, Januari 2008 Penulis

(KURNIADI) NIM : 02 5203 033


(6)

DAFTAR ISI

Lembar Pengesahan

Abstrak ... i

Kata Pengantar ... ii

Daftar Isi ... iv

Daftar Gambar... vii

Daftar Tabel ... viii

BAB I PENDAHULUAN 1.1. Latar Belakang Masalah...1

1.2. Tujuan Karya Akhir ...2

1.3. Rumusan Masalah ...2

1.4. Batasan Masalah ...2

1.5. Metode Penulisan ...3

1.6. Sistematika Penulisan ...3

BAB II LANDASAN TEORI 2.1. Teknologi Robotika...5

2.1.1. Disiplin Ilmu Pembentuk Robotika...5

2.1.2. Struktur Robot Otonom...6

2.2. Mikrokontroller AT89S51 ...7

2.2.1. Deskripsi Pin ...8


(7)

2.3. Infra Merah...14

2.3.1. Pemancar Infra Merah ( Transmitter ) ...15

2.3.2. Penerima Infra Merah ( Receiver )...15

2.4. Motor DC ...17

2.4.1. Cara Kerja Motor DC...18

2.5. Komponen Instrumentasi ...19

2.5.1. Kapasitor ...19

2.5.2. Resistor...20

2.5.3. Kristal...21

2.6. Bahasa Assembly ...21

2.6.1. Konstruksi Program Assembly ...21

2.6.2. Instruksi MCS-51 Yang Digunakan...22

BAB III PERANCANGAN ALAT 3.1. Diagram Blok ...24

3.2. Rangkaian Sistem Minimum Mikrokontroler AT89S51 ...27

3.3. Rangkaian Penguat Sensor Infra Merah...28

3.4. Rangkaian Jembatan H...31

3.5. Rangkaian Sensor Infra Merah...33

3.6. Desain Arena...34

BAB IV PEMBAHASAN RANGKAIAN DAN PROGRAM 4.1. Rangkaian Robot Penghindar dinding ...34


(8)

4.3. Pemrograman ...39

BAB V KESIMPULAN DAN SARAN

5.1. Kesimpulan ...40 5.2. Saran...40 Daftar Pustaka...41 Lampiran


(9)

Daftar Gambar

Gambar 2.1. Disiplin Pembentukan Ilmu Robotika ...6

Gambar 2.2. Tipikal Struktur Robot Otonom ...6

Gambar 2.3. Konvigurasi pin ATMEL AT89S51...8

Gambar 2.4. Detail Mekanik Motor DC ...18

Gambar 2.5. (a) ELCO, (b) Kapasitor dan (c) Kapasitor mylar...19

Gambar 2.6. (a) Resistor tetap dan (b) LDR ...20

Gambar 2.7. Osilator/ Kristal ...21

Gambar 2.8. Bentuk Program Sumber assembly ...22

Gambar 3.1. Blok Diagram Robot Penghindar Dinding ...24

Gambar 3.2. Penguat Non Inverter ...30

Gambar 3.3. Arena Robot Penghindar Dinding ...34

Gambar 4.1. Rangkaian Robot Penghindar Dinding Secara Keseluruhan...35


(10)

Daftar Tabel

Tabel 2.1. Fungsi-fungsi alternatif pada port 3 ...9 Tabel 2.2. Alamat Register Khusus...12


(11)

ABSTRAK

Robot merupakan hasil penggabungan antara perangkat keras dan perangkat lunak yang menyerupai bentuk benda tertentu dan dapat bergerak dengan sendirinya sesuai dengan program yang menggerakkannya.

Agar robot dapat bergerak sesuai dengan yang diinginkan, diperlukan perancangan khusus juga peralatan khusus yang mendukungnya, seperti peralatan mekanik dan elektrik.

Salah satu bentuk kombinasi antara peralatan mekanik dan elektrik juga perangkat lunak adalah mobil dengan sensor infra merah dan Mikrokontroller AT89S51. Dengan merancang program yang dimasukkan ke dalam Mikrokontroller AT89S51, maka robot dapat berjalan dan bergerak menghindar jika terdapat ada halangan yang berada di depan, kiri dan kanannya.

Dari perancangan yang dilakukan, maka dihasilkanlah sebuah robot yang dapat menghindar jika terdapat penghalang yang berada di depan, kiri maupun kanannya.


(12)

BAB I PENDAHULUAN

1.1.Latar Belakang Masalah

Manusia membutuhkan bantuan dari sesuatu yang dapat bekerja cepat, teliti dan tidak mengenal lelah, robot adalah jawaban dari keinginan tersebut. Robot diharapkan dapat bekerja pada lingkungan yang berbahaya bagi kesehatan atau daerah yang harus diamati dengan pengamatan lebih dari kemampuan Panca Indera manusia.

Robot yang dapat berpindah tempat tanpa campur tangan manusia disebut

juga Autonomous Mobile Robot (AMR) dan menjadi penelitian di berbagai

universitas dan lembaga penelitian di seluruh dunia. Aplikasi AMR antara lain sebagai penyapu ranjau, kurir dan penelitian objek mineral batuan Planet di luar angkasa.

Mikrokontroler adalah sistem komputer yang ringkas, dapat menggantikan fungsi komputer dalam pengendalian kerja dan disain yang jauh lebih ringkas daripada komputer. Dengan ukurannya yang kecil, mikrokontroler dapat

digunakan pada peralatan yang bersifat bergerak (mobile), seperti kendaraan dan

peralatan jinjing (portable), atau pada robot. Mikrokontroler digunakan sebagai

otak dari suatu embedded system, sebuah sistem komputer terpadu.

AT89S51 adalah chip mikrokontroler produksi Atmel Inc. merupakan keluarga dari MCS-51 rancangan Intel. AT89S51 mempunyai fitur dasar yang cukup lengkap untuk suatu pemrosesan input-output. Pada karya akhir ini dibangun sebuah AMR yang dapat bergerak menghindari dinding didalam suatu


(13)

ruangan dengan memanfaatkan infra merah sebagai pengirim sinar infra merah dan fotodioda sebagai penerima infra merah. Sinar infra merah akan dipantulkan ke dinding dan diterima oleh fotodioda, pada kondisi tertentu akan diberikan perintah tertentu agar robot dapat menghindari dinding.

1.2.Tujuan Karya Akhir

Adapun tujuan dalam penulisan Karya Akhir ini adalah:

Untuk merancang suatu alat yang dapat bergerak menghindari dinding secara otomatis dengan menggunakan sensor infra merah berbasis mikrokontroler AT89S51.

1.3.Rumusan Masalah

- Bagaimana cara kerja mikrokontroler yang berfungsi sebagai pusat

pengolahan data.

- Bagaimana cara membuat suatu perangkat yang dapat membuat suatu

robot yang menghindari dinding secara otomatis mulai dari perancangan rangkaian hingga alat selesai dibuat.

1.4.Batasan Masalah

Mengingat masalah yang akan diangkat sebagai Karya Akhir ini mempunyai ruang lingkup yang relatif luas, maka penulis membatasi masalah Karya Akhir ini hanya pada :

- Hanya memaparkan cara kerja mikrokontroler sebagai pusat pengolahan


(14)

- Hanya membahas prinsip kerja alat dan hubungan masing-masing alat.

- Hanya membahas proses pembuatan alat.

1.5.Metode Penulisan

Metode penulisan yang digunakan dalam penulisan Karya akhir ini antara lain adalah :

1. Dengan melakukan riset terlebih dahulu (trial and error) dan mencari

rangkaian yang setara di internet dan buku-buku yang mendukung.

2. Merancang alat mulai dari perancangan PCB dengan mengunakan

software Eagle 4.13, mentransfer gambar dengan menggunakan kertas transfer paper ke PCB polos, kemudian dilarutkan dan selanjutnya mengebor dan mensolder komponen ke PCB.

3. Mempelajari cara pemrograman dari buku-buku yang mendukung dan

percobaan pemrograman juga dengan trial and error.

1.6.Sistematika Penulisan

Untuk mempermudah pembahasan dalam penulisan Karya Akhir ini, maka penulis membuat suatu sistematika penulisan. Sistematika penulisan ini merupakan urutan bab demi bab termasuk isi dari sub-sub babnya. Adapun sistematika penulisan tersebut adalah sebagai berikut :

BAB I : PENDAHULUAN

Bab ini berisikan tentang latar belakang pemilihan judul, tujuan penulisan Karya Akhir dan sistematika penulisan.


(15)

BAB II : LANDASAN TEORI

Bab ini berisikan tentang teori-teori dasar serta pembahasan komponen-komponen yang digunakan dalam perancangan alat yang akan dibuat.

BAB III : PERANCANGAN ALAT

Bab ini berisikan bagaimana langkah-langkah perancangan alat, dimulai dari perancangan blok diagram rangkaian sampai dengan pembuatan alatnya.

BAB IV : PEMBAHASAN RANGKAIAN DAN PROGRAM

Bab ini berisikan pengujian alat yang telah dibuat serta pembahasan rangkaiannya dari segi prinsip kerja rangkaiannya dan pembahasan program yang telah dibuat dan dimasukkan ke dalam mikrokontroler.

BAB V : KESIMPULAN DAN SARAN

Bab ini berisikan tentang kesimpulan yang dapat diambil penulis dan saran untuk kesempurnaan penulisan karya akhir.


(16)

BAB II

LANDASAN TEORI

2.1. Teknologi Robotika

Perkembangan robot sangat berkaitan erat dengan adanya kebutuhan dalam dunia industri modern yang menuntut adanya suatu alat dengan kemampuan yang tinggi yang dapat membantu menyelesaikan pekerjaan manusia ataupun untuk menyelesaikan pekerjaan yang tidak mampu diselesaikan oleh manusia.

2.1.1 Disiplin Ilmu Pembentuk Robotika

Robot merupakan salah satu produk Mekatronika yang berkembang sangat pesat dewasa ini, dimana pada dasarnya merupakan gabungan dari beberapa teknologi, terutama :

 Teknologi Elektronika

 Teknologi Perangkat Lunak

 Teknologi Mekanik

Mengingat sebagian besar dari robot yang ada saat ini adalah robot yang

intelligent, maka dapat dikatakan bahwa robot merupakan salah satu produk dari teknologi otomasi seperti diperlihatkan oleh Gambar 2.1.


(17)

Elektronika

Software

Mekanika Teknologi Otomasi /

Robotika

Gambar 2.1 Disiplin ilmu pembentuk teknologi robotika

2.1.2 Struktur Robot Otonom

Dasar sistem mobile robot penghindar dinding mengacu pada dasar sistem

robot yang bergerak secara otonom. Secara umum, struktur robot yang bergerak otonom digambarkan dalam Gambar 2.2.

Komunikasi

Persepsi

Sensor

Basis Pengetahuan

Perencanaan dan Kendali

Aktuator / Penggerak Lingkungan

Gambar 2.2 Tipikal struktur robot otonom

Berdasarkan Gambar 2.2, struktur robot berupa loop tertutup yang terdiri

atas sensor, persepsi (perception), basis pengetahuan (knowledge base), kendali

(control), dan aktuator. Komunikasi berfungsi untuk berhubungan dengan robot lain atau untuk menerima tugas-tugas khusus dari pusat kendali.


(18)

Subsistem sensor menyediakan pengukuran kuantitatif terhadap kenyataan di dalam lingkungan. Pemilihan sensor sebaiknya disesuaikan dengan misi yang akan dijalankan. Selanjutnya subsistem persepsi melakukan proses ekstraksi informasi dari sensor dan interpretasi informasi. Hasil pemrosesan memberikan deskripsi tentang lingkungan secara terbatas sesuai dengan sensor yang dipakai. Keluarannya lalu diberikan ke subsistem basis pengetahuan untuk menentukan aksi yang akan dilakukan sesuai misinya. Oleh subsistem perencanaan dan kendali, perintah tersebut diproses lebih lanjut untuk mengendalikan subsistem aktuator.

2.2 Mikrokontroler AT89S51

AT89S51 adalah mikrokontroler keluaran Atmel dengan 4 Kbyte Flash

PEROM (Programmable and Erasable Read Only Memory). AT89S51

merupakan memori dengan teknologi nonvolatile memory, yaitu isi memori

tersebut dapat diisi ulang ataupun dihapus berkali-kali.

Memori ini biasa digunakan untuk menyimpan instruksi berstandar

MCS-51 sehingga memungkinkan mikrokontroler ini untuk bekerja dalam mode single

chip operation yang tidak memerlukan external memory untuk menyimpan source code tersebut.

2.2.1 Deskripsi Pin

AT89S51 mempunyai 40 kaki, 32 kaki diantaranya adalah kaki untuk keperluan port paralel. Satu port paralel terdiri dari 8 kaki, dengan demikian 32 kaki tersebut membentuk 4 buah port paralel, yang masing-masing dikenal


(19)

sebagai Port-0, Port-1, Port-2 dan Port-3. Nomor dari masing-masing kaki dari port paralel mulai dari 0 sampai 7. Jalur atau kaki pertama Port-0 disebut sebagai P0.0 dan jalur terakhir untuk port-0 adalah P0.7. Letak dari masing-masing port diperlihatkan pada Gambar 2.3

Gambar 2.3 Konfigurasi pin ATMEL AT89S51

Adapun nama dan fungsi dari kaki-kaki pin pada mikrokontroler AT89C51 adalah sebagai berikut:

1. VCC (pin 40) : Power supply

2. GND (pin 20) : Ground

3. Port 0 (pin 32 – 39)

Port 0 dapat berfungsi sebagai I/O biasa, low order multiplex address/data

ataupun menerima kode byte pada saat Flash Programming. Pada fungsi


(20)

Input atau dapat diubah sebagai input dengan memberikan logika 1 pada port

tersebut. 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. 4. Port 1 (pin 1 – 8)

Port 1 berfungsi sebagai I/O biasa atau menerima low order address bytes

pada saat Flash Programming. 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.

5. Port 2 (pin 21 – 28)

Port 2 berfungsi sebagai I/O biasa atau high order address, pada saat

mengakses memori secara 16 bit (Movx @Dptr). Pada saat mengakses

memori secara 8 bit, (Mov @Rn) port ini akan 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 outputsink keempat buah input TTL.

6. Port 3 (pin 10 – 17)

Sebagai I/O biasa port 3 mempunyai sifat yang sama dengan port 1 maupun port 2. Port 3 menyediakan beberapa fungsi khusus sebagaimana diperlihatkan pada tabel 2.1

Tabel 2.1 Fungsi-fungsi alternatif pada port 3

Kaki Port Fungsi Alternatif

P3.0 RXD (port input serial)


(21)

P3.2 INT0 (interupsi eksternal 0)

P3.3 INT1 (interupsi eksternal 1)

P3.4 T0 (input eksternal timer 0)

P3.5 T1 (input eksternal timer 1)

P3.6 WR (sinyal write pada data memori eksternal)

P3.7 RD (sinyal read pada data memori eksternal)

Fungsi-fungsi alternatif pada tabel diatas hanya dapat diaktifkan jika bit-bit pengancing (latch) port yang bersangkutan berisi ‘1’.

7. RST (pin 9)

Masukan reset kondisi 1 selama 2 siklus mesin selama osilator bekerja akan me-reset mikrokontroler yang bersangkutan ke alamat awal.

8. ALE/PROG (pin 30)

Pin ini dapat berfungsi sebagai Address Latch Enable (ALE) yang me-latch

low byte address pada saat mengakses memori eksternal. Sedangkan pada saat

Flash Programming (PROG) berfungsi sebagai pulse input. Pada operasi

normal ALE akan mengeluarkan sinyal clock sebesar 1/16 frekuensi oscillator

kecuali pada saat mengakses memori eksternal. Sinyal clock pada pin ini dapat

pula di-disable dengan men-set bit 0 dari special function register di alamat 8EH. ALE hanya akan aktif pada saat mengakses memori eksternal (MOVX & MOVC)

9. PSEN (pin 29)

Pin ini berfungsi pada saat mengeksekusi program yang terletak pada memori eksternal. PSEN akan aktif dua kali setiap cycle.


(22)

__

10. EA/VPP (pin 31)

__

Pada kondisi low, pin ini akan berfungsi sebagai External Acces Enable (EA),

yaitu mikrokontroler akan menjalankan program yang ada pada memori eksternal setelah sistem di-reset. Jika berkondisi high, pin ini akan berfungsi untuk menjalankan program yang ada di memori internal.

11. XTAL1 (pin 19) : input oscillator

12. XTAL2 (pin 18) : output oscillator

2.2.2 Struktur Memori

AT89S51 mempunyai struktur memori yang terdiri dari :

1. RAM Internal

RAM internal memiliki memori sebesar 128 byte yang biasanya digunakan untuk menyimpan variabel atau data yang bersifat sementara, dialamati

oleh RAM Address Register (Register Alamat RAM). RAM internal terdiri atas :

a. Register Banks

89S51 memiliki delapan buah register yang terdiri dari R0 sampai R7 yang

terletak pada alamat 00H hingga 07H pada setiap kali reset.

b. Bit Addressable RAM

RAM dengan alamat 20H hingga 2FH dapat diakses secara pengalamatan bit (bit addressable) sehingga hanya dengan sebuah instruksi saja setiap bit dalam area ini dapat di-set, clear, AND dan OR.


(23)

RAM keperluan umum dimulai dari alamat 30H hingga 7FH dan dapat diakses dengan pengalamatan langsung maupun tak langsung.

Pengalamatan langsung dilakukan ketika salah satu operand merupakan

bilangan yang dialamati. Sedangkan pengalamatan tak langsung pada lokasi dari RAM Internal ini adalah akses data dari memori ketika alamat memori tersebut tersimpan dalam suatu register R0 atau R1 yang dapat

digunakan sebagai pointer dari lokasi memori pada RAM Internal.

2. Special Function Register (Register Fungsi Khusus)

Memori yang berisi register-register yang memiliki fungsi khusus yang

tersediakan oleh mikrokontroler, seperti timer, serial dan lain-lain. AT89S51

memiliki 21 Special Function Register yang terletak pada alamat 80H hingga

FFH dengan rincian pada tabel 2.2. Salah satu contoh dari Special Function

Register adalah Accumulator, register ini terletak pada alamat E0H. Semua operasi aritmatika dan operasi logika dan proses pengambilan dan pengiriman data ke memori selalu menggunakan register ini.

Tabel 2.2 Alamat register fungsi khusus

Register Mnemonic Alamat

P0 Port 0 Latch 80H

SP Stack Pointer 81H

DPTR Data Pointer 82H-83H

DPL Data Pointer Low Byte 82H

DPH Data Pointer High Byte 83H

PCON Power Control 87H


(24)

TMOD Timer/Counter Mode Control 89H

TL0 Timer/Counter 0 Low Byte 8AH

TL1 Timer/Counter 1 Low Byte 8BH

TH0 Timer/Counter 0 High Byte 8CH

TH1 Timer/Counter 1 High Byte 8DH

P1 Port 1 Latch 90H

SCON Serial Port Control 98H

SBUF Serial Data Port 99H

P2 Port 2 Latch A0H

IE Interrupt Enable A8H

P3 Port 3 Latch B0H

IP Interrupt Priority Control B8H

PSW Program Status Word D0H

ACC Accumulator E0H

B Register B F0H

3. Flash PEROM

Memori yang digunakan untuk menyimpan instruksi-instruksi MCS-51

dialamati oleh Program Address Register (Register Alamat Program).

AT89S51 memiliki 4 Kb Flash PEROM yang menggunakan Atmel’s

High-Density Non Volatile Technology.

Program yang ada pada Flash PEROM akan dijalankan jika pada saat

__

sistem di-reset, pin EA/VP berlogika satu maka mikrokontroler aktif


(25)

__

EA/VPP berlogika nol, mikrokontroler aktif berdasarkan program yang ada pada memori eksternal.

2.3 Infra Merah

Cahaya infra merah merupakan cahaya yang tidak tampak. Jika dilihat dengan dengan spektroskop cahaya maka radiasi cahaya infra merah akan tampak pada spektrum elektromagnet dengan panjang gelombang di atas panjang gelombang cahaya merah. Dengan panjang gelombang ini maka cahaya infra merah ini akan tidak tampak oleh mata namun radiasi panas yang ditimbulkannya masih terasa/dideteksi.

Pada dasarnya komponen yang menghasilkan panas juga menghasilkan radiasi infra merah termasuk tubuh manusia maupun tubuh binatang. Cahaya infra merah, walaupun mempunyai panjang gelombang yang sangat panjang tetap tidak dapat menembus bahan-bahan yang tidak dapat melewatkan cahaya yang nampak sehingga cahaya infra merah tetap mempunyai karakteristik seperti halnya cahaya yang nampak oleh mata.

Pada pembuatan komponen yang dikhususkan untuk penerima infra merah

lubang untuk menerima cahaya (window) sudah dibuat khusus sehingga dapat

mengurangi interferensi dari cahaya non-infra merah. Oleh sebab itu sensor infra merah yang baik biasanya jendelanya (pelapis yang terbuat dari silikon) berwarna biru tua keungu-unguan. Sensor ini biasanya digunakan untuk aplikasi infra merah


(26)

2.3.1 Pemancar Infra Merah (Transmitter)

Infra merah dapat digunakan baik untuk memancarkan data maupun sinyal

suara. Keduanya membutuhkan sinyal carrier untuk membawa sinyal data

maupun sinyal suara tersebut hingga sampai pada receiver.

Untuk transmisi sinyal suara biasanya digunakan rangkaian voltage to

frequency converter yang berfungsi untuk mengubah tegangan sinyal suara menjadi frekuensi. Untuk transmisi data biasanya sinyal ditransmisikan dalam

bentuk pulsa-pulsa. Ketika sebuah tombol ditekan pada remote control, maka

transmiter infra merah akan mentransmitkan sebuah sinyal yang akan dideteksi sebagai urutan data biner.

2.3.2 Penerima Infra Merah (Receiver)

Komponen yang dapat menerima infra merah ini merupakan komponen

peka cahaya yang dapat berupa dioda (photodioda) atau transistor

(phototransistor). Komponen ini akan merubah energi cahaya, dalam hal ini energi cahaya infra merah sebanyak mungkin sehingga pulsa sinyal listrik yang dihasilkan kualitasnya cukup baik. Pada prakteknya sinyal infra merah yang diterima intensitasnya sangat kecil sehingga perlu dikuatkan.

Dalam penerimaan infra merah, sinyal ini merupakan sinyal infra merah yang termodulasi. Pemodulasian sinyal data dengan sinyal carrier dengan frekuensi tertentu akan dapat memperjauh transmisi data sinyal infra merah.

Sebuah receiver infra merah dilengkapi dengan lensa cembung yang

mempunyai sifat mengumpulkan cahaya. Lensa tersebut juga merupakan filter


(27)

merah saja. Walaupun demikian cahaya yang nampakpun masih bisa mengganggu

kerja dari receiver infra merah karena tidak semua cahaya nampak bisa difilter

dengan baik. Oleh karena itu harus difilter pada frekeunsi sinyal carrier yaitu

pada 30 KHz sampai 40 KHz. Selanjutnya baik photodioda maupun

phototransistor disebut sebagai photodetector.

Konfigurasi photodetector yang umum dipakai adalah mode bias terbalik,

dimana photodetector dibias dengan tegangan eksternal yang sesuai dengan

karakteristik photodetector yang digunakan.

Ketika photodetector ini mendapat cahaya, dalam hal ini cahaya infra

merah maka terdapat arus bocor yang relatif kecil. Besar-kecilnya arus bocor ini

tergantung dari intensitas cahaya infra merah yang mengenai photodetector

tersebut.

Sebuah photodioda, biasanya mempunyai karakteristik yang lebih baik

dari pada phototransistor dalam responnya terhadap cahaya infra merah. Biasanya

photodioda mempunyai respon 100 kali lebih cepat dari pada phototransistor.

Oleh sebab itulah para designer cenderung menggunakan photodioda daripada

menggunakan phototransistor. Tetapi sebuah phototransistor tetap mempunyai

keunggulan yaitu mempunyai kemampuan untuk menguatkan arus bocor menjadi

ratusan kali jika dibandingkan dengan photodioda.

Faktor yang berpengaruh pada kemampuan penerima infra merah adalah ‘active area’ dan ‘respond time’. Semakin besar area penerimaan suatu dioda infra merah maka semakin besar pula intensitas cahaya yang dikumpulkannya sehingga arus bocor yang diharapkan pada teknik bias terbalik semakin besar. Selain itu semakin besar area penerimaan maka sudut penerimaannya juga


(28)

semakin besar. Kelemahan area penerimaan yang semakin besar ini adalah noise

yang dihasilkan juga semakin besar pula. Begitu juga dengan respon terhadap frekuensi, semakin besar area penerimaannya maka respon frekuansinya turun dan sebaliknya jika area penerimaannya kecil maka respon terhadap sinyal frekuensi tinggi cukup baik.

Respond time dari suatu dioda infra merah (penerima) mempunyai waktu

respon yang biasanya dalam satuan nano detik. Respond time ini mendefinisikan

lama agar dioda penerima infra merah merespon cahaya infra merah yang datang pada area penerima. Sebuah dioda penerima infra merah yang baik paling tidak

mempunyai respond time sebesar 500 nano detik atau kurang. Jika respond time

terlalu besar maka dioda infra merah ini tidak dapat merespon sinyal cahaya yang

dimodulasi dengan sinyal carrier frekuensi tinggi dengan baik. Hal ini akan

mengakibatkan adanya data loss.

2.4 Motor DC

Motor adalah suatu mesin yang berfungsi mengubah tenaga listrik menjadi tenaga mekanik. Pada motor DC tenaga mekanik tersebut berupa putaran rotor secara kontinu. Pada dasarnya motor DC mempunyai dua bagian penting yaitu bagian stator dan bagian rotor. Lebih jelasnya bagian dari motor DC diperlihatkan pada gambar 2.4.

 Bagian stator

Stator ialah bagian yang tinggal tetap (tidak bergerak) yang terdiri dari rumah dengan kutub magnet yang dibuat dari pelat-pelat yang dipejalkan dengan gulungan penguat magnet berikut tutup rumah.


(29)

 Bagian rotor

Rotor ialah bagian yang bergerak yang terdiri dari silinder dibuat dari pelat-pelat yang dipejalkan yang diberi saluran sebagai tempat kumparan yang biasa disebut armatur. Pada armatur terpasang kolektor/komutator yang terdiri dari sigmen-sigmen yang berhubungan dengan gulungan armatur. Fungsi komutator adalah membalik arah aliran arus listrik yang melalui kumparan armaturnya. Pada saat kumparan armatur berpindah dari kutub utara ke kutub selatan (atau sebaliknya), untuk mendapatkan putaran motor sesuai dengan yang dikehendaki.

Gambar 2.4 Detail mekanik motor DC

2.4.1 Cara Kerja Motor DC

Prinsip kerja dari motor DC berdasarkan pada penghantar yang membawa arus kedalam kumparan sehingga kumparan akan menimbulkan medan magnet. Medan magnet ini dibuat sedemikian rupa sehingga keadaannya selalu tolak menolak antara medan magnet yang ditimbulkan stator dan medan magnet yang ditimbulkan rotor sehingga didapat gaya dorong diantara keduanya maka timbulah putaran.


(30)

Pada motor DC magnet permanen tegangan armaturnya dapat diatur dengan cara mengatur besar arus yang lewat pada armatur, karena besar arus sebanding dengan kecepatan motor. Sedangkan untuk mengubah arah putaran motor DC dengan cara membalikkan polaritas sumber tegangannya.

2.5. Komponen Instrumentasi

Komponen instrumentasi yang digunakan pada rangkaian ini diantaranya adalah kapasitor, resistor dan kristal.

2.5.1 Kapasitor

Kapasitor disebut juga Kondensator, yaitu komponen yang berfungsi untuk menyimpan muatan/tegangan listrik atau menahan arus searah. Kapasitor

ELCO (Electrolig capasitor) memiliki kekutuban atau polaritas yaitu tanda positif

dan tanda negatif. Jika dalam pemasangan kutub-kutub ELCO (Electrolig

capasitor) terbalik maka kapasitor akan rusak. Untuk satuan dari ELCO (Electrolig capasitor) adalah mikro Farat, kapasitor keramik adalah piko Farat dan kapasitor mylar adalah nano Farat. Simbol dan contoh dari kapasitor diperlihatkan oleh gambar 2.5.


(31)

20

2.5.2 Resistor

Secara umum berfungsi sebagai penghambat arus, satuannya adalah ohm. Untuk mengetahui nilai hambatan dari resistor dapat ditelusuri dengan memperhatikan cincin kode warna atau tulisan pada badan resistor seperti gambar 2.6 (a).

LDR (Light Dependent Resistor) merupakan salah satu jenis dari resistor

yang besar hambatannya bisa berubah oleh pengaruh cahaya. Simbol dan contoh dari LDR diperlihatkan oleh gambar 2.6 (b). LDR ini bisa digunakan sebagai sensor.

(a) (b)

a

Gambar 2.6 (a) Resistor tetap dan (b) LDR

2.5.3 Kristal

Kristal merupakan pembangkit clock internal yang menentukan rentetan

kondisi-kondisi (state) yang membentuk sebuah siklus mesin mikrokontroler.

Siklus mesin tersebut diberi nomor S1 hingga S6, masing-masing kondisi panjangnya 2 periode osilator, dengan demikian satu siklus mesin paling lama dikerjakan dalam 12 periode osilator atau 1µs. Satuan frekwensi kristal biasanya


(32)

dalam skala MHZ ( Mega Hezt ) dengan betuk dan simbol kristal diperlihatkan oleh gambar 2.11.

Gambar 2.7 Osilator/ Kristal

2.6. Bahasa Assembly

Assembler adalah program komputer yang men-transliterasi program dari

bahasa assembly ke bahasa mesin. Sedangkan bahasa assembly adalah ekivalensi

bahasa mesin dalam bentuk alfanumerik. Mnemonics alfanumerik digunakan

sebagai alat bantu bagi programer untuk memprogram mesin komputer daripada menggunakan serangkaian 0 dan 1 (bahasa mesin) yang panjang dan rumit.

2.6.1. Konstruksi Program Assembly

Program sumber assembly terdiri dari kumpulan baris-baris perintah dan

biasanya disimpan dengan extension .ASM dengan 1 baris untuk satu perintah, setiap baris perintah tersebut bisa terdiri atas beberapa bagian, yakni bagian label,

bagian mnemonic, bagian operand yang bisa lebih dari satu dan terakhir bagian

komentar seperti yang terlihat pada gambar 2.12. Program sumber (source code)

dibuat dengan program editor seperti Notepad atau Editor DOS, selanjutnya


(33)

assembler. Hasil kerja program assembler adalah “program objek” dan juga “assembly listing”. Ketentuan penulisan source code adalah sebagai berikut :

1. Masing-masing bagian dipisahkan dengan spasi atau TAB, khusus untuk

operand yang lebih dari satu masing-masing operand dipisahkan dengan koma.

2. Bagian-bagian tersebut tidak harus semuanya ada dalam sebuah baris, jika ada

satu bagian yang tidak ada maka spasi atau TAB sebagai pemisah bagian tetap harus ditulis.

3. Bagian label ditulis mulai huruf pertama dari baris, jika baris bersangkutan

tidak mengandung label maka label tersebut digantikan dengan spasi atau

TAB, yakni sebagai tanda pemisah antara bagian label dan bagian mnemonic.

IsiMemori: Movx @DPTR,A ;Isi Akumulator ke alamat yang ditunjuk oleh DPTR

Label Mnemoni c

Operand 1

Operand

2 Komentar

Gambar 2.8 Bentuk program sumber assembly

2.6.2. Instruksi MCS-51 Yang Digunakan

Beberapa instruksi yang digunakan dalam penyusunan program robot penghindar dinding adalah sebagai berikut :

1. BIT

Pengarah BIT digunakan untuk mendefinisikan suatu lambang yang menunjuk ke suatu lokasi bit pada memori yang dapat dialamati secara pengalamatan bit.


(34)

2. END

END biasanya diletakkan di akhir baris dari file program sumber assembler

sebagai tanda akhir pernyataan (statement) bagi program assembler dalam

melakukan proses assembly.

3. MOV

Instruksi ini melakukan pemindahan data dari variabel pada kode operasi kedua dan disimpan di variabel pada kode operasi pertama.

4. ACALL

Instruksi melakukan lompatan dengan area sebesar 2 Kbyte.

5. LJMP

Melompat dan menjalankan program yang berada di alamat yang ditentukan oleh variabel yang ditunjuk.

6. SJMP

Melakukan lompatan ke alamat yang ditentukan oleh variabel dengan

lompatan maksimum sebesar 128 byte.

7. CJNE

Instruksi ini melakukan perbandingan antara data tujuan dan data sumber serta melakukan lompatan ke alamat yang ditentukan jika hasil perbandingan tidak sama.

8. RET

Instruksi ini melakukan lompatan ke alamat yang disimpan dalam SP dan SP1. Instruksi ini biasa digunakan pada saat kembali dari subroutine yang dipanggil dengan instruksi ACALL atau LCALL.


(35)

BAB III

PERANCANGAN ALAT

3.1. Diagram Blok

Secara garis besar, diagram blok robot penghindar dinding berbasis mikrokontroler AT89S51 dapat ditunjukkan pada gambar 3.1. di bawah ini :

Gambar 3.1. Blok Diagram Robot Penghindar Dinding

Pada diagram blok di atas jelas terlihat keterhubungan masing-masing perangkat dari peralatan robot penghindar dinding. Dimulai dari LED Infra Merah sebagai sumber sinar infra merah yang dipancarkan ke dinding. Kemudian sinar infra merah dipantulkan oleh dinding, sehingga sinar infra merah dapat diterima oleh fotodioda. Keluaran dari fotodioda dihubungkan ke penguat operasional (Op Amp). Penguatan tegangan dari fotodioda diatur sedemikian rupa sehingga untuk satu sensor dapat mengetahui dua buah jarak. Pada kondisi tertentu motor akan diperintahkan oleh mikrokontroler untuk maju, belok kanan dan belok kiri.

Dari diagram blok diatas, jelas diterangkan tentang penjelasan keterhubungan masing-masing alat secara umum. Selain itu, pada Bab ini juga menjelaskan bagaimana merancang sebuah peralatan mulai dari merangkai


(36)

rangkaian pada Project Board hingga mengisi program ke mikrokontroler. Langkah-langkah yang dilakukan adalah sebagai berikut :

 Merangkai rangkaian setara (yang didapat dari buku atau internet) pada

Project Board (papan percobaan).

 Jika alat berhasil bekerja, membuat rangkaian skematik dan layout PCB

(Printed Project Board) dengan menggunakan software Eagle 4.16r yang telah di crack terlebih dahulu.

Layout PCB yang telah berhasil dibuat, di-print pada kertas transfer (transfer paper) dengan menggunakan printer laser.

 Sebelum layout PCB digosokkan dengan menggunakan strika pada kondisi

paling panas, PCB terlebih dahulu digosok dengan kertas pasir agar

permukaan PCB sedikit kasar sehingga proses pemindahan layout PCB

dan pensolderan timah ke PCB lebih mudah dikerjakan.

 PCB yang diatasnya telah terdapat layout rangkaian dilarutkan dengan

menggunakan larutan klorida. Proses penglarutan ini berguna untuk

menghilangkan tembaga yang tidak terkena layout rangkaian, sehingga

yang tertinggal hanyalah layout rangkaian.

Layout rangkaian yang tertinggal di PCB dibersihkan dengan menggunakan air. Tinta yang masih tertinggal pada PCB dapat dihilangkan dengan menggunakan cairan Terpentin.

 Setelah dibersihkan, PCB dapat dilubangi dengan menggunakan mata bor


(37)

 Pada kondisi ini PCB telah siap dipasangi dengan komponen. Tetapi sebelum PCB dipasangi komponen, PCB di cat dengan cat semprot agar PCB kelihatan lebih bagus penampilannya.

 Setelah selesai di cat, barulah PCB dirangkai bersama komponen

diatasnya. Setelah seluruh rangkaian selesai disolder, rangkaian disusun diatas acrylic agar kelihatan lebih rapi.

 Berikutnya adalah mengkoneksikan seluruh rangkaian dengan

menggunakan kabel (pada perancangan ini digunakan kabel pelangi) sesuai dengan urutan yang benar.

Finishing-nya adalah pemrograman. Pemrograman mikrokontroler AT89S51 menggunakan bahasa assembly.

 Setelah program selesai dibuat dengan menggunakan Software 8051

Editor, Assembler, Simulator (IDE), program dapat di-assemble yang

berfungsi agar program yang ditulis berubah menjadi bilangan heksadesimal.

 Pengiriman program ini kedalam mikrokontroler dapat menggunakan

Software Downloader (ISP – Flash Programmer 3.0a) dan hardware-nya

bernama ISP Programmer yang dihubungkan ke komputer melalui port

paralel.

 DB25 dari ISP Programmer dihubungkan ke port paralel yang ada di

komputer (biasanya lebih dikenal dengan port printer).

 Setelah terhubung, barulah program dapat di write (ditulis) ke dalam


(38)

 Apabila program dibuat dengan benar dan sesuai harapan, maka peralatan akan bekerja sesuai dengan yang diharapkan .

 Selesai.

3.2. Rangkaian Sistem Minimum Mikrokontroler AT89S51

Rangkaian skematik sistem minimum mikrokontroler AT89S51 dapat

dilihat pada Lampiran 1. Pin 18 dan 19 dihubungkan ke XTAL 11,0592 MHz dan dua buah kapasitor 30 pF. XTAL ini akan mempengaruhi kecepatan mikrokontroler AT89S51 dalam mengeksekusi setiap perintah dalam program. Pin 9 merupakan masukan reset (aktif tinggi). Pulsa transisi dari rendah ke tinggi

akan me-reset mikrokontroler ini. Pin 32 sampai 39 adalah Port 0 yang

merupakan saluran/bus I/O 8 bit open collector dapat juga digunakan sebagai

multipleks bus alamat rendah dan bus data selama adanya akses ke memori program eksternal.

Karena fungsi tersebut maka Port 0 dihubungkan dengan resistor array. Jika mikrokontroler tidak menggunakan memori eksternal, maka penggunaan resistor array tidak begitu penting. Selain digunakan untuk fungsi diatas resistor array digunakan sebagai pull up resistor.

Mikrokontroler AT89S51 membutuhkan logika high (1) selama 2 siklus

(cycle) pada kaki RST agar reset mikrokontroler dapat terjadi secara otomatis. Dengan menggunakan kristal 11,0592 MHz, dari rumus :

t = 12

1

x frekwensi ... (3.1.)

t =

12 1


(39)

Selama 2 siklus berarti 0,92 x 2 = 184 µs.

Waktu pengisian kapasitor elektrolis 10 uF 16v yang dihubungkan dengan resistor 8k2 Ohm. Diketahui, Tahanan = R = 8200 Ohm, muatan kapasitor = Q = 10 x 10-6 Farad.

Ts = 4RC

= 4 x 8200 x 10 x 10-6 = 0,328 detik

Jadi kapasitor 10 uF 16v sudah cukup untuk mereset otomatis

mikrokontroler. Untuk men-download file heksadesimal ke mikrokontroler, Mosi,

Miso, Sck, Reset, Vcc dan Gnd dari kaki mikrokontroler dihubungkan ke RJ45.

RJ45 sebagai konektor yang akan dihubungkan ke ISP Programmer. Dari ISP

Programmer inilah dihubungkan ke komputer melalui port paralel.

Kaki Mosi, Miso, Sck, Reset, Vcc dan Gnd pada mikrokontroler terletak pada kaki 6, 7, 8, 9, 40 dan 20. Apabila terjadi keterbalikan pemasangan jalur ke

ISP Programmer, maka pemograman mikrokontroler tidak dapat dilakukan karena mikrokontroler tidak akan bisa merespon.

3.3. Rangkaian Penguat Sensor Infra Merah

Rangkaian skematik Rangkaian Penguat Sensor Infra Merah dapat dilihat pada Lampiran 1.

Dari rangkaian skematik jelas terlihat bahwa dari kaki positif fotodioda dihubungkan secara langsung ke kaki 3 Op Amp 358 sebagai input yang tegangannya akan dikuatkan (dinaikkan). Tegangan yang lemah yang berasal dari fotodioda (karena fotodioda hanya sedikit menerima sinar infra merah) dikuatkan


(40)

oleh Op Amp sebanyak dua kali penguatan (agar jarak sensor dengan dinding bisa lebih jauh). Antara kaki 1 dan kaki 2 serta antara kaki 6 dengan kaki 7

dihubungkan dengan trimmer potensiometer 100kΩ yang berfungsi sebagai

perbandingan.

Ada dua aturan penting dalam melakukan analisa rangkaian op-amp berdasarkan karakteristik op-amp ideal. Aturan ini dalam beberapa literatur dinamakan golden rule, yaitu :

Aturan 1 : Perbedaan tegangan antara input v+ dan v- adalah nol (v+ - v- = 0 atau v+ = v- )

Aturan 2 : Arus pada input Op-amp adalah nol (i+ = i- = 0)

Inilah dua aturan penting op-amp ideal yang digunakan untuk menganalisa rangkaian op-amp.

Non Inverting Amplifier

Prinsip utama rangkaian penguat non-inverting adalah seperti yang

diperlihatkan pada gambar 3.2. berikut ini. Seperti namanya, penguat ini memiliki masukan yang dibuat melalui input non-inverting. Dengan demikian tegangan keluaran rangkaian ini akan satu fasa dengan tegangan inputnya. Untuk menganalisa rangkaian penguat op-amp non inverting, caranya sama seperti menganalisa rangkaian inverting.

Dengan menggunakan aturan 1 dan aturan 2, uraikan beberapa fakta yang ada, antara lain :

vin = v+


(41)

Gambar 3.2. Penguat Non Inverting

Dari sini ketahui tegangan jepit pada R2 adalah vout – v- = vout – vin, atau iout = (vout-vin)/R2. Lalu tegangan jepit pada R1 adalah v- = vin, yang berarti arus iR1 = vin/R1.

Hukum kirchkof pada titik input inverting merupakan fakta yang mengatakan bahwa :

iout + i(-) = iR1

Aturan 2 mengatakan bahwa i(-) = 0 dan jika disubsitusi ke rumus yang sebelumnya, maka diperoleh:

iout = iR1 dan Jika ditulis dengan tegangan jepit masing-masing maka diperoleh (vout – vin)/R2 = vin/R1 yang kemudian dapat disederhanakan menjadi :

vout = vin (1 + R2/R1)

Jika penguatan G adalah perbandingan tegangan keluaran terhadap tegangan masukan, maka didapat penguatan op-amp non-inverting :

... (3.2.) Pada rangkaian ini digunakan R1 sebesar 10k dan R2 antara 0 – 100k Ohm. Jadi didapat G = 1 + (100k/10k) = 11 kali penguatan. Jika tegangan input yang menjadi masukan Op Amp 0,01 volt (setelah diukur dengan menggunakan


(42)

multimeter digital dengan jarak sensor dan dinding sekitar 8 cm), maka setelah dikuatkan akan menjadi 0,01 x 11 = 0,11 volt. 0,11 volt merupakan output pada penguatan pertama (yakni tegangan pada kaki 1). 0,11 volt dijadikan input untuk penguatan yang kedua (karena 0,11 volt belum bisa mengaktifkan transistor NPN C945). Setelah dikuatkan pada penguatan yang kedua, maka tegangan output pada penguatan kedua menjadi 0,11 x 11 = 1,21 volt. Tegangan 1,21 volt sudah dapat mengaktifkan transistor NPN C945 (tegangan kerja transistor 0,7 Volt).

3.4. Rangkaian Jembatan H

Rangkaian skematik Rangkaian Jembatan H dapat dilihat pada Lampiran 1. Untuk menghindari dinding, maka robot harus dapat mengendalikan perputaran rodanya. Robot menggunakan 2 buah motor DC 5 volt untuk menggerakkan rodanya, dimana 1 motor untuk menggerakkan roda sebelah kanan dan 1 motor lagi untuk menggerakkan roda sebelah kiri. Untuk mengendalikan ke-2 motor ini digunakan rangkaian jembatan H.

Pada rangkaian di atas, jika P2.0 diset high yang berarti P2.0 mendapat tegangan 5 volt, maka kedua transistor tipe NPN C945 yang disebelah kiri akan aktif. Hal ini akan membuat kolektor dari kedua transistor C945 itu akan mendapat tegangan 0 volt dari ground. Kolektor dari transistor C945 yang berada di sebelah kiri atas diumpankan ke basis dari transistor tipe PNP BD 434 sehingga basis dari transistor BD 434 mendapatkan tegangan 0 volt yang menyebabkan transistor ini aktif (transistor tipe PNP akan aktif jika tegangan pada basis lebih kecil dari 4,3 volt). Aktifnya transistor PNP BD 434 ini akan mengakibatkan


(43)

kolektornya terhubung ke emitor sehingga kolektor mendapatkan tegangan 5 volt dari Vcc.

Sedangkan kolektor dari transistor C945 yang berada di sebelah kiri bawah diumpankan ke basis dari transistor tipe NPN BD 433 sehingga basis dari transistor BD 433 mendapatkan tegangan 0 volt yang menyebabkan transistor ini tidak aktif (transistor tipe NPN akan aktif jika tegangan pada basis lebih besar dari 0,7 volt). Karena transistor BD 433 ini tidak aktif, maka kolektornya tidak terhubung ke emitor, sehingga kolektor tidak mendapatkan tegangan 0 volt dari ground.

Karena kolektor BD 433 dihubungkan dengan kolektor BD 434 yang mendapatkan tegangan 5 volt dari Vcc, maka kolektor dari BD 433 juga mendapatkan tegangan yang sama. Hal ini menyebabkan kaki motor sebelah kiri mendapatkan tegangan 5 volt (polaritas positif).

Agar motor dapat berputar ke satu arah maka kaki sebelah kanan motor harus mendapatkan tegangan 0 volt (polaritas negatif). Hal ini diperoleh dengan memberikan logika low (0) pada P2.1 mikrokontroler AT89S51.

Pada rangkaian di atas, jika P2.1 diset low yang berarti P2.1 mendapat tegangan 0 volt, maka kedua transistor tipe NPN C945 yang disebelah kanan tidak akan aktif. Hal ini akan membuat kolektor dari kedua transistor C945 itu akan mendapat tegangan 5 volt dari Vcc. Kolektor dari transistor C945 yang berada di sebelah kanan atas diumpankan ke basis dari transistor tipe PNP BD 434 sehingga basis dari transistor BD 434 mendapatkan tegangan 5 volt yang menyebabkan transistor ini tidak aktif. Karena transistor PNP BD 434 tidak aktif maka kolektornya tidak terhubung ke emitor sehingga kolektor tidak mendapatkan


(44)

tegangan 5 volt dari Vcc, tetapi mendapatkan tegangan yang berasal dari transistor BD 433 yang berada di bawahnya.

Sedangkan kolektor dari transistor C945 yang berada di sebelah kiri bawah diumpankan ke basis dari transistor tipe NPN BD 433 sehingga basis dari transistor BD 433 mendapatkan tegangan 5 volt yang menyebabkan transistor ini menjadi aktif. Karena transistor BD 433 ini menjadi aktif, menyebabkan kolektornya terhubung ke emitor, sehingga kolektor mendapatkan tegangan 0 volt dari ground.

Karena kolektor BD 433 yang mendapatkan teganagan 0 volt dari ground dihubungkan dengan kolektor BD 434, maka kolektor dari BD 434 juga mendapatkan tegangan yang sama. Hal ini menyebabkan kaki motor sebelah kanan mendapatkan tegangan 0 volt (polaritas negatif). Hal ini akan menyebabkan motor akan berputar ke satu arah tertentu. Sedangkan untuk memutar motor kearah sebaliknya, maka logika yang diberikan ke P2.0 adalah low (0) dan logika yang diberikan ke P2.1 adalah high (1).

3.5. Rangkaian Sensor Infra Merah

Rangkaian skematik Sensor Infra Merah dapat dilihat pada Lampiran 1. Pada rangkaian Sensor Infra Merah ini menggunakan dua buah Photodioda yang fungsinya adalah untuk mengenali dua buah jarak yaitu jarak jauh dan jarak dekat. Pada gambar jelas terlihat sebelum tegangan 5 volt dihubungkan ke infra merah dihubungkan terlebih dahulu ke tahanan. Tahanan yang digunakan adalah 100 Ohm. Sehingga arus yang mengalir melewati infra merah sekitar 50 mA, semakin


(45)

besar arus yang melewati infra merah maka semakin besar pula pancaran sinar infra merahnya. Kaki fotodioda yang negatif dihubungkan langsung ke Vcc.

3.6. Desain Arena

Gambar Arena Robot Penghindar Dinding dapat dilihat pada Gambar 3.3.

Gambar 3.3. Arena Robot Penghidar Dinding

Arena robot penghindar dinding yang dirancang hanyalah berbentuk segi empat sama sisi dengan panjang sisi-sisinya 120 cm pada bagian luar dan pada bagian dalam panjang sisi-sisinya 46 cm.


(46)

BAB IV

PEMBAHASAN RANGKAIAN DAN PROGRAM

4.1. Rangkaian Robot Penghindar Dinding

Rangkaian Robot Penghindar Dinding secara keseluruhan dapat dilihat pada Gambar 4.1.


(47)

Pada Gambar tersebut jelas terlihat keterhubungan seluruh rangkaian Robot Penghindar Dinding. Prinsip kerja robot ini dari awal hingga akhir dapat dijelaskan sebagai berikut :

1. LED Infra Merah memancarkan sinar infra merah kearah depan, samping

kanan dan samping kiri robot. Fotodioda menunggu sinar infra merah yang dipancarkan oleh LED infra merah. Ketika infra merah dipantulkan oleh dinding yang berwarna putih dan diterima oleh fotodioda serta dikuatkan oleh Op Amp sehingga setelah dikuatkan sedemikian rupa, keluaran Op Amp dapat mengaktifkan transistor NPN C945. Dari kaki kolektor C945 dihubungkan ke mikrokontroler sebagai input. Input dari rangkaian penguat sensor infra merah ini merupakan aktif low.

2. Jadi ketika fotodioda menerima sinar infra merah, keadaan yang diterima

oleh mikrokontroler berkondisi low (0). Sensor infra merah yang digunakan ada 8 buah. Jika dimisalkan suatu kondisi bernilai 01000001 atau 41 heksadesimal, maka robot akan diperintahkan untuk maju (data tabel kebenaran terhadap posisi sensor dapat dilhat pada lampiran 2).

3. Pada kondisi yang lain, robot dapat diperintahkan untuk belok kekanan

atau kekiri sebanyak 25 derajat dan 90 derajat. Banyaknya belokan dapat diatur dengan menggunakan program.


(48)

4.2. Diagram Alir (Flowchart)

Cara kerja Robot Penghindar Dinding yang dirancang dijelaskan dalam


(49)

(50)

4.3. Pemrograman

Agar Robot Penghindar Dinding yang dirancang dapat bekerja sesuai dengan yang diharapkan, maka ke dalam mikrokontroler AT89S51 diisikan

program sesuai dengan diagram alir (flowchart) yang dirancang (listing program


(51)

BAB V

KESIMPULAN DAN SARAN

5.1. Kesimpulan

1. Perpaduan infra merah dan fotodioda dapat dijadikan sebagai sensor

dinding agar robot tidak menabrak dinding.

2. Sensor infra merah jika telah dikuatkan dengan menggunakan

Operasional Amplifier (Op Amp) dapat mengetahui dinding hingga jarak 1 meter.

3. Fotodioda yang digunakan pada sensor infra merah sangat peka

terhadap infra merah yang dipancarkan oleh matahari, sehingga sensor ini tidak baik digunakan pada ruangan terbuka (ruangan yang langsung terkena sinar matahari).

5.2. Saran

1. Agar infra merah tidak mengganggu sistem robot penghindar dinding,

sebaiknya digunakan ultra sonic sebagai sensor dinding. Pada perancangan ini tidak digunakan sensor ultra sonic dikarenakan harganya yang mahal (sekitar @ Rp. 300.000,-) dan tidak dijual di Medan.


(52)

41

Daftar Pustaka

[1] Agfianto, Belajar Mikrokontroler AT89C51/52/55 Teori dan Aplikasi, Edisi

Kedua, Penerbit: Gava Media, Yogyakarta, 2004.

[2] Albert Paul Malvino, Ph.D, Prinsip-Prinsip Elektronika I, Edisi Ketiga, Jilid

1, Penerbit : Penerbit Erlangga, Jakarta, 1985.

[3] Barry G. Woollard, Elektronika Praktis, Penerbit: Pradnya Paramita, Jakarta

2000.

[4] Sulhan Setiawan, ST, Mudah dan Menyenangkan Belajar Mikrokontroler,

Penerbit : Penerbit Andi, Yogyakarta, 2004.

[5] Lingga Wardhana, ST, Belajar Sendiri Mikrokontroler AVR Seri ATMega8535

Simulasi, Hardware, dan Aplikasi, Penerbit : Penerbit Andi, Yogyakarta, 2006.

[6] My Experience In Autonomous Robotics by Bibin John, www.geocities.com/njbibin


(53)

Lampiran 1

1. Rangkaian Skematik Sistem Minimum Mikrokontroler AT89S51


(54)

3. Rangkaian Skematik Jembatan H


(55)

Lampiran 2

; ==================================== ; = Program_Robot_Penghindar_Dinding = ; ==================================== Inisialisasi:

Motor_Kanan_1 bit p2.0 Motor_Kanan_2 bit p2.1 Motor_Kiri_1 bit p2.2 Motor_Kiri_2 bit p2.3 Sensor_Samping_Kiri_Jauh bit p0.0 Sensor_Samping_Kiri_Dekat bit p0.1 Sensor_Depan_Kiri_Jauh bit p0.2 Sensor_Depan_Kiri_Dekat bit p0.3 Sensor_Depan_Kanan_Jauh bit p0.4 Sensor_Depan_Kanan_Dekat bit p0.5 Sensor_Samping_Kanan_Jauh bit p0.6 Sensor_Samping_Kanan_Dekat bit p0.7

Start:

Mov p0,#0ffh Mov p2,#00h

Sjmp Main

Main:


(56)

Mov r0,p0

Cjne r0,#0beh,Cek_1 Acall Maju

Sjmp Main

Cek_1:

Cjne r0,#0fch,Cek_2

Acall Putar_Kanan_25_Derajat Sjmp Main

Cek_2:

Cjne r0,#0bch,Cek_3

Acall Putar_Kanan_25_Derajat Sjmp Main

Cek_3:

Cjne r0,#3fh,Cek_4

Acall Putar_Kiri_25_Derajat Sjmp Main

Cek_4:

Cjne r0,#3eh,Cek_5

Acall Putar_Kiri_25_Derajat Sjmp Main


(57)

Cek_5:

Cjne r0,#0aah,Cek_6 Acall Maju

Sjmp Main

Cek_6:

Cjne r0,#0e8h,Cek_7 Acall Maju

Sjmp Main

Cek_7:

Cjne r0,#98h,Cek_8 Acall Maju

Sjmp Main

Cek_8:

Cjne r0,#2bh,Cek_9 Acall Maju

Sjmp Main

Cek_9:

Cjne r0,#2ah,Cek_10 Acall Maju


(58)

Cek_10:

Cjne r0,#0c2h,Cek_11 Acall Stop

Acall Putar_Kanan_90_Derajat Sjmp Main

Cek_11:

Cjne r0,#0c0h,Cek_12 Acall Stop

Acall Putar_Kanan_90_Derajat Sjmp Main

Cek_12:

Cjne r0,#83h,Cek_13 Acall Stop

Acall Putar_Kiri_90_Derajat Sjmp Main

Cek_13:

Cjne r0,#03h,Cek_14 Acall Stop

Acall Putar_Kiri_90_Derajat Sjmp Main

Cek_14:


(59)

Cjne r0,#0fh,Cek_15 Acall Stop

Acall Putar_Kiri_25_Derajat Ljmp Main

Cek_15:

Cjne r0,#2fh,Cek_16 Acall Stop

Acall Putar_Kiri_25_Derajat Ljmp Main

Cek_16:

Cjne r0,#0f0h,Cek_17 Acall Stop

Acall Putar_Kanan_25_Derajat Ljmp Main

Cek_17:

Cjne r0,#0f4h,Cek_18 Acall Stop

Acall Putar_Kanan_25_Derajat Ljmp Main

Cek_18:


(60)

Acall Stop

Acall Putar_Kiri_25_Derajat Ljmp Main

Cek_19:

Cjne r0,#0ah,Cek_20 Acall Stop

Acall Putar_Kiri_25_Derajat Ljmp Main

Cek_20:

Cjne r0,#2eh,Cek_21 Acall Stop

Acall Putar_Kiri_25_Derajat Ljmp Main

Cek_21:

Cjne r0,#2ah,Cek_22 Acall Stop

Acall Putar_Kiri_25_Derajat Ljmp Main

Cek_22:

Cjne r0,#0b0h,Cek_23 Acall Stop


(61)

Acall Putar_Kanan_25_Derajat Ljmp Main

Cek_23:

Cjne r0,#0b4h,Cek_24 Acall Stop

Acall Putar_Kanan_25_Derajat Ljmp Main

Cek_24:

Cjne r0,#0a0h,Cek_25 Acall Stop

Acall Putar_Kanan_25_Derajat Ljmp Main

Cek_25:

Cjne r0,#0a4h,Set_Main Acall Stop

Acall Putar_Kanan_25_Derajat Ljmp Main

Set_Main:

Ljmp Main


(62)

Acall Motor_Maju Acall Motor_Diam Acall Motor_Diam Acall Motor_Diam Acall Motor_Diam Acall Motor_Maju Ret

Stop:

Mov r7,#10 Stop_1:

Mov r6,#255

Acall Motor_Stop Djnz r6,$

Djnz r7,Stop_1 Ret

Motor_Stop:

Setb Motor_Kanan_1 Setb Motor_Kanan_2 Setb Motor_Kiri_1 Setb Motor_Kiri_2 Mov r2,#100

Djnz r2,$ Ret


(63)

Motor_Diam:

Clr Motor_Kanan_1 Clr Motor_Kanan_2 Clr Motor_Kiri_1 Clr Motor_Kiri_2 Mov r2,#100

Djnz r2,$ Ret

Motor_Maju:

Setb Motor_Kanan_1 Clr Motor_Kanan_2 Setb Motor_Kiri_1 Clr Motor_Kiri_2 Mov r2,#255

Djnz r2,$ Ret

Motor_Kanan:

Clr Motor_Kanan_1 Setb Motor_Kanan_2 Setb Motor_Kiri_1 Clr Motor_Kiri_2 Mov r2,#255


(64)

Djnz r2,$ Ret

Motor_Kiri:

setb Motor_Kanan_1 Clr Motor_Kanan_2 Clr Motor_Kiri_1 Setb Motor_Kiri_2 Mov r2,#255

Djnz r2,$ Ret

Putar_Kanan_90_Derajat: Mov r3,#6

Kanan_90:

Mov r4,#100 Kan_90:

Acall Motor_Kanan Djnz r4,Kan_90 Djnz r3,Kanan_90 Ret

Putar_Kiri_90_Derajat: Mov r3,#6


(65)

Mov r4,#100 Kir_90:

Acall Motor_Kiri Djnz r4,Kir_90 Djnz r3,Kiri_90 Ret

Putar_Kanan_25_Derajat: Mov r3,#1

Kanan_25:

Mov r4,#25 Kan_25:

Acall Motor_Kanan Djnz r4,Kan_25 Djnz r3,Kanan_25 Ret

Putar_Kiri_25_Derajat: Mov r3,#1

Kiri_25:

Mov r4,#25 Kir_25:

Acall Motor_Kiri Djnz r4,Kir_25 Djnz r3,Kiri_25 Ret


(66)

Program di atas merupakan program robot pengikut garis yang diisikan ke dalam mikrokontroler AT89S51. Dari program dapat dijelaskan sebagai berikut:

 Motor_Kanan_1 bit p2.0 ... Sensor_Samping_Kanan_Dekat bit p0.7  Menjelaskan bahwa pada port 2.0 adalah Motor_Kanan_1

hingga port 0.7 adalah Sensor_Samping_Kanan_Dekat (berfungsi sebagai pengenalan port).

 Start:  Merupakan sebuah Rutin.

 Mov p0,#0ffh  Menjelaskan bahwa mikrokontroler diperintahkan untuk mengisikan port 0 dengan harga 0ff heksadesimal. Nilai ini diberikan untuk memberikan kondisi high (11111111) semuanya pada port 0.

 Mov p2,#00h  Menjelaskan bahwa mikrokontroler diperintahkan untuk mengisikan port 2 dengan harga 00 heksadesimal. Nilai ini diberikan untuk memberikan kondisi high (00000000) semuanya pada port 2.

 Sjmp Main  Menjelaskan bahwa mikrokontroler diperintahkan untuk lompat ke rutin Main.

 Main:  Merupakan sebuah Rutin.

 Acall Maju  Perintah Acall Maju digunakan untuk memanggil subrutin Maju dan melaksanakan perintah yang ada pada subrutin Maju tersebut. Subrutin ini berfungsi untuk memerintahkan robot bergerak maju.  Mov r0,p0  Menjelaskan bahwa mikrokontroler diperintahkan


(67)

 Cjne r0,#0beh,Cek_1  Menjelaskan bahwa mikrokontroler diperintahkan untuk membandingkan harga yang ada pada register 0 dengan harga 0beh, jika harga register 0 sama dengan 0beh maka mikrokontroler akan melaksanakan perintah dibawahnya yaitu maju. Tetapi jika harga r0 tidak sama dengan 0beh, maka mikrokontroler akan mengerjakan perintah yang ada pada subrutin Cek_1.

 Acall Maju  Perintah Acall Maju digunakan untuk memanggil subrutin Maju dan melaksanakan perintah yang ada pada subrutin Maju tersebut. Subrutin ini berfungsi untuk memerintahkan robot bergerak maju.  Sjmp Main  Menjelaskan bahwa mikrokontroler diperintahkan

untuk lompat ke rutin Main.

 Cek_1:  Merupakan sebuah subrutin.

 Cjne r0,#0fch,Cek_2  Menjelaskan bahwa mikrokontroler diperintahkan untuk membandingkan harga yang ada pada register 0 dengan harga 0fch, jika harga register 0 sama dengan 0fch maka mikrokontroler akan melaksanakan perintah dibawahnya. Tetapi jika harga r0 tidak sama dengan 0fch, maka mikrokontroler akan mengerjakan perintah yang ada pada subrutin Cek_2.

 Acall Putar_Kanan_25_Derajat  Perintah Acall

Putar_Kanan_25_Derajat digunakan untuk memanggil subrutin Putar_Kanan_25_Derajat dan melaksanakan perintah yang ada pada subrutin Putar_Kanan_25_Derajat tersebut. Subrutin ini berfungsi untuk memerintahkan robot berputar kekanan 25 derajat.


(68)

 Sjmp Main  Menjelaskan bahwa mikrokontroler diperintahkan untuk lompat ke rutin Main.

 Cek_2:  Merupakan sebuah subrutin.

 Cjne r0,#0bch,Cek_3  Menjelaskan bahwa mikrokontroler diperintahkan untuk membandingkan harga yang ada pada register 0 dengan harga 0bch, jika harga register 0 sama dengan 0bch maka mikrokontroler akan melaksanakan perintah dibawahnya. Tetapi jika harga r0 tidak sama dengan 0bch, maka mikrokontroler akan mengerjakan perintah yang ada pada subrutin Cek_3.

 Acall Putar_Kanan_25_Derajat  Perintah Acall

Putar_Kanan_25_Derajat digunakan untuk memanggil subrutin Putar_Kanan_25_Derajat dan melaksanakan perintah yang ada pada subrutin Putar_Kanan_25_Derajat tersebut. Subrutin ini berfungsi untuk memerintahkan robot berputar kekanan 25 derajat.

 Sjmp Main  Menjelaskan bahwa mikrokontroler diperintahkan untuk lompat ke rutin Main.

 Cek_3:  Merupakan sebuah subrutin.

 Cjne r0,#3fh,Cek_4  Menjelaskan bahwa mikrokontroler diperintahkan untuk membandingkan harga yang ada pada register 0 dengan harga 3fh, jika harga register 0 sama dengan 3fh maka mikrokontroler akan melaksanakan perintah dibawahnya. Tetapi jika harga r0 tidak sama dengan 3fh, maka mikrokontroler akan mengerjakan perintah yang ada pada subrutin Cek_4.


(69)

 Acall Putar_Kiri_25_Derajat  Perintah Acall Putar_Kiri_25_Derajat digunakan untuk memanggil subrutin Putar_Kiri_25_Derajat dan melaksanakan perintah yang ada pada subrutin Putar_Kiri_25_Derajat tersebut. Subrutin ini berfungsi untuk memerintahkan robot berputar kekiri 25 derajat.

 Sjmp Main  Menjelaskan bahwa mikrokontroler diperintahkan untuk lompat ke rutin Main.

 Cek_4:  Merupakan sebuah subrutin.

 Cjne r0,#3eh,Cek_5  Menjelaskan bahwa mikrokontroler diperintahkan untuk membandingkan harga yang ada pada register 0 dengan harga 3eh, jika harga register 0 sama dengan 3eh maka mikrokontroler akan melaksanakan perintah dibawahnya. Tetapi jika harga r0 tidak sama dengan 3eh, maka mikrokontroler akan mengerjakan perintah yang ada pada subrutin Cek_5.

 Acall Putar_Kiri_25_Derajat  Perintah Acall

Putar_Kiri_25_Derajat digunakan untuk memanggil subrutin Putar_Kiri_25_Derajat dan melaksanakan perintah yang ada pada subrutin Putar_Kiri_25_Derajat tersebut. Subrutin ini berfungsi untuk memerintahkan robot berputar kekiri 25 derajat.

 Sjmp Main  Menjelaskan bahwa mikrokontroler diperintahkan untuk lompat ke rutin Main.

 Cek_5:  Merupakan sebuah subrutin.

 Cjne r0,#0aah,Cek_6  Menjelaskan bahwa mikrokontroler diperintahkan untuk membandingkan harga yang ada pada register 0


(70)

dengan harga 0aah, jika harga register 0 sama dengan 0aah maka mikrokontroler akan melaksanakan perintah dibawahnya. Tetapi jika harga r0 tidak sama dengan 0aah, maka mikrokontroler akan mengerjakan perintah yang ada pada subrutin Cek_6.

 Acall Maju  Perintah Acall Maju digunakan untuk memanggil subrutin Maju dan melaksanakan perintah yang ada pada subrutin Maju tersebut. Subrutin ini berfungsi untuk memerintahkan robot bergerak maju.  Sjmp Main  Menjelaskan bahwa mikrokontroler diperintahkan

untuk lompat ke rutin Main.

 Cek_6:  Merupakan sebuah subrutin.

 Cjne r0,#0e8h,Cek_7  Menjelaskan bahwa mikrokontroler diperintahkan untuk membandingkan harga yang ada pada register 0 dengan harga 0e8h, jika harga register 0 sama dengan 0e8h maka mikrokontroler akan melaksanakan perintah dibawahnya. Tetapi jika harga r0 tidak sama dengan 0e8h, maka mikrokontroler akan mengerjakan perintah yang ada pada subrutin Cek_7.

 Acall Maju  Perintah Acall Maju digunakan untuk memanggil subrutin Maju dan melaksanakan perintah yang ada pada subrutin Maju tersebut. Subrutin ini berfungsi untuk memerintahkan robot bergerak maju.  Sjmp Main  Menjelaskan bahwa mikrokontroler diperintahkan

untuk lompat ke rutin Main.

 Cek_7:  Merupakan sebuah subrutin.

 Cjne r0,#98h,Cek_8  Menjelaskan bahwa mikrokontroler diperintahkan untuk membandingkan harga yang ada pada register 0


(71)

dengan harga 98h, jika harga register 0 sama dengan 98h maka mikrokontroler akan melaksanakan perintah dibawahnya. Tetapi jika harga r0 tidak sama dengan 98h, maka mikrokontroler akan mengerjakan perintah yang ada pada subrutin Cek_8.

 Acall Maju  Perintah Acall Maju digunakan untuk memanggil subrutin Maju dan melaksanakan perintah yang ada pada subrutin Maju tersebut. Subrutin ini berfungsi untuk memerintahkan robot bergerak maju.  Sjmp Main  Menjelaskan bahwa mikrokontroler diperintahkan

untuk lompat ke rutin Main.

 Cek_8:  Merupakan sebuah subrutin.

 Cjne r0,#2bh,Cek_9  Menjelaskan bahwa mikrokontroler diperintahkan untuk membandingkan harga yang ada pada register 0 dengan harga 2bh, jika harga register 0 sama dengan 2bh maka mikrokontroler akan melaksanakan perintah dibawahnya. Tetapi jika harga r0 tidak sama dengan 2bh, maka mikrokontroler akan mengerjakan perintah yang ada pada subrutin Cek_9.

 Acall Maju  Perintah Acall Maju digunakan untuk memanggil subrutin Maju dan melaksanakan perintah yang ada pada subrutin Maju tersebut. Subrutin ini berfungsi untuk memerintahkan robot bergerak maju.  Sjmp Main  Menjelaskan bahwa mikrokontroler diperintahkan

untuk lompat ke rutin Main.

 Cek_9:  Merupakan sebuah subrutin.

 Cjne r0,#2ah,Cek_10  Menjelaskan bahwa mikrokontroler diperintahkan untuk membandingkan harga yang ada pada register 0


(72)

dengan harga 2ah, jika harga register 0 sama dengan 2ah maka mikrokontroler akan melaksanakan perintah dibawahnya. Tetapi jika harga r0 tidak sama dengan 2ah, maka mikrokontroler akan mengerjakan perintah yang ada pada subrutin Cek_10.

 Acall Maju  Perintah Acall Maju digunakan untuk memanggil subrutin Maju dan melaksanakan perintah yang ada pada subrutin Maju tersebut. Subrutin ini berfungsi untuk memerintahkan robot bergerak maju.  Sjmp Main  Menjelaskan bahwa mikrokontroler diperintahkan

untuk lompat ke rutin Main.

 Cek_10:  Merupakan sebuah subrutin.

 Cjne r0,#0c2h,Cek_11  Menjelaskan bahwa mikrokontroler diperintahkan untuk membandingkan harga yang ada pada register 0 dengan harga 0c2h, jika harga register 0 sama dengan 0c2h maka mikrokontroler akan melaksanakan perintah dibawahnya. Tetapi jika harga r0 tidak sama dengan 0c2h, maka mikrokontroler akan mengerjakan perintah yang ada pada subrutin Cek_11.

 Acall Stop  Perintah Acall Stop digunakan untuk memanggil subrutin Stop dan melaksanakan perintah yang ada pada subrutin Stop tersebut. Subrutin ini berfungsi untuk memerintahkan robot berhenti.

 Acall Putar_Kanan_90_Derajat  Perintah Acall

Putar_Kanan_90_Derajat digunakan untuk memanggil subrutin Putar_Kanan_90_Derajat dan melaksanakan perintah yang ada pada subrutin Putar_Kanan_90_Derajat tersebut. Subrutin ini berfungsi untuk memerintahkan robot berputar kekanan 90 derajat.


(73)

 Sjmp Main  Menjelaskan bahwa mikrokontroler diperintahkan untuk lompat ke rutin Main.

 Cek_11:  Merupakan sebuah subrutin.

 Cjne r0,#0c0h,Cek_12  Menjelaskan bahwa mikrokontroler diperintahkan untuk membandingkan harga yang ada pada register 0 dengan harga 0c0h, jika harga register 0 sama dengan 0c0h maka mikrokontroler akan melaksanakan perintah dibawahnya. Tetapi jika harga r0 tidak sama dengan 0c0h, maka mikrokontroler akan mengerjakan perintah yang ada pada subrutin Cek_12.

 Acall Stop  Perintah Acall Stop digunakan untuk memanggil subrutin Stop dan melaksanakan perintah yang ada pada subrutin Stop tersebut. Subrutin ini berfungsi untuk memerintahkan robot berhenti.

 Acall Putar_Kanan_90_Derajat  Perintah Acall

Putar_Kanan_90_Derajat digunakan untuk memanggil subrutin Putar_Kanan_90_Derajat dan melaksanakan perintah yang ada pada subrutin Putar_Kanan_90_Derajat tersebut. Subrutin ini berfungsi untuk memerintahkan robot berputar kekanan 90 derajat.

 Sjmp Main  Menjelaskan bahwa mikrokontroler diperintahkan untuk lompat ke rutin Main.

 Cek_12:  Merupakan sebuah subrutin.

 Cjne r0,#83h,Cek_13  Menjelaskan bahwa mikrokontroler diperintahkan untuk membandingkan harga yang ada pada register 0 dengan harga 83h, jika harga register 0 sama dengan 83h maka mikrokontroler akan melaksanakan perintah dibawahnya. Tetapi jika harga


(74)

r0 tidak sama dengan 83h, maka mikrokontroler akan mengerjakan perintah yang ada pada subrutin Cek_13.

 Acall Stop  Perintah Acall Stop digunakan untuk memanggil subrutin Stop dan melaksanakan perintah yang ada pada subrutin Stop tersebut. Subrutin ini berfungsi untuk memerintahkan robot berhenti.

 Acall Putar_Kiri_90_Derajat  Perintah Acall

Putar_Kiri_90_Derajat digunakan untuk memanggil subrutin Putar_Kiri_90_Derajat dan melaksanakan perintah yang ada pada subrutin Putar_Kiri_90_Derajat tersebut. Subrutin ini berfungsi untuk memerintahkan robot berputar kekiri 90 derajat.

 Sjmp Main  Menjelaskan bahwa mikrokontroler diperintahkan untuk lompat ke rutin Main.

 Cek_13:  Merupakan sebuah subrutin.

 Cjne r0,#03h,Cek_14  Menjelaskan bahwa mikrokontroler diperintahkan untuk membandingkan harga yang ada pada register 0 dengan harga 03h, jika harga register 0 sama dengan 03h maka mikrokontroler akan melaksanakan perintah dibawahnya. Tetapi jika harga r0 tidak sama dengan 03h, maka mikrokontroler akan mengerjakan perintah yang ada pada subrutin Cek_14.

 Acall Stop  Perintah Acall Stop digunakan untuk memanggil subrutin Stop dan melaksanakan perintah yang ada pada subrutin Stop tersebut. Subrutin ini berfungsi untuk memerintahkan robot berhenti.

 Acall Putar_Kiri_90_Derajat  Perintah Acall


(75)

Putar_Kiri_90_Derajat dan melaksanakan perintah yang ada pada subrutin Putar_Kiri_90_Derajat tersebut. Subrutin ini berfungsi untuk memerintahkan robot berputar kekiri 90 derajat.

 Sjmp Main  Menjelaskan bahwa mikrokontroler diperintahkan untuk lompat ke rutin Main.

 Cek_14:  Merupakan sebuah subrutin.

 Cjne r0,#0fh,Cek_15  Menjelaskan bahwa mikrokontroler diperintahkan untuk membandingkan harga yang ada pada register 0 dengan harga 0fh, jika harga register 0 sama dengan 0fh maka mikrokontroler akan melaksanakan perintah dibawahnya. Tetapi jika harga r0 tidak sama dengan 0fh, maka mikrokontroler akan mengerjakan perintah yang ada pada subrutin Cek_15.

 Acall Stop  Perintah Acall Stop digunakan untuk memanggil subrutin Stop dan melaksanakan perintah yang ada pada subrutin Stop tersebut. Subrutin ini berfungsi untuk memerintahkan robot berhenti.

 Acall Putar_Kiri_25_Derajat  Perintah Acall

Putar_Kiri_25_Derajat digunakan untuk memanggil subrutin Putar_Kiri_25_Derajat dan melaksanakan perintah yang ada pada subrutin Putar_Kiri_25_Derajat tersebut. Subrutin ini berfungsi untuk memerintahkan robot berputar kekiri 25 derajat.

 Ljmp Main  Menjelaskan bahwa mikrokontroler diperintahkan untuk lompat ke rutin Main.


(76)

 Cjne r0,#2fh,Cek_16  Menjelaskan bahwa mikrokontroler diperintahkan untuk membandingkan harga yang ada pada register 0 dengan harga 2fh, jika harga register 0 sama dengan 2fh maka mikrokontroler akan melaksanakan perintah dibawahnya. Tetapi jika harga r0 tidak sama dengan 2fh, maka mikrokontroler akan mengerjakan perintah yang ada pada subrutin Cek_16.

 Acall Stop  Perintah Acall Stop digunakan untuk memanggil subrutin Stop dan melaksanakan perintah yang ada pada subrutin Stop tersebut. Subrutin ini berfungsi untuk memerintahkan robot berhenti.

 Acall Putar_Kiri_25_Derajat  Perintah Acall

Putar_Kiri_25_Derajat digunakan untuk memanggil subrutin Putar_Kiri_25_Derajat dan melaksanakan perintah yang ada pada subrutin Putar_Kiri_25_Derajat tersebut. Subrutin ini berfungsi untuk memerintahkan robot berputar kekiri 25 derajat.

 Ljmp Main  Menjelaskan bahwa mikrokontroler diperintahkan untuk lompat ke rutin Main.

 Cek_16:  Merupakan sebuah subrutin.

 Cjne r0,#0f0h,Cek_17  Menjelaskan bahwa mikrokontroler diperintahkan untuk membandingkan harga yang ada pada register 0 dengan harga 0f0h, jika harga register 0 sama dengan 0f0h maka mikrokontroler akan melaksanakan perintah dibawahnya. Tetapi jika harga r0 tidak sama dengan 0f0h, maka mikrokontroler akan mengerjakan perintah yang ada pada subrutin Cek_17.


(77)

 Acall Stop  Perintah Acall Stop digunakan untuk memanggil subrutin Stop dan melaksanakan perintah yang ada pada subrutin Stop tersebut. Subrutin ini berfungsi untuk memerintahkan robot berhenti.

 Acall Putar_Kanan_25_Derajat  Perintah Acall

Putar_Kanan_25_Derajat digunakan untuk memanggil subrutin Putar_Kanan_25_Derajat dan melaksanakan perintah yang ada pada subrutin Putar_Kanan_25_Derajat tersebut. Subrutin ini berfungsi untuk memerintahkan robot berputar kekanan 25 derajat.

 Ljmp Main  Menjelaskan bahwa mikrokontroler diperintahkan untuk lompat ke rutin Main.

 Cek_17:  Merupakan sebuah subrutin.

 Cjne r0,#0f4h,Cek_18  Menjelaskan bahwa mikrokontroler diperintahkan untuk membandingkan harga yang ada pada register 0 dengan harga 0f4h, jika harga register 0 sama dengan 0f4h maka mikrokontroler akan melaksanakan perintah dibawahnya. Tetapi jika harga r0 tidak sama dengan 0f4h, maka mikrokontroler akan mengerjakan perintah yang ada pada subrutin Cek_18.

 Acall Stop  Perintah Acall Stop digunakan untuk memanggil subrutin Stop dan melaksanakan perintah yang ada pada subrutin Stop tersebut. Subrutin ini berfungsi untuk memerintahkan robot berhenti.

 Acall Putar_Kanan_25_Derajat  Perintah Acall

Putar_Kanan_25_Derajat digunakan untuk memanggil subrutin Putar_Kanan_25_Derajat dan melaksanakan perintah yang ada pada


(1)

Mov r3,#1

Menjelaskan bahwa mikrokontroler diperintahkan

untuk mengisikan harga 1 ke dalam register 3.

Kiri_25:

Merupakan sebuah subrutin.

Mov r4,#25

Menjelaskan bahwa mikrokontroler diperintahkan

untuk mengisikan harga 25 ke dalam register 4.

Kan_25:

Merupakan sebuah subrutin.

Acall Motor_Kiri

Perintah Acall Motor_Kiri digunakan untuk

memanggil subrutin Motor_Kiri dan melaksanakan perintah yang ada pada

subrutin Motor_Kiri tersebut. Subrutin ini berfungsi untuk memerintahkan

motor berputar kekanan.

Djnz r4,Kan_25

Menjelaskan bahwa mikrokontroler

diperintahkan untuk mengurangi register 4 sampai harga 0 hingga selesai.

Djnz r3,Kanan_25

Menjelaskan bahwa mikrokontroler

diperintahkan untuk mengurangi register 3 sampai harga 0 hingga selesai.

Ret

Menjelaskan bahwa mikrokontroler diperintahkan untuk kembali


(2)

Lampiran 3

Tabel Kebenaran Robot Penghindar Dinding

SKaD SKaJ DKaD DKaJ DKiD DKiJ SKiD SKiJ Heksadesimal

0 0 0 0 0 0 0 0 00H

0 0 0 0 0 0 0 1 01H

0 0 0 0 0 0 1 0 02H

0 0 0 0 0 0 1 1 03H

0 0 0 0 0 1 0 0 04H

0 0 0 0 0 1 0 1 05H

0 0 0 0 0 1 1 0 06H

0 0 0 0 0 1 1 1 07H

0 0 0 0 1 0 0 0 08H

0 0 0 0 1 0 0 1 09H

0 0 0 0 1 0 1 0 0AH

0 0 0 0 1 0 1 1 0BH

0 0 0 0 1 1 0 0 0CH

0 0 0 0 1 1 0 1 0DH

0 0 0 0 1 1 1 0 0EH

0 0 0 0 1 1 1 1 0FH

0 0 0 1 0 0 0 0 10H

0 0 0 1 0 0 0 1 11H

0 0 0 1 0 0 1 0 12H

0 0 0 1 0 0 1 1 13H

0 0 0 1 0 1 0 0 14H

0 0 0 1 0 1 0 1 15H

0 0 0 1 0 1 1 0 16H

0 0 0 1 0 1 1 1 17H

0 0 0 1 1 0 0 0 18H

0 0 0 1 1 0 0 1 19H

0 0 0 1 1 0 1 0 1AH

0 0 0 1 1 0 1 1 1BH

0 0 0 1 1 1 0 0 1CH

0 0 0 1 1 1 0 1 1DH

0 0 0 1 1 1 1 0 1EH

0 0 0 1 1 1 1 1 1FH

0 0 1 0 0 0 0 0 20H

0 0 1 0 0 0 0 1 21H

0 0 1 0 0 0 1 0 22H

0 0 1 0 0 0 1 1 23H

0 0 1 0 0 1 0 0 24H

0 0 1 0 0 1 0 1 25H

0 0 1 0 0 1 1 0 26H

0 0 1 0 0 1 1 1 27H

0 0 1 0 1 0 0 0 28H

0 0 1 0 1 0 0 1 29H

0 0 1 0 1 0 1 0 2AH

0 0 1 0 1 0 1 1 2BH

0 0 1 0 1 1 0 0 2CH

0 0 1 0 1 1 0 1 2DH

0 0 1 0 1 1 1 0 2EH

0 0 1 0 1 1 1 1 2FH

0 0 1 1 0 0 0 0 30H

0 0 1 1 0 0 0 1 31H

0 0 1 1 0 0 1 0 32H


(3)

0 0 1 1 0 1 1 0 36H

0 0 1 1 0 1 1 1 37H

0 0 1 1 1 0 0 0 38H

0 0 1 1 1 0 0 1 39H

0 0 1 1 1 0 1 0 3AH

0 0 1 1 1 0 1 1 3BH

0 0 1 1 1 1 0 0 3CH

0 0 1 1 1 1 0 1 3DH

0 0 1 1 1 1 1 0 3EH

0 0 1 1 1 1 1 1 3FH

0 1 0 0 0 0 0 0 40H

0 1 0 0 0 0 0 1 41H

0 1 0 0 0 0 1 0 42H

0 1 0 0 0 0 1 1 43H

0 1 0 0 0 1 0 0 44H

0 1 0 0 0 1 0 1 45H

0 1 0 0 0 1 1 0 46H

0 1 0 0 0 1 1 1 47H

0 1 0 0 1 0 0 0 48H

0 1 0 0 1 0 0 1 49H

0 1 0 0 1 0 1 0 4AH

0 1 0 0 1 0 1 1 4BH

0 1 0 0 1 1 0 0 4CH

0 1 0 0 1 1 0 1 4DH

0 1 0 0 1 1 1 0 4EH

0 1 0 0 1 1 1 1 4FH

0 1 0 1 0 0 0 0 50H

0 1 0 1 0 0 0 1 51H

0 1 0 1 0 0 1 0 52H

0 1 0 1 0 0 1 1 53H

0 1 0 1 0 1 0 0 54H

0 1 0 1 0 1 0 1 55H

0 1 0 1 0 1 1 0 56H

0 1 0 1 0 1 1 1 57H

0 1 0 1 1 0 0 0 58H

0 1 0 1 1 0 0 1 59H

0 1 0 1 1 0 1 0 5AH

0 1 0 1 1 0 1 1 5BH

0 1 0 1 1 1 0 0 5CH

0 1 0 1 1 1 0 1 5DH

0 1 0 1 1 1 1 0 5EH

0 1 0 1 1 1 1 1 5FH

0 1 1 0 0 0 0 0 60H

0 1 1 0 0 0 0 1 61H

0 1 1 0 0 0 1 0 62H

0 1 1 0 0 0 1 1 63H

0 1 1 0 0 1 0 0 64H

0 1 1 0 0 1 0 1 65H

0 1 1 0 0 1 1 0 66H

0 1 1 0 0 1 1 1 67H

0 1 1 0 1 0 0 0 68H

0 1 1 0 1 0 0 1 69H

0 1 1 0 1 0 1 0 6AH

0 1 1 0 1 0 1 1 6BH


(4)

0 1 1 0 1 1 0 1 6DH

0 1 1 0 1 1 1 0 6EH

0 1 1 0 1 1 1 1 6FH

0 1 1 1 0 0 0 0 70H

0 1 1 1 0 0 0 1 71H

0 1 1 1 0 0 1 0 72H

0 1 1 1 0 0 1 1 73H

0 1 1 1 0 1 0 0 74H

0 1 1 1 0 1 0 1 75H

0 1 1 1 0 1 1 0 76H

0 1 1 1 0 1 1 1 77H

0 1 1 1 1 0 0 0 78H

0 1 1 1 1 0 0 1 79H

0 1 1 1 1 0 1 0 7AH

0 1 1 1 1 0 1 1 7BH

0 1 1 1 1 1 0 0 7CH

0 1 1 1 1 1 0 1 7DH

0 1 1 1 1 1 1 0 7EH

0 1 1 1 1 1 1 1 7FH

1 0 0 0 0 0 0 0 80H

1 0 0 0 0 0 0 1 81H

1 0 0 0 0 0 1 0 82H

1 0 0 0 0 0 1 1 83H

1 0 0 0 0 1 0 0 84H

1 0 0 0 0 1 0 1 85H

1 0 0 0 0 1 1 0 86H

1 0 0 0 0 1 1 1 87H

1 0 0 0 1 0 0 0 88H

1 0 0 0 1 0 0 1 89H

1 0 0 0 1 0 1 0 8AH

1 0 0 0 1 0 1 1 8BH

1 0 0 0 1 1 0 0 8CH

1 0 0 0 1 1 0 1 8DH

1 0 0 0 1 1 1 0 8EH

1 0 0 0 1 1 1 1 8FH

1 0 0 1 0 0 0 0 90H

1 0 0 1 0 0 0 1 91H

1 0 0 1 0 0 1 0 92H

1 0 0 1 0 0 1 1 93H

1 0 0 1 0 1 0 0 94H

1 0 0 1 0 1 0 1 95H

1 0 0 1 0 1 1 0 96H

1 0 0 1 0 1 1 1 97H

1 0 0 1 1 0 0 0 98H

1 0 0 1 1 0 0 1 99H

1 0 0 1 1 0 1 0 9AH

1 0 0 1 1 0 1 1 9BH

1 0 0 1 1 1 0 0 9CH

1 0 0 1 1 1 0 1 9DH

1 0 0 1 1 1 1 0 9EH

1 0 0 1 1 1 1 1 9FH

1 0 1 0 0 0 0 0 A0H

1 0 1 0 0 0 0 1 A1H

1 0 1 0 0 0 1 0 A2H

1 0 1 0 0 0 1 1 A3H

1 0 1 0 0 1 0 0 A4H


(5)

1 0 1 0 1 0 0 0 A8H

1 0 1 0 1 0 0 1 A9H

1 0 1 0 1 0 1 0 AAH

1 0 1 0 1 0 1 1 ABH

1 0 1 0 1 1 0 0 ACH

1 0 1 0 1 1 0 1 ADH

1 0 1 0 1 1 1 0 AEH

1 0 1 0 1 1 1 1 AFH

1 0 1 1 0 0 0 0 B0H

1 0 1 1 0 0 0 1 B1H

1 0 1 1 0 0 1 0 B2H

1 0 1 1 0 0 1 1 B3H

1 0 1 1 0 1 0 0 B4H

1 0 1 1 0 1 0 1 B5H

1 0 1 1 0 1 1 0 B6H

1 0 1 1 0 1 1 1 B7H

1 0 1 1 1 0 0 0 B8H

1 0 1 1 1 0 0 1 B9H

1 0 1 1 1 0 1 0 BAH

1 0 1 1 1 0 1 1 BBH

1 0 1 1 1 1 0 0 BCH

1 0 1 1 1 1 0 1 BDH

1 0 1 1 1 1 1 0 BEH

1 0 1 1 1 1 1 1 BFH

1 1 0 0 0 0 0 0 C0H

1 1 0 0 0 0 0 1 C1H

1 1 0 0 0 0 1 0 C2H

1 1 0 0 0 0 1 1 C3H

1 1 0 0 0 1 0 0 C4H

1 1 0 0 0 1 0 1 C5H

1 1 0 0 0 1 1 0 C6H

1 1 0 0 0 1 1 1 C7H

1 1 0 0 1 0 0 0 C8H

1 1 0 0 1 0 0 1 C9H

1 1 0 0 1 0 1 0 CAH

1 1 0 0 1 0 1 1 CBH

1 1 0 0 1 1 0 0 CCH

1 1 0 0 1 1 0 1 CDH

1 1 0 0 1 1 1 0 CEH

1 1 0 0 1 1 1 1 CFH

1 1 0 1 0 0 0 0 D0H

1 1 0 1 0 0 0 1 D1H

1 1 0 1 0 0 1 0 D2H

1 1 0 1 0 0 1 1 D3H

1 1 0 1 0 1 0 0 D4H

1 1 0 1 0 1 0 1 D5H

1 1 0 1 0 1 1 0 D6H

1 1 0 1 0 1 1 1 D7H

1 1 0 1 1 0 0 0 D8H

1 1 0 1 1 0 0 1 D9H

1 1 0 1 1 0 1 0 DAH

1 1 0 1 1 0 1 1 DBH

1 1 0 1 1 1 0 0 DCH

1 1 0 1 1 1 0 1 DDH


(6)

1 1 0 1 1 1 1 1 DFH

1 1 1 0 0 0 0 0 E0H

1 1 1 0 0 0 0 1 E1H

1 1 1 0 0 0 1 0 E2H

1 1 1 0 0 0 1 1 E3H

1 1 1 0 0 1 0 0 E4H

1 1 1 0 0 1 0 1 E5H

1 1 1 0 0 1 1 0 E6H

1 1 1 0 0 1 1 1 E7H

1 1 1 0 1 0 0 0 E8H

1 1 1 0 1 0 0 1 E9H

1 1 1 0 1 0 1 0 EAH

1 1 1 0 1 0 1 1 EBH

1 1 1 0 1 1 0 0 ECH

1 1 1 0 1 1 0 1 EDH

1 1 1 0 1 1 1 0 EEH

1 1 1 0 1 1 1 1 EFH

1 1 1 1 0 0 0 0 F0H

1 1 1 1 0 0 0 1 F1H

1 1 1 1 0 0 1 0 F2H

1 1 1 1 0 0 1 1 F3H

1 1 1 1 0 1 0 0 F4H

1 1 1 1 0 1 0 1 F5H

1 1 1 1 0 1 1 0 F6H

1 1 1 1 0 1 1 1 F7H

1 1 1 1 1 0 0 0 F8H

1 1 1 1 1 0 0 1 F9H

1 1 1 1 1 0 1 0 FAH

1 1 1 1 1 0 1 1 FBH

1 1 1 1 1 1 0 0 FCH

1 1 1 1 1 1 0 1 FDH

1 1 1 1 1 1 1 0 FEH

1 1 1 1 1 1 1 1 FFH

SKaD = Samping Kanan Dekat SKaJ = Samping Kanan Jauh

DKaD = Depan Kanan Dekat DKaJ = Depan Kanan Jauh

DKiD = Depan Kiri Dekat DKiJ = Depan Kiri Jauh

SKiD = Samping Kiri Dekat SKiJ = samping Kiri Jauh