BAB I PENDAHULUAN
1.1
Pendahuluan Man-Machine Interface (MMI) adalah kebutuhan standar di dunia industri
manufaktur. Perangkat teknologi informasi dan komunikasi yang membangun MMI berfungsi sebagai penghubung antara manusia dan mesin-mesin yang menjalankan proses industri yang kompleks. MMI adalah bagian utama dari sistem-sistem teknologi kendali proses (Process Control Technology) di dunia industri manufaktur.
Pengendalian (Control)
MMI PROSES INDUSTRI (INDUSTRIAL PROCESSES)
1.2
Pemantauan (Monitoring and Data Acquisition)
Tujuan o Mengetahui cara kerja Servo Motor DC type ED-4400 serta dapat merangkainya membentuk sistem pengontrolan kecepatan motor loop tertutup.
Tugas MicroControl MMI Server
o Mengetahui cara kerja modul mikroprosesor trainer SK-8051 dan dapat menggunakannya
sebagai
antarmuka
dengan
PC
dalam
sistem
pengontrolan kecepatan motor o Mengetahui aplikasi bahasa pemrograman Borland Delphi dalam penggunaannya sebagai software MMI o Mampu membuat aplikasi PC Client-Server dengan software MMI untuk pengontrolan kecepatan motor. o Mampu membuat sistem pengendalian MMI Motor Servo DC 1.3
Batasan masalah o Pengontrolan yang dilakukan dalam praktikum ini hanya pengontrolan kecepatan motor bukan pengontrolan posisi motor
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 1
pada
Tugas MicroControl MMI Server
BAB II TINJAUAN PUSTAKA
2.1
Mikroprosesor Trainer SK-8051 Dalam perencanaan suatu sistem rangkaian elektronik, langkah teknis yang
dilakukan pertama ádalah menggambarkan seluruh sistem dalam blok diagram. Dari blok diagram, dapat diketahui bagaimana prinsip kerja umum dan hubungan antara sub blok yang satu dengan yang lain dalam bentuk sistem kerja yang terpadu. Blok diagram merupakan media penerjemahan pertama tentang bagaimana mempelajari kelakuan sistem. Rangkaian kontrol elektronik dengan memberikan penekanan pada kata kontrol mempunyai arti yang lebih aplikatif, bahwa rangkaian itu digunakan sebagai alat untuk sistem pengontrol. Fenomena sistem control dalam pengertian keteknikan bermakna statu sistem yang mempunyai piranti penerima data-data dari sistem yang dikontrol, sedangkan piranti output berfungsi sebagai pemberi aksi lepada sistem yang dikontrol. Sebuah mikrokomputer ádalah sebuah perangkat yang sangat kompleks dan serba guna. Dimana sistem yang digunakan ádalah sebuah mikroprosesor sebagai eemen utama yang mempunyai kemampuan sebagai CPU (Central Processing Unit). Mikroprosesor bersifat dapat diprogram (Programable) sehingga dapat menggunakan perangkat keras (hardware) yang sama atau hampir sama dapat
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 2
Tugas MicroControl MMI Server
diperoleh dan dibuat beberapa fungsi yang berbeda hanya dengan mengganti atau merubah programnya. SK-8051 merupakan suatu modul yang dapat digunakan untuk mempelajari sistem mikroprosesor yang dilengkapi dengan beberapa peripheral tambahan. Bagian-bagian dari modul SK-8051 adalah : 1. LCD dengan 16 character x 2 baris 2. Eksternal ROM-32KByte, eksternal RAM-32KByte 3. Keypad model Built-in dan program monitor serial RS-232C 4. Program dapat dieksekusi pada eksternal RAM 5. PPI 8255 6. 3 Warna dot matriks 7. Speaker interface 8. 8 Channel Analog/Digital Converter 9. 12 Volt DC, 1A bipolar untuk mengerakkan motor 10. 8 bit FND set yang mengindikasikan 16 antilogaritma 11. 16 bit counter/timer 8253 12. Pin-pin chek counter timer dan A/D Converter 13. Fungsi satu langkah internal/eksternal memory dump, modifikasi data 14. AT89C51 12 V. Programming/Blank Chek 15. Terminal percobaal eksternal untuk P1 dan led display 16. 8 bit Port input inverted buffer, tombol tekan 8 buah 17. 8 bit port output : inverted match 8 buah 18. Select Pin (eks/in) untuk mengantikan fungsi fungsi int/eks ROM 19. Select Pin (ROM/RAM) 20. Ground 21. Power Suplí : 110~220V AC input DC ±12V/ +5V
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 3
Tugas MicroControl MMI Server
Gambar 2.1 Tata letak komponen dalam modul SK-8051 Tabel 2.1 Peta alamat SK-8051 ALAMAT 0000 – 7FFF 8000 – FEFF FF00 – FFFF
DESKRIPSI KETERANGAN ROM PROGRAM MEMORY RAM PROGRAM MEMORY + DATA MEMORY I/O I/O
Tabel 2.2 Peta alamat I/O SK-8051 ALAMAT DEFENISI KETERANGAN FF00 LCD_CMD LCD FF01 LCD_DATA FF10 KEYPAD INPUT BUFFER 8 BIT UNTUK KEYPAD FF20 EXT_A FF21 EXT_B 8255 UNTUK EKSTERNAL FF22 EXT_C FF23 EXT_CMD OUTPUT LATCH 8 BIT UNTUK D/A FF24 DAC CONVERTER FF28 BUTTON INPUT BUFFER PEMBALIK 8 BIT FF2C
FND
INPUT LATCH 8 BIT UNTUK FND
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 4
Tugas MicroControl MMI Server
FF30 FF31 FF32 FF33 FF34 FF35 FF36 FF37
DOT_A DOT_B DOT_C DOT_CMD WR_A WR_B WR_C WR_CMD
FF38
L538
8255 UNTUK DOT MATRIKS
AT89C51 PROGRAMMER 8255
INPUT LATCH PEMBALIK 8 BIT UNTUK LED
Instruksi-instruksi keluarga MCS-51 Instruksi yang dimiliki oleh keluarga mikrokontroler MCS-51 yang digunakan dalam modul mikroprosesor trainer SK-8051 pada dasarnya digolongkan menjadi •
instruksi operasi aritmatika
•
operasi logika
•
transfer data
•
operasi manipulasi boolean
•
perintah percabangan.
Aturan penulisan bahasa assembly-nya tidak jauh berbeda dengan bahasa assembly untuk IBM PC. Masing-masing instruksi dapat dijelaskan sebagai berikut : ADD (Add Immediate Data) Operand A Accumulator Data - 256 <= data <= + 255 Format ADD A, #data Operasi (A) ← (A) + data Keterangan: instruksi ini menambah 8 bit data langsung ke dalam isi akumulator dan menyimpan hasilnya pada akumulator ADD (Add Indirect Address) Operand A Akkumulator Rr Register 0 <= r <= 1 Format ADD A, @Rr Operasi (A) ← (A) + ((Rr)) Keterangan: instruksi ini menambah isi data memori yang lokasinya ditunjukkan oleh nilai register r ke isi akumulator dan menyimpan hasilnya dalam akumulator Contoh: ADD A, Rl Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 5
Tugas MicroControl MMI Server
ADD (Add Register) Operand A Accumulator Rr Register 0 – 7 Format ADD A, Rr Operasi (A) ← (A) + (Rr) Keterangan instruksi ini menambah isi register r dengan isi akumulator dan menyimpan hasilnya dalam akumulator Contoh ADD A, R6 ADD (Add Memori) Operand A Accumulator Alamat data 0<=Alamat data<=256 Format ADD A, Alamat data Keterangan instruksi ini menambah isi alamat data ke isi akumulator dan menyimpan hasilnya dalam akumulator Contoh ADD A, 30H ADDC (Add Carry Plus Immediate Data To Accumulator) Operand A Accumulator data -256 <= data <= +255 Format ADDC A, # data Operasi: (A) ← (A) + (C) + data Keterangan instruksi ini menambah isi carry flag (0 atau 1) ke dalam isi akumulator. Data langsung 8 bit ditambahkan ke akumulator. Contoh ADDC A, #OAFH ADDC (Add Carry Plus Indirect Address To Accumulator) Operand A Accumulator data Register 0 <= r <= 1 Format ADDC A, @Rr Operasi (A) ← (A) + (C) + ((Rr)) Keterangan instruksi ini menambah isi carry flag (0 atau 1) dengan isi akumulator. Isi data memori pada lokasi yang ditunjukkan oleh register Rr ditambahkan dan hasilnya disimpan dalam akumulator. Contoh ADDC A,@R1 ADDC (Add Carry Plus Register To Accumulator) Operand A Accumulator data Register 0 <= r <= 7 Format ADDC A, Rr Operasi (A) ← (A) + (C) + (Rr) Keterangan instruksi ini menambah isi carry flag dengan isi akumulator. Isi register r ditambahkan dan hasilnya disimpan dalam akumulator Contoh ADDC A,R7
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 6
Tugas MicroControl MMI Server
ADDC (Add Carry Plus Memory To Accumulator) Operand A Accumulator Alamat data 0 <= Alamat data <= 255 Format ADDC A, Alamat data Operasi (A) ← (A) + (C) + (Alamat data) Keterangan instruksi ini menambah isi carry flag dengan isi akumulator. Isi dari alamat data tertentu ditambahkan pula dan hasilnya disimpan dalam akumulator Contoh ADDC A,30H AJMP (Absolute Jump Within 2K byte Page) Operand Alamat kode For rmat AJMP alamat kode Operasi (PC) ← (PC) + 2 (PC) 0 -10 ← page address Keterangan instruksi ini meletakkan bagian bawah 11 bit dari pencacah program dengan 1 bit alamat yang dikodekan. ANL (Logical AND Immediate Data to Accumulator) Operand A Accumulator data -256 <= data <= +255 Format ANL A, #data Operasi (A) ← (A) AND data Keterangan instruksi ini meng-AND kan data 8 bit secara langsung dengan isi akumulator Contoh ANL A, #00001000B ANL (Logical AND Indirect Address to Accumulator) Operand A Accumulator Data Register 0<= r<=1 Format ANL A, @Rr Operasi (A) ← (A) AND ((Rr)) Keterangan instruksi ini meng-AND kan isi memori yang lokasinya ditunjukkan oleh isi register r dengan isi akumulator Contoh ANL A,@RO ANL (Logical AND Register to Accumulator) Operand A Accumulator data 0 <= Rr <= 7 Format ANL A, Rr Operasi (A) ← (A) AND (Rr) Keterangan instruksi ini meng-AND kan isi register r dengan isi akumulator ANL (Logical AND Memory to Accumulator) Operand A Accumulator Alamat data 0 <= Alamat data <= 255 Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 7
Tugas MicroControl MMI Server
Format Operasi Keterangan Contoh
ANL A, Alamat data (A) ← (A) AND (Alamat data) instruksi ini meng-ANL kan isi alamat data dengan isi akumulator ANL A, 35H
ANL (Logical AND Bit to Carry Flag) Operand C Carry flag Alamat bit 0 <= alamat bit <= 255 Format ANL C, Alamat bit Operasi (C) ← (C) AND (Alamat bit) Keterangan instruksi ini meng-AND kan isi alamat bit tertentu dengan isi carry flag. Jika keduanya 1 maka hasilnya 1, selain itu hasilnya 0. Hasilnya ditempatkan pada carry flag. Contoh ANL C, 37.3 ANL (Logical AND Complement of Bit to Carry Flag) Operand C Carry flag Alamat bit 0 <= alamat bit <= 255 Format ANL C, /alamat bit Operasi (C) ← (C) AND NOT (alamat bit) Keterangan instruksi ini meng-AND kan hasil komplemen isi alamat bit tertentu dengan isi carry f1ag. Hasilnya ditempatkan pada carry flag. Isi alamat bit semula tidak berubah. Contoh ANL A,/40.5 ATL (Logical AND Immediate Data to Memory) Operand Alamat data 0 <= alamat data <= 255 Data -256 <= data <= +255 Format ANL Alamat data, #data Operasi (Alamat data) ← (Alamat data) AND data Keterangan instruksi ini meng-AND kan data 8 bit secara langsung dengan isi alamat data tertentu. Hasilnya akan disimpan dalam memori data pada alamat tersebut. Contoh ANL 571-1,#01H ANL (Logical AND Accumulator to Memory) Operand Alamat data 0 <= Alamat data <= 255 A Accumulator Format ANL Alamat data, A Operasi (Alamat data) ← (Alamat data) AND A Keterangan instruksi ini meng- AND kan isi akumulator dengan isi alamat data tertentu. Hasilnya disimpan dalam memori data pada alamat yang bersangkutan. Contoh ANL l0H,A
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 8
Tugas MicroControl MMI Server
CALL (Generic Call) Operand Alamat kode Format Call alamat kode Keterangan instruksi ini akan ditranslasikan ke ACALL atau LCALL CJNE (Compare Indirect Address to Immediate Data) Jump if Nol Equal Operand Rr Register 0<= r <= 1 Data -256 <= data <= +255 Alamat kode Format CJNE @,Rr, #data, alamat kode Operasi (PC') ← (PC) + 3 Jika ((Rr)) <> data, maka (PC) ← (PC) + offset relatif Jika ((Rr)) < data, maka (C) ← 1, lainnya (C) ← 0 Keterangan instruksi ini akan membandingkan data langsung dengan lokasi memori yang dialamati oleh register r. Apabila tidak sama, eksekusi akan menuju ke alamat kode. Bila sama, instruksi selanjutnya yang akan dijalankan. Jika data langsung lebih besar dari isi alamat data tertentu, carry flag akan diset menjadi 1. Contoh CJNE @R1, #01H, 0009H CJNE (Compare Immediate Data to Accumulator) Jump if Not Equal Operand A Accumulator data -256 <=data<= +255 Alamat kode Format CJNE A, #data, Alamat kode Operasi (PC) ← (PC) + 3 Jika (A) <> data, maka (PC) ← (PC) + offset relative Jika. (A) < data, maka (C) ← 1 lainnya (C) ← 0 Keterangan instruksi ini akan membandingkan data langsung dengan isi akumulator. Apabila tidak sama, eksekusi akan menuju ke alamat kode. Bila sama, instruksi selanjutnya yang akan dijalankan. Jika data langsung lebih besar dari isi alamat data tertentu, carry flag akan di set menjadi 1. CJNE (Compare Memory to Accumulator) Jump if Not Equal Operand A Akumulator Alamat data 0 <= Alamat data <= 255 Alamat kode Format CJNE A, Alamat data, alamat kode Operasi (PC) ← (PC) + 3 Jika (A) <> Alamat data, make (PC) ← (PC) + offset relatif Jika (A) < Aiamat data, make (C) ←1, lainnya (C) ← 0 Keterangan instruksi ini akan membandingkan isi lokasi memori tertentu dengan isi akumulator. Apabila tidak lama, eksekusi akan Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 9
Tugas MicroControl MMI Server
menuju ke alamat kode. Bila lama, instruksi selanjutnya yang akan dijalankan. Jika data langsung lebih besar dari isi akumulator, carry flag akan di - set menjadi 1. CJNE (Compare Immediate Data to Register) Jump if Not Equal Operand Rr Register 0<= r <= 7 Data -255 <= data <= +255 Alamat kode Format CJNE Rr, #data, Alamat kode Operasi (PC) ← (PC) + 3 Jika (Rr) <> data, make (PC) ← (PC) + offset relatif Jika (Rr) < data, make (C) ← 1 lainnya (C) ← 0 Keterangan instruksi ini akan mernbandingkan data langsung dengan isi register r. Apabila tidak sama, eksekusi akan menuju ke alamat kode. Bila sama, instruksi selanjutnya yang akan dijalankan. jika data langsung lebih besar dari isi register, carry flag akan diset meiljadi 1. CLR (Clear Accumulator) Operand A Akumulator Format CLR A Operasi (A) ← 0 Keterangann instruksi ini akan me-reset akuniulator menjadi 00H Contoh CLR A CLR (C1ear Carry Flag) Operand C Format CLR C Operasi (A) ← 0 Keterangan instruksi ini akan me-reset carry flag menjadi 00H Contoh CLR C CLR (Clear Bit) Operand Alamat bit 0 <= Alamat bit <= 255 Format CLR Alamat bit Operasi (Alamat bit) ← 0 Keterangan instruksi ini akan mereset alamat bit menjadi 00H Contoh CLR 40.5 CPL (Complement Accumulator) Operand A Akumulator Format CPL A Operasi (A) ← NOT (A) Keterangan instruksi ini akan mengkomplemen isi akumulator Contoh CPL A
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 10
Tugas MicroControl MMI Server
CPL (Complement Carry Flag) Operand CPL C Forma CPL C Operasi (C) ← NOT © Keterangan instruksi ini akan mengkomplemen isi carry flag Contoh CPL C CPL (Complmen Bit) Operand Alamat bit 0 <= Alamat bit <_ 255 Format CPL, Alamat bit Operasi (Alamat bit) ← NOT (Alamat bit) Keterangan instruksi ini akan mengkomplemen isi suatu alamat bit. Contoh CPL 33.7 DA (Decimal Adjust Accumulator) Operand A Akumulator Format DA A Keterangan instruksi ini mengatur isi akumulator ke padanan BCD-nya, setelah penambahan dua angka BCD. Jika auxiliary carry flag 1 atau isi nibble bawah (bit 0-3) dari akumulator lebih tinggi dari 9, isi akumulator akan ditambah 6. Jika carry flag diset sebelum atau sesudah penambahan atau isi nibble atas (bit 4-7) lebih tinggi dari 9, isi akumulator akan ditambah 60H. DEC (Decrement Indirect Address) Operand Rr Register 0 <= r <= 1 Format DEC @Rr Operasi ((Rr)) ← ((IZr)) -1 Keterangan instruksi ini akan mengurangi isi lokasi memori yang ditunjukkan oleh register r dengan 1. Hasilnya disimpan dalam lokasi tersebut. DEC (Decrement Accumulator) Operand A Akumulator format DEC A Operasi (A) ← (A) -1 Keterangan instruksi ini akan mengurangi isi akumulator dengan 1. Hasilnya disimpan dalam akumulator Contoh DEC A DEC (Decrement Register) Operand Rr Register 0 <= r <= 7 Format DEC Rr Operasi (Rr) ← (Rr) -1 Keterangan instruksi ini akan mengurangi isi register r dengan 1. Hasilnya disimpan dalam register r Contoh DEC R7 Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 11
Tugas MicroControl MMI Server
DEC (Decrement Memory) Operand Alamat data 0 <= Alamat data <= 255 Format DEC Alamat data Operasi (Alamat data) ← (Alamat data) - 1 Keterangan Instruksi ini akan mengurangi isi akumulator dengan 1. Hasilnya disimpan dalam akumulator. DIV (Divide Accumulator by B) Operand AB Pasangan register Format DIV AB Operasi (AB) ← (A)/(B) Keterangan instruksi ini membagi isi akumulator dengan isi register B. Kedua operand adalah bilangan integer tak bertanda. Akumulator berisi hasil bagi, register B berisi sisa pembagian Contoh MOV B, #5H DIV AB DJNZ (Decrement Register And Jump If Not Zero) Operand Rr Register 0 <= r <= 7 Alamat kode Format DJNZ Rr, Alamat kode Operasi (PC) ← (PC) + 2 (Rr) ← (Rr) -1 Jika (Rr) <> 0, maka. (PC) ← (PC) + offset r:latif Keterangan instruksi ini mengurangi register r dengan 1 dan menempatkan hasilnya pada register tertentu. Jika hasilnya sudah 0, instruksi selanjutnya yang akan dieksekusi. jika belum 0, eksekusi akan menuju ke alamat kode. DJNZ (Decrement Memory And Jump If Not Zero) Operand Alamat data 0 <= Alamat data <= 255 Alamat kode Format DJNZ Alamat data, Alamat kode Operasi (PC} ← (PC) + 3 (Alamat data) ← (Alamat data) - 1 Jika (Alamat data) <> 0, maka (PC) ← (PC) + offset relatif Keterangan instruksi ini mengurangi. alamat data dengan 1 dan menempatkan hasilnya pada alamat tersebut. Jika hasilnya sudah 0, instruksi selanjutnya yang akan dieksekusi. Jika belum 0, eksekusi akan menuju ke alamat kode. INC (Increment Indirect Address) Operand Rr Register 0 <= r <= 1 Format INC @Rr Opcras: ((R-r)) <-((Rr)) •+ 1 Keterangan instruksi ini akan menambah isi lokasi memori yang ditunjukkan oleh register r dengan 1. Hasilnya disimpan dalam lokasi tersebut. Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 12
Tugas MicroControl MMI Server
INC (Increment Accumulator) Operand A Accmulator Format INC A Operasi (A) ← (A) + 1 , Keterangan instruksi ini akan menambahkan isi akumulator dengan 1. Hasilnya disimpan dalam akumulator. Contoh INC A INC (Increment Data Pointer) Operand DPTR Data Pointer Format INC DPTR Operasi (DPTR) ← (DPTR) + 1 Keterangan instruksi ini akan menambah isi data pointer dengan 1. Hasilnya disimpan pada data pointer. Contoh INC DPTR INC (Increnent Register) Operand Rr Register 0 <= r <= 7 Format INC Rr Operasi (Rr) ← (Rr) + 1 Keterangan instruksi ini akan menambah isi register r dengan 1. Hasilnya disimpan dalam register tersebut. Contoh INC R7 INC (Increment Memory) Operand Alamat data 0 <= Alamat data <= 255 Format INC Alamat data Operasi (Alamat data) ← (Alamat data) + 1 Keterangan instruksi ini akan menambah isi alamat data dengan 1. Hasilnya disimpan dalam alamat tersebut. Contoh INC 37H JB (Jump if Bit is Set) Operand Alamat bit 0 <= Alamat bid <= 255 Alamat kode Format JB Alamat bit, alamat kode Operasi (PC) ← (PC) + 3 Jika (Alamat bit) = 1, maka (PC) ← (PC) + offset relatif Keterangan instruksi ini akan menguji, suatu alamat bit. Jika berisi 1, eksekusi akan menuju alamat kode. Jika tidak, instruksi selanjutnya akan dieksekusi. Pencacah program akan dinaikkan pada instruksi selanjutnya. Jika pengujian berhasil, offset relatif akan ditambahkan ke pencacah program yang telah dinaikkan dan instruksi pada alamat ini akan dieksekusi.
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 13
Tugas MicroControl MMI Server
JBC (Jump And Clear if Bit is Set) Operand Alamat bit 0 <= Alamat bit <= 255 Alamat kode Format JBC Alamat bit, alamat kode Operasi (PC) ← (PC) + 3 Jika (Alamat bit) = 1, maka (alamat bit) ← 0 (PC) ← (PC) + offset relatif Keterangan instruksi ini akan menguji suatu alamat bit. Jika berisi 1, bit tersebut akan diubah menjadi 0 dan eksekusi akan menuju ke alamat kode. Jika berisi 0, instruksi selanjutnya yang akan dieksekusi. JC (Jump if Carry is Set) Operand Alamat kode Format JCC Alamat kode Operasi (PC) ← (PC) + 2 Jika (PC) = 1, maka (PC) ← (PC) + offset relative Keterangan instruksi ini akan menguji isi carry flag. Jika berisi 1, eksekusi akan menuju ke alamat kode. Jika berisi 0, instruksi selanjutnyaakan dieksekusi JMP (Generic Jump) Operand Alamat kode 0 <= Alamat kode <= 65535 Format JMP Alamat kode Keterangan instruksi ini akan diubah menjadi SJMP, AJMP atau LJMP JMP (Jump to Sum of Accumulator and Data Pointer) Operand A Akumulator DPTR Data Pointer Format JMP @A+ DPTR Operasi (PC) ← (A) + (DPTR) • Keteragan instruksi ini akan menambah isi akumulator dengan isi data pointer dan meloncat ke alamat kode sesuai hasil penjumlahan Contoh JMP @A + DPTR JNB (Jump if Bit is Not Set) Operand Alamat bit Alamat kode Format JNB Alamat bit, alamat kode Operasi (PC) ← (PC) + 3 Jika (alamat bit) = 0, maka (PC) ← (PC) + offset relative Keterangan instruksi ini akan menguji suatu alarnat bit. Jika isinya 0, eksekusi akan menuju ke alamat kode. Jika isinya 1, instruksi selanjutnya yang akan dieksekusi.
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 14
Tugas MicroControl MMI Server
JNC (Jump if Carry is Not Set) Operand Alamat kode format JNC Alamat kode Operasi (PC) ← (PC) + 2 Jika (C) = 0, maka (PC) ← (PC) + offset relatif Keterangan instruksi ini akan menguji isi carry flag. Jika isinya 0, eksekusi akan menuju ke alamat kode. Jika isinya 1, instruksi selanjutnya yang akan dieksekusi. JNZ (Jump if Accumulator is Not Zero) Operand Alamat kode Format JNZ Alamat kode Operasi (PC) ← (PC) + 2 Jika (A) <> 0, maka (PC) ← (PC) + offset relative Keterangan instruksi ini. akan menguji isi akumulator. Jika tidak sama dengan 0, eksekusi akan menuju ke alamat kode. Jika sama dengan 0, instruksi selanjutnya yang akan dieksekusi. JZ (Jump if Accumulator is Zero) Operand Alamat kode Format JZ Alamat kode Operasi (PC) ← (PC) + 2 Jika (A) = 0, maka (PC) ← (PC) + offset relatif Keterangan instruksi ini akan menguji isi akumulator. Jika sama dengan 0, eksekusi akan menuju ke alamat kode. Jika tidak sama dengan 0, instruksi selanjutnya yang akan dieksekusi. LCALL (Long Call) Operand Alamat kode 0<= Alamat kode <= 65535 Format LCALL Alamat kode Operasi (PC) ← (PC) + 3 (SP) <= (SP) + 1 ((SP)) ← (PC Low) (SP) <= (SP) + 1 ((SP)) ← (PC high) (PC) <= Alamat kode Keterangan instruksi ini akan menyimpan pencacah program pada stack dan eksekusi akan menuju ke alamat kode LJMP (Long J amp) Operand Alamat kode 0 <= Alamat kode <= 65535 Format LJMP Alamat kode Operasi (PC) ← Alamat kode Keterangan instruksi ini akan menuju alamat kode
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 15
Tugas MicroControl MMI Server
MOV (Move Immediate Data to Indirect Address) Operand Rr Register 0 <= r <= 1 Data - 256 <= data <= + 255 Format MOV @Rr, #data Operasi ((Rr)) ← data Keterangan instruksi ini akan memindahkan data 8 bit secara langsung ke lokasi memori yang ditunjukkan oleh isi register r Contoh MOV @R1, #01H MOV (Move Accumulator to Indirect Address) Operand Fr Register 0 <= r <= 1 A Accmulator Format MOV @Rr, A Operasi ((Rr)) ← (A) Keterangan instruksi ini menambah isi akumulator ke lokasi memori yang ditunjukkan oleh isi register r. Contoh MOV @R0, A. MOV (Move 1liemorv to indirect Address) Operand Rr Register 0 <= r <= 1 Alamat data 0 <= Alamai data <= 255 Format MOV @Rr, alamat data Operasi ((Rr)) ← (alamat data) Keterangan instruksi ini memindahkan isi suatu alamat data ke lokasi memori yang ditunjukkan oleh isi register r. Contoh MOV @R1, 77H MOV (Move Immediate Data to Accumulator) Operand A Accumulator Data -256 <= data <= +255 Format MOV A, #data Operasi (A) ← data Keterangan instruksi ini memindahkan data 8 bit secara langsung ke akumulator Contoh MOV A, #02H MOV (Move Indirect Address to Accumulator) Operand A Akcmulator Rr Register 0 <= r <= 1 Format MOV A, @Rr Operasi (A) ← ((Rr)) Keterangan instruksi ini memindahkan isi data memori yang lokasinya ditunjukkan oleh register r ke akumulator Contoh MOV A, @RO
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 16
Tugas MicroControl MMI Server
MOV (Move Register to Accumulator) Operand A Akkumulator Rr Register 0<= r <= 7 . Format MOV A, Rr Operasi (A) ← (Rr) Keterangan instruksi ini memindahkan isi register r ke akumulator Conloh MOV A, #02H MOV (Move Memory to Accumulator) Operand A Akkumulator Alamat data 0<= Alamat data <= 255 Format MOV A, alamat data Operasi (A) ← (Alamat data) Keterangan instruksi ini memindahkan isi memori data pada suatu alamat ke akumulator Contoh MOV A, P3 pindahkan isi port 3 ke akumulator MOV (Move Bit to Carry Flag) Operand C Carry Flag Alamat bit 0<= Alamat bit <= 255 Format MOV C, alamat bit Operasi (C) ← (alamat bit) Keterangan instruksi ini memindahkan isi suatu alamat bit ke carry flag Contoh MOV C, P1.0 MOV (Move Immediate Data to Data Pointer) Operand Data Pointer Data 0 <= data <= 65535 Format MOV DPTR, #data Operasi (DPTR) ← data Keterangan instruksi ini memindahkan data 16 bit secara langsung ke data pointer (DPTR) Contoh MOV DPTR, #0B 19H MOV (Move Memory to Memory) Operand Alamatl 0 <=Alamat1 <= 255 Alamat2 0 <= Alamat2 ,<= 255 Format MOV alamat1, alamat2 Operasi (Alamat 1) ← (Alamat 2) Keterangan instruksi ini memindahkan isi memori alamat data sumber (alamat 2) ke alamat data tujuan (alamat1) Contoh MOV 13H, 12H MOVC (Move Code Memory Offset from Data Pointer to Accumulator) Operand A Akumulator DPTR Data Pointer Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 17
Tugas MicroControl MMI Server
Format Operasi Keterangan
Contoh
MOVC A, @A + DPTR (A) ← ((A) + (DPTR)) instruksi ini menjumlahkan isi data pointer dengan ini akumulator. Hasil penjumlahan merupakan alamat kode memory dan isinya akan dipindahkan ke akumulator. MOVC, @A+DPTR
MOVC (Move Code Memory Offset from Program Counter to Accumulator) Operand A Akumulator PC Program Counter Format MOVC A, @A + PC Operasi (PC) ← (PC) + 1 (A) ← ((A)+(PC)) Keterangan instruksi ini menjumlahkan isi pencacah program yang telah dinaikkan dengan isi akumulator. Hasil penjumlahan tersebut digunakan sebagai alamat kode memori dan isinya dipindahkan ke akumulator. Contoh MOVC, @A+PC MOVX (Move Accumulator to External Memory addressed by Data Pointer) Operand DPTR Data Pointer A Akumulator Format MOVX, @DPTR, A Operasi ((DPTR)) <- (A) Keterangan Instruksi ini akan memindahkan isi akumulator ke memori data eksternal (off chip) yang alamatnya ditunjukkan oleh data pointer. Contoh MOVX @ DPTR, A MOVX (Move Accumulator to External Memory addressed by Register) Operand Rr Register 0 < = r < = 1 A Akumulator Format MOVX, @Rr, A Operasi ((Rr)) <- (A) Keterangan Instruksi ini akan memindahkan isi akumulator ke memori data eksternal yang alamatnya ditunjukkan oleh register r dan SFR P2. P2 menampung byte atas alamat dan register r menampung byte bawah. Contoh MOV P2, #00H MOVX @R0, A MOVX (Move External Memory Addressed by Data Pointer to Accumulator) Operand A Akumulator DPTR Data Pointer Format MOVX A, @DPTR Operasi (A) ← ((DPTR)) Keterangan instruksi ini akan memindahkan isi memori data eksternal yang alamatnya ditunjukkan oleh data pointer ke akumulator. Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 18
Tugas MicroControl MMI Server
Contoh
MOVX A, @DPTR
MOVX (Move External Memory Addressed by Register to Accumulator) Operand A Akumulator Rr Register 0 <= r <= 1 Format MOVX A, @Rr Operasi (A) ← ((Rr)) Keterangan instruksi ini akan memindahkan isi memori data eksternal yang alamatnya ditunjukkan oleh register r dan SFR P2 ke akumulator. P2 menampung byte atas alamat dan register r menampung byte bawah. Contoh MOV P2, #55H MOVX A, @R I MUL (Multiply Accumulator by B) Operand AB Format MUL AB Operasi (AB) ← (A) * (B) Keterangan instruksi ini akan mengalikan isi akumulator dengan isi register pengali (B). Byte bawah hasil perkalian dimasukan ke akumulator dan byte atas dimasukkan ke register pengali. Contoh MOV B, #10 MUL AB NOP (No Operation) Operand Format NOP Operasi Tak ada operasi Keterangan instruksi ini tidak melakukan apa pun selama satu siklus. Contoh NOP ORL (Logical OR Immediate Data to Accumulator) Operand A Accumulator Data -256<=data<=255 Format ORL A, #data Operasi (A) ← (A) OR data Keterangan instruksi ini meng-OR kan data 8 bit secara langsung dengan isi akumulator Contoh OR A,#00001000B ORL (Logical OR Indirect Address to Accumulator) Operand A Accumulator Rr Register 0 <= r <= 1 Format ORL A, @Rr Operasi (A) ← (A) OR ((Ri)),
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 19
Tugas MicroControl MMI Server
Keterangan
Contoh
instruksi ini meng-OR kan isi memori yang lokasinya ditunjukkan oleh isi register r dengan isi akumulator. Hasilnya disimpan di akumulator. ORL A,@RO
ORL (Logical OR Register to Accumulator) Operand A Accumulator Alamat data 0 <= Alamat data <= 255 Format ORL A, Alamat data Operasi (A) ← (A) OR (Alamat data) Keterangan instruksi ini meng-OR kan isi alamat data dengan isi akumulator. Hasilnya disimpan di akumulator Contoh ORL A, 35 ORL (Logical OR Bit to Carry Flag) Operand C Carry flag Alamat bit 0 <= alamat bit <= 255 Format ORL C, Alamat bit Operasi (C) ← (C) OR (Alamat bit) Keterangan instruksi ini meng-OR kan isi alamat bit tertentu dengan isi carry flag. Hasilnya ditempatkan pada carry flag. Contoh ORL C, 46.2 ORL (Logical OR Complement of Bit to Carry Flag) Operand C Carry flag Alamat bit 0 <= alamat bit <= 255 Format ORL C, /alamat bit Operasi (C) ← (C) OR NOT (alamat bit) Keterangan instruksi ini meng-OR kan hasil komplemen isi alamat bit tertentu dengan isi carry flag. Hasilnya ditempatkan pada carry flag. Isi alamat bit semula tidak berubah. Contoh ORL C,/25H.5 ORL (Logical OR Immediate Data to Memory) Operand Alamat data 0 <= alamat data <= 255 Data -256 <= data <= +255 Format ORL Alamat data, #data Operasi (Alamat data) ← (Alamat data) OR data Keterangan instruksi ini meng-OR kan data 8 bit secara langsung dengan isi alamat data tertentu. Hasilnya akan disimpan dalam memori data pada alamat tersebut. Contoh ORL 57H,#01H ORL (Logical OR Accumulator to Memory) Operand Alamat data 0 <= Alamat data <= 255 A Akumulator Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 20
Tugas MicroControl MMI Server
Format Operasi Keterangan
Contoh
ORL Alamat data, A (Alamat data) ← (Alamat data) OR A instruksi ini meng OR kan isi akumulator dengan isi alamat data tertentu. Hasilnya disimpan dalam memori data pada alamat yang bersangkutan ORL 10H,A
POP (Pop Stack to Memory) Operand Alamat data 0 <= Alamat data <= 255 Format POP Alamat dataI Operasi (Alamat data) <- ((SP)) (SP) <- (SP) - 1 Keterangan instruksi ini menempatkan byte yang ditunjukkan oleh stack pointer ke suatu alamat data, kemudian mengurangi sate isi stack pointer. Contoh POP PSW PUSH (Push Memory onto Stack) Operand Alamat data 0 <= Alamat data <= 255 Format PUSH Alamat data Operasi (SP) <- (SP) + I ((SP)) <- (Alamat data) Keterangan instruksi ini menaikkan stack pointer kemudian menyimpan isinya ke suatu alamat data pada lokasi yang ditunjukkan oleh stack pointer. Contoh PUSH 4DH RET (Return from Subi outine) (Non Interrupt) Operand Format RET Operasi (PC high) <- ((SP)) (SP) <- (SP) - 1 (PC low) <- ((SP)) (SP) <- (SP) -1 Keterangan instruksi ini dipakai untuk kembali dari suatu subroutine ke alamat terakhir seat subroutine dipanggil. RETI (Return from Interrupt Routine) Operand Format RETI Operasi (PC high) <- ((SP)) (SP) <- (SP) - 1 (PC low) <- ((SP)) (SP) <- (SP) -1 Keterangan instruksi ini dipakai untuk kembali dari suatu routine pelayanan interupsi. RL (Rotate Accumulator Left) Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 21
Tugas MicroControl MMI Server
Operand Format Operasi Keterangan
Contoh RLC (Rotate Operand Format Operasi Keterangan
Contoh
A RL A
Akumulator
instruksi ini memutar setiap bit dalam akumulator serta posisi ke kiri. Bit paling besar (MSB) bergerak ke bit paling kecil (LSB). RL A Accumulator And Carry Flag Left) A Akumulator RLC A instruksi ini memutar bit bit dalam akumulator satu posisi ke kiri. Bit paling besar (MSB) bergerak ke dalam carry flag. Sedangkan isi carry flag menuju ke LSB RLC A
RR (Rotate Accumulator Right) Operand A Akumulator Format RR A Operasi Keterangan instruksi ini memutar setiap bit dalam akumulator serta posisi ke kanan. Bit paling kecil (LSB) bergerak ke bit paling besarl (MSB). Contoh RR A RRC (Rotate Accumulator And Carry Flag Right) Operand A Akumulator Format RRC A Operasi Keterangan instruksi ini memutar bit bit dalam akumulator satu posisi ke kanan. Bit paling kecil (LSB) bergerak ke dzlam carry flag. Sedangkan isi carry flag menuju ke MSB Contoh RRC A SETB (Set Carry Flag) Operand C Format SETB C Operasi (C) <-I Contoh SETB C
Carry Flag
SETB (Set Bit) Operand Alamat bit 0 <= Alamat bit <= 255 Format SETB Alamat bit Operasi (Alamat bit) <- 1 Keterangan Instruksi ini akan men-set isi suatu alamat bit menjadi 1 Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 22
Tugas MicroControl MMI Server
Contoh
SETB 41.5
SUBB (Subtract Indirect Address from Accumulator with Borrow) Operand A Akumulator Rr Register 0 <= r <= 1 Operasi (A) <- (A) - (C) - ((Rr); Keterangan instruksi ini akan mengurangkan isi akumulator dengan carry nag dan isi lokasi memori yang ditunjukkan oleh isi register r. Hasilnya disimpan dalam akumulator. SUBB (Subtract Immediate Data from Accumulator with Borrow) Operand A Akumulator Data -256 <= data <= +255 Format SUBB A, #data Operasi (A) <- (A) - (C) - data Keterangan :instruksi ini akan mengurangkan isi carry flag dan data langsung dari isi kumulator. Hasilnya disimpan dalam akumulator. Contoh SUBB A, #OC1H SUBB (Subtract Register firom Accumulator with Borrow) Operand A Akumulator Rr Register 0<= r <= 7 Format SUBB A, Rr Operasi (A) <- (A) - (C) - (Rr) Keterangan instruksi ini akan mengurangi isi akumulator dengan isi carry flag dan isi register r. Hasilnya disimpan dalam akumulator. Contoh SUBB A, R6 SUBB (Subtract Memory from Accumulator with Borrow) Operand A Akumulator Alamat data 0 <= Alamat data <= 255 Format SUBB A, Alamat data Operasi (A) <- (A) - (C) - (Alamat data) Keterangan instruksi ini akan mengurangkan isi akumulator dengan isi carry flag dan isi suatu alamat data. Hasilnya disimpan dalam akumulator. Contoh SUBB A, 32H SJMP (Short Jump) Operand Alamat data Format SJMP alamat kode Operasi (PC) <- (PC) + 2 (PC) <- (PC) + offset relatif Keterangan instruksi ini akan menyebabkan operasi melompat ke alamat kode.
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 23
Tugas MicroControl MMI Server
SWAP (Excharge Nibbles in Accumulator) Operand A Akumulator Format SWAP A Keterangan instruksi ini akan mempertukarkan nibble bawah dengan nibble atas Contoh SWAP A XCH (Exchange Indirect Address with Accumulator) Operand A Akumulator Rr Register 0 <= r <= 1 Format XCH A, @Rr Operasi temp <- ((Rr)) ((Rx)) <-(A) (A) <- temp Keterangan instruksi ini akan menukar isi lokasi memori yang ditunjukkan oleh isi register r dengan isi akurnulator Contoh XCH A, @RO XCH (Exchange Register with Accumulator) Operand A Akumulator Rr Register 0 <= r <= 7 Format XCH A, Rr Operasi temp <- ((Rr)) ((R-r)) <-(A) (A) <- temp Keterangan instruksi ini akan menukar isi register dengan isi akumulator Contoh XCH A, R6 XCH (Exchange Memory with Accumulator ) Operand A Akumulator Alamat data 0<:= Alamat data <= 255 Format XCH A, alamat data Operasi temp <- (Alamat data) (Alamat data) <-(A) (A) <- temp Keterangan instruksi ini akan menukar isi suatu alamat data dengan isi akumulator Contoh XCH A, 37H XCHD (Exchange Low Nibbles of Indirect Address with Accumulator) Operand A Akumulator Rr Register 0 <= r <= 1 Format XCHD A, @Rr Operasi temp <- ((Rr)) 0 – 3 ((Rr))0 – 3 <- (A)0 - 3 (A) 0 – 3 <- temp Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 24
Tugas MicroControl MMI Server
Keterangan
Contoh
instruksi ini akan menukar isi nibble bawah dari lokasi memori yang alamatnya ditunjukkan oleh isi register r dengan isi nibble bawah akumulator. XCHD A, @R0
XRL (Logical XOR Immediate rata to Accumulator) Operand A Akumulator data -256 <= data <= +255 Format XRL A, #data Operasi (A) <- (A) XOR data Keterangan instruksi ini meng-XOR kan data 8 bit secara langsung dengan isi akumulator Contoh XOR A, #OFH XRL (Logical XOR Indirect Address to Accumulator) Operand A Akumulator Rr Register 0 <= r <= I Format XRL A, @Rr Operasi (A) <- (A) XOR ((Rr)) Keterangan instruksi ini men-XOR kan isi memori yang lokasinya ditunjukkan oleh isi register r dengan isi akumulator. Hasilnya disimpan di akumulator. Contoh XRL A, @R0 XRL (Logical XOR Register to Accumulator) Operand A Akumulator Rr Register 0 <- IZr <- 7 Format XRL A, Rr Operasi (A) <- (A) XRL (Rr) Keterangan instruksi ini meng-XOR kan isi register r dengan isi akumulator. Hasilnya disimpan di akumulator Contoh XRL A, R4 2.1.1. MIKROKONTROLLER AT89C51 Operasi dan struktur port Mikrokontroller AT89C51 mempunyai 32 jalur I/O yang digolongkan menjadi empat port yaitu P0, P1, P2, dan P3. P0 dan P2 digunakan untuk mengakses eksternal memory sebagai pembangkit 16 bit address dan 8 bit data. P0 akan membangkitkan address A0-A7 dan data D0-D7 secara multipleks, sedangkan P2 akan membangkitkan address A8-A15. Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 25
Tugas MicroControl MMI Server
Gambar 2.2. Konfigurasi Penyemat AT89C51 Port 1 merupakan port I/O yang dapat digunakan per bit. Port 3 merupakan port kontrol sinyal yang memiliki konfigurasi sebagai berikut : Tabel 2.3 Konfigurasi Port AT89C51 Port Signal Fungsi P3.0 RXD Receive data for serial port P3.1 TXD Transmit data for serial port P3.2 INT0 External interrupt 0 P3.3 INT1 External interrupt 1 P3.4 T0 Timer/ Counter 0 external input P3.5 T1 Timer/ Counter 1 external input P3.6 WR External data memori write strobe P3.7 RD External data memori read strobe
Organisasi memori Memori pada mikrokontroller keluarga MCS-51 dibagi menjadi dua bagian, yaitu : program memori dan data memori. Pada program memori dan data memori terpisah secara logika, dengan membedakan sinyal yang mengaktifkannya. Untuk mengakses program memori digunakan sinyal PSEN, sedangkan untuk data memori digunakan sinyal RD dan WR. Hal ini menyebabkan processsor keluarga
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 26
Tugas MicroControl MMI Server
MCS-51 mampu mengakses 64 Kbyte eksternal program memori dan eksternal data memori. 1. Program memori. Mikrokontroler AT89C51 mempunyai 4 Kbyte internal program memori. Untuk memakai internal program memori, maka pin EA harus diberi level logic high, untuk mengakses eksternal program memori maka bit EA diberi logic low. 2. Data memori Mikrokontroler AT89C51 mempunyai dua bagian data memori yaitu internal data memori dan eksternal data memori. Eksternal data mempunyai fungsi yang hampir sama dengan program memori, namun pada eksternal memori dapat dilakukan proses pembacaan dan penulisan data. Secara umum mikrokontroler keluarga MCS-51 membagi internal data memori menjadi tiga blok, yaitu: -
Lower 128 byte RAM
-
Upper 128 byte RAM
-
Special Function Register (SFK)
Tetapi pada mikrokontroler 8031/ 8051/ 8751 upper 128 byte RAM tidak tersedia, daerah memori tersebut hanya ada pada mikrokontroler 8052. 2.1.2 ADC (Analog to Digital Converter) Analog to Digital Converter (ADC) adalah sebuah piranti elektronik yang banyak digunakan oleh perangkat-perangkat digital berupa komputer dan mikroprosesor Kebutuhan akan ADC saat ini sangat penting karena untuk
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 27
Tugas MicroControl MMI Server
mengolah isyarat analog oleh perangkat digital tidak akan bisa diproses. Jadi ADC menjadi jembatan antara perangkat analog dan perangkat digital. Setelah data diproses oleh komputer atau perangkat digital yang lain, data digital yang dihasilkan dapat diubah menjadi data analog kembali dengan menggunakan perangkat Digital to Analog Converter. Contoh ADC 8 bit yang mampu menerima 8 input dan banyak digunakan ialah ADC 0808. ADC ini mampu diprogram umtuk memulai konversi melalui pin SC (Start Conversion), mampu juga berjalan dengan mode free running, artinya akan mengkonversi terus menerus sinyal input yang masuk dengan cara menghubungkan pin EOC (End of Conversion) ke SC. Gambar 2.3 adalah diagram penyemat ADC 0808 In3 In4 In5 In6 SC EOC D3 OE Clock Vcc Vref (+) Gnd D1
A D C 0 8 0 9
In2 In1 In0 ADD A ADD B ADD C ALE D7 D6 D5 D4 D0 D2
Gambar 2.3. Dagram penyemat ADC 0808 IC ADC 0808 merupakan IC yang terdiri dari 28 buah pin. Multiplekser yang terdiri dari 8 saluran dapat mengakses secara langsung beberapa dari 8 sinyal analog. Masing-masing pin mempunyai fungsi yang berbeda-beda. Dari
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 28
Tugas MicroControl MMI Server
perbedaan ini ada beberapa pin yang termasuk dalam kategori yang sama. Misalnya, untuk data hasil pengubahan terdiri dari 8, pemilihan alamat saluran terdiri dari 3 pin dalam kategori yang sama. Tabel 2.4 Deskripsi pin-pin ADC 0808 No pin 1-5 26-28
Simbol In7 – In3 In0 – In2
21-18 17 14 8 15 10 23 24 25 6 22 7 9 12 16 11 13
D7 – D4 D0 D1 D3 D2 Clock ADD A ADD B ADD C Star Conversion ALE EOC OE Vref(+) Vref(-) VCC GND
I/O Deskripsi I Input analog pin, salah satu dari pin dapat I dipilih, tergantung pada pengaturan data pin ADD A, ADD B ADD C. O Pin output ini adalah hasil dari pengubahan. O Hasilnya adalah 8 bit data paralel. O O O I Masukan detak I Pin input untuk pemilihan saluran masukan I analog. I I Pin untuk memulai konversi I Address Latch Enable, penguncian alamat I Pin untuk sinyal akhir conversi I Output Enable, agar output dapat dibaca - Tegangan referensi + - Tegangan referensi - Pin catu daya - Pin ground
Karena input ADC 0808 sebanyak 8 buah ter-multipleks, maka untuk memilih kanal input diatur melalui pin-pin ADD A, ADD B, dan ADD C. Tabel 2.5 berikut adalah tabel pemilihan kanal input ADC 0808 Tabel 2.5 Pemilihan kanal input ADC 0808 Kanal Input 0 1 2 3 4
ADD A L L L L H
ADD B L L H H L
ADD C L H L H L
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 29
Tugas MicroControl MMI Server
5 6 7
2.2
H H H
L H H
H L H
Digital To Analog Converter Digital to Analog Converter adalah piranti elektronik yang berfungsi untuk
mengkonversi data digital menjadi data analog. Salah satu jenis DAC yang umum adalah DAC 0808, yaitu merupakan digital to analog converter R-2R 8 bit yang dilengkapi dengan sumber arus acuan dan 8 buah transistor saklar untuk mengarahkan arus biner yang lazim berlaku yaitu 2mA. DAC0808 menpunyai waktu pemantapan 150 nS dan ketelitian relatif ± ½ LSB. Gambar 2.4 seperti yang ditunjukkan di bawah ini adalah konfigurasi penyemat dari DAC 0808. NC Gnd Vee Iout D7 D6 D5 D4
1 2 3 4 5 6 7 8
DAC 0 8 0 8
16 15 14 13 12 11 10 9
kompensasi V reffVreff+ Vcc D0 D1 D2 D3
Gambar 2.4 Konfigurasi penyemat dari DAC 0808. Penyemat 1 tidak dipakai (NC, No Connection) Penyemat 2 adalah saluran ground. Penyemat 3 (Vee) harus dipasang pada catu tegangan -15V. Penyemat 4 adalah saluran balik dari tanah (ground return) bagi arus yang keluar dari rangkaian tangga, penyemat ini biasa dihubungkan dengan sebuah Operational Amplifier (Op-Amp). Penyemat 5 sampai 12 merupakan saluran bagi 8 bit data masukan. Penyemat 13 harus dipasang pada catu tegangan +5V. Penyemat 14 dihubungkan dengan catu tegangan positif melalui sebuah hambatan R14, dan Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 30
Tugas MicroControl MMI Server
penyemat 15 ditanahkan melalui subuah hambatan. Antara penyemat 16 dan penyemat 13 dipasang sebuah kapasitor yang berfungsi untuk memberi kompensasi frekuensi bagi piranti ini. 2.3
Pemrograman Port Serial
2.3.1 Tata Cara Komunikasi Data Serial Dalam komunikasi data secara serial dikenal dua cara yaitu asinkron dan sinkron. Pada komunikasi data serial sinkron clock dikirimkan bersama-sama dengan data serial, sedangkan komunikasi data serial asinkron clock tidak dikirimkan bersama data serial tapi dibangkitkan secara sendiri-sendiri baik pada sisi pengirim (transmitter) maupun pada sisi penerima (receiver). Pada IBM-PC compatible port serialnya termasuk jenis asinkron. Komunikasi data serial ini dikerjakan oleh UART (Universal Asinkron Receiver/Transmiiter). IC UART dibuat khusus untuk mangubah data paralel menjadi data serial dan menerima data serial yang kemudian diubah kembali menjadi data paralel. IC UART 8250 dari intel merupakan salah satunya. Selain berbentuk IC mandiri, berbagai macam mikrokontroller ada yang dilengkapi UART, misalnya keluarga mikrokontroller MCS51. Pada UART, kecepatan pengiriman data (baud rate) dan fase clock pada sisi transmitter dan sisi receiver harus sinkron. Untuk itu diperlukan sinkronisasi antara transmitter dan receiver. Hal ini dilakukan oleh bit ‘start’ dan bit ‘stop’. Ketika saluran transmisi dalam keadaan idle, output UART dalam keadaan logika ‘1’. Ketika transmitter ingin mengirim data, output UART diset lebih ke logika ‘0’ untuk waktu satu bit. Sinyal ini pada receiver dikenali sebagai sebagai sinyal
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 31
Tugas MicroControl MMI Server
‘start’ yang digunakan untuk mensinkronkan fase clocknya sehingga sinkron dengan fase clock transmitter. Selanjutnya data akan dikirimkan secara serial dari bit paling rendah sampai bit tertinggi. Selanjutnya, akan dikirim sinyal ‘stop’ sebagai akhir dari pengiriman data serial. Cara pemberian kode data yang disalurkan tidak ditetapkan secara pasti. Gambar 2.5 berikut ini adalah contoh pengiriman huruf ‘A’ dalam format ASCII (41 heksa / 1000001 biner) tanpa bit paritas. 5V
0V START
STOP
Gambar 2.5. Pengiriman huruf A tanpa paritas Kecepatan transmisi (baud rate) dapat dipilh bebas dalam rentang waktu tertentu. Baud rate yang umum dipakai hádala 110, 135, 150, 300, 600, 1200, 2400, dan 9600 (bit/detik). Dalam komunikasi data serial, baud rate dari kedua alat yang berhubungan harus diatur pada kecepatan yang sama. Selanjutnya harus ditentukan panjang data, paritas (genap, ganjil, atau tanpa paritas), dan jumlah bit ‘stop’ (1,1½, atau 2 bit). 2.3.2 Karakteristik Sinyal Port Serial Standar sinyal komunikasi serial yang banyak digunakan hádala estándar RS232 yang dikembangkan oleh Electronic Industry Association and the Telecommunications Industry Association (EIA/TIA) yang pertama kali dipublikasikan pada tahun 1962. Ini jauh sebelum IC TTL populer sehingga sinyal ini tidak ada hubungannya sama sekali dengan dengan level tegangan IC TTL.
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 32
Tugas MicroControl MMI Server
Estándar ini hanya menyangkut komunikasi data antara komputer (Data Terminal Equipment – DTE) dengan alat-alat pelengkap komputer (Data CircuitTerminating Equipment-DCE). Estándar RS232 inilah yang biasa digunakan pada port serial IBM-PC kompatibel. Stándar sinyal serial RS232 memiliki ketentuan level tegangan sebagai berikut : 1. Logika ‘1’ disebut ‘Mark’ terletak antara -3 Volt hingga -25 Volt. 2. Logika ‘0’ disebut ‘space’ terletak antara +3 Volt hinggá +25 Volt. 3. Daerah tegangan antara -3 Volthingga +3 Volt adalah invalid level, yaitu daerah tegangan yang tidak memiliki level logika pasti sehingga harus dihindari. Demikian juga, level tegangan lebih negatif dari -25 Volt atau lebih positif dari +25 Volt juga harus dihindari karena tegangan tersebut dapat merusak line driver pada saluran RS232. Gambar 2.6 berikut ini ádalah contoh level tegangan RS232 pada pengiriman huruf ‘A’ dalam format ASCII tanpa bit paritas. +25V 0V 1
0
0 0 0 0 1 0 STOP
-25V START Gambar 2.6. Level tegangan RS232 pada pengiriman huruf ‘A’ tanpa bit paritas 2.3.3 Flow Control Jika kecepatan tranfer data dari DTE ke DCE (misalnya komputer ke modem) lebih cepat daripada transfer data dari DCE ke DCE (misalnya modem ke
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 33
Tugas MicroControl MMI Server
modem), cepat atau lambat kelilangan data akan terjadi karena buffer pada DCE akan mengalami over flor. Untuk itu diperlukan flor control untuk mengatasi hal tersebut. Dikenal dua macam flow control, yaitu secara software dan secara hardware. Flow control secara software atau sering disebut Xon/Xoff flor control menggunakan karákter Xon (tipikalnya karákter ASCII 17) dan karákter Xoff (tipikalnya karákter ASCII 19) untuk melakukan kontrol. DCE akan mengirimkan Xoff ke komputer untuk memberitahukan komputer agar menghentikan pengiriman data jira buffer pada DCE telah penuh. Jika buffer telah kembali siap menerima data, DCE akan mengirimkan karákter Xon ke komputer dan komputer akan mengirimkan data selanjutnya sampai data terkirim semua atau komputer menerima carácter Xoff lagi. Keuntungan flow control secara software ini ádalah hanya diperlukan kabel sedikit karena carácter control dikirimkan lewat saluran Tx/Rx. Akan tetapi kecepatan pengiriman data menjadi lambat. Flow control secara hardware atau sering disebut RTS/CTS flow control menggunakan dua kabel untuk melakukan pengontrolan. Komputer akan menset saluran Request To Send jikan akan mengirimkan data ke DCE. Jika buffer di DCE siap menerima data, maka DCE akan membalas dengan menset saluran Clear To Send dan komputer akan mulai mengirimkan data. Jika buffer telah penuh, maka saluran akan direset dan komputer akan menghentikan pengiriman data sampai saluran ini diset kembali.
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 34
Tugas MicroControl MMI Server
2.3.4 Konfigurasi Port Serial Gambar 2.7 adalah gambar konektor port serial DB9 pada bagian belakang CPU dan tabel 2.6 adalah konfigurasi pin dan nama sinyal konektor serial DB9. Pada komputer IBM-PC kompatibel biasanya kita dapat menemukan dua connector port serial DB9 yang biasa dinamai COM1 dan COM2.
Gambar 2.7. Konektor serial DB9 Tabel 2.6. Konfigurasi pin dan nama sinyal konektor serial DB9 Nomor Pin 1 2 3 4 5 6 7 8 9
Nama Sinyal DCD RxD TxD DTR GND DSR RST CTS RI
Direction
Keterangan
in in out out in out in in
Data Carrier Detect/Received Line Signal Detect Receive Data Transmit Data Data Terminal Ready Ground Data Set Ready Request To Send Clear To Send Ring Indicador
Keterangan mengenai fungsi saluran RS232 pada conector DB9 adalah sebagai berikut : 1. Received Line Signal Detect, dengan saluran ini DCE memberitahukan ke DTE bahwa pada terminal masukan ada data masuk. 2. Receive Data, digunakan DTE menerima data dari DCE. Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 35
Tugas MicroControl MMI Server
3. Transmit Data, digunakan DTE mengirimkan data ke DCE. 4. Data Terminal Ready, pada saluran ini DTE memberitahukan kesiapan terminalnya. 5. Signal Ground, saluran ground. 6. Ring Indicator, pada saluran ini DCE memberitahu ke DTE bahwa sebuah stasiun menghendaki hubungan dengannya. 7. Clear To Send, dengan saluran ini DCE memberitahukan bahwa DTE boleh mengirim data. 8. Request To Send, dengan saluran ini DCE diminta mengirim data oleh DTE 9. DCE Ready, sinyal aktif pada saluran ini menunjukkan bahwa DCE sudah siap. Untuk dapat menggunakan port serial perlu diketahui alamatnya. Biasanya tersedia dua port serial pada CPU, yaitu COM1 dan COM2. Base Address COM1 biasanya ádalah 1016 (3F8H) dan COM2 biasanya 760 (2F8H). Alamat tersebut ádalah yang biasa digunakan tergantung dari komputer yang digunakan. Tepatnya bisa dilihat pada peta memori tempat menyimpan alamat tersebut, yaitu memori 0000.0400h untuk base address COM1 dan memori 0000.0402h untuk base address COM2. setelah mengetahui base addressnya maka dapat ditentukanalamat registerregister yang digunakan untuk komunikasi port serial ini. Tabel 2.7 berikut ini ádalah tabel register-register tersebut beserta alamat-alamatnya.
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 36
Tugas MicroControl MMI Server
Tabel 2.7 Nama register dan alamatnya Nama Register
COM1 3F8h 3F8h 3F8h 3F9h 3F9h 3FAh 3FBh 3FCh 3FDh 3FEh
TX Buffer RX Buffer Baud Rate Divisor Match LSB Baud Rate Divisor Match MSB Interrupt Enable Register Interrupt Identification Register Line Control Register Modem Control Register Line Status Register Modem Status Register
COM2 2F8h 2F8h 2F8h 2F9h 2F9h 2FAh 2FBh 2FCh 2FDh 2FEh
Keterangan mengenai fungsi register tersebut adalah sebagai berikut : 1. Tx Buffer, digunakan untuk menampung dan menyimpan data yang akan dikirim ke port serial. 2. Rx Buffer, digunakan untuk menampung dan menyimpan data dari DCE 3. Baud Rate Divisor Match LSB, digunakan untuk menampung byte robot rendah untuk pembagi clock pada IC UART agar didapat baud rate yang tepat 4. Baud Rate Divisor Match MSB, digunakan untuk menampung byte bobot tinggi untuk pembagi clock pada IC UART sehingga total angka pembagi ádalah empat byte yang dapat dipilih dari 0001h sampai FFFFh. Tabel 2.8 berikut ini ádalah tabel angka pembagi clock pada IC UART. Tabel 2.8 Angka pembagi clock pada IC UART Baud Rate (bit/detik) 300 600 1200 1800 2400 4800 9600
Angka Pembagi 0180h 0C00h 0060h 0040h 0030h 0018h 000Ch
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 37
Tugas MicroControl MMI Server
Register Baud Rate Divisor Match bisa diisi jira bit 7 pada register Line Control Register diisi logika 1. 5. Interrupt Enabled Register, digunakan untuk menset interupsi apa saja yang akan dilayani komputer. Tabel 2.9 berikut ini ádalah tabel rincian bit pada Interrupt Enabled register. Tabel 2.9. Rincian bit pada Interrupt Enabled Register. Nomor bit 0 1 2 3 4,5,6, dan 7
Keterangan 1 : Interupsi akan diaktifkan jika menerima data 1 : Interupsi akan diaktifkan jika register Tx kosong 1 : Interupsi akan diaktifkan jika ada perubahan keadaan pada Line Status Register 1 : Interupsi akan diaktifkan jika ada perubahan keadaan pada Modem Status Register Diisi 0
6. Interrupt Identification Register, digunakan untuk menentukan urutan prioritas interupsi. Tabel 2.10 berikut ini ádalah rincian bit Interrupt Identification Register. Tabel 2.10 Rincian bit Interrupt Identification Register. Nomor bit 0
1 dan 2 3,4,5,6, dan 7
Keterangan 0 : Interupsi menunggu 1 : No interrupt pending 00 : Prioritas tertinggi oleh Line Status Register 01 : Prioritas tertinggi oleh register Rx jika menerima data 10 : Prioritas tertinggi oleh register Tx telah kosong 11 : Prioritas tertinggi oleh Modem Status Register Diisi 0
7. Line Control Register, digunakan untuk menentukan jumlah bit data, jumlah bit parity, jumlah bit stop, serta untuk menentukan apakah baud rate divisor
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 38
Tugas MicroControl MMI Server
dapat diubah atau tidak. Tabel 2.11 berikut ini ádalah tabel rincian bit pada Line Control Register. Tabel 2.11 Rincian bit pada Line Control Register. Nomor bit
0 dan 1
2
3 4 5 6 7
Keterangan Jumlah bit data 00 : Jumlah bit data ádalah 5 01 : Jumlah bit data ádalah 6 10 : Jumlah bit data ádalah 7 11 : Jumlah bit data ádalah 8 Bit Stop 0 : Jumlah bit stop adalah 1 1 : Jumlah bit stop adala 1,5 untuk 5 bit data dan 2 untuk 6 hingga 8 bit data Bit Parity 0 : Tanpa Parity 1 : Dengan Parity 0 : Parity ganjil 1 : Parity genap 1 : Bit Parity ikut dikirimkan (stick parity) 0 : Set break control tidak diaktifkan 1 : Set break control diaktifkan 0 : Baud rate divisor tidak dapat diakses 1 : Baud rate divisor dapat diakses
8. Modem Control Register, digunakan untuk mengatur saluran pengatur modem terutama saluran DTR dan saluran RST. Tabel 2.12 berikut ini ádalah tabel rincian bit pada modem Modem Control Register. Tabel 2.12 Rincian bit pada Modem Control Register Nomor bit 0
1
2
Keterangan Bit DTR 0 : Saluran DTR diaktifkan (aktif 0) 1 : Saluran DTR dibuat normal (tidak aktif) Bit RST 0 : Saluran RST diaktifkan (aktif 0) 1 : Saluran RST dibuat normal (tidak aktif) Bit OUT1, digunakan untuk penghubung ke perangkat lain, dapat dibuat logika high atau logika low. Secara normal tidak digunakan.
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 39
Tugas MicroControl MMI Server
3 4 5, 6, 7
Bit OUT2, digunakan untuk penghubung ke perangkat lain, dapat dibuat logika high atau logika low. 0 : Loop back internal diaktifkan 1 : Loop back internal tidak diaktifkan Diisi 0
9. Line Status Register, digunakan untuk menampung bit-bit yang menyatakan keadaan penerimaan atau pengiriman data dan status kesalahan operasi. Tabel 2.13 berikut ini ádalah tabel rincian bit pada Line Status Register. Tabel 2.13 Rincian bit Line Status Register. Nomor bit 0 1 2 3 4 5 6 7
Keterangan 1 : Menyatakan adanya data yang masuk pada buffer Rx 1 : Data yang masuk mengalami overrun 1 : Terjadi kesalahan pada bit parity 1 : Terjadi kesalahan framing 1 : Terjadi Break Interupsi 1 : Menyatakan Rx telah kosong 1 : Menyatakan bahwa Trasmitter Shift Register telah kosong Diisi 0
10. Modem Status Register, digunakan untuk menampung bit-bit yang menyatakan status dari saluran hubungan dengan modem. Tabel 2.14 berikut ini adalah tabel rincian bit pada Modem Status Register. Tabel 2.14 Rincian bit Modem Status Register. Nomor bit 0 1 3 4 5 6
Keterangan 1 : Menyatakan adanya perubahan keadaan di saluran Clear To Send. 1 : Menyatakan adanya perubahan keadaan di saluran Data Set Ready 1 : Menyatakan adanya perubahan keadaan di saluran Ring Indicator dari low ke high 1 : Menyatakan saluran Clear To Send (CTS) sudah dalam keadaan aktif 1 : Menyatakan saluran Data Set Ready (DSR) sudah dalam keadaan aktif 1 : Menyatakan bahwa saluran Ring Indicator sudah dalam
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 40
Tugas MicroControl MMI Server
7
keadaan aktif 1 : Menyatakan bahwa saluran Receiver Line Signal Detect (DCD) sudah dalam keadaan aktif
2.3.5 Alasan Penggunaan Port Serial Dibandingkan dengan menggunakan port paralel, penggunaan port serial terkesan lebih rumit. Berikut ini keuntungan-keuntungan penggunaan port serial dibandingkan dengan port paralel : 1. Pada komunikasi dengan kabel yang panjang, masalah cable loss tidak akan menjadi masalah besar dari pada kabel paralel. Port serial mentransmisikan ‘1’ pada level tegangan -3V sampai -25V dan ‘0’ pada level tegangan +3V sampai dengan +25V, sedangkan port paralel mentransmisikan ‘0’ pada level tegangan 0V dan ‘1’ pada level tegangan +5V. 2. Dibutuhkan jumlah kabel yang lebih sedikit, bisa hanya menggunakan tiga kabel, yaitu saluran Transmit Data, saluran Receive Data, dan saluran Ground (konfigurasi Null Modem). 3. Saat ini penggunaan mikrokontroller semakin populer. Kebanyakan mikrokontroller sudah dilengkapi dengan SCI (Serial Communication Interface) yang sudah digunakan untuk komunikasi dengan port serial komputer. 2.3.6 Pengaksesan Port Serial Pada Borland Delphi Borland Delphi menyediakan komponen khusus untuk mengakses port serial komputer yaitu komponen TComport. TComport menyediakan fasilitas-fasilitas
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 41
Tugas MicroControl MMI Server
untuk mengirim dan menerima data melalui port serial. Properti-properti komponen TComport yang sering digunakan antara lain: •
Port : Menentukan port dari Com yang digunakan apakah COM1, COM2, COM3 dan seterusnya
•
BaudRate : Menentukan Nilai Baud Rate yang digunakan
•
DataBits : Jumlah Bit data yang digunakan
•
StopBits : Jumlah Bit Stop yang digunakan
•
Parity : Menentukan paritas yang digunakan
•
Connected : Jika bernilai true, maka koneksi ke COM aktif dan jika bernilai false maka koneksi ke COM tidak aktif.
2.3.7 Borland Delphi Borland Delphi merupakan suatu bahasa pemrograman yang memberikan berbagai fasilitas pembuatan aplikasi visual. Untuk mengetahui pemrograman visual terutama Borland Delphi, bagian ini membahas komponen-komponen pada Delphi, bagaimana cara menjalankan program Borland Delphi dan Mengenal IDE Delphi. 2.3.8 Menjalankan Program Borland Delphi Langkah pertama adalah: 1. Mengklik tombol Start yang terletak pada bagian Taskbar 2. Memilih menu Programs 3. Memilih Borland Delphi 7, kemudian klik Delphi 7 4. Sesaat kemudian akan muncul tampilan lembar kerja Borland Delphi seperti yang terlihat pada gambar 2.8.
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 42
Tugas MicroControl MMI Server
Gambar 2.8. Lembar kerja Borland Delphi 2.3.9 Mengenal IDE Delphi IDE (Integrated Development Environment) atau lingkungan pengembangan terpadu pada program Delphi terbagi menjadi delapan bagian utama, yaitu: Main Window, ToolBar, Component Palette, Form Designer, Code Editor, Object Inspector, Code Explorer, dan Object TreeView . Main Window Jendela utama ini adalah bagian dari IDE yang mempunyai fungsi yang sama dengan semua fungsi utama dari program aplikasi Windows lainnya. Jendela utama Delphi terbagi menjadi tiga bagian, yaitu: Main Menu, Toolbar dan Componen Pallete Tollbar Delphi memiliki beberapa toolbar yang masing-masing memiliki perbedaan fungsi dan setiap tombol pada bagian toolbar berfungsi sebagai pengganti suatu menu perintah yang sering digunakan. Toolbar terletak pada bagian bawah baris menu. Pada kondisi default Delphi memiliki enam bagain toolbar, antara lain: Standart, View, Debug, Desktops, Custom dan Componen Palette. Tombol-
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 43
Tugas MicroControl MMI Server
tombol yang terletak pada bagian toolbar dapat ditambah atau dikurangi sesuai kebutuhan. Component Pallete Component Palette berisi kumpulan ikon yang melambangkan komponenkomponen yang terdapat pada VCL (Visual Component Library). Pada Componen Palette Anda akan menemukan beberapa page control, seperti Standart, Additional, Win32, System, Data Access dan lain-lain seperti tampak pada gambar 2.9.
Gambar 2.9 Component Palette Ikon tombol Pointer terdapat di setiap page control. Tombol ini dipakai untuk menekan atau memilih posisi. untuk memilih sebuah item dari sebuah page control, tombol pointer ini akan berada dalam keadaan tidak aktif. Hal ini berarti Anda akan meletakkan komponen pada form, cukup dengan mengklik pada form. Form Designer Merupakan suatu objek yang dapat dipakai sebagai tempat untuk merancang program aplikasi. Form berbentuk sebuah meja kerja yang dapat diisi dengan komponen-komponen yang diambil dari Component Palette. Pada saat memulai Delphi, Delphi akan memberikan sebuah form kosong yang disebut form1, seperti gambar 2.10 di bawah ini.
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 44
Tugas MicroControl MMI Server
Gambar 2.10 Lembar kerja Form Sebuah form mengandung unit yang berfungsi untuk mengendalikan form dan dapat mengendalikan komponen-komponen yang terletak dalam form dengan menggunakan Object Inspector dan Code Editor. Code Editor Code Editor merupakan tempat untuk menuliskan kode program. Pada bagian ini dapat dituliskan pernyataan-pernyataan dalam Object Pascal. Satu diantara keuntungan bagi pengguna Delphi adalah tidak perlu menuliskan kodekode sumber, karena Delphi telah menyediakan kerangka penulisan sebuah program seperti pada gambar 2.11 di bawah ini.
Gambar 2.11 Lembar kerja Code Editor
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 45
Tugas MicroControl MMI Server
Object Inspector Digunakan untuk mengubah properti atau karakteristik dari sebuah komponen. Object Inspector terdiri dari dua tab, yaitu Properties dan Events seperti gambar 2.12 di bawah ini.
Gambar 2.12 Lembar kerja Object Inspector Code Explorer Code Explorer merupakan lembar kerja baru yang terdapat di dalam Delphi7 yang tidak ditemukan pada versi-versi sebelumnya. Code Explorer digunakan untuk memudahkan pemakai berpindah antar file unit yang terdapat di dalam jendela Code Editor. Untuk menutup Code Explorer, klik tanda silang yang terdapat di sudut kanan atas, dan untuk membukanya kembali pilih menu View Code Explorer dari main menu atau klik kanan dalam jendela Code Editor kemudian pilih View Explorer. Object TreeView Object TreeView menampilkan diagram pohon dari komponen-komponen yang bersifat visual maupun nonvisual yang telah terdapat dalam form, data module, atau frame. Object TreeView juga menampilkan hubungan logika antar
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 46
Tugas MicroControl MMI Server
komponen. Apabila mengklik kanan salah satu item yang terdapat di dalam diagram pohon, dapat dilihat konteks menu komponen versi sebelumnya. Untuk mengakses menu secara penuh, klik kanan pada komponen yang sama dalam form, data module, atau frame. 2.4
Operational Amplifier Operasional Amplifier (Op-Amp) adalah piranti elektronik yang bisa
digunakan sebagai penguat arus ataupun penguat tegangan dengan sedikit tambahan komponen ekstern. 2.4.1 Penguat Non Inverting Penguat Non Inverting mempunyai isyarat keluaran yang tidak terbalik dari masukannya. Gambar 2.13 berikut ádalah konfigurasi dasar dari penguat Non Inverting. Vin
+
Vo
-
R1 R2
Gambar 2.13 Konfigurasi dasar Penguat Non Inverting Besarnya Vout ditentukan oleh componen ekstenal R1 dan R2 dengan persamaan : R1 Vout = 1 + xVin R2
2.4.2 Penguat Inverting Penguat Inverting mempunyai isyarat keluaran yang terbalik dari masukannya. Gambar 2.14 berikut ádalah konfigurasi dasar dari penguat Inverting. Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 47
Tugas MicroControl MMI Server
R1 R2 Vin
-
Vo
+
Gambar 2.14 Konfigurasi dasar Penguat Non Inverting Besarnya Vout ditentukan oleh componen ekstenal R1 dan R2 dengan persamaan : Vout = −
R1 xVin R2
2.4.3 Penguat Penjumlah Penguat Penjumlah ádalah penguat yang mempunyai beberapa masukan dan satu keluaaran. Konfigurasi penguat penjumlah terlihat seperti pada gambar 2.15 berikut. R1 R2 V1
-
R3 V2 Vn
Vo
+
Rn
Gambar 2.15. Konfigurasi Dasar Penguat Penjumlah Besarnya Vout ditentukan oleh komponen ekstenal R1, R2, R3, ..Rn dengan persamaan : R1 R1 R1 Vout = − xV 1 + xV 2 + .......... + xVn R3 Rn R2
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 48
Tugas MicroControl MMI Server
2.5
Servo Motor DC Servo Motor DC type ED-4400 adalah servo system yang mempunyai
berberapa modul. Tabel 2.15 dan Gambar 2.16 adalah tabel deskripsi fungsi dan gambar skema rangkaian dari tiap modul tersebut. Tabel 2.15. Deskripsi fungsi tiap modul ED-4400 servo system Modul U-151 U-152 U-153 U-154 U-155 U-156 U-157 U-158 U-159 U-161
Deskripsi Dual Attenuator (0, 9/10 ....1/10 attenuations) Summing Amplifier (gain : 0 dB, EXT, NET) Pre-amplifier (gain : 20 dB) Motor driver amplifier (10 watts) Tacho Amp Unit DC power suplly (± 15V 0.2ª and motor power) Potensiometer (reference) (1KΩ or 10KΩ 5W) Potensiometer (Motor Coupling) (1KΩ or 10KΩ 5W) Tachometer (FS 4000 RPM) Servo motor : - Motor : 12V, 4.5W - Tacho Generator : Aprox 3Vp-p / 4000RPM Function Generator (0.1 – 1Hz, 1Hz-10Hz and Ramp output) Magnet Brake : - Air gap : 4mm, 10 step variable - Input Power : AC 220V, 50 – 60Hz
U-162 U-163
-15V COM +15V
-15V COM +15V
-
G
-
To Motor Drive Amp G
-O/L
-15V
+O/L
COM
-O/L
+5V +O/L
+ -+
SERVO DC POWER SUPPLY
+
-
-
U-153
U-156
DC AMPERE +
ON
U-154 OFF
~
-15V COM +15V
-
+
Tacho Motor -
T P
O M
IN
G
GEAR
U-161
+
U-159
G
U-155
Gambar 2.16. Modul Sistem Servo Motor ED-4400
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 49
Tugas MicroControl MMI Server
BAB III PERANCANGAN DAN ANALISIS Man-Machine Interface untuk Sistem Servo Motor DC terdiri dari dua bagian yaitu perangkat keras dan perangkat lunak. Perangkat kerasnya terdiri dari satu set sistem servo motor DC, Microprocessor Trainer SK-8051, rangkaian Digital to Analog Converter, rangkaian penyesuai level tegangan, dan beberapa PC yang berfungsi sebagai server MMI dan Client MMI sedangkan perangkat lunaknya yaitu software Microprocessor Trainer SK-8051, software server dan Client MMI yang dibuat dalam bahasa pemrograman Borland Delphi Enterprise Edition. Gambar 3.1 berikut ini adalah blok diagram Man-Machine Interface untuk Sistem Servo Motor DC. MICROPROCESSOR TRAINER SK - 8051
DIGITAL TO ANALOG CONVERTER
PENYESUAI LEVEL TEGANGAN
PENYESUAI LEVEL TEGANGAN
SISTEM SERVO MOTOR DC
RS232
SERVER MMI (PC)
CLIENT MMI (PC) CLIENT MMI (PC)
Jaringan komputer Gambar 3.1. Blok Diagram Man-Machine Interface untuk Sistem Servo Motor
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 50
Tugas MicroControl MMI Server
Berikut ini penjelasan, rancangan, dan analisis dari masing-masing blok pada gambar 3.1 di atas.
3.1
Perangkat Keras
A. Modul Mikroprosesor Trainer SK-8051 Modul Mikroprosesor Trainer SK-8051 adalah modul dengan 1 set rangkaian yang di dalamnya sudah terdapat beberapa komponen pendukung yang membentuk ’One Board Computer System Training Kit’ dengan MPU 8051 system. Namun tidak semua komponen tersebut dipakai dalam praktikum MMI Server untuk Servo Motor DC ini. Komponen yang digunakan dalam Modul SK8051 hanya Mikrocontroller AT89C51 dan ADC0808. ADC0808 digunakan untuk mengkonversi isyarat analog keluaran Servo Motor DC menjadi data digital yang selanjutnya oleh mikrocontroller 89C51 mengirimkan data tersebut ke komputer server. ADC0808 seperti dijelaskan pada bab 2 adalah ADC dengan 8 kanal input termultipleks. Pada praktikum ini digunakan kanal 2 karena kanal lainnya telah digunakan untuk fungsi internal dalam modul SK-8051. Pada Modul SK-8051 terdapat keluaran 8 bit yang terhubung langsung dengan port1 (P1) mikrokontroller. Keluaran 8 bit ini digunakan untuk input DAC0808 yang dibuat khusus untuk mengendalikan servo motor DC dalam modul
ED-4400 servo
system. Untuk berkomunikasi dengan Komputer Server Modul SK-8051 dilengkapi dengan fasilitas komunikasi serial RS232.
B. Rangkaian Digital To Analog Converter Rangkaian Digital To Analog Converter berfungsi untuk mengkonversi data digital keluaran Mikrocontoller menjadi tegangan analog yang akan diinputkan ke
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 51
Tugas MicroControl MMI Server
rangkaian servo motor DC. Dalam rancangan ini digunakan DAC0808. Gambar 3.2 adalah gambar rangkaian DAC0808 sebagai berikut : 3K
Port P1 AT89C51 (SK-8051)
D7 D6 D5 D4 D3 D2 D1 D0
5 13 14 6 15 7 2 8 DAC 9 0808 10 4 11 11 12 3
+15V 3K 1K
741 1uF
Vout (0V-+5V)
+
Gambar 3.2. Gambar Rangkaian DAC 0808 Dengan tegangan +15V dan hambatan 3Kohm pada penyemat 14, didapatkan arus referensi sebesar 5mA. Pada rangkaian OP-Amp 741 diberi hambatan 1Kohm, sehingga tegangan keluaran DAC sebesar +5V. Keluaran P1 dari mikrokontroller AT89C51 yang tersedia pada modul SK8051 dihubungkan dengan masukan D0 – D7 DAC 0808. Keluaran rangkaian DAC0808 pada gambar 3.2 di atas berlevel tegangan 0V sampai +5V. Sedangkan masukan servo motor menurut pengukuran yang telah dilakukan berlevel tegangan -1,1V sampai +1,1V untuk kecepatan 0 sampai 4000 rpm dengan polaritas negatif dan positif. Oleh karena itu, keluaran rangkaian DAC0808 tidak bisa dihubungkan secara langsung dengan masukan rangkaian servo motor DC. Untuk itu diperlukan rangkaian penggeser level dan penyesuai tegangan keluaran DAC0808.
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 52
Tugas MicroControl MMI Server
C. Rangkaian Penggeser Level dan Penyesuai Tegangan Keluaran DAC0808 Rangkaian Penggeser Level dan Penyesuai Tegangan Keluaran DAC0808 dibuat dengan menggunakan Op-Amp dengan memperhatikan kondisi keluaran DAC0808 dan masukan Rangkaian Servo Motor DC. Tugas utama rangkaian ini adalah menggeser setengah level tegangan positif dari 0V sampai +5V ke level tegangan negatif sekaligus menyesuaikan level tegangan tersebut agar masuk dalam range -1,1V sampai +1,1V yang diinginkan oleh masukan rangkaian servo motor DC. Untuk merealisasikannya dibuat grafik linier keluaran DAC (sebagai masukan rangkaian) dan masukan rangkaian servo motor DC (sebagai keluaran rangkaian) seperti gambar 3.3 berikut ini : Vout +1,1V
0V
+2,5
+5V
Vin
-1,1V
Gambar 3.3. Grafik Masukan dan Keluaran Rangkaian Penggeser dan Penyesuai level Tegangan DAC0808
Persamaan matematis dari grafik tersebut adalah : Vout =
2,2 Vin − 1,1 5
................................. pers. 3.1
Dari persamaan tersebut dibuat rangkaian dengan menggunakan Op-Amp seperti terlihat dalam gambar 3.4 berikut.
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 53
Tugas MicroControl MMI Server
2,2K
Vin +15 V
5K 30K
Vou
+
Gambar 3.4. Rangkaian Penggeser Level dan penyesuai Tegangan DAC0808 Keluaran rangkaian tersebut membalik (inverting). Untuk mengembalikan ke kondisi semula, keluarannya diinputkan ke rangkaian inverting dengan penguatan 1, sehingga rangkaian lengkap penggeser level dan penyesuai tegangan keluaran DAC adalah seperti terlihat dalam gambar 3.5 berikut ini. 2,2 K
1K
5K Vin +15 V
1K
-
-
30K +
Vo
+
Gambar 3.5. Rangkaian Lengkap Penggeser Level dan penyesuai Tegangan DAC
D. Sistem Servo Motor DC Sistem Servo Motor DC type ED4400 seperti yang dijelaskan pada bab II mempunyai beberapa modul. Pada percobaan ini, tidak semua modul tersebut digunakan. Hal ini disesuaikan dengan kebutuhan pengendalian kecepatan putaran motor. Modul-modul yang digunakan adalah : U-153 (Pre-amplifier), U-154 (Motor Driver Amplifier), U-156 (DC Power Supply), U-155 (Tacho Amplifier unit), U-161 (Servo Motor), dan U-159 (Tacho Meter). Gambar 3.6 adalah gambar rangkaian sistem servo motor yang digunakan untuk percobaan ini
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 54
Tugas MicroControl MMI Server
-15V COM +15V
-15V COM +15V
To Motor Drive Amp
-
G
-
G
-O/L
-15V
+O/L
COM
-O/L
+15V +O/L
+ -+
+
-
SERVO DC POWER SUPPLY -
U-156
DC AMPERE +
ON
U-154
U-153
OFF
~
-15V COM +15V
-
+
Tacho Motor -
T P
O M
IN
G
GEAR
U-161
+
U-159
G
U-155
Ke Rangkaian Penggesel Level dan Penyesuai Tegangan Servo Motor DC DariRangkaian Penggesel Level dan Penyesuai Tegangan DAC0808
Gambar 3.6. Rangkaian sistem servo motor DC Keluaran rangkaian Servo Motor DC di atas menurut pengukuran yang telah dilakukan berlevel tegangan -10,6V sampai +10,6V dengan polaritas putar kiri dan putar kanan. Sedangkan masukan ADC0808 pada modul SK-8051 berlevel tegangan 0V sampai +5V. Oleh karena itu, keluaran rangkaian Servo Motor DC ini tidak bisa dihubungkan secara langsung dengan masukan ADC0808. Untuk itu diperlukan rangkaian penggeser dan penyesuai level tegangan keluaran Servo Motor DC.
E. Rangkaian Penggeser Level dan Penyesuai Tegangan Keluaran Servo Motor DC Rangkaian Penggeser Level dan Penyesuai Tegangan Keluaran Servo Motor DC dibuat dengan menggunakan Op-Amp dengan memperhatikan kondisi keluaran Servo Motor DC dan masukan rangkaian ADC0808 pada modul SK-
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 55
Tugas MicroControl MMI Server
8051. Tugas utama rangkaian ini adalah menggeser setengah level tegangan negatif keluaran servo motor DC dari -10,6V sampai +10,6V ke level tegangan positif sekaligus menyesuaikan level tegangan tersebut agar masuk dalam range 0V sampai +5V seperti yang diinginkan oleh masukan rangkaian ADC0808. Untuk merealisasikannya dibuat grafik linier keluaran Servo Motor DC (sebagai masukan rangkaian) dan masukan rangkaian ADC0808 (sebagai keluaran rangkaian) seperti gambar 3.7 berikut ini : Vout
+5V
2,5V
Vin -10,6V
0V
+10,6V
Gambar 3.7. Grafik Masukan dan Keluaran Rangkaian Penggeser Level dan Penyesuai Tegangan Servo Motor DC Persamaan matematis dari grafik tersebut adalah :
Vout =
5 Vin + 2,5 21,2
......................................... per. 3.2
Dari persamaan tersebut dibuat rangkaian dengan menggunakan Op-Amp seperti terlihat dalam gambar 3.8 berikut. 5K Vin +15V
50K 30K
Vout
+
Gambar 3.8. Rangkaian Penggeser Level dan penyesuai Tegangan DAC
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 56
Tugas MicroControl MMI Server
Keluaran rangkaian tersebut membalik (inverting). Untuk mengembalikan ke kondisi semula, keluarannya diinputkan ke rangkaian inverting dengan penguatan 1, sehingga rangkaian lengkap penggeser level dan penyesuai tegangan keluaran Servo Motor DC adalah seperti terlihat dalam gambar 3.9 berikut ini. 5K
1 K
50K Vin +15 V
1K
-
-
30K +
Vout
+
Gambar 3.9. Rangkaian Lengkap Penggeser Level dan penyesuai Tegangan Servo Motor DC
F. Server/Client MMI MMI merupakan sistem interface yang digunakan oleh pengguna (operator) dalam melakukan monitoring dan pengendalian sistem. MMI dapat berupa Sistem komputer yang terdiri komputer server, komputer-komputer klien yang saling terkoneksi dalam suatu jaringan. Dalam praktikum ini dibangun sistem MMI berupa : -
1 buah komputer server
-
2 buah laptop sebagai klien
-
Perangkat jaringan (sistem wireless) : 1 buah Access Point & 1 buah USB Wireless Client untuk komputer server & 2 buah built–in wireless client pada laptop klien
-
Perangkat Lunak Server MMI dan Client MMI
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 57
Tugas MicroControl MMI Server
Gambar 3.10. Konfigurasi MMI pada Percobaan Praktikum Langkah-langkah dilakukan adalah sebagai berikut : -
Melakukan setup wireless pada komputer server dan laptop klien dan access point
-
Melakukan konfigurasi protokol TCP/IP dengan penentuan alamat IP bagi masing-masing komputer dan perangkat jaringan.
-
Melakukan tes koneksi jaringan
-
Uji coba fungsi software MMI server dan klien.
Setting Protocol TCP/IP
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 58
Tugas MicroControl MMI Server
Setting WLAN IP komputer server
Setting WLAN IP komputer client1
Setting WLAN IP komputer client2
Setting WLAN IP Access Point
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 59
Tugas MicroControl MMI Server
3.2
Perangkat Lunak Agar dapat dapat bekerja menjadi sebuah Man-Machine Interface untuk
Sistem Servo Motor DC, perangkat keras seperti yang dijelaskan di atas harus didukung oleh perangkat lunak (software). Dalam hal ini ada tiga bagian perangkat lunak yang dibuat yaitu perangkat lunak pada mikrokontroller (modul SK-8051), perangkat lunak pada MMI-Server, dan perangkat lunak pada Client. Ketiga perangkat lunak tersebut mempunyai cara kerja yang berbeda.
3.2.1 Mikrokontroller (Modul SK-8051) Untuk dapat menerima dan mengirim data ke server, mikrokontroller pada modul SK-8051 harus diprogram terlebih dahulu. Data yang dikirim/diterima dari server berupa data biner 8 bit dalam format serial melalui port serial RS232. Program yang dibuat akan mengikuti alur seperti dalam flowchart berikut : Start Inisialisasi port serial Uc
Data siap diterima ?
T
Y Data =Buffer Port1 = Data Baca Data ADC
Data siap dikirim
?
T
Y SBuff = Data Selesai
Gambar 3.11. Flowchart Program mikrokontroller
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 60
Tugas MicroControl MMI Server
Berikut ini linsting program untuk mikrokontroller SK-8051 ORG 8000H MOV SP,#40H SJMP START L563 EQU CTC_0 EQU CTC_1 EQU CTC_2 EQU CTC_CWR EQU ADC_0 EQU ADC_1 EQU ADC_2 EQU
0FF38H 0FF40H 0FF41H 0FF42H 0FF43H 0FF48H 0FF49H 0FF4AH
START: ACALL INIT UTAMA: ACALL RX ACALL KONV ACALL TX SJMP UTAMA INIT:
MOV TMOD,#20H MOV TH1,#0FDH MOV SCON,#50H SETB TR1 RET
; timer 1 mode 2(8-bit,isi-ulang) ; 9600 baud rate ; Mode serial: 8-bit UART ; Jalankan Timer 1
RX:
JNB RI,$ MOV A,SBUF MOV P1,A CLR RI RET
; tunggu data dari serial ; pindahkan data serial ke ACC ; data ACC ke Port1 ; clear flag RI
TX:
MOV SBUF,A JNB TI,$ CLR TI RET
; memindahkan isi akumulator ke buffer ; tunggu sampai data terkirim semua ; hapus TI
KONV:
MOV DPTR,#CTC_CWR MOV A,#01110110B MOVX @DPTR,A MOV DPTR,#CTC_1 MOV A,#10 MOVX @DPTR,A MOV A,#0 MOVX @DPTR,A CALL T_adc MOV DPTR,#ADC_1 MOVX @DPTR,A MOV B,#100 DJNZ B,$
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 61
Tugas MicroControl MMI Server
MOVX A,@DPTR MOV DPTR,#L563 MOVX @DPTR,A RET T_adc:
PUSH 1EH PUSH 1FH MOV 1EH,#100
T_a1:
MOV 1FH,#0 DJNZ 1FH,$ DJNZ 1EH,T_a1 POP 1FH POP 1EH RET END
3.2.2 MMI-Server Man-Machine Interface Server adalah software yang dirancang untuk mengatur koneksi Client dan memberikan layanan tranfer data dari client ke server untuk mengatur kecepatan servo motor.
Gambar tampilan program
Gambar 3.12. Tampilan Software MMI-Server
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 62
Tugas MicroControl MMI Server
Linsting Program unit UnitMMI; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ScktComp, jpeg, Buttons, CPort; const WM_REFRESHCLIENT = WM_USER + 100; type TFormServer = class(TForm) Timer1: TTimer; ServerMMI_1: TServerSocket; ServerMMI_2: TServerSocket; Label1: TLabel; Label3: TLabel; Label4: TLabel; Label6: TLabel; Label7: TLabel; Label10: TLabel; Label11: TLabel; Label13: TLabel; Label14: TLabel; Label15: TLabel; Label16: TLabel; CB1: TCheckBox; CB2: TCheckBox; Bevel1: TBevel; Panel1: TPanel; Panel2: TPanel; Bevel2: TBevel; Label2: TLabel; Image1: TImage; SettingPort: TSpeedButton; OpenPort: TSpeedButton; Port: TComPort; TutupProgram: TSpeedButton; Bevel3: TBevel; Label5: TLabel; procedure WMNCHitTest(var msg : TWMNCHitTest); WM_NCHitTest; procedure ServerMMI_1ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 63
message
Tugas MicroControl MMI Server
procedure ServerMMI_1ClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure ServerMMI_1ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); procedure CB1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure ServerMMI_2ClientConnect(Sender: TObject; Socket: TCustomWinSocket); procedure ServerMMI_2ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); procedure ServerMMI_2ClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure CB2Click(Sender: TObject); procedure SettingPortClick(Sender: TObject); procedure OpenPortClick(Sender: TObject); procedure TutupProgramClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var FormServer: TFormServer; data_terima, data_kirim : byte; selisih : integer; implementation procedure TFormServer.WMNCHitTest(var msg : TWMNCHitTest); begin inherited; if (msg.Result = htClient ) then if (msg.YPos < Top + 20)then msg.Result:=htCaption; end; {$R *.dfm} procedure TFormServer.SettingPortClick(Sender: TObject); begin Port.ShowSetupDialog; end; procedure TFormServer.OpenPortClick(Sender: TObject); begin if Port.Connected then Port.Close
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 64
Tugas MicroControl MMI Server
else Port.Open; end; procedure TFormServer.Timer1Timer(Sender: TObject); var a : byte; begin a:=data_kirim+selisih; Port.Write(a,1); Port.Read(data_terima,1); selisih:=data_kirim-data_terima; end; procedure TFormServer.ServerMMI_1ClientConnect(Sender: TObject; Socket: TCustomWinSocket); begin Label15.caption:='Connected '+Socket.RemoteHost+'('+Socket.RemoteAddress+')'; PostMessage(Handle,WM_REFRESHCLIENT,0,0); CB1.Checked:=false; CB1.Enabled:=true; end; procedure TFormServer.ServerMMI_1ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); begin Label10.Caption:='-'; Label11.Caption:='-'; Label5.Caption:='-'; Label15.caption:='Disconnected '+Socket.RemoteHost+'('+Socket.RemoteAddress+')'; PostMessage(Handle,WM_REFRESHCLIENT,0,0); CB1.Checked:=false; CB1.Enabled:=false; end; procedure TFormServer.ServerMMI_1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var DataClient1:string[5]; Pol :string[1]; Kec :string[4]; begin DataClient1:=Socket.ReceiveText; pol:=copy(DataClient1,1,1); Kec:=copy(DataClient1,2,4); if pol='0' then begin
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 65
:
:
Tugas MicroControl MMI Server
Label10.Caption:='Putar Kanan'; Label11.Caption:=kec+' rpm'; data_kirim:=round(128*StrToInt(kec)/4000) + 127; Label5.Caption:=IntToStr(data_kirim)+' desimal'; end else if pol='1' then begin Label10.Caption:='Putar Kiri'; Label11.Caption:=kec+' rpm'; data_kirim:=round(127-127*StrToInt(kec)/4000); Label5.Caption:=IntToStr(data_kirim)+' desimal'; end end; procedure TFormServer.CB1Click(Sender: TObject); begin selisih:=0; if CB1.Checked=true then begin ServerMMI_1.Socket.Connections[0].SendText('YA'); CB2.Checked:=false; Timer1.Enabled:=true; end; if CB1.Checked=false then begin ServerMMI_1.Socket.Connections[0].SendText('TIDAK'); Label10.Caption:='-'; Label11.Caption:='-'; Label5.Caption:='-'; if CB2.Checked=false then timer1.Enabled:=false; end; end; procedure TFormServer.ServerMMI_2ClientConnect(Sender: TObject; Socket: TCustomWinSocket); begin Label16.caption:='Connected '+Socket.RemoteHost+'('+Socket.RemoteAddress+')'; PostMessage(Handle,WM_REFRESHCLIENT,0,0); CB2.Checked:=false; CB2.Enabled:=true; end; procedure TFormServer.ServerMMI_2ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); begin
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 66
:
Tugas MicroControl MMI Server
Label10.Caption:='-'; Label11.Caption:='-'; Label5.Caption:='-'; Label16.caption:='Disconnected '+Socket.RemoteHost+'('+Socket.RemoteAddress+')'; PostMessage(Handle,WM_REFRESHCLIENT,0,0); CB2.Checked:=false; CB2.Enabled:=false; end; procedure TFormServer.ServerMMI_2ClientRead(Sender: TObject; Socket: TCustomWinSocket); var DataClient2:string[5]; Pol :string[1]; Kec :string[4]; begin DataClient2:=Socket.ReceiveText; pol:=copy(DataClient2,1,1); Kec:=copy(DataClient2,2,4); if pol='0' then begin Label10.Caption:='Putar Kanan'; Label11.Caption:=kec+' rpm'; data_kirim:=round(128*StrToInt(kec)/4000) + 127; Label5.Caption:=IntToStr(data_kirim)+' desimal'; end else if pol='1' then begin Label10.Caption:='Putar Kiri'; Label11.Caption:=kec+' rpm'; data_kirim:=round(127-127*StrToInt(kec)/4000); Label5.Caption:=IntToStr(data_kirim)+' desimal'; end; end; procedure TFormServer.CB2Click(Sender: TObject); begin selisih:=0; if CB2.Checked=true then begin ServerMMI_2.Socket.Connections[0].SendText('YA'); CB1.Checked:=false; Timer1.Enabled:=true; end; if CB2.Checked=false then begin
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 67
:
Tugas MicroControl MMI Server
ServerMMI_2.Socket.Connections[0].SendText('TIDAK'); Label10.Caption:='-'; Label11.Caption:='-'; Label5.Caption:='-'; if CB1.Checked=false then timer1.Enabled:=false; end; end; procedure TFormServer.TutupProgramClick(Sender: TObject); var stop : byte; begin stop:=127; port.Write(stop,1); Close; end; end.
3.2.3 Client 2 Gambar tampilan program
Gambar 3.13. Tampilan Software MMI-Client1
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 68
Tugas MicroControl MMI Server
Linsting Program unit UnitClientMMI_1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ScktComp, Buttons, jpeg, Mask; type TFormClient = class(TForm) ClientMMI: TClientSocket; Label2: TLabel; Image1: TImage; Panel1: TPanel; Label3: TLabel; Label7: TLabel; Polaritas: TLabel; Label4: TLabel; Label8: TLabel; Label5: TLabel; Label6: TLabel; SB: TScrollBar; Label1: TLabel; Label9: TLabel; InIP: TEdit; Koneksi: TCheckBox; Label10: TLabel; SpeedButton1: TSpeedButton; OK: TSpeedButton; procedure WMNCHitTest(var msg : TWMNCHitTest); message WM_NCHitTest; procedure PolaritasClick(Sender: TObject); procedure KoneksiClick(Sender: TObject); procedure ClientMMIRead(Sender: TObject; Socket: TCustomWinSocket); procedure InIPChange(Sender: TObject); procedure SBChange(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure OKClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 69
Tugas MicroControl MMI Server
FormClient: TFormClient; data_terima, data_kirim : byte; pol:string[1]; kec:string[4]; implementation procedure TFormClient.WMNCHitTest(var msg : TWMNCHitTest); begin inherited; if (msg.Result = htClient ) then if (msg.YPos < Top + 20)then msg.Result:=htCaption; end; {$R *.dfm} procedure TFormClient.PolaritasClick(Sender: TObject); begin if polaritas.Caption='Putar Kanan' then Polaritas.Caption:='Putar Kiri' else Polaritas.Caption:='Putar Kanan'; SBChange(sender); OKClick(Sender); end; procedure TFormClient.KoneksiClick(Sender: TObject); begin if not ClientMMI.Active then begin ClientMMI.Address:=InIP.Text; end; ClientMMI.Active:=Koneksi.Checked; if koneksi.Checked=false then begin Panel1.Enabled:=false; Label2.Visible:=false; end; end; procedure TFormClient.ClientMMIRead(Sender: TObject; Socket: TCustomWinSocket); var status:string[5]; begin status:=ClientMMI.Socket.ReceiveText; if status='YA' then begin Label2.Visible:=true;
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 70
Tugas MicroControl MMI Server
Label2.Caption:='Status : Client diperbolehkan mengirim data'; Panel1.Enabled:=true; SBChange(sender); end; if status='TIDAK' then begin Label2.Caption:='Status : Client tidak diperbolehkan mengirim data'; Panel1.Enabled:=false; end; end; procedure TFormClient.InIPChange(Sender: TObject); begin if InIP.Text='' then Koneksi.Enabled:=false else Koneksi.Enabled:=true; end; procedure TFormClient.SBChange(Sender: TObject); begin Label1.Caption:=IntToStr(SB.Position); kec:=Label1.Caption; if Polaritas.Caption='Putar Kanan' then pol:='0' else if Polaritas.Caption='Putar Kiri' then pol:='1'; end; procedure TFormClient.SpeedButton1Click(Sender: TObject); begin Close; end; procedure TFormClient.OKClick(Sender: TObject); begin ClientMMI.Socket.SendText(pol+kec); end; end.
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 71
Tugas MicroControl MMI Server
3.2.4 Client 2 Gambar tampilan program
Gambar 3.14. Tampilan Software MMI-Client2
Linsting Program unit UnitClientMMI_2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ScktComp, Buttons, jpeg, Mask; type TFormClient = class(TForm) ClientMMI: TClientSocket; Label2: TLabel; Image1: TImage; Panel1: TPanel; Label3: TLabel; Label7: TLabel; Polaritas: TLabel; Label4: TLabel; Label8: TLabel;
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 72
Tugas MicroControl MMI Server
Label5: TLabel; Label6: TLabel; SB: TScrollBar; Label1: TLabel; Label9: TLabel; InIP: TEdit; Koneksi: TCheckBox; Label10: TLabel; SpeedButton1: TSpeedButton; OK: TSpeedButton; procedure WMNCHitTest(var msg : TWMNCHitTest); message WM_NCHitTest; procedure PolaritasClick(Sender: TObject); procedure KoneksiClick(Sender: TObject); procedure ClientMMIRead(Sender: TObject; Socket: TCustomWinSocket); procedure InIPChange(Sender: TObject); procedure SBChange(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure OKClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var FormClient: TFormClient; data_terima, data_kirim : byte; pol:string[1]; kec:string[4]; implementation procedure TFormClient.WMNCHitTest(var msg : TWMNCHitTest); begin inherited; if (msg.Result = htClient ) then if (msg.YPos < Top + 20)then msg.Result:=htCaption; end; {$R *.dfm} procedure TFormClient.PolaritasClick(Sender: TObject); begin if polaritas.Caption='Putar Kanan' then Polaritas.Caption:='Putar Kiri' else Polaritas.Caption:='Putar Kanan';
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 73
Tugas MicroControl MMI Server
SBChange(sender); OKClick(Sender); end; procedure TFormClient.KoneksiClick(Sender: TObject); begin if not ClientMMI.Active then begin ClientMMI.Address:=InIP.Text; end; ClientMMI.Active:=Koneksi.Checked; if koneksi.Checked=false then begin Panel1.Enabled:=false; Label2.Visible:=false; end; end; procedure TFormClient.ClientMMIRead(Sender: TObject; Socket: TCustomWinSocket); var status:string[5]; begin status:=ClientMMI.Socket.ReceiveText; if status='YA' then begin Label2.Visible:=true; Label2.Caption:='Status : Client diperbolehkan mengirim data'; Panel1.Enabled:=true; SBChange(sender); end; if status='TIDAK' then begin Label2.Caption:='Status : Client tidak diperbolehkan mengirim data'; Panel1.Enabled:=false; end; end; procedure TFormClient.InIPChange(Sender: TObject); begin if InIP.Text='' then Koneksi.Enabled:=false else Koneksi.Enabled:=true; end; procedure TFormClient.SBChange(Sender: TObject); begin Label1.Caption:=IntToStr(SB.Position); kec:=Label1.Caption; if Polaritas.Caption='Putar Kanan' then pol:='0' else
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 74
Tugas MicroControl MMI Server
if Polaritas.Caption='Putar Kiri' then pol:='1'; end; procedure TFormClient.SpeedButton1Click(Sender: TObject); begin Close; end; procedure TFormClient.OKClick(Sender: TObject); begin ClientMMI.Socket.SendText(pol+kec); end; end.
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 75
Tugas MicroControl MMI Server
BAB IV KESIMPULAN DAN SARAN A.
Kesimpulan
Tegangan input dari sistem servo motor ED 4400 adalah 0V sampai 1,1V untuk polaritas positif dan 0V sampai -1,1V untuk polaritas negatif yang sebanding dengan kecepatan putaran motor sebesar 0 rpm sampai 4000 rpm.
Tegangan output servo motor adalah sebesar 0V sampai 10,6V untuk polaritas positif dan 0V sampai -10,6V untuk polaritas negatif yang sebanding dengan kecepatan putaran motor sebesar 0 rpm sampai 4000 rpm.
Tegangan keluaran DAC 0808 yang dibuat adalah sebesar 0V sampai +5V. Agar dapat diinputkan ke sistem servo motor digunakan rangkaian penggeser level dan penyesuai tegangan.
Data biner yang dikirim ke modul SK-8051 untuk menggerakkan motor dengan polaritas positif adalah 01111111b (127) sampai 11111111b (255) yang merepresentasikan kecepatan putaran motor dari 0 rpm sampai 4000 rpm putar kanan, sedangkan data biner yang dikirim untuk mengerakkan motor dengan polaritas negatif adalah 01111111b (127) sampai 00000000b (0) yang merepresentasikan kecepatan putaran motor dari 0 rpm sampai 4000 rpm putar kiri.
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 76
Tugas MicroControl MMI Server
B.
Saran
Untuk praktikum MMI berikutnya, supaya dilanjutkan dengan pengaturan posisi motor.
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 77
Tugas MicroControl MMI Server
DAFTAR PUSTAKA
Paulus A. Nalwan, 2003, Teknik Antar Muka dan Pemrograman, Elex Media Computindo, Jakarta Retna prasetyo, 2004, Interfacing Port Paralel & Port Serial Komputer dengan VB, Yogyakarta Rahmat Setyawan, 2006, Mikrokontroller MCS-51, Graha Ilmu, Yogyakarta Tim Lab Mikroprosessor, 2006, Pemrograman Mikrokontroller AT 89S51 deng an /C++ dan Assembler, Andi, Yogyakarta User’s Manual One Chip 8 Bit Microprocessor Control Trainer, SkLab Hasmini dkk, 2007, Penuntun Praktikum Sistem Kendali Digital, Unhas, Makassar Users’s Manual Servo Motor System ED-4400
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait 78