Counter Rotary Encoder

9
COUNTER ROTARY ENCODER A. Tujuan Percobaan 1. Mahasiswa dapat memahami penerapan sensor posisi dengan rotary encoder 2. Mahasiswa dapat memahami penggunaan timer pada ATMega16 3. Mahasiswa dapat mengakses data rotary encoder 4. Mahasiswa dapat membuat aplikasi sederhana yang mengimplementasikan penggunaan rotary encoder. B. Dasar Teori 1. Rotary Encoder Rotary encoder, atau disebut juga Shaft encoder, merupakan perangkat elektro mekanikal yang digunakan untuk mengkonversi posisi anguler (sudut) dari shaft (lubang) atau roda kedalam kode digital, menjadikannya semacam tranduser. Perangkat ini biasanya digunakan dalam bidang robotika, perangkat masukan computer (seperti optomekanikal mouse dan trackball), serta digunakan dalam kendali putaran radar, dll. Rotary Encoder Absolute Tipe ini (rotary encoder absolut) menghasilkan kode digital yang unik/khas untuk masing-masing beda sudut poros. Plat baja dipotong dengan bentuk tertentu kemudian ditempelkan ke piringan/cakram dengan penyekat dimana terpasang kuat dengan poros (shaft). Saat piringan berputar, beberapa kontaknya menyentuh plat baja, dan kontak yang lain tak menyentuh plat (yang berlubang). Plat baja tersebut terhubung dengan sumber arus listrik, dan masing-masing kontak terhubung ke sensor elektrik. Bentuk potongan plat baja tersebut dirancang sedemikian rupa sehingga memungkinkan masing- masing posisi poros membentuk kode biner yang unik dimana beberapa kontak terhubung ke sumber arus (SWITCH ON) dan yang lain tak terhubung (SWITCH OFF). Gambar 8.1 Rotary Encoder Absolute Rotary encoder incremental / relative Rotary encoder relative (sering disebut dengan incremental encoder) digunakan ketika metode pengkodean absolut tidak bisa digunakan (disebabkan ukuran dan bentuk piringan/cakram). Metode ini juga menggunakan piringan yang dipasang pada poros, tetapi ukuran

description

teknologi sensor

Transcript of Counter Rotary Encoder

COUNTER ROTARY ENCODER

A. Tujuan Percobaan1. Mahasiswa dapat memahami penerapan sensor posisi dengan rotary encoder2. Mahasiswa dapat memahami penggunaan timer pada ATMega163. Mahasiswa dapat mengakses data rotary encoder4. Mahasiswa dapat membuat aplikasi sederhana yang mengimplementasikan penggunaan rotary encoder.

B. Dasar Teori1. Rotary EncoderRotary encoder, atau disebut juga Shaft encoder, merupakan perangkat elektro mekanikal yang digunakan untuk mengkonversi posisi anguler (sudut) dari shaft (lubang) atau roda kedalam kode digital, menjadikannya semacam tranduser. Perangkat ini biasanya digunakan dalam bidang robotika, perangkat masukan computer (seperti optomekanikal mouse dan trackball), serta digunakan dalam kendali putaran radar, dll. Rotary Encoder AbsoluteTipe ini (rotary encoder absolut) menghasilkan kode digital yang unik/khas untuk masing-masing beda sudut poros. Plat baja dipotong dengan bentuk tertentu kemudian ditempelkan ke piringan/cakram dengan penyekat dimana terpasang kuat dengan poros (shaft). Saat piringan berputar, beberapa kontaknya menyentuh plat baja, dan kontak yang lain tak menyentuh plat (yang berlubang). Plat baja tersebut terhubung dengan sumber arus listrik, dan masing-masing kontak terhubung ke sensor elektrik. Bentuk potongan plat baja tersebut dirancang sedemikian rupa sehingga memungkinkan masing-masing posisi poros membentuk kode biner yang unik dimana beberapa kontak terhubung ke sumber arus (SWITCH ON) dan yang lain tak terhubung (SWITCH OFF).

Gambar 8.1 Rotary Encoder Absolute

Rotary encoder incremental / relativeRotary encoder relative (sering disebut dengan incremental encoder) digunakan ketika metode pengkodean absolut tidak bisa digunakan (disebabkan ukuran dan bentuk piringan/cakram). Metode ini juga menggunakan piringan yang dipasang pada poros, tetapi ukuran piringan/cakram lebih kecil, dengan jumlah garis radial yang banyak, seperti jeruji roda. Sebuah saklar optic seperti photodiode, menghasilkan pulsa listrik. Kemudian rangkaian kontrol elektronika menghitung pulsa untuk menerjemahkan sudut putar poros.

Gambar 8.2 Rotary Encoder Relative

2. Timer/Counter Mikrokontroler ATMega16Mikrokontroler AVR ATMEGA16 memiliki tiga buah timer/counter, yaitu timer 0 (8 bit), timer 1 (16 bit), dan timer 2 (8 bit). Timer/counter 1 mempunyai keunggulan dibandingkan timer/counter 0 atau 2 , namun cara mengatur timer 0, 1, 2 sama saja, yaitu pada masing-masing registernya. Timer/counter 1 dapat menghitung sampai dengan 65536 timer/counter 0 atau 2 hanya sampai dengan 256. Selain itu, timer 1 ini memiliki mode operasi sebanyak 16 mode (tabel 2.8). register pada timer ini dibagi menjadi beberapa register dengan fungsi khusus, yaitu: control register A, control register B, dan interrupt mask. Register-register pada Timer/Counter 1 yang berfungsi untuk mengatur timer dan mode operasinya. Register tersebut mempunyai fungsi masing-masing sebagai berikut.

a. Timer/Counter 1 Control Register A (TCCR1A)

Tabel 1 Register TCCR1A

Bit76543210

TCCR1ACOM1A1COM1A0COM1B1COM1B0FOC1AFOC1BWGM11WGM10

Keterangan: Bit 7 dan 6 : Compare output untuk kanal A Bit 5 dan 4 : Compare output untuk kanal BBit COM1 ini mempunyai Compare Output Mode pada setiap mode operasinya. Mode tersebut mempengaruhi pin I/0 OC1 A dan B.

Tabel 2 Compare Outup Mode, Non-PWMCOM1A1/COM1B1COM1A1/COM1B1Deskripsi

00Normal Port Operation, OC1A/OC1B disconnected

01Toggle OC1A/OC1B on compare match

10Clear OC1A/OC1B on compare match (low level)

11Set OC1A/OC1B on compare match (High level)

Tabel 3 Compare Outup ModePhase Correct dan Phase Correct & Frequency PWMCOM1A1/COM1B1COM1A1/COM1B1Deskripsi

00Normal Port Operation, OC1A/OC1B disconnected

01Toggle OC1A/OC1B on compare match, OC1B disconnected

10Clear OC1A/OC1B on compare match when up counting, set

OC1A/OC1B on compare match when down counting

11Clear OC1A/OC1B on compare match when up counting, set OC1A/OC1B on compare match when down-counting

Bit 3 : Force Output untuk kanal ABit 2 : Force Output untuk kanal BBit 1 dan 0 : Waveform Generation ModeMode Operasi sebanyak 16 mode, diatur dalam bit WGM ini. Mode operasi tesebut ditunjukkan oleh Tabel 4 dibawah ini.Tabel 4 Deskripsi Bit WGMModeWGM 13WGM 12 (CTC1)WGM 11 (PWM11)WGM10 (PWM10)Mode OperasiTOPUpdate of OCRnTOV n Flag Set-on

00000Normal0xFFFFImmediateMAX

10001PWM, Phase Correct 8-bit0x00FFTOPBOTTOM

20010PWM, Phase Correct 9-bit0x01FFTOPBOTTOM

30011PWM, Phase Correct 10-bit0x03FFTOPBOTTOM

40100CTCOCR1AImmediateMAX

50101Fast PWM, 8-bit0x00FFBOTTOMTOP

60110Fast PWM, 9-bit0x01FFBOTTOMTOP

70111Fast PWM, 10-bit0x03FFBOTTOMTOP

80000PWM, Phase and Frequency CorrectOCR1BOTTOMBOTTOM

91001PWM, Phase and Frequency CorrectOCR1ABOTTOMBOTTOM

101010PWM, Phase CorrectICR1TOPBOTTOM

111011PWM, Phase CorrectOCR1ATOPBOTTOM

121100CTCICR1ImmediateMAX

131101Reserved---

141110Fast PWMICR1BOTTOMTOP

151111Fast PWMOCR1ABOTTOMTOP

b. Timer/Counter Control Register 1B (TCCR1B)

Tabel 5 TCCR1BBit76543210

TCCR1BICNC1ICES1-WGM13WGM12CS12CS11CS10

Keterangan : Bit 7 : Input Capture Noise Canceler, ketika bit ini diset 1 (high) maka Noise Canceler aktif dan masukan dari Input Capture Pin (ICP1) terfilter. Bit 6 : input capture edge select, bit ini digunakan untuk trigger yang disebabkan oleh edge ICP1. Jika bit ini diset 1 maka sebuah rising edge (positif) akan men-trigger captur. Jika bit ini diset 0 maka sebuah falling edge (negative) akan men-trigger capture. Bit 5 : reserverd, bit ini akan digunakan pada tahap pengembangan selanjutnya. Bit 4 dan 3 : lihat deskripsi register TCCR1A Bit 2, 1, dan 0 : clock select, bit ini digunakan untuk memilih jenis sumber clock untuk digunakan pada suatu timer/counter.

c. TCNT1, digunakan untuk menyimpan nilai timer yang diinginkan.TCNT1 dibagi menjadi 2 register 8 bit, yaitu TCNT1H dan TCNT1L.

Tabel 6 Register TCNT1Bit76543210

TCNT1HTCNT1 [15:8]

TCNT1LTCNT1 [7:0]

d. TIMSK dan TIFR, Timer Interrupt Mask Register (TIMSK) dan Timer Interrupt Flag (TIFR) digunakan untuk mengendalikan interrupt mana yang diaktifkan, dengan cara melakukan setting pada TIMSK dan untuk mengetahui interrupt mana yang sedang terjadi

Tabel 7 register TIMSKBit76543210

TIMSKOCIE2TOIE2TICIE1OCIE1AOCIE1BTOIE1OCIE0TOIE0

e. OCR1n, output compare register timer 1 n (n=A,B) merupakan register yang digunakan untuk membangkitkan intrupsi eksternal dengan melakukan perbandingan (output compare) atau juga dapat digunakan untuk membangkitkan bentuk gelombang (PWM). Fungsi tersebut di atas dikeluarkan oleh pin OC1n (n=A,B).Tabel 8 register OCR1nBit76543210

OCR1nHOCR1n[15:8]

OCR1nLOCR1n[7:0]

C. Peralatan 1 set PC yang dilengkapi dengan software CodeVision AVR 1 set development board AVR ATmega16 1 power-supply +9VDC

D. Hasil Percobaan

Gambar. 8.3 Hasil percobaan mengakses rotary encoder incremental

E. TugasSource Code

Hasil Running Program

Gambar 8.3 Posisi sudut 0-90

Gambar 8.4 Posisi sudut 90-180

Gambar 8.5 Posisi sudut 180-270

Gambar 8.6 Posisi sudut 270-360

F. AnalisaPada percobaan ini dapat diketahui bahwa rotary encoder yang digunakan adalah rotary encoder incremental. Rotary ini menghasilkan pulsa listrik, sehingga dari jumlah pulsa yang dihasilkan kita bisa mengubahnya kedalam nilai sudut putar poros. Terdapat 30 pulsa yang dihasilkan dalam 1 putaran penuh. Pada program, rotary encoder incremental menggunakan eksternal interrupt, pada timer 0. Sehingga ketika ada interrupt (pulsa) maka akan menambah nilai counter dan menyalakan bar led secara berurutan dari LSB sampai MSB kemudian overflow. Sedangkan untuk tugas percobaan ini, data rotary didapat dari nilai TCNT0. Ketika system pertama kali menyala, data rotary bernilai 0 sehingga dianggap rotary pada sudut 0 derajat. Ketika rotary diputar sampai 1 putaran penuh (360 derajat) maka nilai akan increment sampai bernilai maksimal 255 kemudian overflow. Sehingga, untuk menentukan sudut 90, 180, dan 270 adalah dengan rumus sudut = data rotary/30 x 360. Besar sudut kurang dari atau sama dengan 90 derajat apabila data rotary kurang dari 7. Jika data rotary diantara 8 sampai 14 maka sudut maksimalnya adalah 180 derajat. Selanjutnya besar sudut akan bernilai 270 derajat ketika nilai data rotary sama dengan 21. Dan yang terakhir jika data rotary bernilai 30, maka besar sudut adalah 360 derajat

G. KesimpulanDari percobaan dan analisa yang telah kami lakukan dapat diambil kesimpulan bahwa: Rotary Encoder incremental dapat menghasilkan pulsa listrik yang bisa digunakan untuk menentukan besar sudut suatu putaran dengan menggunakan eksternal interrupt pada mikrokontroller.