• Tidak ada hasil yang ditemukan

Perancangan Alat dan Program

PERANCANGAN ALAT DAN PERANCANGAN PROGRAM

3.1 Perangkat Keras

3.1.1 Diagram Blok

Gambar 3.1 Diagram blok rangkaian

3.1.2 Rangkaian Sensor dinding

Untuk dapat menghindari dinding, maka robot dilengkapi dengan 6 buah sensor dinding. Semua sensor dinding ini mempunyai rangkaian yang sama, hanya penempatannya saja yang berbeda.

VCC 5V Infra Merah 100 100 Infra Merah 100

Masing-masing sensor menggunakan 3 buah pemancar inframerah dan sebuah photodioda. Sensor ini memanfaatkan pantulan dari pemancar inframerah yang diterima oleh photodioda. Digunakan 3 buah pemancar inframerah pada masing-masing sensor bertujuan agar sinyal pantulan semakin kuat, sehingga posisi halangan dapat terdeteksi dengan baik.

Setiap pantulan yang diterima oleh photodioda akan diolah dan dijadikan data digital, sehingga bila photodioda mendapatkan pantulan dari pemancar inframerah, maka akan mengirimkan sinyal low ke mikrokontroler AT89S52. Dengan demikian mikrokontroler dapat mendeteksi sensor yang mengirimkan sinyal low dan mengambil tindakan untuk mengatur putaran roda kekanan atau kekiri.

Rangkaian pemancar inframerah tampak seperti gambar di bawah ini:

Gambar 3.2. Rangkaian Pemancar inframerah

Pada rangkaian di atas digunakan 3 buah LED inframerah yang diparalelkan, dengan demikian maka intensitas yang dipancarkan oleh inframerah semakin kuat, karena merupakan gabungan dari 3 buah LED inframerah. Resistor yang digunakan adalah 100 ohm sehingga arus yang mengalir pada masing-masing LED inframerah adalah sebesar:

5 0, 05 50 100 V i A atau mA R   

Dengan besarnya arus yang mengalir ke LED inframerah, maka intensitas pancaran inframerah akan semakin kuat, yang menyebabkan jarak pantulannya akan semakin jauh.

Pantulan dari sinar inframerah akan diterima oleh photodioda, kemudian akan diolah oleh rangkaian penerima agar menghasilkan data biner, dimana jika photodioda menerima pantulan sinar inframerah maka output dari rangkaian penerima ini akan mengeluarkan logika low (0), namun jika photodioda tidak menerima pantulan sinar inframerah, maka output dari rangkaian penerima akan mengeluarkan logika high (1). Rangkaian penerima inframerah seperti gambar di bawah ini:

Gambar 3.3. Rangkaian Penerima sinar inframerah

Photodioda memiliki hambatan sekitar 15 s/d 20 Mohm jika tidak terkena sinar inframerah, dan hambatannya akan berubah menjadi sekitar 80 s/d 300 Kohm jika terkena sinar inframerah tergantung dari besarnya intensitas yang mengenainya. Semakin besar intensitasnya, maka hambatannya semakin kecil.

VCC 5V 330k Poto dioda 4.7k C828 10k 1.0k Q2 2SA733 10k 2SC945 4.7k 1.0k 1.0k Q4 2SA733 10k 330 LED1 AT89S51

Pada rangkaian di atas, output dari photodioda diumpankan ke basis dari transistor tipa NPN C828, ini berarti untuk membuat transistor tersebut aktip maka tegangan yang keluar dari photodioda harus lebih besar dari 0,7 volt. Syarat ini akan terpenuhi jika photodioda mendapatkan sinar inframerah. Analisanya sebagai berikut: Jika tidak ada sinar inframerah yang mengenai photodioda, maka hambatan pada photodioda 15 Mohm, sehingga:

2 330.000 5 0,107 1 2 15.000.000 330.000 R Vo xVcc x Volt R R     

Vout akan diumpankan be basis dari transistor C828, karena tegangannya hanya 0,107 Volt maka transistor tidak aktif.

Jika ada sinar inframerah yang mengenai photodioda, maka hambatan pada photodioda 300 Kohm, sehingga:

2 330.000 5 2, 619 1 2 300.000 330.000 R Vo xVcc x Volt R R     

Vout akan diumpankan ke basis dari transistor C828, karena tegangannya lebih besar dari 0,7 volt yaitu 2,619 Volt maka transistor akan aktif.

Aktifnya transistor C828 akan menyebabkan kolektornya terhubung ke emitor, sehingga kolektor mandapat tegangan 0 volt dari ground, tegangan ini diumpankan ke basis dari transistor ke-2 tipe PNP A733, sehingga transistor ini juga aktif. Seterusnya aktifnya transistor A733 akan menyebabkan kolektornya terhubung ke emitor, sehingga kolektor mandapat tegangan 5 volt dari Vcc, tegangan ini diumpankan ke basis dari transistor ke-3 tipe NPN C945, sehingga transistor ini juga aktif.

Kolektor dari transistor C945 dihubungkan mikrokontroler AT89S52 sehingga jika transistor ini aktif, maka kolektor akan mendapatkan tegangan 0 volt dari ground. Tegangan 0 volt inilah yang merupakan sinyal low (0) yang diumpankan ke mikrokontroler AT89S52, sehingga mikrokontroler dapat mengetahui bahwa sensor ini mengirimkan sinyal, yang berarti bahwa sensor ini telah berada dekat dengan penghalang atau dinding.

Transistor ke-4 tipe PNP A733 berfungsi untuk menyalakan LED sebagai indikator bahwa sensor ini menerima pantulan sinar inframerah dari pemancar. LED ini akan menyala jika sensor menerima sinar inframerah, dan akan mati jika sensor tidak menerima sinar inframerah.

3.1.3. Rangkaian Pengendali Pergerakan Motor (Jembatan H)

Untuk dapat bergerak, maka robot harus dapat mengendalikan perputaran rodanya. Robot menggunakan 2 buah motor DC 6 volt untuk menggerakkan rodanya, dimana 1 motor untuk menggerakkan roda sebelah kanan dan 1 motor lagi untuk menggerakkan roda sebelah kiri.

Motor DC akan berputar searah/berlawanan arah dengan jarum jam jika salah satu kutubnya diberi tegangan positip dan kutub yang lainnya diberi tegangan negatip atau ground. Dan motor DC akan berputar kearah sebaliknya jika polaritasnya dibalik. Dengan sifat yang demikian maka dibutuhkan suatu rangkaian yang dapat membalikkan polaritas yang diberikan ke motor DC tersebut, sehingga perputaran motor DC dapat dikendalikan oleh rangkaian tersebut. Dan jika rangkaian tersebut

dihubungkan dengan mikrokontroler AT89S52, maka pergerakan motor dapat dikendalikan oleh program.

Rangkaian untuk mengendalikan perputaran motor DC tersebut adalah sebuah rangkaian yang dikenal dengan jembatan H. Jembatan H ini terdiri dari 4 buah transistor, dimana 2 buah transistor bertipe NPN dan 2 buah transistor lagi bertipe PNP. Ke-4 transistor ini dirangkai sedemikian rupa sehingga dengan memberikan sinyal low atau high pada rangkaian maka perputaran motor dapat diatur.

Untuk perintah maju, maka robot akan memutar maju kedua motor, motor kanan dan kiri. Untuk perintah mundur, maka robot akan memutar mundur kedua motor. Sedangkan untuk memutar/berbelok kekanan, maka robot akan memutar maju motor sebelah kiri dan memutar mundur motor sebelah kanan, sehingga dengan demikian maka robot akan memutar/berbelok kearah kanan. Hal sebaliknya dilakukan jika robot berputar ke sebelah kiri. Rangkaian jembatan H, ditunjukkan pada gambar di bawah ini:

Gambar 3.4. Rangkaian jembatan H

Pada rangkaian di atas, jika P2.6 diset high yang berarti P2.6 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 TIP 127 sehingga basis dari transistor TIP 127 mendapatkan tegangan 0 volt yang menyebabkan transistor ini aktif (transistor tipe PNP akan aktif jika tegangan pada basis lebih kecil dari 4,34 volt). Aktifnya transistor PNP TIP 127 ini akan mengakibatkan 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 TIP 122 sehingga basis dari transistor TIP 122 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 TIP 122 ini tidak aktif, maka kolektornya tidak terhubung ke emitor, sehingga kolektor tidak mendapatkan tegangan 0 volt dari ground.

Karena kolektor TIP 122 dihubungkan dengan kolektor TIP 127 yang mendapatkan teganagan 5 volt dari Vcc, maka kolektor dari TIP 122 juga mendapatkan tegangan yang sama. Hal ini menyebabkan kaki motor sebelah kiri mendapatkan tegangan 5 volt (polaritas positip).

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

Pada rangkaian di atas, jika P2.7 diset low yang berarti P2.7 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 TIP 127 sehingga basis dari transistor TIP 127 mendapatkan tegangan 5 volt yang menyebabkan transistor ini tidak aktip Karena transistor PNP TIP 127 tidak aktif maka kolektornya tidak terhubung ke emitor sehingga kolektor tidak mendapatkan tegangan 5 volt dari Vcc, tetapi mendapatkan tegangan yang berasal dari transistor TIP 122 yang berada di bawahnya.

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

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

2200uF

5 Volt DC

0 Volt 6,2 Volt DC

6.2 V

3.1.4. Rangkaian Catu Daya (PSA)

Rangkaian catu daya ini berfungsi untuk mensuplay tegangan ke seluruh rangkaian. Rangkaian ini terdiri dari sebuah baterei 6 volt yang di serikan dengan dua buah dioda. Untuk menembus 1 buah dioda diperlukan tegangan sebesar 0,6 volt, sehingga untuk menembus 2 buah dioda diperlukan tegangan sekitar 1,2 volt, sehingga output dari rangkaian ini sekitar 4,8 volt sampai 5,0 volt. Kemudian dipasang sebuah kapasitor untuk menyimpan arus, sehingga jika tiba-tiba mikrokontroler membutuhkan arus besar, maka arus tersebut dapat disupplay oleh kapasitor ini. Rangkaian catu daya ditunjukkan oleh gambar berikut ini :

Gambar 3.5 Rangkaian catu daya

Pada rangkaian ini terdapat 2 buah keluaran, yaitu 5 volt dan 6 volt. Keluaran 5 volt dibutuhkan oleh mikrokontroler, penguat sinyal dan rangkaian sensor, sedangkan 6 volt dibutuhkan untuk rangkaian jembatan H ( pengendali motor ).

3.2 Perangkat Lunak

3.2.1. Bahasa Assembly MCS-51

Bahasa yang digunakan untuk memprogram IC mikrokontroler AT89S52 adalah bahasa assembly untuk MCS-51. angka 51 merupakan jumlah instruksi pada bahasa ini hanya ada 51 instruksi. Dari 51 instruksi, yang sering digunakan orang hanya 10 instruksi. Instruksi –instruksi tersebut antara lain :

1. Instruksi MOV

Perintah ini merupakan perintah untuk mengisikan nilai ke alamat atau register tertentu. Pengisian nilai dapat secara langsung atau tidak langsung.

Contoh pengisian nilai secara langsung

MOV R0,#20h

Perintah di atas berarti : isikan nilai 20 Heksadesimal ke register 0 (R0). Tanda # sebelum bilangan menunjukkan bahwa bilangan tersebut adalah nilai. Contoh pengisian nilai secara tidak langsung

MOV 20h,#80h

...

...

MOV R0,20h

Perintah di atas berarti : isikan nilai yang terdapat pada alamat 20 Heksadesimal ke register 0 (R0).

Tanpa tanda # sebelum bilangan menunjukkan bahwa bilangan tersebut adalah alamat.

2. Instruksi DJNZ

Decreament Jump If Not Zero (DJNZ) ini merupakan perintah untuk mengurangi nilai register tertentu dengan 1 dan lompat jika hasil pengurangannya belum nol. Contoh ,

MOV R0,#80h

Loop: ...

...

DJNZ R0,Loop

...

R0 - 1, jika belum 0 lompat ke loop, jika R0 = 0 maka program akan meneruskan ke perintah pada baris berikutnya.

3. Instruksi ACALL

Instruksi ini berfungsi untuk memanggil suatu rutin tertentu. Contoh : ... ACALL TUNDA ... TUNDA: ... 4. Instruksi RET

Instruksi RETURN (RET) ini merupakan perintah untuk kembali ke rutin pemanggil setelah instruksi ACALL dilaksanakan.

Contoh, ACALL TUNDA ... TUNDA: ... RET 5. Instruksi JMP (Jump)

Instruksi ini merupakan perintah untuk lompat ke alamat tertentu. Contoh,

Loop:

...

...

JMP Loop

6. Instruksi JB (Jump if bit)

Instruksi ini merupakan perintah untuk lompat ke alamat tertentu, jika pin yang dimaksud berlogika high (1).

Contoh,

Loop:

JB P1.0,Loop

...

7. Instruksi JNB (Jump if Not bit)

Instruksi ini merupakan perintah untuk lompat ke alamat tertentu, jika pin yang dimaksud berlogika Low (0).

Contoh,

Loop:

JNB P1.0,Loop

...

8. Instruksi CJNZ (Compare Jump If Not Equal)

Instruksi ini berfungsi untuk membandingkan nilai dalam suatu register dengan suatu nilai tertentu.

Contoh,

Loop:

...

CJNE R0,#20h,Loop

...

Jika nilai R0 tidak sama dengan 20h, maka program akan lompat ke rutin Loop. Jika nilai R0 sama dengan 20h,maka program akan melanjutkan instruksi selanjutnya..

9. Instruksi DEC (Decreament)

Instruksi ini merupakan perintah untuk mengurangi nilai register yang dimaksud dengan 1. Contoh, MOV R0,#20h R0 = 20h ... DEC R0 R0 = R0 – 1 ...

10.Instruksi INC (Increament)

Instruksi ini merupakan perintah untuk menambahkan nilai register yang dimaksud dengan 1. Contoh,

MOV R0,#20h R0 = 20h

...

INC R0 R0 = R0 + 1

...

11.Dan lain sebagainya

3.2.2. Software 8051 Editor, Assembler, Simulator (IDE)

Instruksi-instruksi yang merupakan bahasa assembly tersebut dituliskan pada sebuah editor, yaitu 8051 Editor, Assembler, Simulator (IDE). Tampilannya seperti di bawah ini.

Setelah program selesai ditulis, kemudian di-save dan kemudian di-Assemble (di-compile). Pada saat di-assemble akan tampil pesan peringatan dan kesalahan. Jika masih ada kesalahan atau peringatan, itu berarti ada kesalahan dalam penulisan perintah atau ada nama subrutin yang sama, sehingga harus diperbaiki terlebih dahulu sampai tidak ada pesan kesalahan lagi.

Software 8051IDE ini berfungsi untuk merubah program yang kita tuliskan ke dalam bilangan heksadesimal, proses perubahan ini terjadi pada saat peng-compile-an. Bilangan heksadesimal inilah yang akan dikirimkan ke mikrokontroller.

3.2.3. Software Downloader

Untuk mengirimkan bilangan-bilangan heksadesimal ini ke mikrokontroler digunakan software ISP- Flash Programmer 3.0a yang dapat didownload dari internet. Tampilannya seperti gambar berikut ini:

Cara menggunakannya adalah dengan meng-klik Open File untuk mengambil file heksadesimal dari hasil kompilasi 8051IDE, kemudian klik Write untuk mengisikan hasil kompilasi tersebut ke mikrokontroller.

3.2.4. Perancangan Program

Robot ini dirancang untuk mendeteksi adanya dinding, mendekatinya, kemudian meghindarinya. Diagram alir dari program yang akan dibuat adalah:

Program diawali dengan pengecekan logika pada sensor dinding, kemudian robot akan berjalan secara acak. Saat sensor dinding samping kanan atau kiri aktif, maka sensor akan memberi informasi kepada mikrokontroler tentang keberadaan dinding. Kemudian mikrokontroler memberikan perintah untuk mengarahkan robot untuk menghindari dinding dengan cara belok kanan atau kiri. Tetapi ketika sensor tidak aktif, robot akan maju dan berjalan kembali secara acak..

Program yang dibuat adalah sebagai berikut: motor_kanan1 bit p0.0 motor_kanan2 bit p0.1 motor_kiri1 bit p0.2 motor_kiri2 bit p0.3 tames: jb p2.1,a acall kiri sjmp tames a: jb p2.3,b acall kiri sjmp tames b: jb p2.4,c acall kiri sjmp tames c: jb p2.7,d acall kanan sjmp tames d: jb p2.6,e acall kanan sjmp tames e: jb p2.5,f acall kanan sjmp tames f: acall maju sjmp tames

maju: setb motor_kiri1 clr motor_kiri2 setb motor_kanan1 clr motor_kanan2 mov r7,#150 djnz r7,$ acall mati ret mati: clr motor_kanan1 clr motor_kanan2 clr motor_kiri1 clr motor_kiri2 mov r7,#50 djnz r7,$ ret kanan: mov r6,#5 ka: mov r5,#1 belok_kanan: setb motor_kiri1 clr motor_kiri2 clr motor_kanan1 setb motor_kanan2 mov r7,#255 djnz r7,$ acall mati_untuk_belok djnz r5,belok_kanan djnz r6,ka ret kiri: mov r6,#5 ki: mov r5,#1 belok_kiri: clr motor_kiri1 setb motor_kiri2 setb motor_kanan1 clr motor_kanan2 mov r7,#255 djnz r7,$ acall mati_untuk_belok djnz r5,belok_kiri djnz r6,ki ret

mati_untuk_belok: clr motor_kanan1 clr motor_kanan2 clr motor_kiri1 clr motor_kiri2 mov r7,#2 djnz r7,$ ret

Dokumen terkait