rancangan sensor rotary atmega16

8
Rancangan aplikasi IC AVR ATMega16 M.Fakhruzzaman.Al.Faisal · JUDUL : Penghitung Kecepatan Motor DC dengan Display LCD 16X2 Berbasis Mikrokontroler ATMega16 · TUJUAN : - Menghitung nilai kecepatan motor dc dengan satuan rpm - Menampilkan nilai rpm ke tampilan LCD - Mengatur kecepatan motor dc berdasarkan nilai rpm hasil masukan dan sesuai dengan hasil tampilan pada LCD Pada dasarnya aplikasi ini hampir sama dengan aplikasi penghitung frekuensi (Frequency Counter), dimana letak perbedaanya hanya pada perumusannya saja, dimana perumusan tersebut tergantung dari pengubahan detik ke menit dan banyaknya pulsa encoder dalam 1 putaran motor DC. Dengan menggunakan optocoupler sebagai sensor harus menggunakan rotary encoder yang di-couple dengan as motor dc untuk mendeteksi kecepatan putaran motor DC. Biasanya pada rotary encoder dibuat lubang-lubang sebagai representasi banyaknya pulsa. Dan harus menentukan terlebih dahulu banyaknya pendeteksian pulsa atau lubang pada rotary encoder untuk satu putaran yang dilakukan motor DC. Karena banyaknya pulsa atau lubang akan mempengaruhi perumusan perhitungan kecepatan motor DC dan semakin banyak pulsa atau lubang maka akan meningkatkan resolusi pembacaan kecepatan motor DC, dengan kata lain pembacaan kecepatan akan semakin presisi. Dan jika motor DC sudah mempunyai internal encoder, maka hanya tinggal menghubungkan saja output internal encoder motor DC anda ke pin INT0 atau PD2. Teknik yang digunakan yaitu dengan rotary encoder sebanyak 20 lubang sehingga perumusan kecepatan motor DC menjadi: Pulsa = Frekuensi * 60/20 ; atau Pulsa = frekuensi*30; Dimana angka 60 digunakan untuk mengubah kedalam satuan RPM (round per minute), karena timer yang saya gunakan hanya membaca selama 1 detik, jika dikalikan sebanyak 60 maka akan menjadi 1 menit. Dan angka 20 adalah banyaknya lubang atau pulsa rotary encoder.

description

bentuk dan desain untuk merancang program rotary encoder untuk mengetahui kecepatan putar (RPM) dengan tampilan LCD yang diprogram pada mikrokontroller

Transcript of rancangan sensor rotary atmega16

Page 1: rancangan sensor rotary atmega16

Rancangan aplikasi IC AVR ATMega16

M.Fakhruzzaman.Al.Faisal

· JUDUL : Penghitung Kecepatan Motor DC dengan Display LCD 16X2 Berbasis Mikrokontroler ATMega16

· TUJUAN : - Menghitung nilai kecepatan motor dc dengan satuan rpm - Menampilkan nilai rpm ke tampilan LCD - Mengatur kecepatan motor dc berdasarkan nilai rpm hasil masukan dan

sesuai dengan hasil tampilan pada LCD Pada dasarnya aplikasi ini hampir sama dengan aplikasi penghitung frekuensi (Frequency Counter), dimana letak perbedaanya hanya pada perumusannya saja, dimana perumusan tersebut tergantung dari pengubahan detik ke menit dan banyaknya pulsa encoder dalam 1 putaran motor DC. Dengan menggunakan optocoupler sebagai sensor harus menggunakan rotary encoder yang di-couple dengan as motor dc untuk mendeteksi kecepatan putaran motor DC. Biasanya pada rotary encoder dibuat lubang-lubang sebagai representasi banyaknya pulsa. Dan harus menentukan terlebih dahulu banyaknya pendeteksian pulsa atau lubang pada rotary encoder untuk satu putaran yang dilakukan motor DC. Karena banyaknya pulsa atau lubang akan mempengaruhi perumusan perhitungan kecepatan motor DC dan semakin banyak pulsa atau lubang maka akan meningkatkan resolusi pembacaan kecepatan motor DC, dengan kata lain pembacaan kecepatan akan semakin presisi. Dan jika motor DC sudah mempunyai internal encoder, maka hanya tinggal menghubungkan saja output internal encoder motor DC anda ke pin INT0 atau PD2. Teknik yang digunakan yaitu dengan rotary encoder sebanyak 20 lubang sehingga perumusan kecepatan motor DC menjadi:

Pulsa = Frekuensi * 60/20 ; atau Pulsa = frekuensi*30;

Dimana angka 60 digunakan untuk mengubah kedalam satuan RPM (round per minute), karena timer yang saya gunakan hanya membaca selama 1 detik, jika dikalikan sebanyak 60 maka akan menjadi 1 menit. Dan angka 20 adalah banyaknya lubang atau pulsa rotary encoder.

Page 2: rancangan sensor rotary atmega16

Rancangan aplikasi IC AVR ATMega16

M.Fakhruzzaman.Al.Faisal

· ANALISIS SISTEM Sistem pada rangkaian aplikasi ini, menggunkaan beberapa fitur-fitur internal dari dari IC ATMega 16 yaitu timer, counter, interrupt internal serta beberapa fitur input/output. Berikut tabel input-output dengan port pada IC ATMega 16

Port Function I/0

Keterangan Input Output

PIND.2 Interrupt/INT0 ü input pembacaan putaran motor

PINC.0 RS/Signal Register select untuk lcd

PINC.2 Enabled ü Enabled untuk lcd PINC.4 DB4 ü

4 bit lcd PINC.5 DB5 ü PINC.6 DB6 ü PINC.7 DB7 ü PIN.9 RST ü Reset

PIN 12-13 XTAL ü External Clock Penjelasan program ;

int frekuensi; float pulsa; char temp[8]; variabel dan tipe data yang akan digunakan int(integer), float(pecahan) char(character) “[] = menggunakan array

#include <mega16.h> #include <lcd.h> #include <delay.h> #include <stdlib.h>

Deklarasi penggunaan file header #asm .equ __lcd_port=0×15 ;PORTC #endasm

Fungsi penggunaan modul alphanumeric lcd interrupt [EXT_INT0] void ext_int0_isr(void) { frekuensi++;}

Page 3: rancangan sensor rotary atmega16

Rancangan aplikasi IC AVR ATMega16

M.Fakhruzzaman.Al.Faisal

Listing program diatas berfungsi untuk membaca frekuensi (pulsa) yg masuk ke INT0 lalu di increment // Timer 1 overflow interrupt service routine interrupt [TIM1_OVF] void timer1_ovf_isr(void)

Timer 1 detik untuk membaca pulsa yg masuk ke INT0 { // Reinitialize Timer 1 value TCNT1H=0xD23A >> 8; TCNT1L=0xD23A & 0xff; pulsa=(float)frekuensi*60/20; frekuensi=0; lcd_clear(); }

Rumus Menghitung kecepatan Pulsa = Frekuensi * 60/20 ; atau Pulsa = frekuensi*30;

void tampilkan_LCD() { lcd_gotoxy(0,0); lcd_putsf(“ical tachometer”); ftoa(pulsa,1,temp); lcd_gotoxy(0,1); lcd_puts(temp); lcd_gotoxy(0,5); lcd_putsf(“RPM”); }

Subrutin program menampilkan kecepatan ke LCD lcd_init(16);

Inisialisasi modul LCD 16x2 #asm(“sei”)

Mengaktifkan interupsi while (1) { tampilkan_LCD(); };

Menampilkan subrutin tampilkan_LCD

Page 4: rancangan sensor rotary atmega16

Rancangan aplikasi IC AVR ATMega16

M.Fakhruzzaman.Al.Faisal

· FLOWCHART

mulai

int frekuensi; float pulsa; char temp[8];

pulsa = f* 60/20 ; or

pulsa = f*30; t = pulsa

t = input INT0 f = 0

pulsa = 0

Tampilkan ke LCD

selesai

T >> 8

Page 5: rancangan sensor rotary atmega16

Rancangan aplikasi IC AVR ATMega16

M.Fakhruzzaman.Al.Faisal

· RANCANGAN SISTEM Pada rancangan sistem Pengatur Kecpeatan Motor Penghitung Kecepatan Motor DC dengan Display LCD 16X2 Berbasis Mikrokontroler ATMega16 menggunakan input dan output serta beberapa fitur internal lain dari mikrokontroler ATMega16 diantaranya timer dan counter, serta interrupt. Perangkat keras yang digunakan adalah sistem minimum ATMega16, LCD 16 x 2 dengan driver lcd 4 bit , Optocoupler sebagai sensor encoder, dan motor dc dengan encoder yang nantinya akan menjadi objek yang akan dihitung putarannya, serta power supply dan regulator 5 vdc.

· SKEMATIK RANGKAIAN + BILL OF MATERIAL

· BLOK DIAGRAM

MOTOR DC SENSOR MICROCONTROLLER LCD

Page 6: rancangan sensor rotary atmega16

Rancangan aplikasi IC AVR ATMega16

M.Fakhruzzaman.Al.Faisal

· Bill Of Material

Comment Description Designator Footprint LibRef Quantity Value

Cap Capacitor C1, C2, C3, C4, C5 RAD-0.3 Cap 5

0.1uF, 0.3uF, 100pF

Diode Default Diode D1 SMC Diode 1

Socket Socket J1 PIN1 Socket 1

Header 5 Header, 5-Pin P1, P7, P11 HDR1X5 Header 5 3

Header 8 Header, 8-Pin P2, P3, P4, P5 HDR1X8 Header 8 4

Header 16 Header, 16-Pin P6 HDR1X16 Header 16 1

Header 2 Header, 2-Pin P8, P10 HDR1X2 Header 2 2

Header 10 Header, 10-Pin P9 HDR1X10 Header 10 1

Res1 Resistor R1, R2, R3 AXIAL-0.3 Res1 3 1K

RPot Potentiometer R4 VR5 RPot 1 1K

SW-PB Switch S1 SPST-2 SW-PB 1

ATmega16-16PC

8-Bit AVR Microcontroller with 16K Bytes of In-System Programmable Flash Memory

U1 40P6 ATmega16-16PC

1

Opto TRIAC Opto-Triac U2 NPSIP4A Opto TRIAC 1

L7805CV Positive Voltage Regulator U3 TO220ABN L7805CV 1

XTAL Crystal Oscillator Y1 R38 XTAL 1 12 MHZ

Page 7: rancangan sensor rotary atmega16

Rancangan aplikasi IC AVR ATMega16

M.Fakhruzzaman.Al.Faisal

· Source Code # C- Codevision AVR

int frekuensi; float pulsa; char temp[8]; #include <mega16.h> #include <lcd.h> #include <delay.h> #include <stdlib.h> // Alphanumeric LCD Module functions #asm .equ __lcd_port=0×15 ;PORTC #endasm // External Interrupt 0 service routine interrupt [EXT_INT0] void ext_int0_isr(void) { frekuensi++; } // Timer 1 overflow interrupt service routine interrupt [TIM1_OVF] void timer1_ovf_isr(void)//timer 1 detik untuk membaca pulsa yg masuk ke INT0 { // Reinitialize Timer 1 value TCNT1H=0xD23A >> 8; TCNT1L=0xD23A & 0xff; pulsa=(float)frekuensi*60/20; frekuensi=0; lcd_clear(); } void tampilkan_LCD()

{ lcd_gotoxy(0,0); lcd_putsf(“ical tachometer”); ftoa(pulsa,1,temp); lcd_gotoxy(0,1); lcd_puts(temp); lcd_gotoxy(0,5); lcd_putsf(“RPM”); }

void main(void) { // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 11.719 kHz // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer 1 Overflow Interrupt: On // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0×00; TCCR1B=0×05; TCNT1H=0xD2; TCNT1L=0x3A; ICR1H=0×00; ICR1L=0×00; OCR1AH=0×00; OCR1AL=0×00; OCR1BH=0×00; OCR1BL=0×00; // External Interrupt(s) initialization // INT0: On // INT0 Mode: Falling Edge // INT1: Off // INT2: Off GICR|=0×40; MCUCR=0×02; MCUCSR=0×00; GIFR=0×40; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0×04; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0×80; SFIOR=0×00; // LCD module initialization lcd_init(16); // Global enable interrupts #asm(“sei”) while (1) { tampilkan_LCD(); }; }

Page 8: rancangan sensor rotary atmega16

Rancangan aplikasi IC AVR ATMega16

M.Fakhruzzaman.Al.Faisal

DAFTAR PUSTAKA

Andrianto, Heri.2008. Pemrograman Mikrokontroler AVR ATMEGA 16.Bandung: Penerbit Informatika.

Elektro-Kontrol 2011. Penghitung kecepatan motor dc menggunakan optocoupler dengan codevision avr (online) http://elektro-kontrol.blogspot.com/2011/06/penghitung-kecepatan-motor-dc.html Dikases pada 13 Juni 2012 Atmel Corporation. 2008. Data Sheet Atmega16. (Online)http://www.datasheetcatalog.orgdatasheetsrestul219541_DS.pdf diakses 14 Juni 2012. Setiawan, Arif 2011. Mikrokontroler ATMega 8535 & ATMega 16 menggunakan Bascom –AVR.Yogyakarta:Penerbit Andi