7
BAB 2
TINJAUAN TEORITIS
1
Konveyor
Konveyor hanya bergerak ke satu arah saja, konveyor digerakkan dengan motor stepper 12V type. Sinyal keluaran dari motor stepper untuk menggerakkan konveyor dirangkaikan dengan rangkaian driver sehingga bisa menggerakkan konveyor yang difungsikan untuk membawa/memindahkan barang. Dengan adanya konveyor inilah pekerjaan untuk untuk membawa/memindahkan barang semakin mudah.
8
Belt conveyor
Gear
Box/wadah pengisian
Motor stepper
Gambar 2.1 Konstruksi Motor Stepper Pada Konveyor
2
9
Motor Stepper 1
Gambaran Umum
Motor langkah (stepper) banyak digunakan dalam berbagai aplikasi, dipergunakan apabila dikehendaki jumlah putaran yang tepat atau di perlukan sebagian dari putaran motor. Suatu contoh dapat di jumpai pada disk drive, untuk proses pembacaan dan/atau penulisan data ke/dari cakram (disk), head baca-tulis ditempatkan pada tempat yang tepat di atas jalur atau track pada cakram, untuk head tersebut di hubungkan dengan sebuah motor langkah.
Aplikasi penggunaan motor langkah dapat juga di jumpai dalam bidang industri atau untuk jenis motor langkah kecil dapat di gunakan dalam perancangan suatu alat mekatronik atau robot. Motor langkah berukuran besar digunakan, misalnya, dalam proses pengeboran logam yang menghendaki ketepatan posisi pengeboran, dalam hal ini di lakukan oleh sebuah robot yang memerlukan ketepatan posisi dalam gerakan lengannya dan lain-lain.Pada gambar di bawah ditunjukkan dasar susunan sebuah motor langkah (stepper).
10
Gambar 2.2. Diagram motor langkah (stepper) Magnet permanen N-S berputar kearah medan magnet yang aktif. Apabila kumparan stator dialiri arus sedemikian rupa, maka akan timbul medan magnet dan rotor akan berputar mengikuti medan magnet tersebut.setiap pengalihan arus ke kumparan berikutnya menyebabkan medan magnet berputar berputar menurut suatu sudut tertentu, biasanya informasi besar sudut putar tertulis pada badan motor langkah yang bersangkutan. Jumlah keseluruhan pengalihan menentukan sudut perputaran motor.Jika pengalihan arus di tentukan, maka rotor akan berhenti pada posisi terakhir. Jika kecepatan pengalihan tidak terlalu tinggi, maka slip akan dapat dihindari. Sehingga tidak di perlukan umpan balik (feedback) pada pengendalian motor langkah.
Motor langkah yang akan di gunakan memiliki 4 fase (pole atau kutub), pengiriman pulsa dari mikrokontroller ke rangkaian motor langkah dilakukan secara bergantian, masing-masing 4 data (sesuai dengan jumlah phase-nya), sebagian di tunjukkan pada gambar di bawah ini.
A B C D Gambar 2.3. Pemberian data/pulsa pada motor stepper
11
Pada saat yang sama, untuk tiap motor langkah, tidak boleh ada 2 (dua) masukan atau lebih yang mengandung pulsa sama dengan 1 (high), atau dengan kata lain, pada suatu saat hanya sebuah masukan yang bernilai 1 (satu) sedangkan lainnya bernilai 0 (nol).
2.3 Mikrokontroller AT89S52 2.3.1 Gambaran Umum
Mikrokontroller AT89S52 adalah mikrokomputer CMOS 8 bit yang memiliki 8 KB Programmable and Erasable Read Only Memory (PEROM). Mikrokontroller berteknologi memori non-volatile (tidak kehilangan data bila kehilangan daya listrik). Set instruksi dan kaki keluaran AT89S52 sesuai dengan standar industri 80C51 dan 80C52. Atmel AT89S52 adalah mikrokontroller yang sangat bagus dan fleksibel dengan harga yang relatif murah untuk banyak aplikasi sistem kendali berkerapatan tinggi dari Atmel ini sangat kompatibel dengan mikrokontroller MCS-51 misalnya mikrokontroller 8031 yang terkenal dan banyak digunakan dan telah menjadi standar industri baik dalam jumlah pin IC maupun set instruksinya.
Sebagai perbandingan kapasitas memori, tabel 2.1 berikut ini akan menampilkan memori dari mikrokontroller seri AT89XX
12
Tabel 2.1 Kapasitas Memori Mikrokontroller seri AT89XX Type RAM Flash Memory EEPROM A T 8 9 C 5 1 /
8 X 128 byte
4 Kbyte
Tidak
8 X 256 byte
8 Kbyte
Tidak
AT89C55
8 X 256 byte
20 Kbyte
Tidak
AT89S53
8 X 256 byte
12 Kbyte
Tidak
AT89S8252
8 X 256 byte
8 Kbyte
2 Kbyte
AT89S52 A T 8 9 C 5 2 / AT89S52
Mikrokontroller AT89S52 memiliki fasilitas-fasilitas pendukung yang membuatnya menjadi mikrokontroller yang sangat banyak digunakan dalam berbagai aplikasi. Fasilitas-fasilitas yang dimiliki oleh mikrokontroller AT89S52 adalah : a. Sesuai dengan produk-produk MCS-51. b. Terdapat memori flash yang terintegrasi dalam sistem. Dapat ditulis ulang hingga 1000 kali. c. Beroperasi pada frekuensi 0 sampai 24MHz. d. Tiga tingkat kunci memori program. e. Memiliki 256 x 8 bit RAM internal. f. Terdapat 32 jalur masukan/keluaran terprogram. g. Tiga pewaktu/pencacah 6-bit (untuk AT89S52) & dua pewaktu/pencacah 16-bit (untuk AT89S52). h. Memiliki 8 sumber interupsi(untuk AT89S52) & 6 sumber instruksi untuk AT89S52. i. Kanal serial terprogram.
13
j. Mode daya rendah dan mode daya mati.
2.3.2 Karakteristik Mikrokontroller AT89S52
AT89S52 mempunyai memori yang terdiri dari RAM internal dan Special Function Register. RAM internal pada mikrokontroller AT89S52 memiliki ukuran 256 byte dan beralamatkan 00H-7FH serta dapat di akses menggunakan RAM address register. RAM internal terdiri dari delapan buah register (R0-R7) yang membentuk register banks. Special Function Register yang berjumlah 21 buah berada di alamat 80H-FFH. RAM ini berbeda pada lokasi dengan Flash PEROM dengan alamat 000H-7FFH.
IC AT89S52 mempunyai pin sebanyak 40 buah yang sesuai dengan mikrokontroller 8031 dan memiliki susunan pin seperti gambar di berikut ini ini :
Gambar 2.4 Konfigurasi pin (kaki) pada mikrokontroller AT89S52 Pada konstruksi mikrokontroller ini terdapat 4 port untuk I/O data dan tersedia pula akumulator , register, RAM, Stack Pointer, Arithmatic Logic Unit (ALU),
14
Pengunci (Lacth), dan rangkaian osilasi yang membuat AT89S52 dapat beroperasi dengan sekeping IC.
2.3.3 Fungsi Pin-Pin pada Mikrokontroller AT89S52
a. VCC (Pin 40) Pin 40 merupakan sumber tegangan positif yang diberi simbol Vcc. b. GND (Pin 20) Pin 20 merupakan ground sumber tegangan dan diberi simbol “gnd”. c. Port 0 (Pin 39-Pin 32) Port 0 dapat berfungsi sebagai I/O biasa, low order multiplex address/data ataupun penerima kode byte pada saat flash programming Pada fungsi sebagai I/O biasa port ini dapat memberikan output sink ke delapan buah TTL input atau dapat diubah sebagai input dengan memberikan logika 1 pada port tersebut. Pada fungsi sebagai low order multiplex address/data, port ini akan mempunyai internal pull up. Pada saat flash programming diperlukan eksternal pull up, terutama pada saat verifikasi program. d. Port 2 (Pin 21 – pin 28) Port 2 berfungsi sebagai I/O biasa atau high order address, pada saat mengakses memori secara 16 bit. Pada saat mengakses memori 8 bit, port ini akan mengeluarkan isi dari P2 special function register. Port ini mempunyai internal pull up dan berfungsi sebagai input dengan memberikan logika 1.
15
Sebagai output, port ini dapat memberikan output sink keempat buah input TTL.
e. Port 3 (Pin 10 – pin 17) Port 3 merupakan 8 bit port I/O dua arah dengan internal pull up. Port 3 juga mempunyai fungsi pin masing-masing, yaitu sebagai berikut : Tabel 2.2 Fungsi pin-pin pada port 3 mikrokontroller AT89S52 Nama pin Fungsi P3.0 (pin 10) RXD (Port input serial) P3.1 (pin 11)
TXD (Port output serial)
P3.2 (pin 12)
INTO (interrupt 0 eksternal)
P3.3 (pin 13)
INT1 (interrupt 1 eksternal)
P3.4 (pin 14)
T0 (input eksternal timer 0)
P3.5 (pin 15)
T1 (input eksternal timer 1)
P3.6 (pin 16)
WR (menulis untuk eksternal data memori)
P3.7 (pin 17)
RD (untuk membaca eksternal data memori)
f. RST (pin 9) Reset akan aktif dengan memberikan input high selama 2 cycle. g. ALE/PROG (pin 30) Address latch Enable adalah pulsa output untuk me-latch byte bawah dari alamat selama mengakses memori eksternal. Selain itu, sebagai pulsa input program (PROG) selama memprogram Flash.
16
h. PSEN (pin 29) Program store enable digunakan untuk mengakses memori program eksternal. i. EA (pin 31) Pada kondisi low, pin ini akan berfungsi sebagai EA yaitu mikrokontroller akan menjalankan program yang ada pada memori eksternal setelah sistem direset. Jika kondisi high, pin ini akan berfungsi untuk menjalankan program yang ada pada memori internal. Pada saat flash programming, pin ini akan mendapat tegangan 12 Volt. j. XTAL1 (pin 19) Input untuk clock internal. k. XTAL2 (pin 18) Output dari osilator.
2.3.4 Register pada Mikrokontroller AT89S52
Register adalah penampung data sementara yang terletak dalam CPU. Pada mikrokontroller AT89S52, register-registernya adalah sebagai berikut : a. Register A ( Accumulator) Accumulator ialah sebuah register 8 bit yang merupakan pusat dari semua operasi accumulator, termasuk dalam operasi aritmatika dan operasi logika. b. Register B Register ini memiliki fungsi yang sama dengan register A. c. Program counter (PC)
17
Program counter (Pencacah program) merupakan sebuah register 16 bit yang selalu menunjukkan lokasi memori instruksi yang akan diakses. d. Data pointer Data pointer atau DPATR merupakan register 16 bit yang terletak di alamat 82H untuk DPL dan 83H untuk DPH. Biasanya Data pointer digunakan untuk mengakses data atau source kode yang terletak di memori eksternal.
e. Stack Pointer (SP) Stack Pointer adalah register 8 bit yang mempunyai fungsi khusus sebagai penu njuk alamat atau data paling atas pada operasi penumpukan di RAM. Stack Pointer terletak di alamat 81H. Penunjuk penumpukan selalu berkurang dua tiap kali data didorong masuk kedalam lokasi penumpukan dan selalu bertambah dua tiap kali data ditarik keluar dari lokasi penumpukan. f. Program Status Word Program Status Word merupakan register yang berisi beberapa bit status yang mencerminkan keadaaan mikrokontroller. g. Bit Carry Flag (CY) Bit carry merupakan bit ke 8 yang memiliki dua fungsi : 1. Carry akan menunjukkan apakah operasi penjumlahan mengandung carry (sisa) atau apakah operasi pengurangan mengandung borrow (kurang). Apabila operasi ini mengandung carry, bit ini akan diset agar bernilai satu, sedangkan jika mengandung borrow, bit ini akan di set agar bernilai nol (0).
18
2. Carry dimanfaatkan sebagai bit ke-8 untuk operasi pergeseran (shift) atau perputaran. h. Bit Auxiliary Carry (AC) Bit ini menunjukkan adanya carry (bawaan) dari bit ketiga menuju bit keempat atau dari empat bit rendah ke empat bit tinggi pada operasi aritmatika. Bit ini jarang digunakan dalam program, tetapi digunakan oleh mikrokontroller secara implisit pada operasi aritmatika bilangan BCD.
i. Bit Flag 0 (F0) Bit ini menunjukkan apakah hasil operasi bernilai nol atau tidak. Apabila hasil operasi adalah nol (0), bit ini akan diset agar bernilai 1, sedangkan apabila hasil operasinya bukan nol (0) maka bit ini akan di-reset. Bit ini juga digunakan pada perbandingan dua buah data. Jika kedua data bernilai sama maka bit ini akan diset agar bernilai satu, sedangkan jika kedua data itu berbeda maka bit ini akan direset agar bernilai nol (0). j. Bit Register Select (RS) RS0 dan RS1 digunakan untuk memilih bank register. Delapan buah register ini merupakan register serbaguna. Lokasinya pada awal 32 byte RAM internal yang memiliki alamat dari 00H sampai 1FH. Register ini dapat diakses melalui simbol assembler (R0,R1,R2,R3,R4,R5,R6 dan R7).
4
Perangkat Lunak (Software)
19
1
Bahasa Assembly MCS-51
2.4.1.1 Instruksi – Instruksi Mikrokontroller AT89S52
Bahasa yang digunakan untuk memprogram IC mikrokontroller AT89S52 adalah bahasa assembly untuk MCS-51. angka 51 merupakan jumlah instruksi pada bahasa ini hanya ada 51 instruksi, beberapa instruksi yang sering digunakan dalam pemrograman IC mikrokontroller AT89S52 antara lain adalah: a. Instruksi MOV Perintah ini merupakan perintah untuk mengisikan nilai ke alamat atau register tertentu. Pengisian nilai dapat secara langsung atau tidak langsung. Contoh pengisian nilai secara langsung MOV R0,#20h Perintah di atas berarti : isikan nilai 20 Heksadesimal ke register 0 (R0). Tanda # sebelum bilangan menunjukkan bahwa bilangan tersebut adalah nilai. Contoh pengisian nilai secara tidak langsung MOV 20h,#80h ........... ............ MOV R0,20h Perintah di atas
berarti : isikan nilai yang terdapat pada alamat 20
Heksadesimal ke register 0 (R0). Tanpa tanda # sebelum bilangan menunjukkan bahwa bilangan tersebut adalah alamat. b. Instruksi DJNZ
20
Decreament Jump If Not Zero (DJNZ) ini merupakan perintah untuk mengurangi nilai register tertentu dengan 1 dan lompat jika hasil pengurangannya belum nol. Contoh , MOV R0,#80h Loop: ........... ............ DJNZ R0,Loop ............ R0 -1, jika belum 0 lompat ke loop, jika R0 = 0 maka program akan meneruskan ke perintah pada baris berikutnya. c.
21
Instruksi ACALL Instruksi ini berfungsi untuk memanggil suatu rutin tertentu. Contoh : ............. ACALL TUNDA ............. TUNDA: ................. d. Instruksi RET Instruksi RETURN (RET) ini merupakan perintah untuk kembali ke rutin pemanggil setelah instruksi ACALL dilaksanakan. Contoh, ACALL TUNDA ............. TUNDA: ................. RET
e. Instruksi JMP (Jump) Instruksi ini merupakan perintah untuk lompat ke alamat tertentu. Contoh, Loop: ................. .............. JMP Loop f. Instruksi JB (Jump if bit)
22
Instruksi ini merupakan perintah untuk lompat ke alamat tertentu, jika pin yang dimaksud berlogika high (1). Contoh, Loop: JB P1.0,Loop ................. g. Instruksi JNB (Jump if Not bit) Instruksi ini merupakan perintah untuk lompat ke alamat tertentu, jika pin yang dimaksud berlogika Low (0). Contoh, Loop: JNB P1.0,Loop .................
h. Instruksi CJNE (Compare Jump If Not Equal) Instruksi ini berfungsi untuk membandingkan nilai dalam suatu register dengan suatu nilai tertentu. Contoh, Loop: ................ CJNE R0,#20h,Loop ................ Jika nilai R0 tidak sama dengan 20h, maka program akan lompat ke rutin Loop. Jika nilai R0 sama dengan 20h, maka program akan melanjutkan instruksi selanjutnya.. i. Instruksi DEC (Decreament)
23
Instruksi ini merupakan perintah untuk mengurangi nilai register yang dimaksud dengan 1. Contoh, MOV R0,#20h
R0 = 20h
................ DEC R0
R0 = R0 – 1
.............
j. Instruksi INC (Increament) Instruksi ini merupakan perintah untuk menambahkan nilai register yang dimaksud dengan 1. Contoh, MOV R0,#20h
R0 = 20h
................ INC R0
R0 = R0 + 1
.............
2
Software 8051 Editor, Assembler, Simulator (IDE)
Instruksi-instruksi yang merupakan bahasa assembly tersebut dituliskan pada sebuah editor, yaitu 8051 Editor, Assembler, Simulator. Tampilannya seperti di bawah ini.
24
Gambar 2.5 8051 Editor, Assembler, Simulator Setelah program selesai ditulis, kemudian di save dan kemudian di Assemble (di compile). Pada saat di assemble akan tampil pesan peringatan dan kesalahan. Jika masih ada kesalahan atau peringatan, itu berarti ada kesalahan dalam penulisan perintah atau ada nama subrutin yang sama, sehingga harus diperbaiki terlebih dahulu sampai tidak ada pesan kesalahan lagi.
Software 8051 IDE ini berfungsi untuk merubah program yang kita tuliskan ke dalam bilangan heksadesimal, proses perubahan ini terjadi pada saat peng-compile-an. Bilangan heksadesimal inilah yang akan dikirimkan ke mikrokontroller.
3
Software Downloader
Untuk mengirimkan bilangan-bilangan heksadesimal ini ke mikrokontroller digunakan software ISP- Flash Programmer 3.0a yang dapat di download dari internet. Tampilannya seperti gambar di bawah ini :
25
Gambar 2.6. ISP- Flash Programmer 3.a Cara menggunakannya adalah dengan meng-klik Open File untuk mengambil file heksadesimal dari hasil kompilasi 8051 IDE, kemudian klik Write untuk mengisikan hasil kompilasi tersebut ke mikrokontroller.