Index of /students/paper/skripsi/20402076

BAB III
PERANCANGAN DAN PEMBAHASAN ALAT

III.1. Blok Sistem Robot Secara Umum

SISTEM
KONTROL

AKTUATOR

SISTEM
RODA

MEKANIK
ROBOT

& SISTEM
KAKI

Untuk Navigasi
(gerak berpindah)


SENSOR

SISTEM
TANGAN

Untuk Manipulasi
(gerak penanganan)

Gambar 3.1. Diagram blok sistem robot secara umum

Gambar diatas merupakan blok sistem robot secara umum dan orientasi
fungsinya yang biasa kita jumpai dan berhubungan dengan “Real World”. Berikut
adalah penjelasan dari blok rangkaian diatas :


Sistem kontrol (control system)

32


Adalah rangkaian elektronik yang setidak-tidaknya terdiri dari rangkaian prosesor
(CPU, memori, komponen interface Input / Output), signal conditioning untuk
sensor (analog dan atau digital), serta driver untuk aktuator.


Mekanik robot (mechanical robot)

Adalah sistem mekanik yang dapat terdiri dari fungsi gerak. Jumlah fungsi gerak
disebut sebagai derajat kebebasan atau degree of freedom (DOF). Sebuah sendi
yang diwakili oleh sebuah gerak aktuator disebut sebagai satu DOF.


Sensor

Adalah perangkat atau komponen yang bertugas mendeteksi (hasil) gerakan atau
fenomena lingkungan yang diperlukan oleh sistem kontroler. Dapat dibuat dari
sistem yang paling sederhana seperti sensor inframerah, ultrasonic, saklar
ON/OFF, dan sebagainya.



Aktuator (actuator)

Adalah perangkat elektromekanik yang menghasilkan daya gerakan. Terdiri dari
tiga jenis, yaitu:
1.

Electric actuator, yaitu perangkat menggunakan sistem

motor listrik (motor DC, motor DC servo, maupun motor stepper.
2.

Pneumatik actuator, yaitu perangkat yang menggunakan

udara atau gas nitrogen.
3.

Hydraulic actuator, yaitu perangkat yang menggunakan

bahan cair seperti oli [12]



Sistem roda

33

Adalah sistem mekanik yang dapat menggerakkan robot untuk berpindah posisi.


Sistem kaki

Pada dasarnya sistem kaki adalah gerakan “roda” yang didisain sedemikian rupa
hingga memiliki kemampuan gerak seperti mahluk hidup. Robot berjalan dengan
sistem dua kaki yang memiliki struktur kaki seperti manusia setidak-tidaknya
mempunyai sendi-sendi yang mewakili pergelangan kaki, lutut, dan pinggul.


Sistem tangan

Adalah bagian atau anggota badan robot selain sistem roda atau kaki. Dalam
konteks mobile robot, bagian tangan ini dikenal sebagai manipulator yaitu sistem

gerak yang berfungsi untuk memanipulasi (memegang, mengambil, mengangkat,
memindah atau mengolah) obyek. [4]

III.2. Diagram Blok Rangkaian
Dibawah ini adalah gambar blok rangkaian dari robot yang dibuat oleh penulis
yang terdiri dari tiga proses, yaitu input (sensor), proses (mikrokontroler), dan output
(motor DC).

Blok Rangkaian Sensor

34
INPUT

Ultrasonic
Transmitter
Halangan

Ultrasonic
Receiver


Pengkondisian
Sinyal

Mikrokontroler
AT89C52
PROSES

Blok Rangkaian
Motor DC
Motor
DC

Driver
motor DC
OUTPUT

Gambar 3.2. Diagram blok rangkaian

Berdasarkan blok diagram diatas, sensor yang digunakan untuk mengenal
keadaan lingkungan luar dimana robot ini akan beroperasi adalah sensor ultrasonic.

Sensor ini akan bekerja dengan cara mendeteksi adanya halangan dari pergerakan
robot mobile ini. Pendeteksian sinyal yang datang menggunakan prinsip pemantulan
dari rangkaian

transmitter ke rangkaian receiver dari sensor ultrasonic. Hasil

pemantulan tersebut masih dalam bentuk sinyal analog. Sedangkan sinyal yang
dibutuhkan oleh bagian processing dalam hal ini dilakukan oleh mikrokontroler
adalah sinyal digital. Oleh karena itu maka pada output rangkaian receiver sensor
ultrasonic dibuat rangkaian tambahan lagi berupa rangkaian transistor yang dalam
rangkaian ini memiliki fungsi sebagai saklar.

35

Output dari rangkaian transistor sebagai saklar ini sudah dalam bentuk digital,
yaitu berupa kondisi HIGH (1) atau LOW (0). Dari proses pengkondisian sinyal ini
maka diperoleh keluaran berupa data digital dari receiver dan akan diberikan kepada
mikrokontroler AT89C52. Mikrokontroler akan mengolah hasil input dari blok
rangkaian sensor yang terdapat pada P1.1 sampai P1.3. Prosesnya adalah bagaimana
mikrokontroler


akan

mensingkronisasikannya

menterjemahkan

hasil

input

dengan

yang

sudah

program

dari


sensor

“tertanam”

di

dan
chip

mikrokontroler tersebut.
Proses mikrokontroler untuk menterjemahkannya dan menjadi penghubung
antara input dan output sangat rumit. Disini mikrokontroler akan menggabungkan dan
mensinkronisasikan antara software dengan blok perancangan hardware. Dari hasil
proses

yang dilakukan oleh mikrokontroler maka akan dihasilkan suatu kondisi

perintah kepada driver dari motor dc, dalam hal ini berupa IC L293D yang kemudian
akan menggerakkan motor dc, baik ke arah kanan maupun ke arah kiri tergantung

dari hasil input dari sensor dan hasil output dari mikrokontroler AT89C52 yang
diberikan kepada IC pada driver motor tersebut.

III.3. Perancangan Perangkat Keras (Hardware)
III.3.1. Blok rangkaian sensor ultrasonic

36

Pemancar gelombang ultrasonic disusun oleh sebuah transduser
ultrasonik yang diberi gelombang kotak dengan frekuensi sekitar 40 KHz.
Gelombang kotak dihasilkan oleh untai multivibrator yang disusun oleh IC 555
yang bekerja secara astable. Rangkaian pemancar ultrasonic ditunjukkan
gambar 3.3 (a).
9V

R2

R3

2

3

8

IC 555

TRM

D3

LED
R8

TR2

6

VR

C7

4

C1
R1

Receiver

9V

Transmitter

1

C2
5

C1

C3

TR1

R10
SN7473
TR3

R2

R1

R4

D2

P1

1

R6

R9

4
13

TR4

11

RCV

C6
C2

R5

(a)

D1

C4

R7

C5

(b)

Gambar 3.3. Rangkaian sensor ultrasonik. (a) Transmitter (b) Receiver

Rangkaian sensor dibuat sebanyak 3 bagian yang pada tiap bagian dari
sensor terdiri dari pasangan transmiter dan receiver dari sensor ultrasonic.
Ketiga bagian tersebut ditempatkan pada bagian depan serta bagian samping
kanan dan kiri dari robot.
Output dari ketiga pasangan sensor ini dihubungkan ke mikrokontroler
melalui Port1 agar dapat diolah yang kemudian akan menghasilkan keluaran

37

µc

untuk memberikan input kepada IC L293D sebagai driver motor untuk
menggerakkan motor sesuai dengan data yang diterima dari mikrokontroler.
Selain sebagai input data, output dari sensor digunakan juga sebagai
pembangkit sinyal interrupt. Untuk itu, maka diperlukan rangkaian lain yang
akan membangkitkan sinyal interrupt ketika salah satu atau lebih sensor
tersebut mendeteksi sambungan antara transmiter dengan receiver.
Pada kasus ini penulis menambahkan gerbang logika OR. Dengan
menggunakan gerbang logika OR, interrupt high akan aktif (INT 1=1).
Komponen yang digunakan adalah IC 74LS32.

Ultrasonik
input
A
B
INT 1
C

Gambar 3.4. Rangkaian pembangkit interupt

Dibawah ini adalah keluaran yang dihasilkan dari rangkaian dengan
menggunakan gerbang logika OR

Tabel 3.1 Tabel kondisi pembangkit interrupt

A

B

38

INT 1

0
0
1
1

0
1
0
1

0
1
1
1

III.3.2. Blok rangkaian mikrokontroler
Jenis mikrokontroler yang digunakan adalah AT89C52 yang memiliki
empat buah port I/O, yaitu:
1.

P0 (pin 32 sampai pin 39)

2.

P1 (pin 1 sampai pin 8)

3.

P2 (pin 21 sampai pin 28)

4.

P3 (pin 10 sampai pin 17)
Pada perancangan alat ini penulis hanya menggunakan tiga port saja,

yaitu Port 0 berfungsi sebagai output. Pin yang digunakan yaitu pada P0.0
sampai P0.6. Kelima pin ini akan dihubungkan ke input dari IC untuk driver
motor dc. Kemudian Port 1 berfungsi sebagai input dari rangkaian sensor
ultrasonik. Masing-masing sensor menempati satu bit pada Port 1 yaitu P1.0,
P1.1, dan P1.2.
Yang ketiga adalah Port 3. Port ini adalah port khusus pada keluarga
8051, karena memiliki fungsi interrupt. Oleh karena perancangan alat ini
menggunakan rutin interrupt, maka kaki P3.3 (yang berfungsi sebagai INT 1)
dihubungkan ke output rangkaian pembangkit interrupt dari rangkaian sensor
dengan menggunakan gerbang logika OR pada IC 74LS32.

39

Pada blok rangkaian dari mikrokontroler ini juga terdapat rangkaian
reset, yaitu jika kita mengeksekusi tombol yang ada, maka secara otomatis
address program dari mikrokontroler akan menuju ke alamat 0000H. Nilai
tersebut dinamakan sebagai vektor reset, yang merupakan nomor awal dari
memoriprogram yang menampung program agar dapat dijalankan. Dengan kata
lain akan kembali ke awal perintah atau program.
Perintah ini merupakan satu-satunya perintah yang tidak dapat dihalangi
oleh perintah lain. Pembahasan diatas memberkan gambaran bahwa proses reset
merupakan peristiswa perangkat keras (sinyal reset dihubungkan ke kaki reset
mikrokontroler) yang dipakai untuk mengatur kerja dari software, yakni
menentukan aliran proses program prosesor.
Selain rangkaian reset, juga terdapat rangkaian yang osilator. Ini
merupakan

rangakain

yang

memicu

CPU dan mikrokontroler

untuk

mengerjakan satu intruksi ke instruksi berikutnya dalam proses yang berurutan.
Setiap langkah kecil dari operasi mikrokontroler membutuhkan waktu sebanyak
satu atau beberapa clock untuk melakukannya yang akan menentukan kecepatan
kerja dari mikrokontroler.
Program untuk mengendalikan kerja dari mikrokontroler disimpan
dalam memori program, yang merupakan kumpulan dari instruksi kerja
mikrokontroler. Sepanjang mikrokontroler bekerja, instruksi tersebut byte demi
byte akan diambil CPU dan selanjutnya dipakai untuk mengatur kerja
mikrokontroler. Proses pengambilan kerja dari instruksi dari memori program

40

disebut fetch cycle dan saat CPU melaksanakan instruksi tersebu dinamakan
execuets cycle.
Semua mikrokontroler maupun mikroprosesor dilengkapi oleh sebuah
register yang berfungsi kusus untuk mengatur fetch cycle, register tersebut
dinamakan Program Counter (PC). Nilai dari PC secara otomatis akan
bertambah satu setiap kali selesai mengambil 1 byte isi memori program,
dengan demikian isi memori program bisa berurutan diberikan ke CPU.
Saat mikrokontroler di-reset, isi PC menjadi 0000H, artinya sesaat
setelah reset isi dari memori program nomor 0 dan seterusnya akan diambil ke
CPU

dan

diperlakukan

sebagai

instruksi

yag

akan

mengatur

kerja

mikrokontroler. Dengan demikian, awal dari program pengendali harus
ditempatkan di memori nomor 0, setelah reset mikrokontroler menjalankan
5V

program mulai dari memori program 0000H, dengan melakukan fetch cycle
SENSOR 1
dabn
execute cycle terus menerus tanpa henti.
SENSOR 2

P1.0

Vcc

P1.1

P0.0

SENSOR 3

P1.3

AT89C52

P1.2
Jika sarana interrupt diaktifkan, dan tegangan
di kaki P0.1
INT 1 merubah
P0.2

dari 0 menjadi 1, maka 5proses
menjalankan program diatas akan dihentikan
V
P1.4

P1.5

P0.3

P0.4

P1.6
sebentar, kemudian 100
mikrokontroler
sendiri akan
melayani P0.5
dulu permintaan
?

10 µF

P1.7

interrupt, selesai melayani permintaan interrupt
RST
mengerjakan program utama lagi.

P0.6

CPU akan
melanjutkan
P0.7

P3.0 (RXD)

EA/Vpp

P3.1 (TXD)

ALE /PROG

8K2

30 pf

30 pf41

P3.2 (INT0)

PSEN

P3.3 (INT1)

P 2.7 (A15)

P3.4 (T0)

P 2.6 (A14)

P3.5 (T1)

P 2.5 (A13)

P3.6 (WR)

P2.4 (A12)

P3.7 (RD)

P 2.3 (A11)

XTAL 2

P 2.2 (A10)

XTAL 1

P 2.1 (A9)

GND

P 2.0 (A8)

Gambar 3.5. Blok rangkaian mikrokontroler

III.3.3. Rangkaian penggerak motor DC
Untuk penggerak dari rangkaian roda pada robot menggunakan motor
dc. Pada motor dc sendiri tidak dapat dikendalikan langsung oleh keluaran dari
mikrokontroler. Tegangan mikrokontroler hanya sebesar 5 Volt, sedangkan
B
motorAdc yang digunakan pada robot ini membutuhkan tegangan sebesar
12 volt
12 V

agar dapat bekerja dengan optimal. Oleh sebab itu, untuk mengendalikan motor
100tegangan
O
Q5
100 Operlu dibuat rangkaian
dc 12 Volt dengan
5Q3
Volt dari mikrokontroler,
D 560

22 KO

D 560

22 KO

khusus. Rangkaian pengendali motor dc yang digunakan disini adalah rangkaian
Q1
9013

Q2
9013

yang dikenal dengan sebutan H-Bridge transistor circuit, dinamakan demikian
100 O

Q4
D 438

Q6
D 438

42

100 O

karena rangkaian transistor dan motor ini membentuk abjad H (gambar 3.6).
Rangkaian ini umum digunakan untuk mengatur putaran motor ke arah yang
diinginkan dengan memberikan logika Transistor-Transitor Logic (TTL) yang
sesuai dengan ketentuan pada kaki inputnya (tabel 3.2).
A

B
12 V

100 O
22 KO

Q3
D 560

Q5
D 560

Q1
9013
100 O

100 O
22 KO
Q2
9013

Q4
D 438

Q6
D 438

100 O

Gambar 3.6. Driver motor DC menggunakan rangkaian H-Bridge

Rangkaian penguat ini digunakan untuk mengatur putaran motor dc ke
arah kanan atau kiri. Perputaran motor dc ini diatur dengan merubah polaritas
dari tegangan yang bekerja pada motor dc.

Jika titik A diberi input, maka transistor Q1 akan aktif, yang akan
membuat transistor Q3 dan Q6 juga aktif. Q3 akan menghubungkan titik C pada
motor ke +12 volt, dan Q6 menghubungkan ke ground. Dari sini pergerakan

43

putaran motor akan searah dengan jarum jam. Jika titik A tidak diberi input
maka Q1, Q3 dan Q6 tidak akan menghantar, sehingga motor tidak akan
bergerak.
Kemudian sebaliknya jika titik B yang diberi input maka transistor Q2,
Q4, dan Q5 akan aktif. Dengan transistor pada Q5 yang akan mendapat
tegangan +12 volt dan transistor Q4 yang akan terhubung ke ground. Dengan
kondisi seperti ini, maka motor akan berputar berlawanan dengan jarum jam.
Dari rangkaian ini pula tidak diperbolehkan untuk mengaktifkan A dan
B secara bersamaan. Jika hal tersebut dilakukan, maka akan terjadi hubungan
singkat/korsleting. Dengan adanya hal seperti ini maka akan dapat merusak
rangkaian H-Bridge ini, bahkan keseluruhan sistem.
Tabel 3.2 Kondisi putaran motor

Logika A
0
0
1
1

Logika B
0
1
0
1

Arah Putaran
Diam
Berlawanan jarum jam
Searah jarum jam
Dilarang

Pada penelitian ini penulis mengganti rangkaian H-Bridge dengan
sebuah komponen Integrated Circuit (IC) L293D. IC ini mempunyai fungsi
yang sama dengan rangkaian H-Bridge. Gambar 3.7 menunjukkan konfigurasi
pin dari IC L293D.

44

EN1

VSS

16

2

IN1

IN4

15

3

OUT1

OUT4

14

4

GND

GND

13

5

GND

GND

12

6

OUT2

OUT3

11

7

IN2

IN3

10

8

VC

EN2

9

L293D

1

Gambar 3.7. Alokasi pin IC L293D

Dari gambar diatas dapat diketahui bahwa IC ini mempunyai dua buah
sumber tegangan, yaitu 5 volt untuk mengaktifkan IC yang terdapat pada pin 16
dan sumber tegangan 12 volt pada pin 8 yang berfungsi untuk menggerakkan
motor dc. Pada pin 1 dan pin 9 berfungsi untuk meng-enable kan masingmasing motor. Sebab dalam rangkaian robot ini menggunakan dua buah motor
dc. Pin 1 sebagai enable (EN1) untuk motor 1 dan pin 9 sebagai enable (EN2)
untuk motor 2.
Kemudian dari IC untuk driver motor dc ini setiap pin yang berfungsi
sebagai input akan dihubungkan ke output dari mikrokontroler pada port 0
untuk menggerakkan arah putaran motor sesuai dengan data yang dikeluarkan
dari mikrokontroler sehingga akan diperoleh suatu rangkaian seperti gambar
12 V

5V

8

16

VC

VSS

berikut:

2 IN1

P0.2
P0.2

7 IN2

P0.0

1 EN1

P0.4

10 IN2

P0.5

15 IN3

P0.3

9 EN2

3

L293D

P0.1

14

GND
4

6
11

5

45

GND
12

13

Gambar 3.8. Koneksi IC L293D dengan output dari mikrokontroler AT89C52

Berikut adalah tabel kondisi putaran motor dc terhadap arah pergerakan
robot, yaitu:
Tabel 3.3. Kondisi putaran motor terhadap arah pergerakan robot

Motor
kiri

Motor
kanan

Arah
pergerakan
Maju
Putar kanan
Putar kiri
Mundur

III.3.4. Blok Rangkaian Catu Daya
Dari keseluruhan rangkaian ini menggunakan tiga buah level tegangan,
yaitu 5 volt yang digunakan untuk tegangan pada mikrokontroler dan, 9 volt
untuk tegangan pada blok rangkaian transmitter sensor ultrasonic, serta

46

tegangan 12 volt untuk tegangan pada blok rangkaian receiver sensor ultrasonic
dan pada rangkaian penggerak motor dc yang terdapat pada IC L293D.
Sebagai sumber tegangan mengunakan baterai sebesar 1,5 volt sebanyak
8 buah. Dengan mengunakan regulator 7805 akan menghasilkan tegangan
9V

D3

C7

R2

LED

R3

sebesar 5 volt dan regulator 7809 menghasilkan tegangan sebesar 9 volt.
R8

TR2

C3

TR1

C1

R10

SN7473
4

R9

Berikut adalah gambar rangkaian dari catu daya yang digunakan.

RCV

R1

R4

D2

1

TR3

R6

13

11

TR4
C2

R5

D1

C4

R7

C6

C5

12v

9v
9V

7809

1N4001
D3

C7

R2

C3

1000
µF

SN7473
4

R1

GND

b1

2

R8

TR2

RCV

a1

0

TR1

C1

1

LED

R3

R4

D2

1

TR3

R6

13

R10

0.1µF

R9

11
TR4

C2

R5

D1

C4

C6

C5
R7

7805

9V
1

D3

C7

R2

C3

2

R4

D2

1

TR3

R6

0.1µF

R10

SN7473
4

R1

b1

0

R8

TR2

RCV

GND

LED

R3

TR1

C1

a1

13

R9

11
TR4

C2

R5

D1

C4

C6

C5
R7

Gambar 3.9. Rangkaian catu daya
9V

4

C1

5V

R1

2
3

VR

IC 555

6

8

5V 12V
Gambar dibawah ini merupakan gambar rangkaian dari robot pendeteksi
C2

P1.0

5

1

1
R2

EN1

P0.0

VSS

2

P1.4

5V

P0.1

P1.6

100 ?

VC

IN2

OUT1

7

P0.2
9
P0.3

masing blok rangkaian yang telah dibuat diatas tadi.
P1.5

IN1

P0.4

EN2
10
IN3
15

P0.5

10 µF

L 293D

P1.3

AT 89C52

rintangan secara keseluruhan dan merupakan penggabungan dari masingP1.2

TRM

Vcc

P1.1

OUT2
OUT3

IN4

OUT4

GND

GND

GND

GND

4
P1.7

P0.6

12

5
RST

8K2

12v

9v
7809

1N4001
1

a1

GND

b1

2

0

1000
µF

30 pf
0.1µF

30 pf
5v
7805
1

a1

GND

b1

2

0

0.1µF

47

P0.7

P3.0 (RXD)

EA/Vpp

P3.1 (TXD)

ALE/PROG

P3.2 (INT0)

PSEN

P3.3 (INT1)

P2.7 (A15)

P3.4 (T0)

P2.6 (A14)

P3.5 (T1)

P2.5 (A13)

P3.6 (WR)

P2.4 (A12)

P3.7 (RD)

P2.3 (A11)

XTAL 2

P2.2 (A10)

XTAL 1

P2.1 (A9)

GND

P2.0 (A8)

13

Gambar 3.9. Gambar rangkaian secara keseluruhan

III.4. Perancangan Perangkat Lunak
Dalam perancangan alat ini, bahasa yang digunakan oleh penulis adalah
bahasa Assembler dengan bantuan software IDE 8051 yang dapat dijalankan pada
sistem operasi Windows.

48

Gambar 3.10. Tampilan dari software IDE 8051

Software ini dapat berfungsi sebagai editor dan simulator dari program
yang telah kita buat. Software ini akan menampilkan isi dari accumulator,
program counter, stack pointer, register-register , dan port pada saat program
buatan kita sedang dijalankan. Dengan demikian kita dapat mengetahui apakah
program yang telah kita buat sudah benar atau belum. Bila belum benar,
program dapat diperbaiki secara langsung dari software IDE 8051 ini. Bagi
program yang telah di-compile maka akan terdapat dua jenis file, yaitu file
berekstension LST,

contohnya program.LST (gambar 3.10) dan file yang

berekstension HEX, contohnya program.HEX (gambar 3.11).

49

Gambar 3.11. Tampilan program yang memiliki ekstension LST

Gambar 3.12. Tampilan program yang memiliki ekstension HEX.

Untuk men-download program, file yang kita butuhkan adalah yang
memilki ekstensi HEX seperti contoh diatas, yang selanjutnya akan kita

50

download pada EPROM writer, berikut adalah tampilan dari software untuk
menjalankan EPROM writer, yaitu:

Gambar 3.13. Tampilan software WACESS untuk men-download program

III.5.`Flowchart program
Dalam setiap pembuatan suatu alat, hal terpenting yang paling utama dalam
perancangannya adalah bagaimana kita dapat mengetahui prinsip kerja dari alat yang
dapat digambarkan dalam
bentuk flowchart. Gambar dibawah adalah flowchart
START
program secara keseluruhan dari pembuatan alat ini.
INISIALISASI
INTERUPSI

DETEKSI
TRACK

SUBRUTINE
DETEKSI TRACK
TRACK
TERDETEKSI ??

YA

ROBOT
BERGERAK

MENGIKUTI
TRACK

TIDAK
TIDAK

ROBOT TIDAK
BERGERAK

GARIS
AKHIR??

51
YA
STOP

Gambar 3.14. Flowchart program keseluruhan

Program utama dari pembuatan robot ini adalah mendeteksi adanya input dari
sensor ultrasonic kepada mikrokontroler AT89C52 yang terletak pada P0.0, P0.1,
dan P0.2. Program akan bereaksi dengan mengirimkan output kepada driver motor dc
sesuai dengan data yang diterimanya. Motor dc akan bergerak jika input dari sensor
akan memiliki logka 1 (high).
Untuk pengecekan bit pada program pendeteksi sinyal dalam bahasa
Assembler menggunakan perintah Jump if Bit Set (JB). Perintah ini akan bekerja
dengan cara mengecek kondisi bit satu dari masing-masing sensor yang terhubung ke
port dari input dari mikrokontroler. Yang kemudian akan berpindah ke bagian label
dari program pendeteksi sinyal yang telah ditentukan (address code) jika bit yang

52

diperiksa tersebut bernilai HIGH (1). Jika bit yang diperiksa bernilai LOW (0), maka
program akan melaksanakan baris perintah setelah perintah JB tersebut.
Cara kerja dari program secara keseluruhan adalah sebagai berikut:
1.

Yang pertama adalah inisialisasi interupsi, yaitu INT1.

Inisialisasi interupsi dilakukan pada register IE. Dimana untuk mengaktifkan
INT1 maka pada program harus diberikan perintah MOV IE, #84H.
2.

Jika sensor mendeteksi adanya halangan baik yang ada di sisi

depan, kiri, maupun sisi depan robot maka interupsi akan aktif dan menuju
subroutine sensor. Selanjutnya akan mencari sensor mana yang akan mengalami
perubahan pada masukannya. Sensor yang pertama kali dicek adalah yang
terhubung dengan P0.0 pada mikrokontroler, selanjutnya P0.1 dan P0.2. Jika ada
sensor yang terdeteksi maka data yang mengalami perubahan akan diberikan ke
driver penggerak motor yang selanjutnya roda dari robot akan berputar sesuai
dengan input sinyal dari sensor kepada mikrokontroler.
3.

Subroutine dari motor berisi perintah mengeluarkan

berupa arah putaran roda dari robot (tabel 3.4).

Tabel 3.4. Kondisi putaran motor terhadap sensor

53

output

SU.2 SU.1 SU.0
0
0
0
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
1
1
1

4.

Kondisi putaran motor
Stop
Kiri
Mundur
Kiri
Kanan
Maju
Kanan
Mundur

Kondisi ini akan berlangsung secara terus menerus sampai batas

akhir dari track.
5.

Selanjutnya program akan kembali ke program utama jika tidak

ada lagi interupsi yang diterima oleh sensor.

Dari penjelasan flowchart pada gambar 3.14 diatas, maka dalam perancangan
alat ini terdapat dua program pengendali, yaitu:
1.

Program deteksi rintangan

Sensor ultrasonic akan mendeteksi adanya objek yang menghalangi pergerakan
dari robot, baik yang ada di samping kanan, kiri maupun sisi depan. Program ini
menggunakan fasilitas interupsi 1 (INT1). Dibawah ini adalah flowchart dari
program deteksi rintangan.

54

START

CEK
SENSOR1

SENSOR 1
TERDETEKSI
??

Y

T

CEK
SENSOR2

SENSOR 2
TERDETEKSI
??

CEK
SENSOR2

SENSOR 2
TERDETEKSI
??

Y

T

T

CEK
SENSOR3

SENSOR 3
TERDETEKSI
??

CEK
SENSOR3

SENSOR 3
TERDETEKSI
??

Y

T
IR = 000
STOP

Y

CEK
SENSOR3

SENSOR 3
TERDETEKSI
??

Y

IR = 010
MUNDUR

SENSOR 3
TERDETEKSI
??

Y

T

T
UT = 100
KANAN

CEK
SENSOR3

IR = 110
KANAN

IR = 001
KIRI

Y

T
IR = 101
MAJU

IR = 011
KIRI

IR = 111
MUNDUR

RETI

Gambar 3.15. Flowchart program deteksi rintangan

Program ini akan mengecek kondisi bit satu per satu dimulai dari P0.0 yang
terhubung ke sensor ultrasonic kiri, selanjutnya akan mengecek sensor ultrasonic
depan. Proses ini berlangsung terus-menerus sesuai dengan flowchart diatas.
Hingga terdapat hasil akhir yang akan mempengaruhi kondisi putaran dan arah
motor.

55

* * * * * * * * * * * * * * * * * * program deteksi sensor * * * * * * * * * * * * * * * * * * *
SCAN:
K:

JB

SU_1, D

KD:

JB

SU_2, Q

KDQ:

JB

SU_3, SCAN_KANAN

LJMP

SCAN_STOP

D:

JB

SU_2, DQQ

DQ:

JB

SU_3, SCAN_MAJU

LJMP

SCAN_KIRI

JB

SU_3, SCAN_MUNDUR

LJMP

SCAN_KIRI

JB

SU_3, SCAN_KANAN

LJMP

MUNDUR

DQQ:

Q:

OUT:

2.

; cek sensor kanan
; SU = xx1, cek sensor depan
; cek sensor kanan depan
; SU = x10, cek sensor kiri
; cek sensor kanan depan kiri
; SU = 100, KANAN
; SU = 000, STOP
; cek sensor depan
; SU = x11, cek sensor depan kiri kiri
; cek sensor depan kiri
; SU = 101, MAJU
; SU = 001, KIRI
; cek sensor depan kiri kiri
; SU = 111, MUNDUR
; SU = 011, KIRI
; cek sensor kiri
; SU = 110, KANAN
; SU = 010, MUNDUR

RETI

Program pengendali motor

Untuk program pengendali arah putaran motor ini dihasilkan dari adanya input
dari sensor. Program ini berisi bit 0 dan 1 yang konfigurasi masing-masing bitnya
sudah diprogram dan ditentukan dari output IC L293D sebagai driver motor.
Berikut adalah subroutine dari program pengendali motor.
* * * * * * * * * * program motor * * * * * * * * * *
KANAN:

MOV
ACALL
RET

MDC, #00011011b
DELAY

KIRI:

MOV
ACALL
RET

MDC, #00101101b
DELAY

MAJU:

MOV
ACALL
RET

MDC, #00101011b
DELAY

56

MUNDUR:

MOV
ACALL
RET

MDC, #00011101b
DELAY

57