ROBOTIK
Disusun Oleh :
SUYATNO BUDIHARJO
Modul 1
Hardware dan Perakitan Robot
Tujuan Pembelajaran :
Menjadi familiar dengan hardware Robot
- Mekanik :
- Motor
- Roda
- Sistem Gear
- Elektronik :
- Sensor
- Power Supply
– Kabel Serial
Deskripsi :
Sebuah Robot dapat dibangun baik secara utuh maupun sebagian yang menyerupai
makhluk seperti manusia atau binatang, baik dari bentuk maupun perilaku atau cara
berjalan / bergerak. Berbeda dengan makhluk, baru dikatakan manusia jika
mempunyai sebagian besar organ tubuh, namun robot dapat hanya berupa lengan
sehingga disebut Robot Lengan. Semakin lengkap sebuah Robot, maka semakin
banyak komponen yang diperlukan sehingga diperlukan untuk menginventarisasi
kebutuhan untuk membangun sebuah Robot. Dalam hal ini, tentu berbeda
kebutuhan untuk membangun sebuah robot yang satu dengan yang lainnya.
Sehingga perlu mengenal komponen utama sebuah Robot yang dibagi dalam dua
kelompok yaitu komponen Mekanik dan komponen Elektronik. Keduanya dapat
digabungkan menjadi sebuah istilah Mekatronik. Komponen Mekanik diperlukan
sebuah Robot untuk berperilaku yaitu bergerak atau berjalan, menggerakkan lengan,
sedangkan komponen elektronika diperlukan sebuah Robot untuk berpikir (Logika)
dalam hal ini sebagai otaknya Robot atau CPU-nya Robot dapat menggunakan
Mikroprocessor atau Mikrokontroler seperti keluarga ATMEL AT89Sxx , AT89Cxx
atau keluarga PIC16Fxx yang masing-masing mempunyai kelebihan dan
kekurangan, merespon rangsangan atau membangkitkan sinyal (Power Supply) atau
mengirim menerima sinyal (Tx-Rx Sensor), komponen untuk driver Motor sebagai
tenaga penggerak Lengan / Kaki. Motor yang dapat digunakan untuk tenaga
penggerak Robot antara lain : Motor DC, Motor DC dengan Gear, Motor Stepper,
Motor Stepper dengan Gear. Motor merupakan komponen yang berotasi dan
membangkitkan gerakan. Motor dirancang untuk mengkonversi energi listrik mwnjadi
energi mekanik untuk membentuk beberapa pekerjaan fisik.
Motor DC
Motor DC mempunyai karakteristik yang berbeda dengan motor stepper, dimana
putaran yang dihasilkan oleh motor DC dapat beberapa kali putaran dengan catuan
power DC, biasanya 10 s/d 24 Vdc sesuai dengan tenaga yang dihasilkan. Biasanya
motor DC digunakan sebagai penggerak Robot untuk sistem Roda (Mobil).
Sedangkan Motor Stepper digunakan untuk penggerak Robot yang tidak
memerlukan putaran penuh, seperti untuk kontrol Robot Lengan atau Robot kaki.
Namun dapat diprogram untuk melakukan revolusi sesuai dengan kebutuhan
sehingga akan lebih fleksibel dibandingkan dengan Motor DC. Dalam prakteknya
diperlukan mekanisme untuk mengendalikan putaran motor, baik ke depan atau ke
belakang, cepat atau lambat, lama atau sebentar.
Tabel Kebenaran dari komponen L293D adalah sebagai berikut :
Sensor :
Sensor merupakan bagian yang cukup penting didalam kontrol Robot terutama untuk
Robot Autonomous. Berbeda dengan kontrol Robot Manual yang digerakkan dengan
campur tangan manusia melalui PC atau Keypad atau juga Remote Control. Sensor
berfungsi sebagai pengindera Robot. Robot dapat berjalan mengikuti Jalur dengan
dibimbing oleh Sensor. Robot dapat berjalan mendekati sumber api jika
menggunakan sensor suhu untuk bergerak.
Sebagai contoh untuk rangkaian sensor IR adalah sebagai berikut :
Power Supply
Sebagai sumber tenaga penggerak atau power supply bagi Robot dapat
menggunakan sumber dari batterai atau adaptor. Dan biasanya power supply
tersebut memer rangkaian Regulator untuk mengatur voltase atau tegangan
keluaran sesuai kebutuhan. Pada dasarnya setiap komponen atau rangkaian
memerlukan catuan daya, yang terkadang besarannya berbeda, seperti untuk
Mikrokontroler memerlukan catuan sebesar 5 - 9 Volt, sedangkan untuk Motor
memerlukan 10 – 24 Volt. Sehingga dalam prakteknya sumber catuannya
dibedakan untuk kedua komponen diatas. Rangkaian untuk Regulator power supply
adalah sebagai berikut :
Aktifitas :
1. Inventarisasi
- mengidentifikasi dan menginventarisasi bagian-bagian robot sesuai fungsi dan
penggunaannya.
2. Perakitan
- merakit robot dari bagian-bagiannya menjadi sebuah robot yang siap beraksi
3. Verifikasi Perakitan
- Inspeksi secara visual rangkaian mekanik sesuai fungsinya
- Inspeksi koneksi elektronik secara visual
4. Melakukan pengukuran setiap bagian-bagian dari Robot
5. Menganalisa Data hasil Pengukuran
Modul 2
Pemrograman dan Testing Mikrokontroler
Tujuan Pembelajaran
1. Mengerti dan memahami pemrograman Hardware Mik
2. Mengenal dan dapat menggunakan perangkat Downloader
3. Dapat membuat program Assembler
4. Dapat mengkompilasi program Assembler
5. Menjadi familiar dengan pembangunan dan downloading program
Dasar Mikrokontroler
Mikrokontroler adalah Central Processing Unit (CPU) yang disertai dengan memori
serta sarana input/outout dan dibuat dalam bentuk chip tunggal.
ADD A, @Ri
ADD A, #data
ADDC
ADDC A, Rn
Tambahkan Akumulator A dengan Rn dimana n = 0,1,2,...7 dan simpan hasilnya di
Akumulator A.
Contoh:
Addc A,R7
Isi dari R7 akan ditambahkan dengan akumulator A beserta carry flag dan hasilnya
disimpan di Akumulator A. Apabila carry flag set maka hasil yang tersimpan di
Akumulator A adalah A + R7 + 1.
ADDC A, direct
Tambahkan Akumulator A dan carry flag dengan data di alamat memori tertentu
secara langsung.
Contoh:
Addc A,00H
Isi dari Akumulator A akan ditambahkan dengan isi dari memori RAM Internal di
alamat 00H beserta carry flag dan hasilnya disimpan di Akumulator A, Apabila carry
flag set maka hasil yang tersimpan di Akumulator A adalah A + isi alamat 00H + 1
ADDC A, @Ri
Tambahkan Akumulator A beserta carry flag dengan data yang berada di alamat Ri
(ditunjuk oleh Ri) dan hasilnya disimpan di Akumulator A. Ri adalah Register Index di
mana pada MCS51 adalah berupa R0 atau R1
Contoh:
Add A,@R0
Isi dari Akumulator A beserta carry flag akan ditambahkan dengan isi dari memori
RAM Internal yang ditunjuk oleh R0. Apabila R0 berisi 05H maka, isi dari alamat 05H
akan dijumlahkan dengan Akumulator A beserta carry flag dan hasilnya disimpan di
Akumulator A.
ADDC A, #data
Tambahkan Akumulator A beserta carry flag dengan sebuah konstanta dan hasilnya
disimpan dalam akumulator A.
Contoh :
Addc A,#05H
Isi Akumulator A beserta carry flag ditambah dengan data 05H dan hasilnya
disimpan dalam Akumulator A. Apabila carry flag set maka hasil di Akumulator A
adalah A + 5H + 1.
SUBB
SUBB A, Rn
Lakukan pengurangan data di Akumulator A dengan Rn (n = 0&7) dan simpan
hasilnya di Akumulator A
Contoh:
Subb A,R0
Data di akumulator A beserta carry flagnya dikurangi dengan isi R0 dan hasilnya
disimpan di Akumulator A
SUBB A, direct
Lakukan pengurangan data di Akumulator A dengan data di memori tertentu yang
ditunjuk secara langsung.
Contoh:
Subb A,00H
Data di Akumulator A beserta carry flagnya dikurangi dengan data di alamat 00H dari
RAM Internal dan hasilnya disimpan di Akumulator A.
SUBB A, @Ri
Lakukan pengurangan data di Akumulator A beserta carry flag dengan data yang
ditunjuk oleh Ri (Register Index) di mana Ri dapat berupa R0 atau R1
Contoh:
Subb A,@R0
Data di Akumulator A beserta carry flagnya dikurangi dengan data yang ditunjuk oleh
R0 dan hasilnya disimpan di Akumulator A.
SUBB A, #data
Lakukan pengurangan data di Akumulator A beserta carry flag dengan sebuah
konstanta dan hasilnya disimpan di Akumulator A
Contoh:
Subb A,#05H
Data di Akumulator A beserta carry flag dikurangi dengan data 05H dan hasilnya
disimpan di Akumulator A
INC
INC A
Tambahkan nilai Akumulator A dengan 1 dan hasilnya disimpan di Akumulator A.
INC Rn
Tambahkan nilai Rn (n= 0,..,7) dengan 1 dan hasilnya disimpan di Rn tersebut.
INC direct
Tambahkan data yang di RAM Internal yang alamatnya ditunjuk secara langsung
dengan 1 dan hasilnya disimpan di alamat tersebut.
Contoh:
Inc 00H
Data di alamat 00H ditambah dengan 1 dan hasilnya disimpan di alamat 00H.
INC @Ri
Tambahkan data yang alamatnya ditunjuk oleh Ri (Register Index) dengan 1 dan
simpan hasilnya di alamat tersebut.
Contoh:
Inc @R1
Data di alamat yang ditunjuk oleh R1 dan hasilnya disimpan di alamat tersebut,
apabila R1 berisi 10H maka data di alamat 10H ditambah dengan 1 dan simpan
kembali di alamat 10H.
INC DPTR
Tambahkan nilai DPTR dengan 1 dan simpan hasilnya di DPTR.
Kebalikan dari proses increment atau penambahan dengan 1 adalah decrement atau
pengurangan dengan 1 menggunakan perintah DEC. Dengan format dan aturan
perintah seperti perintah INC.
MUL AB
Lakukan perkalian antara Akumulator A dan Register B, hasil dari perkalian disimpan
di Akumulator A, untuk byte rendah dan di Register B untuk byte tinggi. Bila hasil
perkalian lebih dari 255 (0FFH) maka flag overflow akan set, sedangkan carry akan
selalu clear.
Contoh:
Mov A,#50H
Mov B,#0A0H
Mul AB
Hasil perkalian dari 50H atau 80 desimal dengan 0A0H atau 160 desimal adalah
3200H atau 12800, maka nilai yang disimpan di Akumulator A adalah 00H dan di
Register B adalah 32H. Sedangkan Flag Overflow akan set karena hasil dari
perkalian lebih besar daripada 255 atau (0FFH)
DIV AB
Lakukan pembagian antara Akumulator A dan Register B, hasil dari pembagian akan
disimpan di akumulator A dan sisa pembagian disimpan di Register B. Flag Overflow
dan Carry akan selalu clear Flag Overflow akan set apabila isi dari Register B adalah
00 di mana hal ini menandakan bahwa proses pembagian tidak mungkin dilakukan
karena hasil pembagian antara suatu bilangan dengan 0 adalah tidak berhingga.
Contoh:
Mov A,#0FB
Mov B,#12H
Div AB
Hasil dari pembagian ini adalah 0DH dengan sisa 11H, maka 0DH akan tersimpan di
Akumulator A sebagai hasil bagi dan 11H tersimpan di Register B sebagai sisa bagi.
DA A
Mengubah data di Akumulator A menjadi bentuk BCD. Instruksi ini akan mengubah
sebuah 8 bit data pada Akumulator A dalam bentuk hexa menjadi 2 digit di mana
digit pertama pada nibble atas berupa bit 7&4 dari Akumulator A dan digit kedua
adalah nibble bawah berupa bit 3&0 dari Akumulator A. Pada dasarnya instruksi ini
akan menambahkan 6 apabila nibble rendah berada di atas 9 atau bit AC set dan
menambahkan 6 apabila nibble tinggi berada di atas 9 atau bit Carry Set. Instruksi ini
biasa digunakan sesudah instruksi ADD.
Contoh 1:
Add A,#88H
DA A
Nilai akumulator A sebelumnya adalah 99H, hasil penjumlahan 99H dan 88H adalah
21H dengan bit AC set dan Carry set karena hasil penjumlahan 9 dan 8 baik di
nibble tinggi maupun nibble rendah adalah lebih besar dari 9. Karena bit AC set dan
bit carry set maka hasil penjumlahan kedua nibble tersebut masing-masing ditambah
6 dan menghasilkan 87H dengan carry flag set.
Contoh 2:
Add A,#02H
DA A
Nilai Akumulator A sebelumnya adalah 79H, hasil penjumlahan dengan 02H adalah
7BH dengan bit AC set karena hasil penjumlahan pada nibble rendah lebih besar
dari 9 dan setelah melewati instruksi DA A, maka 7BH akan ditambah dengan 6H
sehingga menjadi 81H.
Intinya, apabila kondisi:
– Bit AC set, Bit Carry clear = Akumulator A ditambah 06H
– Bit AC clear, Bit Carry clear = Akumulator A ditambah 00H
Operasi Logika
ANL
Melakukan operasi AND antara dua buah variabel dan menyimpannya di variabel
tujuan. Apabila variabel tujuan adalah akumulator, maka variabel yang lain dapat
menggunakan register (Rn), alamat langsung, tak langsung atau immediate data,
apabila variabel tujuan adalah alamat langsung, maka variabel yang lain dapat
menggunakan akumulator atau immediate data.
ANL A, Rn
Melakukan operasi AND antara akumulator A dan Rn (R0,...,R7) dan hasilnya
disimpan di akumulator A.
ANL A, direct
Melakukan operasi AND antara akumulator A dan alamat langsung dan hasilnya
disimpan di akumulator A.
Contoh:
ANL A,05H
Akumulator A di AND dengan data di alamat 05H dan hasilnya disimpan di
akumulator A.
ANL A, @Ri
Melakukan operasi AND antara akumulator A dan data yang ditunjuk oleh Register
Index (R0 atau R1) serta hasilnya disimpan di akumulator A.
Contoh:
ANL A,@R0
Akumulator A di AND dengan data yang ditunjuk oleh R0, misalkan R0 berisi 50H,
maka akumulator A di AND dengan data yang tersimpan di alamat 50H dan hasilnya
disimpan di akumulator A.
ANL A, #data
Melakukan operasi AND antara akumulator A dan immediate data serta hasilnya
disimpan di akumulator A.
ANL direct,A
Melakukan operasi AND antara alamat langsung dengan akumulator A serta
hasilnya disimpan di alamat langsung tersebut.
Contoh:
ANL 07H,A
Data di alamat 07H di AND dengan akumulator A dan hasilnya kembali disimpan di
alamat 07H.
ORL
Melakukan operasi OR antara dua buah variabel dan menyimpannya di variabel
tujuan. Apabila variabel tujuan adalah akumulator, maka variabel yang lain dapat
menggunakan register (Rn), alamat langsung, tak langsung atau immediate data,
apabila variabel tujuan adalah alamat langsung, maka variabel yang lain dapat
menggunakan akumulator atau immediate data.
ORL A,Rn
Melakukan operasi OR antara akumulator A dan Rn (R0,...,R7) dan hasilnya
disimpan di akumulator A.
ORL A,direct
Melakukan operasi OR antara akumulator A dan alamat langsung dan hasilnya
disimpan di akumulator A.
Contoh:
ORL A,05H
Akumulator A di OR dengan data di alamat 05H dan hasilnya disimpan di akumulator
A.
ORL A,@Ri
Melakukan operasi OR antara akumulator A dan data yang ditunjuk oleh Register
Index (R0 atau R1) serta hasilnya disimpan di akumulator A.
Contoh:
ORL A,@R0
Akumulator A di OR dengan data yang ditunjuk oleh R0, misalkan R0 berisi 50H,
maka akumulator A di OR dengan data yang tersimpan di alamat 50H dan hasilnya
disimpan di akumulator A.
ORL A,#data
Melakukan operasi OR antara akumulator A dan immediate data serta hasilnya
disimpan di akumulator A.
ORL direct,A
Melakukan operasi OR antara alamat langsung dengan akumulator A serta hasilnya
disimpan di alamat langsung tersebut.
Contoh:
ORL 07H,A
Data di alamat 07H di OR dengan akumulator A dan hasilnya kembali disimpan di
alamat 07H.
ORL direct,#data
Melakukan operasi OR antara akumulator A dan immediate data serta hasilnya
disimpan di akumulator A
XRL
Melakukan operasi EXOR antara dua buah variabel dan menyimpannya di variabel
tujuan. Apabila variabel tujuan adalah akumulator, maka variabel yang lain dapat
menggunakan register (Rn), alamat langsung, tak langsung atau immediate data,
apabila variabel tujuan adalah alamat langsung, maka variabel yang lain dapat
menggunakan akumulator atau immediate data.
XRL A,Rn
Melakukan operasi EXOR antara akumulator A dan Rn (R0,...,R7) dan hasilnya
disimpan di akumulator A.
XRL A,direct
Melakukan operasi EXOR antara akumulator A dan alamat langsung dan hasilnya
disimpan di akumulator A.
Contoh:
XRL A,05H
Akumulator A di EXOR dengan data di alamat 05H dan hasilnya disimpan di
akumulator A.
CJNE @Ri,#data,rel
Melakukan perbandingan antara data yang terletak pada alamat yang ditunjuk oleh
Register Index (R0 atau R1) dan data immediate serta melakukan lompatan ke
alamat yang ditentukan apabila hasil perbandingan tidak sama.
Contoh:
CJNE @R1,#00H,lompat1
Program akan menuju ke alamat lompat 1 apabila data di alamat yang ditunjuk oleh
R1 tidak sama dengan data 00H.
NOP
Instruksi ini berfungsi untuk melakukan tundaan pada program sebesar 1 cycle tanpa
mempengaruhi register-register maupun flag.
Pada gambar tersebut terdapat dua buah Chip Mikrokontroler. Chip Mikrokontroler
yang pertama adalah IC Master dari Mikrokontroler yang sudah diisi dengan program
EZ52.hex, sedangkan IC yang kedua adalah IC Slave dari Mikrokontroler yang akan
diisi oleh program Obyek. Pengisian IC Mikrokontroler Master dapat dilakukan di
toko yang menyediakan fasilitas pengisian Mikrokontroler.
5. Lakukan scan port terlebih dahulu jika Com-nya belum terdeteksi. Jika sudah
terdeteksi, tekan COM yang terdeteksi, misalnya COM1. Setelah itu tunggu
sampai muncul tulisan pesan ...identify your chip. Selanjutnya, tekan Send
Hexfile dari layar program EZ3.exe, lalu pilih file .hex yang akan dimasukkan
ke IC Slave Mikrokontroler.
6. Program EZ.exe akan melakukan proses penghapusan, penulisan dan
verifikasi data. Jika tulisan Complete sudah muncul, berarti program .hex
sudah masuk ke dalam IC slave.
7. Sebelum mengambil IC Slave dari socket, matikan terlebih dahulu power
supply untuk mrnghindari kerusakan IC Slave.
8. IC Slave mikrokontroler siap digunakan.
Ketik listing program pada MsDOS Editor, lalu simpan sebagai (Save As) dan
simpan file tersebut di lokasi folder yang telah ditunjuk misalkan pada folder
c:\asm. Ketik nama file dari program misalkan led.asm.
Jalankan MsDOS Prompt. MsDOS Prompt dapat dijalankan dari menu Start |
Programs | MsDOS Prompt atau dapat juga melalui menu Start | Run, lalu
ketik cmd, kemudian klik OK.
Tunjuk nama folder dari file led.asm, yaitu c:\asm. Saat menjalankan program
MsDOS Prompt, awalnya akan menunjuk ke default direktori tertentu. Oleh
sebab itu pindahkan lokasi cursor ke folder c:\asm, dengan cara ketik cd
(spasi) c:\asm [Enter]
Program pequi.exe
● Klik Load pada taskbar Pequi, lalu klik namafile.hex, lalu klik Open.
● Untuk menjalankan program pequi secara manual atau step demi step, klik
tombol Step. Setiap kali anda mengklik Step, akan terlihat jalannya instruksi
program yang telah dibuat.
● Langkah lain untuk menjalankan program pequi secara otomatis adalah
dengan mengklik tombol Run. Untuk mengubah kecepatan jalannya program,
Anda dapat membuka menu Setting dari menu Options | Speed, lalu klik High
atau Medium atau Low.
Konfigurasi Speed
● Bila ingin menghentikan jalannya program, klik tombol Stop. Bila ingin
mengulangi jalannyaprogram dari awal, klik Reset.
Proses perancangan software tahap demi tahap perlu dilakukan, termasuk membuat
diagram alir yang merupakan alur atau langkah-langkah dari program yang akan
dibuat, dengan demikian akan lebih jelas dan mudah untuk melihat cara kerja dari
program.
Sebagai contoh pembuatan Program LED untuk menyalakan dan mematikan led.
Dalam contoh ini dimisalkan bahwa Led1 terhubung dengan alamat register P1.4
dan led 2 tersambung dengan alamat port P1.6. Fungsi led digunakan untuk
mengecek program apakah sudah berjalan sesuai dengan yang diinginkan, sebelum
port tersebut disambung dengan rangkaian elektronik yang lainnya yang merupakan
bagian dari robot.
Contoh Program *.asm :
;=====================================================
; Listing program led
; menyalakan dan mematikan led dengan delai 1 detik
;=====================================================
Org 00H
;=====================================================
; led pada P1.4 dan P1.6 nyala dan mati secara
; ber samaan
;=====================================================
Led_sama:
Clr P1.4 ; led1 nyala
Clr P1.6 ; led2 nyala
Acall delai_1s
Setb P1.4 ; led1 mati
Setb P1.6 ; led2 mati
Acall delai_1s
;=====================================================
; led pada P1.4 dan P1.6 nyala dan mati secara
; bergantian
;=====================================================
Led_ganti:
Clr P1.4 ; led1 nyala
Setb P1.6 ; led2 mati
Acall delai_1s
Setb P1.4 ; led1 mati
Clr P1.6 ; led2 nyala
Ajmp selesai
Delai_1s:
Mov r1,#8 ; pindahkan data 8 ke alamat r1
Loop1:
Mov r2,#250 ; pindahkan data 250 ke alamat r2
Loop2:
Mov r3,#250 ; pindahkan data 250 ke alamat r3
Loop3:
Djnz r3,loop3
Djnz r2,loop2
Djnz r1,loop1
ret
Selesai:
End