Pages

Kamis, 29 Januari 2015

Incremental Rotary Encoder

Instrumen incremental rotary encoder atau dikenal juga sebagai incremental shaft encoder adalah salah satu tipe dari peralatan encoder yang memberikan keluaran dalam format digital. Hal ini menyebabkan instrumen sejenis ini lebih nyaman digunakan pada aplikasi pengontrolan yang menggunakan komputer, sebagaimana pengukuran dibutuhkan dalam bentuk digital. Oleh karena itu, proses konversi dari sinyal analog ke digital tidak perlu lagi dilakukan.

Dewasa ini, instrumen ini banyak digunakan dalam industri terutama pada mesin-mesin seperti mesin pengemasan, tangan robot, pengontrol gerakan motor derek, mesin penggiling. Biasanya instrumen ini digunakan dalam menghitung sudut, posisi, revolusi, kecepatan, akselerasi dan jarak. Ada beberapa macam jenis incremental rotary encoder yang telah dikembangkan seperti jenis magnetis, kontak, resistif dan optis. Akan tetapi, jenis incremental rotary encoder yang akan dibahas dalam artikel ini adalah jenis optis saja.

1 Konsep Dasar Instrumen Incremental Rotary Encoder

Konsep dasar operasi instrumen incremental rotary encoder adalah instrumen ini mengukur nilai sesaat posisi angular dari sebuah shaft yang sedang berotasi dan menghasilkan pulsa-pulsa pada channel-channel-nya. Pulsa-pulsa yang dihasilkan ini berbentuk gelombang square.

Instrumen incremental rotary encoder biasanya memiliki tiga buah sinyal keluaran, yaitu sinyal A, sinyal B, dan sinyal Z, ditunjukkan dalam gambar 1. Untuk sinyal A dan sinyal B, masing-masing sinyal keluaran tersebut saling quadrature yang berarti terjadi pergeseran fasa 90 derajat satu sama lain. Kedua sinyal tersebut selain memberikan nilai posisi shaft dari encoder, juga mampu menyediakan informasi mengenai arah putaran dari shaft misalnya berputar searah jarum jam atau berputar berlawanan arah jarum jam. Hal penting yang perlu diperhatikan hubungan antara sinyal A dan sinyal B adalah bahwa pergeseran fasa satu sama lain antara kedua sinyal tersebut harus berada dalam batas toleransi yang dapat diterima biasanya tidak melebihi 90 derajat sehingga proses perhitungan dapat berlangsung dengan akurat.

Gambar 1 Tiga Buah Sinyal Keluran Encoder[1]

Untuk kebanyakan peralatan mesin motor atau aplikasi positioning, sinyal Z dikenal sebagai index signal, yang memiliki peranan penting dalam menentukan zero position dengan cara memberikan sebuah pulsa keluaran tunggal per satu revolusi.

2 Prinsip Kerja Instrumen Optical Incremental Position Encoder

Sebuah contoh dari sebuah optical incremental rotary encoder ditunjukkan dalam gambar 2. Pada gambar tersebut, instrumen ini terdiri dari sebuah sumber cahaya yaitu biasanya adalah LED, sebuah disc encoder (rotating disc), sebuah fixed disc, dan photo-detector. Letak posisi antara LED dan photo-detector disusun dengan sejajar, sehingga cahaya dari LED dapat masuk ke detector tersebut secara tegak lurus.


Gambar 2 Optical Incremental Shaft Encoder [1]

Disc yang ditunjukkan dalam gambar 3 adalah elemen kunci dari encoder dan secara umum terbuat dari bahan kaca dan diberi cap yang terbuat dari bahan logam sehingga membentuk slot-slot jendela yang mengelilingi bagian tepi dari disc encoder tersebut. Slot-slot ini bersifat tembus cahaya. Jumlah slot tersebut adalah sama dengan jumlah dari pulsa per satu revolusi. Sebagai contoh, sebuah disc kaca yang dicap dengan 1000 slot, bila disc tersebut telah bergerak 180 derajat jika dan hanya jika encoder tersebut telah mengeluarkan 500 pulsa.


Gambar 3 Susunan Jendela dalam Incremental Rotary Encoder[1]

Selama disc berotasi, LED secara konstan diaktifkan dan cahaya dari LED tidak secara terus-menerus mencapai photo-detector, tetapi hanya saat cahaya tersebut melewati slot-slot yang berada pada disc encoder tersebut. Saat cahaya masuk ke photo-detector, detector tersebut menghasilkan pulsa-pulsa keluaran berupa gelombang square.

Kebanyakan dari incremental rotary encoder menyediakan sebuah tanda tunggal pada disc, disebut channel Z atau marker. Pulsa dari channel ini menyediakan sebuah referensi yang menandakan per satu revolusi.
Reff: 
Alan S. Morris, Measurement and Instrumentation Principles 3rd Edition (Oxford: Butterworth-Heinemann, 2001), hal. 392-394

Original Post : http://herminkosasih.blogspot.com/2009/02/memahami-incremental-rotary-encoder.html 

Rabu, 12 Februari 2014

Macam-Macam Bahasa Pemrograman

Bahasa Pemrograman- Perangkat lunak bahasa pemrograman (language software) merupakan program yang digunakan untuk menerjemahkan perintah-perintah yang ditulis dalam bahasa program ke dalam bahasa mesin (machine languange), sehingga dapat diterima dan dimengerti oleh komputer. Apabila languange software tidak tersedia, maka pembuat program harus menulis programnya langsung dengan bahasa mesin yang berbentuk bilangan-bilangan binary. Suatu instruksi program yang ditulis dalam bahasa mesin dapat berbentuk seperti 000100110010. Tanpa mengetahui arti tertentu dari masing-masing bagian dari bilangan binary tersebut secara persis, maka akan sangat sulit untuk mengerti dengan benar maksud dari instruksi tersebut.
Instruksi yang berbentuk bilangan binary disebut dengan object code. Sedangkan kumpulan dari instruksi-instruksi yang membentuk suatu program dalam bahasa mesin disebut dengan object program. Tiap-tiap instruksi object code terdiri dari operation code (op code) dan open and. Penulisan program dengan bahasa mesin dirasakan terlalu sulit dan memakan banyak waktu, maka dikembangkan languange software sebagai alternatif penulisan program yang lebih mudah. Penerjemah bahasa pemrograman dibedakan menjadi 3 (tiga) macam, yaitu assembler, kompiler, dan interpreter.
1) Asembler adalah program yang digunakan untuk menerjemahkan kode sumber dalam bahasa rakitan (assembly) ke dalam bahasa mesin.
2) Kompiler adalah program penerjemah yang mengonversi semua kode sumber selain dalam bahasa rakitan menjadi kode objek. Hasil berupa kode objek inilah yang dapat dijalankan oleh komputer. Proses untuk melakukan penerjemahan ini biasa disebut kompilasi.
3) Intepreter adalah program yang menerjemahkan satu per satu instruksi dalam kode sumber kemudian menjalankan instruksi yang telah diterjemahkan tersebut.
Perangkat lunak bahasa pemrograman (language software) merupakan program yang digunakan untuk menerjemahkan perintah-perintah yang ditulis dalam bahasa program ke dalam bahasa mesin sehingga dapat diterima dan dimengerti oleh komputer. Pada dasarnya bahasa komputer dapat dibedakan menjadi empat macam, yaitu bahasa mesin dan bahasa assembly (kedua bahasa ini termasuk bahasa tingkat rendah/low level language), bahasa tingkat tinggi (high level language), dan bahasa generasi keempat.

1) Bahasa mesin

Bahasa mesin termasuk ke dalam bahasa tingkat rendah (low level language) karena sifat dari bahasa mesin lebih berorientasi pada mesin. Bahasa ini hanya akan dipahami oleh komputer itu sendiri. Bahasa ini berupa kode-kode yang terdiri dari sekumpulan angka yang ada di dalam komputer yang biasanya diwakili oleh kode angka 1 (satu) dan 0 (nol). Kode ini merupakan sinyal elektronik yang memberitahu komputer apa yang harus dikerjakan. Dalam penggunaannya biasanya intruksi dituliskan dalam bentuk bahasa pemrograman yang akan disampaikan ke kompiler, assembler, atau interpreter yang bertugas untuk menerjemahkan bahasa pemrograman tadi ke bahasa mesin.
Assembler merupakan sebuah program. Program ini mengambil informasi yang dituliskan oleh programmer dalam bahasa assembly dan menerjemahkannya ke sebuah program yang dapat dieksekusi komputer. output assembler harus diproses oleh linker untuk menghasilkan program akhir.

2) Bahasa assembly

Bahasa asembly adalah bahasa pemrograman yang menggunakan bahasa rakitan. Bahasa assembly kebanyakan digunakan untuk pengendalian hardware yang diwujudkan dalam kependekan kata-kata sebagai pengganti kode-kode biner, misalnya JNZ (jump non zero) yang artinya lompatlah jika tidak sama dengan nol. Kelanjutan dari bahasa assembly adalah sebuah program yang berguna untuk mengambil informasi yang dituliskan oleh seorang programmer dalam bahasa assembly serta menerjemahkannya ke dalam sebuah program yang dapat dieksekusi oleh komputer, program ini dinamakan assembler. Output assembler harus diproses oleh linker untuk menghasilkan program akhir.

3) Bahasa tingkat tinggi (high level languange)

Bahasa tingkat tinggi memiliki arti bahwa bahasa ini lebih mudah dimengerti oleh banyak orang karena memang dirancang untuk orang yang awam. Bahasa pemrograman yang termasuk dalam bahasa tingkat tinggi adalah sebagai berikut.
a) BASIC (Beginners All-purposes Symbolic Instruction Code)
Bahasa program ini dikembangkan pada tahun 1965 di Darmouth College. Penciptanya adalah John Kemeny dan Thomas Kurtz. BASIC dipergunakan dalam aplikasi matematika. Selain itu, BASIC juga digunakan dalam beberapa aplikasi lainnya seperti akuntasi, permainan, file simulasi, dan lain-lain.
Keunggulan BASIC terletak pada kemudahan dalam pemakaiannya, sedangkan kelemahannya adalah tidak mendukung operasi bilangan kompleks dan penanganan terhadap berkas sangat terbatas sehingga tidak cocok untuk aplikasi bisnis.
b) LOGO
Bahasa ini dikembangkan untuk pendidikan dan simulasi pengajaran pada anak-anak dalam menyelesaikan masalah dan melakukan pemrograman. Ditemukan pada tahun 1967 oleh Seymour Papert dengan menggunakan LISP, yaitu satu jenis bahasa pemrograman untuk kecerdasan buatan. Logo sangat mudah digunakan untuk membuat gambar, sehingga banyak digunakan dalam menghasilkan laporan-laporan bisnis dalam bentuk grafik.
c) COBOL (Common Business Oriented Language)
Program jenis ini sering digunakan dalam dunia bisnis dan komersial, mulai dikembangkan pada tahun 1959. Namun sampai saat ini, program ini masih banyak digunakan pada jenis komputer minicomputer dan mainframe. COBOL memiliki keunggulan-keunggulan sebagai berikut.
1) Memiliki kode untuk semua flatform yang sama, sehingga tidak tergantung pada mesin.
2) Menggunakan kata-kata bahasa Inggris, sehingga sangat mudah dipahami oleh programmer.
3) Penanganan masukan dan keluaran mudah dilakukan.
4) Penanganan terhadap berkas sudah tersedia dan bahkan mendukung berbagai macam tipe-tipe berkas seperti sekuensial dan indeks.
Kelemahan dari bahasa ini adalah struktur penulisan program yang sangat banyak dan sangat kaku sehingga membuat programmer menjadi lelah dan bosan.
d) PASCAL
Bahasa ini ditemukan oleh Nicklaus Wirth tahun 1971. Bahasa ini dibuat untuk pengajaran pemrograman. Bahasa ini sangat populer di kalangan mahasiswa ilmu komputer dan teknik. Pascal memiliki keunggulan dibandingkan Fortran maupun Basic, yaitu sangat mudah dipelajari serta memiliki dukungan fungsi-fungsi matematika yang sangat lengkap. Namun Pascal juga memiliki kelemahan, yaitu tidak dapat mendukung operasi bilangan kompleks dan tidak mendukung sarana aplikasi bisnis. Keberadaan Pascal dapat pula dijadikan bahasa dasar dalam pembuatan kode perangkat lunak Delphi (software untuk pengembangan program di lingkungan Windows). Pascal juga digunakan sebagai landasan pembuatan kode pada Kylix, yaitu software pengembang program di lingkungan Linux.
e) Fortran (Formula Translator)
Fortran merupakan bahasa tingkat tinggi yang pertama kali diciptakan. Bahasa ini mulai dikembangkan pada tahun 1956 oleh John Backus di IBM. Fortran digunakan dalam bidang aplikasi matematika, yaitu dalam hal perumusan dan perhitungan sehingga menjadi andalan keunggulan dari bahasa ini. Namun Fortran memiliki kelemahan, yaitu operasi masukan dan keluarannya sangat kaku dan sulit dipahami. Untuk membuat bahasa fortran, seorang programmer tidak harus mengetahui bahasa mesin, tetapi harus memahami tata bahasa dan peraturan bahasa fortran.
f) Algol (Algoritma Language)
Algol merupakan bahasa automatic yang cocok untuk memecahkan permasalahan yang membutuhkan perhitungan numerik untuk beberapa pengolahan logic.
g) PL/1 (Programming Language)
Programming language merupakan bahasa komputer yang dapat digunakan dalam segala bahasa. Pada kenyataannya bahasa ini sulit dipelajari dan hanya dapat digunakan pada mesin IBM.
h) RPG (Report Program Generation)
RPG adalah program untuk pengolahan laporan. Bahasa ini sangat populer di lingkungan minicomputer dan mainframe IBM. RPG diluncurkan pertama kali pada tahun 1964.
i) APL (Aritmathic Programming Language)
APL adalah bahasa komputer untuk memecahkan soal-soal matematika (ilmu hitung). Diperkenalkan dan diciptakan oleh Kenneth Iverson pada tahun 1962. Bahasa ini menggunakan keyboard khusus yang berisikan simbol-simbol yang kompleks yang memungkinkan untuk melakukan penyelesaian matematika yang kompleks.
4) Bahasa pemrograman generasi keempat
Bahasa pemrograman generasi keempat meliputi Microsoft Visual Basic, Visual J++, dan Visual C++ yang dikembangkan dari keluarga besar bahasa tingkat tinggi untuk memudahkan pemrograman.

Bahasa Assembler (Assembly)

IC 89S51 adalah salah satu ic mikro kontroller yang cocok untuk belajar program bagi pemula. Pemrogramannya cukup simpel dan mudah dimengerti serta banyak referensinya. Bahasa yang sering dipakai untuk pemrograman IC 89S51 adalah bahasa assembler (meskipun kini sudah banyak juga yang memakai bahasa c).
Bahasa assembler adalah instruksi dasar mesin pada mikro kontroller. Bahasa ini berupa kode perintah program dan nilai heksa desimal yang dipisahkan dengan spasi. Bahasa assembler pada pemrograman IC 89S51 mengacu pada instruksi set dari atmel selaku produsen IC tersebut.
Contoh bahasa assembler :
MOV     R1,#F7h
CALL     TUNDA
Instruksi MOV R1,#F7h berarti meemberi nilai heksa desimal sebesar F7 pada R1. Jadi setelah instruksi ini maka R1 bernilai F7h.
Instruksi CALL TUNDA berarti alur program menuju ke label TUNDA dan akan kembali setelah ada perintah RET
Berikut ini beberapa instruksi assembler yang sering dipakai :
InstruksiPenjelasanContoh
MOVMemindahkan/mengisi nilai pada suatu register atau akumulatorMOV R1,#F7h
MOVCMemindahkan/mengisi nilai dari lookup table ke akumulatorMOVC A,@A+DPTR
CALLMemindahkan alur program ke label setelah callCALL TUNDA
ADDMenjumlahkan akumulator dengan nilai byteADD A,#5Bh
ADDCMenjumlahkan akumulator dengan nilai byte disertai carryADDC A,#87h
SUBBMengurangi akumulator dengan nilai byteSUBB A,#45h
INCDitambah satuINC A
DECDikurangi satuDEC A
ANLOperasi logika ANDANL A,#77h
ARLOperasi logika ORORL A,#77h
CPLOperasi logika NOTCPL A
SETBMembuat nilai bit menjadi satuSETB TR1
CLRMembuat nilai bit menjadi nolCLR TR1
RLNilai byte digeser ke kiriRL A
RLCNilai byte digeser ke kiri melibatkan carryRLC A
RRNilai byte digeser ke kananRR A
RRCNilai byte digeser ke kananRRC A
SWAPMenukar 4bit (nible) dalam satu byteSWAP A
JBLompat jika nilai bit=1JB P1.1,TERUS
JNBLompat jika nilai bit=0JNB TF1,LANJUT
JCLompat jika nilai carry=1JC TERUS
JNCLompat jika nilai carry=0JNC LANJUT
JZLompat jika nilai akumulator=1JZ TERUS
JNZLompat jika nilai akumulator=0JNZ LANJUT
DJNZKurangi satu lalu lompat ke label jika nilai belum sama dengan nolDJNZ R1,ULANG
CJNEBandingkan isi akumulator dengan nilai byte lalu lompat ke label jika nilainya tidak samaCJNE A,#77h,BEDA
JMPLompat ke label. selain JMP ada lagi instruksi lompat yaitu AJMP, LJMP dan SJMPJMP START
PUSHMemindahkan nilai ke register penampungPUSH R1
POPMengambil nilai dari register penampungPOP R1
ORGInisialisasi memori awal program, biasanya diisi #00hORG 00h
ENDAkhir programEND