Thursday, February 26, 2009

Memahami 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.

Referensi:

Alan S. Morris, Measurement and Instrumentation Principles 3rd Edition (Oxford: Butterworth-Heinemann, 2001), hal. 392-394

Baca Selanjutnya...

Real Time Linux Apakah itu?

Sistem operasi merupakan hal yang sangat penting dalam menyediakan sarana hubungan antara perangkat lunak dengan perangkat keras. Sebuah sistem operasi menyediakan sebuah lapisan abstraction di antara platform perangkat keras dan perangkat lunak dengan menggunakan interface yang terdefinisi dengan baik di antara sebuah program user space, kernel space driver dan perangkat keras.

Dalam domain komputasi, kernel adalah inti dari sistem operasi. Kernel ini dikelilingi oleh lapisan software, menyediakan hak akses pengguna dan memfasilitas interaksi seperti shell, window manager, dan program aplikasi. Untuk menjalankan program real time, maka diperlukan sistem operasi yang mana telah mengalami perubahan yang khusus pada kernel standarnya sehingga memiliki sifat yang real time. Oleh karena itu, diperkenalkan sistem operasi yang berbasis Linux dan bersifat real time. Sistem operasi real time Linux versi GPL memiliki keuntungan lain seperti bebas untuk dimodifikasi bagian kernel sistem operasi tersebut tanpa perlu khawatir melanggar hak cipta dan juga memudahkan para developer dalam mencari informasi yang berhubungan dengan pengembangan kernel tersebut.


1. Definisi Real Time

Sebuah sistem real time adalah suatu sistem yang menjamin kebenaran dari suatu komputasi perhitungan dan ketepatan waktu pelaksanaan komputasi perhitungan tersebut. Jika kebutuhan akan ketepatan waktu tidak dapat terpenuhi, kesalahan pada sistem dapat terjadi. Dengan kata lain, sistem real time tidak hanya memperhatikan apakah hasil yang dihasilkan dari suatu proses benar, tetapi juga memperhatikan kapan hasil tersebut dihasilkan.

Dilihat dari definisi real time tersebut, sebuah sistem real time tidak hanya harus cepat, sebagaimana dipercaya oleh sebagian besar orang. Sebagai contoh untuk penuntun sistem dari sebuah kapal dapat saja dikatakan sebagai suatu sistem yang non real time. Akan tetapi, karena kecepatan kapal yang rendah, maka memungkinkan memiliki waktu yang cukup bagi sistem untuk mengambil keputusan kontrol sehingga terkesan real time. Menurut definisi dari kata real time yang dijelaskan sebelumnya, sistem ini dapat secara efektif dikatakan sebagai suatu sistem real time. Jadi perlu diketahui bahwa sebuah sistem real time adalah bukan sebuah sistem dalam real time. Sistem dalam real time secara umum adalah sistem yang memiliki kemampuan cepat demi memberikan kesan realitas misalnya pada aplikasi game simulasi.

Untuk mendefinisikan secara spesifik dari tingkatan yang berbeda-beda dari real time, hal ini sangat penting dalam mendefinisikan terlebih dahulu dua sifat sistem real time yaitu, preemptive dan deterministic.
Preemptive berhubungan dengan kemampuan menentukan sebuah pekerjaan yang berprioritas tinggi untuk dilaksanakan terlebih dahulu dengan mencegah/menunda pelaksanaan pekerjaan yang berprioritas rendah, sehingga resource dapat tersedia.
Deterministic berhubungan dengan kemampuan untuk memprediksi kapan sebuah kejadian yang spesifik akan muncul pada waktu yang tepat.

2. Gambaran Umum Kernel Linux

Arsitektur sistem operasi Linux mempartisi memori fisik ke dalam dua bagian yaitu kernel space dan user space, di mana kernel space dialokasikan untuk kode kernel Linux. Kernel Linux mengatur alokasi memori untuk dipakai oleh program pengguna yang berjalan secara bersamaan di dalam user space. Komunikasi di antara program user space dengan kode kernel dapat dicapai dengan menggunakan system call ke kode kernel. Secara umum contoh dari penggunaan system call adalah ketika saat mengakses disk drive, keyboard, mice dan monitor. Jadi kode kernel berfungsi dalam menjembatani antara aplikasi program pengguna dengan perangkat keras.

Sistem operasi Linux merupakan sistem operasi yang multi-threaded yaitu mendukung prioritas thread dan menyediakan mekanisme sinkronisasi thread yang dapat diprediksi. Kernel Linux memiliki sifat yang tidak preemptible. Hal ini yang menyebabkan kecepatan waktu respons operasi kernel pada linux yang standar lebih lambat bila dibandingkan dengan sistem operasi hard real time. Perlu diketahui bahwa Linux bukan merupakan sistem operasi yang real time karena ketidak-mampuannya dalam menjamin kinerja yang deterministic dan pewaktuannya yang bersifat pukul rata sehingga memiliki dampak yang buruk terhadap program real-time.

Ada dua alasan yang menyatakan bahwa kernel Linux memiliki kinerja yang buruk pada sistem uniprosesor karena kernel menon-aktifkan interrupt dan juga kernel tidak cocok dalam melakukan aktivitas preemption. Bila interrupt dinon-aktifkan, sistem tidak berdaya dalam menjawab terhadap interrupt yang datang. Semakin lama penundaan interrupt, maka semakin lama penundaan waktu dari suatu program dalam menjawab interrupt yang diberikannya. Kurangnya kemampuan preemption pada kernel memiliki arti bahwa kernel tidak mampu memberikan fasilitas kepada tugas yang berprioritas tinggi untuk dijalankan terlebih dahulu dan menunda tugas yang berprioritas rendah. Hal ini dapat menyebabkan waktu penundaan yang cukup berarti.

3. Konsep Dasar Real Time Linux

Dasar pemikiran dalam mendesain RTLinux adalah tidak ada kemungkinan untuk mengidentifikasi dan menghilangkan seluruh aspek dari operasi kernel yang memunculkan hal-hal yang tidak dapat diprediksi. Sumber-sumber dari hal-hal yang tidak dapat diprediksi terdiri dari algoritma Linux scheduling, device driver, uninterruptible system call, penggunaan dari interrupt disabling dan operasi virtual memory.

Hal terbaik dalam menghindari permasalahan ini adalah membentuk kernel kecil (micro kernel) yang dapat diprediksi dan terpisah dari kernel linux. Dengan membuat micro kernel ini secara sederhana, maka operasinya dapat diukur dan dapat diprediksi. Micro kernel ini memiliki fungsi mengontrol eksekusi tugas-tugas real time dan menjalankan kernel Linux standar sebagai tugas yang berjalan dalam mode background.


Gambar 1. Kernel Linux Standar [1]

Gambar 1 menunjukkan kernel Linux standar tanpa dukungan hard real time. Dalam gambar 1 ditunjukkan bahwa kernel Linux memisah hardware dari user-level task. Kernel memiliki kemampuan dalam menunda user-level task apapun, bilamana task tersebut telah melebihi penggunaan waktu yang dialokasikan kepadanya oleh CPU. Asumsi, sebagai contoh, sebuah user task yang mengontrol sebuah tangan robot. Kernel linux yang standar akan berpotensi menunda tugas pengontrolan tangan robot dan memberikan alokasi CPU ke tugas-tugas lain yang kurang genting. Konsekuensinya, tangan robot tersebut tidak dapat memenuhi suatu kriteria waktu yang ketat yang telah ditentukan. Oleh karena itu, dalam mencoba berlaku adil terhadap semua task, kernel tersebut telah menghambat tugas (task) yang genting.


Gambar 2. Kernel RTLinux [1]

Gambar 2 menunjukkan sebuah kernel linux yang dimodifikasi untuk mendukung hard real time. RTLinux berbentuk sebagai sebuah lapisan tambahan berada di antara kernel Linux standar dan perangkat keras komputer. Dalam pandangan kernel Linux standar, lapisan baru ini muncul sebagai perangkat keras yang sebenarnya. RTLinux memperkenalkan fixed-priority pada scheduler-nya sendiri. Scheduler (penjadwalan) menentukan prioritas terendah untuk kernel Linux standar dan menjalankannya sebagai tugas yang terpisah dengan tugas-tugas real time. Hal ini menyebabkan micro kernel mampu menginterupsi perangkat keras dan menjamin kernel Linux standar tidak menunda interupsi apapun yang bekerja dalam micro kernel sehingga waktu penundaan yang terjadi pada tugas-tugas real time dapat diminimalisir.

4. Kesimpulan

Program yang berkemampuan real time telah banyak diimplementasi dalam dunia industri terutama di bidang manufacture, telekomunikasi dan pesawat terbang. Sebagai contoh, salah satu produk Huawei untuk MSC (Mobile Softswitch Center) menggunakan sistem operasi real time untuk board-board-nya yaitu VxWorks. Hal ini karena program real time lebih unggul dibandingkan dengan program yang non real time karena memiliki sifat preemptive dan deterministic. Dengan hadirnya program real time yang berbasis Linux dan berlisensi GPL maka diharapakan dapat memberikan dampak yang positif dalam perkembangan dunia riset terutama dalam bidang sistem kendali karena biaya yang dikeluarkan menjadi semakin ringan dan resource-resource pengetahuan mengenai pemrograman driver linux cukup banyak tersedia .

5. Referensi

[1] Getting Started with RTLinux (FSM Labs, Inc., 2001), hal 9.

[2] Herman Bruyninckx, Real-Time and Embedded Guide (Belgium, 2002)

[3] Ismael Ripoll (2000), “Real-Time Linux (RT- Linux)”. Diakses 9 September 2007.
http:\\www.nl.linuxfocus.org/English/May1998/article4.html

[4] Kevin Dankwardt (2002). “Real Time and Linux”. Diakses 20 November 2007.
http://www.linuxdevices.com/articles/AT5997007602.html
http://www.linuxdevices.com/articles/AT5503476267.html
http://www.linuxdevices.com/articles/AT6320079446.html

Creative Commons License
Real Time Linux Apakah Itu? by Hermin Kosasih is licensed under a Creative Commons Attribution 3.0 United States License.

Baca Selanjutnya...