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
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
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.
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.
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
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
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
4.3. Pemrograman ...39
BAB V KESIMPULAN DAN SARAN
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
Daftar Tabel
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.
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
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
- 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
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
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
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
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
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
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
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)
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
__
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.
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
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
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
__
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
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
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.
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
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
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.
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
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
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
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
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
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
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
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
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 :
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
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+
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
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
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
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
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
BAB IV
PEMBAHASAN RANGKAIAN DAN PROGRAM
4.1. Rangkaian Robot Penghindar Dinding
Rangkaian Robot Penghindar Dinding secara keseluruhan dapat dilihat
pada Gambar 4.1.
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
4.2. Diagram Alir (Flowchart)
Cara kerja Robot Penghindar Dinding yang dirancang dijelaskan dalam
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
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
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
Lampiran 1
1. Rangkaian Skematik Sistem Minimum Mikrokontroler AT89S51
3. Rangkaian Skematik Jembatan H
Lampiran 2
; ====================================
; = Program_Robot_Penghindar_Dinding =
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
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
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
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
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
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
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
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
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
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
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
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.
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