Anda di halaman 1dari 8

Rancangan aplikasi IC AVR ATMega16

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.

M.Fakhruzzaman.Al.Faisal

Rancangan aplikasi IC AVR ATMega16

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 PIND.2 PINC.0 PINC.2 PINC.4 PINC.5 PINC.6 PINC.7 PIN.9 PIN 12-13 Function Interrupt/INT0 RS/Signal Enabled DB4 DB5 DB6 DB7 RST XTAL I/0 Input Output Keterangan input pembacaan putaran motor Register select untuk lcd Enabled untuk lcd 4 bit lcd Reset 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 #include #include #include <mega16.h> <lcd.h> <delay.h> <stdlib.h>

Deklarasi penggunaan file header


#asm .equ __lcd_port=015 ;PORTC #endasm

Fungsi penggunaan modul alphanumeric lcd


interrupt [EXT_INT0] void ext_int0_isr(void) { frekuensi++;}

M.Fakhruzzaman.Al.Faisal

Rancangan aplikasi IC AVR ATMega16

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

M.Fakhruzzaman.Al.Faisal

Rancangan aplikasi IC AVR ATMega16

FLOWCHART mulai

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

t = input INT0 f = 0 pulsa = 0

pulsa = f* 60/20 ; or pulsa = f*30; t = pulsa

T >> 8

Tampilkan ke LCD

selesai

M.Fakhruzzaman.Al.Faisal

Rancangan aplikasi IC AVR ATMega16

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

M.Fakhruzzaman.Al.Faisal

Rancangan aplikasi IC AVR ATMega16

Bill Of Material
Comment Cap Diode Socket Header 5 Header 8 Header 16 Header 2 Header 10 Res1 RPot SW-PB ATmega1616PC Description Capacitor Default Diode Socket Header, 5-Pin Header, 8-Pin Header, 16-Pin Header, 2-Pin Header, 10-Pin Resistor Potentiometer Switch 8-Bit AVR Microcontroller with 16K Bytes of In-System Programmable Flash Memory Opto-Triac Positive Voltage Regulator Crystal Oscillator Designator C1, C2, C3, C4, C5 D1 J1 P1, P7, P11 P2, P3, P4, P5 P6 P8, P10 P9 R1, R2, R3 R4 S1 Footprint RAD-0.3 SMC PIN1 HDR1X5 HDR1X8 HDR1X16 HDR1X2 HDR1X10 AXIAL-0.3 VR5 SPST-2 LibRef Cap Diode Socket Header 5 Header 8 Header 16 Header 2 Header 10 Res1 RPot SW-PB ATmega1616PC 1 U2 U3 Y1 NPSIP4A TO220ABN R38 Opto TRIAC L7805CV XTAL 1 1 1 12 MHZ Quantity 5 1 1 3 4 1 2 1 3 1 1 1K 1K Value 0.1uF, 0.3uF, 100pF

U1

40P6

Opto TRIAC L7805CV XTAL

M.Fakhruzzaman.Al.Faisal

Rancangan aplikasi IC AVR ATMega16

Source Code # C- Codevision AVR


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=000; TCCR1B=005; TCNT1H=0xD2; TCNT1L=0x3A; ICR1H=000; ICR1L=000; OCR1AH=000; OCR1AL=000; OCR1BH=000; OCR1BL=000; // External Interrupt(s) initialization // INT0: On // INT0 Mode: Falling Edge // INT1: Off // INT2: Off GICR|=040; MCUCR=002; MCUCSR=000; GIFR=040; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=004; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=080; SFIOR=000; // LCD module initialization lcd_init(16); // Global enable interrupts #asm(sei) while (1) { tampilkan_LCD(); }; }

int frekuensi; float pulsa; char temp[8]; #include #include #include #include <mega16.h> <lcd.h> <delay.h> <stdlib.h>

// Alphanumeric LCD Module functions #asm .equ __lcd_port=015 ;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); }

M.Fakhruzzaman.Al.Faisal

Rancangan aplikasi IC AVR ATMega16

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

M.Fakhruzzaman.Al.Faisal