Dengan memberikan nilai 0x90 atau 90 heksa desimal = 1001 0000 biner
pada Port Control PPI 8255, maka berdasarkan gambar Control Word dapat diketahui
bahwa Port A difungsikan sebagai input, Port B sebagai output, dan Port C sebagai
output.
Progamnya Delay :
program untuk sementara berdasarkan nilai yang diisikan pada nilai integernya.
Semakin besar nilai integernya maka waktu pemberhetian program akan lama pula.
Dari program yang ditulis pada cuplikan pembangkitan pulsa ultrasonic akan
keluaran dari microcontroller yang digunakan untuk proses pembangkitan pulsa dapat
Pulsa dibangkitkan dengan memberikan nilai 0 pada pin P1.0 untuk ultrasonic
kanan selama waktu tertentu, dalam hal ini menggunakan nilai delay (36). Dari delay
ini akan didapatkan bentuk pulsa sebesar 28 periode pulsa yang merupakan pulsa
yang mencukupi untuk dapat diterima oleh Receiver. Setelah didelay selama (36)
tersebut pin P1.0 diberi nilai 1 untuk mematikan pemberian tegangan ke rangkaian
transmiter.
Hal ini berlaku juga untuk sensor ultrasonic tengah dan kiri. Hanya saja pin
berbeda. P1.1 digunakan untuk ultrasonic tengah, dan P1.2 untuk ultrasonic kiri.
gerakan utamanya.
Pengujian pengukuran jarak disini hanya mengacu pada selang waktu antara
pulsa dikirim dan pulsa diterima. Karena dalam pembuatan robot ini nilai jarak tidak
ditampilkan dan pengukuran jarak hanya digunakan untuk mengetahui kondisi jauh
54
dekatnya halangan tanpa mengetahui nilai jaraknya yang nantinya dari masing
masing ultrasonic akan dibandingankan guna penentuan kemana robot akan bergerak.
Maka program yang dirancang hanya menggunakan pencacah hitungan yang selang
waktunya sama. Semakin besar nilai pencacahnya maka akan diketahui bahwa jarak
halangannya semakin jauh, demikian bila semakin kecil nilai pencacahnya maka akan
diketahui bahwa jarak halangannya dekat, namun apabila jaraknya melebihi nilai
jarak yang telah dibatasi pada pendeteksian ini maka receiver akan menerima nilai
ini :
Maka setiap kali ada halangan dari masing-masing ultrasonic program akan
menginterrupt. Gambar sinyal adanya halangan yang dideteksi oleh salah satu sensor
ultrasonic ditunjukkan gambar 4.3. Nilai pencacah akan dimaksukkan dalam variabel
tertentu yang dalam langkah programnya selanjutnya akan dimasukkan pada variabel
agar dalam kondisi tertentu apabila terdapat sinyal yang menyebabkan interrupt,
Interrupt terjadi apabila terjadi kondisi low dari kondisi awal high pada sinyal
yang masuk ke pin INT0. Bentuk sinyal yang menyebabkan terjadinya interrupt
motor stepper yang sesuai dengan keinginan guna menggerakkan robot berdasar
inputan yang diterimanya. Karena menggunakan prinsip yang sama, maka dalam
pengujian ini hanya akan diambil beberapa kondisi dari banyak kondisi perputaran
motor stepper.
1. Kondisi Maju
Kondisi maju diperoleh dengan memutar motor stepper kanan serah jarum jam
void maju () {
int I;
for(I=1;I<=13;I++){ // putar motorstepper 93,6 drajat
XBYTE [PB] =0x18;
DELAY (2200);
XBYTE [PB] =0x24;
DELAY (2200);
XBYTE [PB] =0x42;
DELAY (2200);
XBYTE [PB] =0x81;
DELAY (2200);
}
}
57
Dari program tersebut akan mengakibatkan nilai bit pada Port B bernilai
Pemberian Delay pada motor stepper berpengaruh pada kecepatan putar motor
stepper. Nilai delay sangat berpengaruh pada tegangan yang terdapat pada suplai
motor stepper. Apabila pemberian delay tidak seimbang dengan pemberian suplay
tegangan pada motor stepper akan mengakibatkan perputaran motor stepper yang
buruk. Hal ini juga akan berpengaruh pada kekuatan gerak motor stepper.
Misalnya dengan delay yang kecil dan suplay tegangan yang besar akan
karena dengan tegangan yang besar kekuatan untuk menggerakkan motor juga
besar dan dengan delay yang kecil akan mengakibatkan perubahan bit yang cepat
sehingga sebelum mencapai kondisi stabil motor stepper sudah dipaksa untuk
dimana siklus maju ini akan diulang sebanyak 13 kali. Dimana sudah dijelaskan
pada Bab III, bahwa untuk 1 kali motor stepper akan berputar 7,2o , sehingga
58
Kondisi belok kanan diperoleh dengan memutar motor stepper kanan dan kiri
void kanan () {
int I;
for(I=1;I<=3;I++){ // putar motorstepper 21,6 drajat
XBYTE [PB] =0x11;
DELAY (2200);
XBYTE [PB] =0x22;
DELAY (2200);
XBYTE [PB] =0x44;
DELAY (2200);
XBYTE [PB] =0x88;
DELAY (2200);
}
}
hitam) untuk menunjukan bahwa disamping kanan atau kiri robot terdapat kamar.
59
if (ired == 1 ){
Dari penulisan program ini dapat diketahui bahwa, robot mendeteksi adanya
kamar diawali ketika inframerah mendeteksi adanya tanda (pita hitam) dengan
memberikan sinyal high pada P1.3 microcontroller dan sebaliknya. Namun setelah itu
mendeteksi halangan di sebelah kanan lebih jauh dari pada halangan disebelah kiri
maka robot mendeteksi adanya kamar disebelah kanan robot. Namun jika robot
kanan maka robot mendeteksi adanya kamar disebelah kanan. Namun jika dua
kondisi ini tidak terpenuhi maka robot akan menjalankan proses yang lain.
Setelah mendetekasi adanya kamar robot akan maju 1 meter, karena dalam
perancangan ini hanya dibuat robot yang ukarannya kecil maka dibuat robot berjalan
1 meter yang diharapkan dapat masuk ke dalam kamar untuk melanjutkan proses
selanjutnya.
4.6 Pengujian Program Pencarian Titik Api dalam Kamar dan Pemadaman
int h,I;
for (I=1;I<=40;I++){ // mengulang sebanyak setengah putaran untuk
mengetahui posisi api
kanan (); // belok kanan
DELAY (2000); // berhenti sejenak guna mendeteksi ada/tidaknya
api
if (ftran == 0){ // jika fototransisitor mendeteksi adanya api
for (h = 1; h <= 5;h++){ // maju 5 kali
maju();
}
while (ftran == 0){
XBYTE [PC] = 0xFF;
}
XBYTE [PC] = 0x00;
for (h = 1; h <= 5;h++){ // mundur 5 kali untuk kembali
keposisi semula
mndur();
}
}
} // sebelum berputar 1 putaran masih mendeteksi adanya titik
api
majubb();
}
Dari program kamar diperoleh hasil bahwa ketika robot sudah masuk ke
kamar robot akan melakukan perputaran sebanyak 180o. Ketika fototransistor tidak
mendetaksi adanya sumber cahaya dari api maka robot manganggap bahwa kamar
tersebut tidak ada api. Namun jika fototransistor mendeteksi adanya titik api robot
akan maju dan akan mematikan api tersebut dengan mengaktifkan Port C sampai api
tersebut padam. Diketahuinya api tersebut padam diperoleh dari sinyal yang diberikan
juga oleh fototransistor. Setelah padam, robot akan mundur keposisi semula dan akan
melakukan pendeteksian titik api lagi sampai kondisi putar 180o terpenuhi.
Setelah semua proses pendeteksian api selesai, robot akan maju 1 meter untuk
if (ired == 1){
if (sute <= 200){ // jika mendeteksi ujung ruang/gedung
putar180();
diam ();
}
else {
maju();
}
}
else if (suka > suki && sute < suki && sute <= 150 ){
putarka90 ();
}
else {
maju();
}
}
}
}
Dari penulisan program didapat analisa bahwa proses awal yang dilakukan
dalam proses pulang atau kembali keposisi awal adalah melakukan pendeteksian
posisi kemana robot harus bergerak dengan menggunakan sensor ultrasonic. Untuk
menemukan posisi awal robot, peran sensor infra merah sangat berarti sebagaimana
dalam pendetaksian kamar, namun disini tanda diberikan di posisi awal robot. Jadi
ketika belum mendeteksi tanda yang terletak di posisi awal robot, robot akan bergerak
menelusuri ruangan. Apabila ditemukan tanda yang berada pada posisi awal, maka
robot akan mengabaikannya. Hal ini terlihat pada program yang ditulis diatas pada
kondisi infrared bernilai 1 (ired = 1). Namun ketika kondisi infrared bernilai 0 (ired
posisi robot terhadap halangan yang berada di samping kanan, kiri, dan tengah robot.
63
Posisi awal ini terpenuhi jika sensor ultrasonic tengah mendeteksi halangan
yang sangat dekat pada saat infra merah memberikan sinyal high ( 1 ) pada mikro.
for (;;){
EX0 = 0; // menonaktifkan interrup INT0
jar = 3500;
ki = 0; // mengaktifkan sensor ultrasonic kiri
DELAY (36); // membentuk minimal 12 periode sinyal
ki = 1; // menonaktifakan sensor ultrasonic kiri
EX0 = 1; // mengaktifkan interrupt INT0
bal = 1;
while (bal < 3500){ // pendetekasian jarak
al ++;
}
EX0 = 0; // menonaktifkan interrupt INT0
suki = jar; // jarak didapat dari nilai jar, bila tjd interrup
jar = bal
jar = 3500;
ka = 0; // mengaktifakan sensor ultrasonic kanan
DELAY (36); // membentuk minimal 12 periode sinyal
ka = 1; // menonaktifakan sensor ultrasonic kanan
EX0 = 1; // mengaktifkan interrupt INT0
bal = 1;
while (bal < 3500){ // pendetekasian jarak
bal ++;
}
EX0 = 0; // menonaktifkan interrupt INT0
suka = jar; // jarak didapat dari nilai jar, bila tjd interrup
jar = bal
jar = 3500;
sute = jar; // jarak didapat dari nilai jar, bila tjd interrup
jar = bal
jar = 3500;
if (ired == 1){
if (sute <= 200){ // jika mendeteksi ujung ruang/gedung
putar180();
pulang();
}
else {
maju();
}
}
else if (suka >= suki && sute <= suki && sute <= 150 ){
putarka90 ();
}
else {
maju();
}
}
65
}
}
Hasil dari eksekusi program utama adalah diawali dengan melakukan proses
terhadap program inisialisasi PPI 8255, dan pengaktifan interrupt. Setelah itu robot
akan melakukan proses sebagaimana yang dilakukan pada proses kembali keposisi
awal. Namun di program utama ada sedikit perbedaan dengan apa yang terjadi pada
proses kembali keposisi awal dimana dalam program utama terdapat cuplikan
program untuk melakukan pendeteksian terhadap kamar. Yang bisa dijabarkan yaitu
ketika infrared memberikan sinyal high (ired = 1) ada banyak sekali kemungkinan,
diantaranya :
1. Ketika sensor ultrasonic tengah mendeteksi jarak yang sangat dekat itu
Sehingga robot akan melakukan pergerakan berputar 180o setelah itu akan
2. Ketika sensor kanan mendeteksi adanya halangan yang lebih jauh dibandingkan
dengan sensor ultrasonic kiri, maka hal ini menunjukkan bahwa di sebelah kanan
robot terdapat sebuah kamar yang perlu dimasuki untuk untuk dideteksi adanya
3. Ketika sensor kiri mendeteksi adanya halangan yang lebih jauh dibandingkan
dengan sensor ultrasonic kanan, maka hal ini menunjukkan bahwa di sebelah kiri
robot terdapat sebuah kamar yang perlu dimasuki untuk untuk dideteksi adanya
4. Ketika ketiga kondisi diatas tidak tercapai maka robot akan melakukan gerakan
maju. Hal ini dimaksudkan untuk menggerakkan robot yang tidak berpengaruh
Namun apabila infra merah memberikan sinyal low (ired = 0) atau tidak
mendeteksi adanya tanda, maka robot akan menjalankan program dibawah ini :
1. Ketika sensor kanan mendetekasi halangan yang lebih kecil atau sama dengan
sensor tengah dan sensor kanan samadengan sensor kiri, maka program kan
2. Ketika sensor kanan mendeteksi jarak lebih dekat atau sama dengan sensor kiri
dan sensor tengah mendeteksi jarak yang lebih jauh atau sama dengan sensor kiri,
3. Ketika sensor kanan mendeteksi jarak lebih jauh atau sama dengan sensor kiri dan
sensor tengah mendeteksi jarak yang lebih jauh atau sama dengan sensor kanan,
4. Ketika sensor kanan mendeteksi jarak lebih dekat atau sama dengan sensor kiri
dan sensor tengah mendeteksi jarak yang lebih dekat atau sama dengan sensor
5. Ketika sensor kanan mendeteksi jarak lebih jauh atau sama dengan sensor kiri dan
sensor tengah mendeteksi jarak yang lebih dekat atau sama dengan sensor kiri,
dan sensor tengah juga mendeteksi jarak yang sangat dekat maka robot akan
6. Pengecualian dari kelima kondisi diatas maka robot akan bergerak maju.
Program utama merupakan awal dari semua sub program, dari program utama
inilah semua proses pemanggilan terhadap sub program dilakukan sesuai dengan
Robot mulai bekerja ketika rangkaian dan microkontroller di suplay tegangan atau
dengan mereset microkontroller. Sebagai pengujian program robot dibuat suatu bagan
Posisi 1 : Posisi awal robot. Dimana robot mulai bekerja dan robot akan
Posisi 2 dan posisi 3 : Posisi yang menandakan adanya kamar di sebelah kiri robot.
Ketika robot mulai bekerja, robot akan berjalan maju dan bergerak sesuai dengan
Dari hasil pengujian program robot ini dapat diketahui bahwa Robot berjalan
sangat lambat, hal ini dipengaruhi oleh kerja dari motor stepper, serta waktu eksekusi
Untuk motor stepper waktu bergerak motor stepper dipengaruhi oleh tegangan
Waktu yang dibutuhkan robot dalam bergerak dengan tegangan suplay ke motor
sekon.