Perancangan Alat Pengendali Lampu dan Kipas Angin Dengan Jaringan Komunikasi Data Berbasis Mikrokontroler ATMega 32

(1)

LAMPIRAN

Gambar Alat Secara Keseluruhan


(2)

(3)

Program Pada Alat Receiver

/****************************************************** This program was created by the

CodeWizardAVR V3.12 Advanced Automatic Program Generator

© Copyright 1998-2014 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com

Project : Version :

Date : 5/5/2016 Author :

Company : Comments:

Chip type : ATmega32A Program type : Application AVR Core Clock frequency: 11.059200 MHz Memory model : Small

External RAM size : 0 Data Stack size : 512

******************************************************* /

#include <mega32a.h> #include <delay.h> #define lampu OCR1B #define kipas OCR1A

// Alphanumeric LCD functions #include <alcd.h>

char input,n;

#include <stdio.h> void main(void) {


(4)

DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);

PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) |

(0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);

DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);

PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) |

(0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);

PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) |

(0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);

DDRD=(0<<DDD7) | (0<<DDD6) | (1<<DDD5) | (1<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);

PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) |

(0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);

TCCR0=(0<<WGM00) | (0<<COM01) | (0<<COM00) | (0<<WGM01) | (0<<CS02) | (0<<CS01) | (0<<CS00);

TCNT0=0x00; OCR0=0x00;

TCCR1A=(1<<COM1A1) | (0<<COM1A0) | (1<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (1<<WGM10);

TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (1<<WGM12) | (0<<CS12) | (1<<CS11) | (0<<CS10);

TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00;


(5)

OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; ASSR=0<<AS2;

TCCR2=(0<<PWM2) | (0<<COM21) | (0<<COM20) | (0<<CTC2) | (0<<CS22) | (0<<CS21) | (0<<CS20);

TCNT2=0x00; OCR2=0x00;

TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) |

(0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<OCIE0) | (0<<TOIE0);

MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00); MCUCSR=(0<<ISC2);

UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);

UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (1<<RXEN) | (0<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);

UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);

UBRRH=0x00; UBRRL=0x8F;

ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0); SFIOR=(0<<ACME);

ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0);

SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0);

// TWI disabled

TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE);


(6)

while (1) {

for(n=0;n<16;n++) {

input= getchar(); if(input==8) {

n=n-1; }

lcd_gotoxy(n,1);

lcd_putchar(input); if(input==8)

{

n=n-1; }

}

kipas=input; lampu=input; }

}

/****************************************************** *

This program was created by the CodeWizardAVR V3.12 Advanced Automatic Program Generator

© Copyright 1998-2014 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com

Project : Version :

Date : 05/07/2016 Author :

Company : Comments:


(7)

Chip type : ATmega32A Program type : Application AVR Core Clock frequency: 11.059200 MHz Memory model : Small

External RAM size : 0 Data Stack size : 512

******************************************************* /

#include <mega32a.h> #include <stdlib.h> int data, data1; #include <alcd.h> #include <delay.h> #define lampu OCR1B #define kipas OCR1A unsigned int input =0; char buff[20];

#define DATA_REGISTER_EMPTY (1<<UDRE) #define RX_COMPLETE (1<<RXC)

#define FRAMING_ERROR (1<<FE) #define PARITY_ERROR (1<<UPE) #define DATA_OVERRUN (1<<DOR) #define RX_BUFFER_SIZE 8

char rx_buffer[RX_BUFFER_SIZE]; #if RX_BUFFER_SIZE <= 256

unsigned char rx_wr_index=0,rx_rd_index=0; #else

unsigned int rx_wr_index=0,rx_rd_index=0; #endif

#if RX_BUFFER_SIZE < 256 unsigned char rx_counter=0; #else


(8)

#endif {

char status,data; status=UCSRA; data=UDR;

if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)

{

rx_buffer[rx_wr_index++]=data; #if RX_BUFFER_SIZE == 256

if (++rx_counter == 0) rx_buffer_overflow=1; #else

if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0; if (++rx_counter == RX_BUFFER_SIZE)

{

rx_counter=0;

rx_buffer_overflow=1; }

#endif } }

#ifndef _DEBUG_TERMINAL_IO_

// Get a character from the USART Receiver buffer #define _ALTERNATE_GETCHAR_

#pragma used+

char getchar(void) {

char data;

while (rx_counter==0);

data=rx_buffer[rx_rd_index++]; #if RX_BUFFER_SIZE != 256

if (rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0; #endif


(9)

#asm("cli") --rx_counter; #asm("sei") return data; }

#pragma used- #endif

#include <stdio.h> /*

void tekan_keypad_tampil_lcd() //penekanan keypad kemudian ditampilkan di LCD

{

PORTB = 0b11111110; delay_ms(30);

if (PINB.4 == 0) {lcd_putsf("D"); delay_ms(300);} if (PINB.5 == 0) {lcd_putsf("C"); delay_ms(300);} if (PINB.6 == 0) {lcd_putsf("B"); delay_ms(300);} if (PINB.7 == 0) {lcd_putsf("A"); delay_ms(300);} PORTB = 0b11111101;

delay_ms(30);

if (PINB.4 == 0) {lcd_putsf("#"); delay_ms(300);} if (PINB.5 == 0) {lcd_putsf("9"); delay_ms(300);} if (PINB.6 == 0) {lcd_putsf("6"); delay_ms(300);} if (PINB.7 == 0) {lcd_putsf("3"); delay_ms(300);} PORTB = 0b11111011;

delay_ms(30);

if (PINB.4 == 0) {lcd_putsf("0"); delay_ms(300);} if (PINB.5 == 0) {lcd_putsf("8"); delay_ms(300);} if (PINB.6 == 0) {lcd_putsf("5"); delay_ms(300);} if (PINB.7 == 0) {lcd_putsf("2"); delay_ms(300);} PORTB = 0b11110111;

delay_ms(30);


(10)

if (PINB.5 == 0) {lcd_putsf("7"); delay_ms(300);} if (PINB.6 == 0) {lcd_putsf("4"); delay_ms(300);} if (PINB.7 == 0) {lcd_putsf("1"); delay_ms(300);} }

*/

void main(void) {

awal:

DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);

PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) |

(0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);

//DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);

// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T

//PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) |

(0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

PORTB=0xff; DDRB=0x0f;

DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);

PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) |

(0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);

DDRD=(0<<DDD7) | (0<<DDD6) | (1<<DDD5) | (1<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);

PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) |

(0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);


(11)

TCCR0=(0<<WGM00) | (0<<COM01) | (0<<COM00) | (0<<WGM01) | (0<<CS02) | (0<<CS01) | (0<<CS00);

TCNT0=0x00; OCR0=0x00;

TCCR1A=(1<<COM1A1) | (0<<COM1A0) | (1<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (1<<WGM10);

TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (1<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10);

TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; ASSR=0<<AS2;

TCCR2=(0<<PWM2) | (0<<COM21) | (0<<COM20) | (0<<CTC2) | (0<<CS22) | (0<<CS21) | (0<<CS20);

TCNT2=0x00; OCR2=0x00;

TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) |

(0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<OCIE0) | (0<<TOIE0);

MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00); MCUCSR=(0<<ISC2);

UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);

UCSRB=(1<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (1<<RXEN) | (0<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);

UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);


(12)

UBRRL=0x8F;

ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0); SFIOR=(0<<ACME);

ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0);

SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0);

TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE);

lcd_init(16);

#asm("sei") while (1) { cek:

lcd_clear(); lcd_gotoxy(0,0);

lcd_putsf("kipas ="); data=kipas/2;

itoa(data,buff); lcd_puts(buff); lcd_putsf(" %"); lcd_gotoxy(0,1);

lcd_putsf("lampu ="); data1=lampu/2;

itoa(data1,buff); lcd_puts(buff); lcd_putsf(" %"); input= getchar(); itoa(input,buff); lcd_gotoxy(14,0); lcd_puts(buff)


(13)

if (input == 1) {

kipas=50; }

if (input == 2) {

kipas=100; }

if (input == 3) {

kipas=150; }

if (input == 4) {

kipas=200; }

if (input == 5) {

lampu=50; } if (input == 6) {

lampu=100; }

if (input == 7) {

lampu=150; }

if (input == 8) {

lampu=200; }


(14)

else if (input == 0) {

lampu=0; kipas=0; }

else if (input == 15) {

Lampu = 0; }

else if (input == 14) {

Kipas = 0;

else {goto cek;} }

}

Trasmiter

/****************************************************** *

This program was created by the CodeWizardAVR V3.12 Advanced Automatic Program Generator

© Copyright 1998-2014 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com

Project : Version :

Date : 5/4/2016 Author :

Company : Comments:

Chip type : ATmega32A Program type : Application AVR Core Clock frequency: 11.059200 MHz Memory model : Small


(15)

External RAM size : 0 Data Stack size : 512

******************************************************* /

#include <mega32a.h> #include <delay.h> char a=100;

#include <stdio.h> void main(void) {

DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);

PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) |

(0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);

DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);

PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) |

(0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);

PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) |

(0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);

DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);

PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) |

(0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);

TCCR0=(0<<WGM00) | (0<<COM01) | (0<<COM00) | (0<<WGM01) | (0<<CS02) | (0<<CS01) | (0<<CS00);


(16)

TCNT0=0x00; OCR0=0x00;

TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);

TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (0<<CS10);

TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; ASSR=0<<AS2;

TCCR2=(0<<PWM2) | (0<<COM21) | (0<<COM20) | (0<<CTC2) | (0<<CS22) | (0<<CS21) | (0<<CS20);

TCNT2=0x00; OCR2=0x00;

TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) |

(0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<OCIE0) | (0<<TOIE0);

MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00); MCUCSR=(0<<ISC2);

UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);

UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);

UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);

UBRRH=0x00; UBRRL=0x8F;


(17)

ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0); SFIOR=(0<<ACME);

ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0);

SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0);

TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE);

while (1) {

// Place your code here putchar(a);

delay_ms(100); }


(18)

(19)

DAFTAR PUSTAKA

Aji,Seno.2013.Kontrol Kipas Angin Menggunakan Bluetooth Berbasis Arduino.[4]

Budiharto,Widodo.2005.Panduan Lengkap Belajar Mikrokontroller Perancangan Sistem dan Aplikasi Mikrokontroller.Jakarta: PT. Alex Media Komputindo Daryanto, 2001.Rengetahuan Praktis Teknik Radio.PT Bumi Aksara:Jakarta Kadavi,Krisna.2010.Aplikasi Mikrokontroler AT89s51 Sebagai Basis Pada

Sistem Pengendalian Lampu Dan Pintu Dengan Menggunakan Bahasa Bascom 8051.[3]

Kasogi,Nadila.2010. Perancangan Pengendali Lampu Ruangan Dengan Menggunakan Komputer BerbasisMikrokontroler ATmega8535.[2]

Sultan Setiawan, 2006. Mudah dan Menyenagkan Belajar Mikrokontroler. Andi Offset]Rafiudin, Rahmat, 2006. Sistem Komunikasi Data Mutakhir.

Yogyakarta :Penerbit Andi Yogyakarta

Sanjaya,W.2013.Simulasi Menggunakan Cod Vision AVR dan Proteus. Yogyakarta: Penerbit Gava Media.

Wahyono, Teguh. 2003. Prinsip Dasar dan Teknologi Komunikasi Data. Edisi Pertama. Yogyakarta : Penerbit Graha Ilmu

Wibowo,Ari.2011.Pengaturan Kipas Dengan berbasis mikrokontroler dengan menggunakan sensor suhu.[1]

http://elektronika-dasar.web:id/matrix-keypad-4x4-untuk mikrokontroler diakses tanggal 22 Mei 2016, pukul 21.20 a.m

digilib.polban.ac.id/files/disks1/73/frekuensi radio 315 Mhz diakses tanggal 22 Mei 2016, pukul 21.20 a.m


(20)

BAB 3

PERANCANGAN SISTEM

3.1 Diagram Blok Sistem

Adapun diagram blok dari sistem yang dirancang adalah seperti yang diperlihatkan pada gambar 3.1 berikut ini :

ATMega 32

ATMega 32

Keypad

Power Suplay Power Suplay

Transmiter radio frekuensi

Resever Radio Frekuensi

Driver Driver

LCD

Lampu Kipas

Kontrol Master Kontrol Slave

Gambar 3.1. Diagram Blok Sistem

3.1.1 Fungsi Tiap Blok

1. Blok Mikrokontroler 1 : Sebagai memproses data untuk dikirim 2. Blok Mikrokontroler 2 : Sebagai memproses data yang diterima

dan di bandingkan untuk mengontrol kipas dan lampu

3. Blok Keypad : Sebagai alat control on/of lampu dan kipas 4. Blok Power Suplay : Sebagai penyedia tegangan ke system 5. Blok Transmiter RF : Pengirim data ke resever


(21)

6. Blok Resever RF : Menerima data dari transmiter 7. Blok LCD : Sebagai display

8. Blok Kipas : Sebagai beban listrik yang dikontrol 9. Blok Lampu : Sebagai beban listrik yang dikontrol 10.Blok driver : Sebagai rangkaian pengendali

3.2 Rangkaian Mikrokontroler ATMega32

Rangkaian sistem minimum mikrokontroler ATMega32 dapat ‘dilihat pada gambar 3.2 di bawah ini :

Gambar 3.2 Rangkaian mikrokontroler ATMega32

Dari gambar 3.2, Rangkaian tersebut berfungsi sebagai pusat kendali dari seluruh sistem yang ada. Komponen utama dari rangkaian ini adalah IC Mikrokontroler ATMega32. Semua program diisikan pada memori dari IC ini sehingga rangkaian dapat berjalan sesuai dengan yang dikehendaki. Pin 12 dan 13 dihubungkan ke XTAL 11.0952 MHz dan dua buah kapasitor 30 pF. XTAL ini akan mempengaruhi kecepatan mikrokontroler ATMega32 dalam mengeksekusi setiap


(22)

perintah dalam program. Pin 9 merupakan masukan reset (aktif rendah). Pulsa transisi dari tinggi ke rendah akan me-reset mikrokontroler ini.

Untuk men-download file heksadesimal ke mikrokontroler, Mosi, Miso, Sck, Reset, Vcc dan Gnd dari kaki mikrokontroler dihubungkan ke Jack 10 Pin header sebagai konektor yang akan dihubungkan ke ISP Programmer. Dari ISP Programmer inilah dihubungkan ke komputer melalui port paralel. Kaki Mosi, Miso, Sck, Reset, Vcc dan Gnd pada mikrokontroler terletak pada kaki 6, 7, 8, 9, 10 dan 11. Apabila terjadi keterbalikan pemasangan jalur ke ISP Programmer, maka pemograman mikrokontroler tidak dapat dilakukan karena mikrokontroler tidak akan bisa merespon.

3.3. Rangkaian LCD (Liquid Crystal Display)

Pada alat ini, display yang digunakan adalah LCD (Liquid Crystal Display) 16 x 2. Untuk blok ini tidak ada komponen tambahan karena mikrokontroler dapat memberi data langsung ke LCD, pada LCD Hitachi - M1632 sudah terdapat driver untuk mengubah data ASCII output mikrokontroler menjadi tampilan karakter. Pemasangan potensio sebesar 5 KΩ untuk mengatur kontras karakter yang tampil. Gambar 3.3 berikut merupakan gambar rangkaian LCD yang dihubungkan ke mikrokontroler.


(23)

Dari gambar 3.3, rangkaian ini terhubung ke PB.0... PB.7, yang merupakan pin I/O dua arah dan pin fungsi khusus, yaitu sebagai Timer/Counter, komperator analog dan SPI mempunyai fungsi khusus sebagai pengiriman data secara serial. Sehingga nilai yang akan tampil pada LCD display akan dapat dikendalikan oleh Mikrokontroller ATMega32.

3.4. Rangkaian Power Suplay

Rangkaian ini berfungsi untuk mensupplay tegangan ke seluruh rangkaian yang ada. Rangkaian PSA yang dibuat terdiri dari dua keluaran, yaitu 5 volt dan 12 volt, keluaran 5 volt digunakan untuk mensupplay tegangan ke seluruh rangkaian, sedangkan keluaran 12 volt digunakan untuk mensuplay tegangan ke motor dan kipas 12 V DC. Rangkaian power supplay dapat ditunjukkan pada gambar 3.4 seperti dibawah ini.


(24)

3.5 Rangkaian radio freakuensi 315 Mhz

(a) (b)

Gambar 3.5. Rangkaian radio frekuensi (a) transmitter dan (b) receiver

Paket 315 Mhz RF link kit terdiri dari pemancar (Tx) dan penerima (Rx), yang secara umum digunakan untuk remote control. Jenis atau model pada gambar adalah WLS107B4B, dengan berat sekitar 5 g, dengan frekuensi sebesar 315 Mhz, Modulasi ASK, keluaran data penerima : tinggi - 1/2 Vcc, rendah - 0.7v, Tegangan masukkan transmisi : 3-12V (semakin tegangan masukannya tinggi maka kekuatan transmisi juga lebih baik, Tegangan masukkan penerima : 3.3-6V (semakin tegangan masukannya tinggi maka kekuatan penerimaan juga semakin baik).

3.6. Rangkaian Keypad 4 x 4

Keypad Matriks adalah tombol-tombol yang disusun secara maktriks (baris x kolom) sehingga dapat mengurangi penggunaan pin input. Sebagai contoh, Keypad Matriks 4×4 cukup menggunakan 8 pin untuk 16 tombol. Proses pengecekkan dari tombol yang dirangkai secara maktriks adalah dengan teknik scanning, yaitu proses pengecekkan yang dilakukan dengan cara memberikan umpan-data pada satu bagian dan mengecek feedback (umpan-baliknya) pada bagian yang lain. Dalam hal ini, pemberian umpan-data dilakukan pada bagian baris dan pengecekkan umpan-balik pada bagian kolom. Pada saat pemberian umpan-data pada satu baris, maka baris yang lain harus dalam kondisi inversi-nya. Rangkaian keypad matriks ini dihubungkan ke PORTB.


(25)

Gambar 3.6 rangkaian keypad 4x4

3.7. Rangkaian Kipas dan Lampu

Gambar 3.7 rangkaian kipas dan lampu

Rangkaian lampu ini memanfaatkan transistor bd139 yang tegangan/arus basisnya dapat diatur untuk mendaptakan tegangan kolektor yang variatif kaki basis dihubungkan ke out PWM mikrokontroler melalui resistor 4k7 untuk menghindari kerusakan pada mikrokontroler, kaki kolektor dihubungkan ke negative motor atau lampu dan positif dihubungkan ke 12 volt, kemudian emitter dihubungkan ke GND. Resistansi kolektor ke emitor akan mendekati tak terhingga pada saat terbuka atau saat basis menerima supplay.


(26)

3.8. Flowcart Transmiter

Start

inisialisasi

Input keypad

Terima data proses

Kirim data sistem

Selesai


(27)

3.9 Flowchart Receiver Start inisialisasi Terima data data proses If data==1) If data==2) If data==3) Putaran kipas 25 % tidak ya ya Putaran kipas 75% Putaran kipas 50 % Putaran kipas 100% ya If data==4) tidak tidak ya If data==5) If data==6) If data==7) Cahaya lampu 25 % tidak ya ya Cahaya lampu 75% Cahaya lampu 50 % Cahaya lampu 100% ya If data==8) tidak tidak ya Lampu dan Kipas mati If data==0) tidak ya Selesai


(28)

BAB IV

HASIL DAN PEMBAHASAN

4.1. Pengujian Rangkaian Power Supply

Pengujian rangkaian power supply ini bertujuan untuk mengetahui tegangan yang dikeluarkan oleh rangkaian tersebut, dengan mengukur tegangan keluaran dari power supply menggunakan multimeter digital. Setelah dilakukan pengukuran maka diperoleh besarnya tegangan keluaran sebesar 4,96 volt. Dengan begitu dapat dipastikan apakah terjadi kesalahan terhadap rangkaian atau tidak. Jika diukur, hasil dari keluaran tegangan tidak murni sebesar +5 Volt Hasil tersebut dikarenakan beberapa faktor, diantaranya kualitas dari tiap-tiap komponen yang digunakan nilainya tidak murni.Selain itu, tegangan jala-jala listrik yang digunakan tidak stabil. Pada pengujian Power Suplay, tegangan yang kita butuhkan sebesar 5 volt, pertama masuk tegangan AC sebesar 220 volt dari PLN, kemudian disalaurkan ke travo sehingga tegangan menjadi 12 volt AC, disaring lagi ke diode sehingga menjadi 12 volt DC, kemudian di hubungkan dengan IC 7805 sehingga tegangan menjadi 5 volt DC.


(29)

4.2. Pengujian Rangkaian Mikrokontroler ATMega32

Karena pemrograman menggunakan mode ISP (In System Programming) mikrokontroler harus dapat diprogram langsung pada papan rangkaian dan rangkaian mikrokontroler harus dapat dikenali oleh program downloader. Pada pengujian ini berhasil dilakukan dengan dikenalinya jenis mikrokontroler oleh program downloader yaitu ATMega32.

Gambar 4.2. Informasi Signature Mikrokontroler

ATMega32 menggunakan kristal dengan frekuensi 11,0592 MHz, apabila Chip Signature sudah dikenali dengan baik dan dalam waktu singkat, bisa dikatakan rangkaian mikrokontroler bekerja dengan baik dengan mode ISP-nya.

4.3. Pengujian rangkain LCD

Bagian ini hanya terdiri dari sebuah LCD dot matriks 2 x 16 karakter yang berfungsi sebagai tampilan hasil pengukuran dan tampilan dari beberapa


(30)

keterangan. LCD dihubungkan langsung ke Port C dari mikrokontroler yang berfungsi mengirimkan data hasil pengolahan untuk ditampilkan dalam bentuk alfabet dan numerik pada LCD.Display karakter pada LCD diatur oleh pin EN, RS dan RW: Jalur EN dinamakan Enable. Jalur ini digunakan untuk memberitahu LCD bahwa anda sedang mengirimkan sebuah data. Untuk mengirimkan data ke LCD, maka melalui program EN harus dibuat logika low “0” dan set ( high ) pada dua jalur kontrol yang lain RS dan RW. Jalur RW adalah jalur kontrol Read/ Write. Ketika RW berlogika low (0), maka informasi pada bus data akan dituliskan pada layar LCD. Ketika RW berlogika high ”1”, maka program akan melakukan pembacaan memori dari LCD. Sedangkan pada aplikasi umum pin RW selalu diberi logika low ( 0 )

Berdasarkan keterangan di atas maka kita sudah dapat membuat progam untuk menampilkan karaker pada display LCD. Adapun program yang diisikan ke mikrokontroller untuk menampilkan karakter pada display LCD adalah sebagai berikut:

#include <mega32.h> #include <stdio.h> #include <delay.h> #include <alcd.h> void main(void) {

PORTA=0xff; DDRA=0x0F; PORTB = 0X03; DDRB = 0X8F; PORTD.7 = 1; DDRD.7 = 0; lcd_init(16);

lcd_gotoxy(0,0); lcd_putsf("LAMPU"); }


(31)

Program di atas akan menampilkan kata “LAMPU” di baris pertama pada display LCD 2x16. .

Gambar 4.3 Pengujian LCD

4.4 Pengujian Keypad Matriks 4 X 4

Untuk pengujian keypad ada beberapa tahap. Tentukan terlebih dahulu kolom sebagai output dari mikrokontroler sedangkan baris sebagai input kemikrokontroler.

Langkah pertama (Scanning kolom 1 PB0) keluarkan output ke kolom 1(PB0)

kemudian deteksi penekanan baris1 (PB4) kemudian deteksi penekanan baris2 (PB5) kemudian deteksi penekanan baris3 (PB6) kemudian deteksi penekanan baris4 (PB7) Langkah kedua (Scanning kolom 2 PB1) keluarkan output ke kolom 2 (PB1) kemudian deteksi penekanan baris1 (PB4) kemudian deteksi penekanan baris2 (PB5) kemudian deteksi penekanan baris3 (PB6) kemudian deteksi penekanan baris4 (PB7) Langkah ketiga (Scanning kolom 3 PB2) keluarkan output ke kolom 3 (PB2) kemudian deteksi penekanan baris1 (PB4) kemudian deteksi penekanan baris2 (PB5) kemudian deteksi penekanan baris3 (PB6)


(32)

kemudian deteksi penekanan baris4 (PB7) Langkah kempat (Scanning kolom 4 PB3) keluarkan output ke kolom 4 (PB3) kemudian deteksi penekanan baris1 (PB4) kemudian deteksi penekanan baris2 (PB5) kemudian deteksi penekanan baris3 (PB6) kemudian deteksi penekanan baris4 (PB7)

Untuk pengujian matriks 4 x 4 dapat digunakan program sebagai berikut: #include <stdio.h>

void tekan_keypad_tampil_lcd() //penekanan keypad kemudian ditampilkan di LCD

{PORTB = 0b11111110; if (PINB.4 == 0){data=16;} else if (PINB.5 == 0){data=15;} else if (PINB.6 == 0){data=14;} else if (PINB.7 == 0){data=13;} PORTB = 0b11111101;

if (PINB.4 == 0) {data=12;} else if (PINB.5 == 0) {data=9;} else if (PINB.6 == 0) {data=6;} else if (PINB.7 == 0) {data=3;}

PORTB = 0b11111011; if (PINB.4 == 0) {data=11;}

else if (PINB.5 == 0) {data=8;} else if (PINB.6 == 0) {data=5;} else if (PINB.7 == 0) {data=2;} PORTB = 0b11110111;


(33)

else if (PINB.5 == 0) {data=7;} else if (PINB.6 == 0) {data=4;} else if (PINB.7 == 0) {data=1;} }void main(void)

{

DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);

PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);

PORTB=0xff; DDRB=0x0f;

DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);

PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);

DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);

PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);

UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);

UCSRB=(0<<RXCIE) | (1<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);

UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);

UBRRH=0x00; UBRRL=0x8F; while (1) {

tekan_keypad_tampil_lcd(); putchar(data);


(34)

} }

Gambar 4.4 Pengujian Keypad Matriks

4.5 Pengujian Radio Frekuensi 315 MHZ

Pengujian radio frekuensi 315 Mhz ini bertujuan untuk mengetahui keadaan alat tersebut. Alat tersebut digunakan untuk mengirim data secara nirkabel atau tanpa kabel. Berikut Hasil Pengujian transmitter dan Receiver dalam Bentuk tabel.


(35)

Tabel 4.5. Pengujian Transmiter dan Receiver

Jarak antara Transmiter

dan Receiver (m) Lampu Kipas

5 m Nyala Nyala

10 m Nyala Nyala

15 m Nyala Nyala

20 m Nyala Nyala

25 m Mati Mati

30 m Mati Mati

Pengujian alat ini yaitu dengan cara memberikan program dibawah ini untuk transmitter.

#include <mega32.h> #include <stdlib.h> #include <delay.h> char data=0;

#define DATA_REGISTER_EMPTY (1<<UDRE) #define RX_COMPLETE (1<<RXC)

#define FRAMING_ERROR (1<<FE) #define PARITY_ERROR (1<<UPE) #define DATA_OVERRUN (1<<DOR) #define TX_BUFFER_SIZE 8

char tx_buffer[TX_BUFFER_SIZE]; #if TX_BUFFER_SIZE <= 256

unsigned char tx_wr_index=0,tx_rd_index=0; #else

unsigned int tx_wr_index=0,tx_rd_index=0; #endif


(36)

unsigned char tx_counter=0; #else

unsigned int tx_counter=0; #endif

interrupt [USART_TXC] void usart_tx_isr(void) {

if (tx_counter) {

--tx_counter;

UDR=tx_buffer[tx_rd_index++]; #if TX_BUFFER_SIZE != 256

if (tx_rd_index == TX_BUFFER_SIZE) tx_rd_index=0; #endif

} }

#ifndef _DEBUG_TERMINAL_IO_ #define _ALTERNATE_PUTCHAR_ #pragma used+

void putchar(char c) {

while (tx_counter == TX_BUFFER_SIZE); #asm("cli")

if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0)) {

tx_buffer[tx_wr_index++]=c; #if TX_BUFFER_SIZE != 256

if (tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0; #endif

++tx_counter; }

else UDR=c;


(37)

#asm("sei") }

#pragma used- #endif

Program diatas mengirimkan carekter hello ketansmiter. Data tersebut dikirim dengan jenis data char. Kemudian untuk receiver yaitu dengan memasukan program sebagai berikut.

#include <mega32.h> #include <stdlib.h> int data, data1; #include <alcd.h> #include <delay.h> #define lampu OCR1B #define kipas OCR1A unsigned int input =0; char buff[20];

#define DATA_REGISTER_EMPTY (1<<UDRE) #define RX_COMPLETE (1<<RXC)

#define FRAMING_ERROR (1<<FE) #define PARITY_ERROR (1<<UPE) #define DATA_OVERRUN (1<<DOR) #define RX_BUFFER_SIZE 8

char rx_buffer[RX_BUFFER_SIZE]; #if RX_BUFFER_SIZE <= 256

unsigned char rx_wr_index=0,rx_rd_index=0; #else

unsigned int rx_wr_index=0,rx_rd_index=0; #endif

#if RX_BUFFER_SIZE < 256 unsigned char rx_counter=0; #else


(38)

unsigned int rx_counter=0; #endif

bit rx_buffer_overflow;

interrupt [USART_RXC] void usart_rx_isr(void) {

char status,data; status=UCSRA; data=UDR;

if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)

{

rx_buffer[rx_wr_index++]=data; #if RX_BUFFER_SIZE == 256

// special case for receiver buffer size=256 if (++rx_counter == 0) rx_buffer_overflow=1; #else

if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0; if (++rx_counter == RX_BUFFER_SIZE)

{

rx_counter=0;

rx_buffer_overflow=1; }

#endif } }

#ifndef _DEBUG_TERMINAL_IO_ #define _ALTERNATE_GETCHAR_ #pragma used+

char getchar(void) {

char data;


(39)

data=rx_buffer[rx_rd_index++]; #if RX_BUFFER_SIZE != 256

if (rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0; #endif

#asm("cli") --rx_counter; #asm("sei") return data; }

#pragma used- #endif

Dari program diatas data yang diterima dari transmiter berupa char. Dan pada program ini di konversi kedalam bilangan hexa.

4.6 Pengujian Alat Keseluruhan

Gambar 4.6 Pengujian Alat

Pada pengujian ini, merupakan pengujian alat secara keselurahan. Pada pengujian ini kita dapat mengetahui system kerja alat secara keseluruhan. Pada system ini,


(40)

menggunakan gelombang radio untuk mengontrol lampu dan kipas secara jarak jauh, pada bagian transmiter (remote) terdiri dari keypad, mikrokontroler dan gelombang frekuensi 315Mhz. dari keypad data akan dikirim ke transmiter secara wireless (tanpa kabel). Kemudian pada receiver data diterima dan diolah kemudian dibandingkan dengan data yang telah ditentukan pada program sebagai pengontrolan. Pada alat ini, jika pada transmiter ditekan 1, maka Kipas akan hidup dengan kecepatan 25% , ditekan 2 kipas dengan kecepatan 50%, ditekan 3 kipas dengan kecepatan 75% dan jika ditekan 4 kipas akan bergerak dengan kecepatan 100%. Begitu juga dengan lampu, jika ditekan 5 lampu akan hidup 25%, ditekan 6 akan hidup 50%,ditekan 7 akan hidup 75% dan jika ditekan 8 lampu akan hidup 100%. Jika ditekan. Untuk mematikan lampu dan kipas ditekan 0. Untuk mematikan lampu ditekan C, mematikan kipas ditekan B. Berikut tabel hasil pengujian alat:

Tabel 4.6 Pengujian Alat Keseluruhan Data yang di

kirim ( keypad)

Vbasis Vcolector Status Kipas Status Lampu

1 0,13 V 7,7 Kecepatan 25% Mati

2 0,23 V 2,48 Kecepatan 50% Mati

3 0,47 V 1,05 Kecepatan 75% Mati

4 0,59 V 0,36 Kecepatan

100% Mati

5 0,125 V 7,01 Terang 25% Terang 25%

6 0,26 V 6,4 Terang 25% Terang 50%

7 0,43 V 5,7 Terang 25% Terang 75%

8 0,50 V 4,9 Terang 25% Terang 100%

0 0,001 V 8,8 Mati Mati

B - - Mati -


(41)

BAB 5

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Dari hasil perancangan alat hingga pengujian dan pembahasan sistem maka penulis dapat menarik kesimpulan, antara lain :

1. Telah berhasil dirancang sebuah alat yang dapat mengendalikan atau mengontrol lampu dan kipas angin sesuai dengan input yang diinginkan melalui tombol keypad yang tersedia dengan jarak jauh.

2. Berdasarkan pengujian yang telah dilakukan pada alat ini komunikasi jarak jauh dapat dilakukan dengan menggunakan radio frekuensi, dimana radio frekuensi transmiter sebagai pengirim dan radio frekuensi receiver sebagai penerima.

3. Setelah pengujian alat kita dapat mengatur kecepatan kipas dan terang lampu sesuai yg diingkan, dimana jika kita input 1 dari keypad maka kecepatan kipas 25%, input 2 kecepatan kipas 50%, input 3 kecepatan kipas 75%, input 4 kecepatan kipas maksimal 100%, input 5 terang lampu 25 %, input 6 terang lampu 50%, input 7 terang lampu 75%, input 8 terang lampu maksimal 100%, dan untuk mematikan nya kita input 0.

5.2 Saran

Setelah melakukan penelitian, diperoleh beberapa hal yang dapat dijadikan saran untuk dilakukan penelitian lebih lanjut yaitu :

1.Untuk pengembangan lebih lanjut, perlunya dilakukan penambahan lampu dan kipas sehingga lebih banyak yang dikontrol.

2.Untuk pengembangan lebih lanjut, perlu dibuat alat yang lebih besar sehinngga dapat lebih berguna untuk kehidupan sehari-hari.

3.Untuk pengembangan lebih lanjut perlu dibuat feedback antara Receiver ke transmitter agar alat lebih sempurna.


(42)

BAB 2

TINJAUAN PUSTAKA

2.1 Mikrokontroler

Mikrokontroler adalah sebuah chip yang berfungsi sebagai pengontrol rangkaian elektronik dan umumnya dapat menyimpan program didalamnya. Mikrokontroler umumnya terdiri dari CPU (Central Unit Processing Unit), memori, I/O tertentu dan unit pendukung seperti Analog-to-Digital Converter (ADC) yang sudah terintegrasi di dalamnya.kelebihan utama dari mikrokontroler adalah tersedianya RAM dan peralatan I/O pendukung sehingga ukuran board mikrokontroler menjadi sangat ringkas. Mikrokontroler juga merupakan chip cerdas yang menjadi tren dalam pengendalian dan otomatisas serta memiliki port sebagai input dan output. Dengan banyak jenis keluarga,kapasitas memori, dan berbagai figure, mikrokontroler menjadi pilihan dalam aplikasi prosesor mini untuk pengendalian skala kecil. Setelah mengalami perkembangan, teknologi mikroprosesor dan mikrokontroler mengalami peningkatan yang terjadi pada tahun 1996 s/d 1998.

ATMEL mengeluarkan teknologi mikrokontroler terbaru berjenis AVR (Alf and Vegard’s Risc processor) yang menggunakan teknologi RISC (Reduce Instruction Set Computer) dengan keunggulan lebih banyak yang dibandingkan pendahulunya, yaitu mikrokontroler jenis MCS. Mikrokontroler jenis MCS memiliki kecepatan kerja 1/12 kali frekuensi osilator yang digunakan sedangkan pada kecepatan frekuensi kerja AVR sama dengan kecepatan frekuensi kerja osilator yang digunakan. Jadi apabila menggunakan frekuensi osilator yang sama, maka AVR mempunyai kecepatan kerja 12 kali lebih cepat dibanding dengan MCS. Dalam perancangan alat ini mikrokontroler yang digunakan adalah ATmega32 yang merupakan produksi ATMEL yang berjenis AVR.

2.2 Mikrokontroler ATMega 32

Mikrokontroler merupakan sebuah single chip yang didalamya telah dilengkapi dengan CPU (Central Prosessing Unit); RAM ( RandomAcces Memory); ROM ( Read only Memory), Input, dan Output, Timer\ Counter, Serial com port secara


(43)

spesifik digunakan untuk aplikasi –aplikasi control dan buka aplikasi serbaguna. Mikrokontroler umumnya bekerja pada frekuensi 4MHZ-40MHZ. Perangkat ini sering digunakan untuk kebutuhan kontrol tertentu seperti pada sebuah penggerak motor. Read only Memory (ROM) yang isinya tidak berubah meskipun IC kehilangan catu daya. Sesuai dengan keperluannya, sesuai dengan susunan MCS-51. Memory penyimpanan program dinamakan sebagai memory program. Random Acces Memory (RAM) isinya akan begitu sirna IC kehilangan catudaya dipakai untuk menyimpan data pada saat program bekerja. RAM yang dipakai untuk menyimpan data ini disebut sebagai memori data.

Mikrokontroler biasanya dilengkapi dengan UART (Universal Asychoronous Receiver Transmitter) yaitu port serial komunikasi serial asinkron, USART (Universal Asychoronous\Asy choronous Receiver Transmitter) yaitu port yang digunakan untuk komunikasi serial asinkron dan asinkron yang kecepatannya 16 kali lebih cepat dari Uart, SPI ( Serial Port Interface), SCI ( Serial Communication Interface ), Bus RC ( Intergrated circuit Bus ) merupakan 2 jalur yang terdapat 8 bit, CAN ( Control Area Network ) merupakan standard pengkabelan SAE (Society of Automatic Enggineers).

Pada system computer perbandingan RAM dan ROM-nya besar, artinya program-program pengguna disimpan dalam ruang RAM yang relatif besar,sedangkan rutin-rutin antar muka pernagkat keras disimpan dalm ruang ROM yang kecil. Sedangkan pada mikrokontroler, perbandingan ROM dan RAM-nya yang besar artiRAM-nya program control disimpan dalam ROM yang ukuranRAM-nya relative lebih besar, sedangkan RAM digunakan sebagai tempat penyimpanan sedrhana sementara, termasuk register-register yang digunakan pada Microctroller yang bersangkutan.

2.2.1 Arsitektur ATMega 32

Fitur-fitur yang dimiliki ATmega32 sebagai berikut: 1. Frekuensi clock maksimum 16 MHz.

2. Jalur I/O 32 buah, yang terbagi dalam PortA, PortB, PortC dan PortD. 3. Analog to Digital Converter 10 bit sebanyak 8 input, 4 chanel PWM. 4. Timer/Counter sebanyak 3 buah.


(44)

5. CPU 8 bit yang terdiri dari 32 register. 6. Watchdog Timer dengan osilator internal. 7. SRAM sebesar 2K Byte.

8. Memori Flash sebesar 32K Byte dengan kemampuan read while write. 9. Interrupt internal maupun eksternal.

10.Port komunikasi SPI.

11.EEPROM sebesar 512 byte yang dapat diprogram saat operasi. 12.Analog Comparator.

13. Komunikasi serial standar USART dengan kecepatan maksimal 2,5 Mbps


(45)

2.2.2 Konfigurasi ATMega 32

Mikrokontroler merupakan suatu device yang di dalamnya sudah terintegrasi dengan I/O port,RAM,ROM,sehingga dapat digunakan untuk berbagai keperluan kontroler .Mikrokontroler AVR ATmega32 merupakan low power CMOS mikrokontroler 8 bit yang di kembangkan oleh atmel dengan arsitektur RISC(Reduced Instruction SET Computer) sehingga dapat mencapai troughput eksekusi instruksi 1 MIPS(Million Instruction Per Second).Mikrokontroler AVR dapat dikelompokkan menjadi 4 kelas yaitu kelas ATtiny,kelas AT90xx,keluarga ATmega,dan kelas AT86RFxx.pada dasarnya yang membedakan masing-masing kelas adalah memori,peripheral,spedd.operasi tegangan dan fungsinya sedangkan dari segi arsitektur dan instruksi yang di gunakan bisa di katakan hampir sama. Penjelasan konfigurasi pin pada mikrokontroler AVR ATmega32 secara umum: a. Pin 1 sampai 8 (port B) merupakan port paralel 8 bit dua arah (bidirectional),

yang dapat di gunakan untuk general purpose dan special feature. b. Pin 9 (riset) jika terdapat minimum pulse pada saat active low. c. Pin 10 (VCC) di hubungkan ke Vcc (2,7-5,5 Volt).

d. Pin 11 dan 31 (GND di hubungkan ke Vssatau ground.

e. Pin 12 (XTAL 2) adalah pin masukan ke rangkaian osilator internal. Sebuah osilator kristal atau sumber osilator luar dapat di gunakan.

f. Pin 13 (XTAL 1) adalah pin keluaran ke rangkaian osilator internal.pin ini di pakai bila menggunakan osilator kristal.

g. Pin 14 sampai 21 (port D) adalah 8 bit dua arah (bi-directional I/O) port dengan internal pull-up resistors di gunaka untuk general purpose dan special feature.

h. Pin 22 sampai 29 (port C) adalah 8 bit dua arah (bi-directional I/O) port dengan internal pull-up resistors di gunaka untuk general purpose dan special feature.

i. Pin 30 adalah Avcc pin penyuplai daya untuk port A dan A/D converter dan di hubungkan ke Vcc.jika ADC di gunakan maka pin ini di hubungkan ke Vcc. j. Pin 32 adalah A REF pin yang berfungsi sebagai referensi untuk pin analog

jika A/D converter di gunakan.


(46)

dengan internal pull-up resistors di gunaka untuk general purpose.

Gambar 2.2 Pin-pin ATMega32

Secara fungsional konfigurasi pin ATMega32 adalah sebagai berikut: 1. VCC

Sumber Tegngan 2. GND

(Ground) Ground

3. Port A (PA7 – PA0)

Port A adalah 8-bit port I/O yang bersifat bi-directional dan setiap pin memilki internal pull-up resistor. Output buffer port A dapat mengalirkan arus sebesar 20 mA. Ketika port A digunakan sebagai input dan di pull-up secara langsung, maka port A akan mengeluarkan arus jika internal pull-up resistor diaktifkan. Pin-pin dari port A memiliki fungsi khusus yaitu dapat berfungsi sebagai channel ADC (Analog to Digital Converter) sebesar 10 bit. Fungsi-fungsi khusus pin-pin port A dapat ditabelkan seperti yang tertera pada table.

Tabel 2.1 Fungsi khusus port A Port Alternate Function


(47)

PA6 ADC6 (ADC input channel 6)

PA5 ADC5 (ADC input channel 5)

PA4 ADC4 (ADC input channel 4)

PA3 ADC3 (ADC input channel 3)

PA2 ADC2 (ADC input channel 2)

PA1 ADC1 (ADC input channel 1)

PA0 ADC0 (ADC input channel 0)

4. Port B (PB7 – PB0)

Port B adalah 8-bit port I/O yang bersifat bi-directional dan setiap pin mengandung internal pull-up resistor. Output buffer port B dapat mengalirkan arus sebesar 20 mA. Ketika port B digunakan sebagai input dan di pull-down secara external, port B akan mengalirkan arus jika internal pull-up resistor diaktifkan.

Pin-pin port B memiliki fungsi-fungsi khusus, diantaranya : a.SCK port B, bit 7

Input pin clock untuk up/downloading memory. b.MISO port B, bit 6

Pin output data untuk uploading memory. c.MOSI port B, bit 5

Pin input data untuk downloading memory.


(48)

Tabel 2.2 Fungsi khusus port B Port Alternate Function

PB7 SCK (SPI Bus Serial Clock)

PB6 MISO (SPI Bus Master Input/Slave Output)

PB6 MOSI (SPI Bus Master Output/Slave Input)

PB5 SS (SPI Slave Select Input)

PB3

AIN1 (Analog Comparator Negative Input)

OCO (Timer/Counter0 Output Compare Match Output)

PB2

AIN0 (Analog Comparator Positive Input)

INT2 (External Interrupt 2 Input)

PB1 T1 (Timer/Counter1 External Counter Input)

PB0

T0 (Timer/Counter External Counter Input) XCK

(USART External Clock Input/Output)

5. Port C (PC7 – PC0)

Port C adalah 8-bit port I/O yang berfungsi bi-directional dan setiap pin memiliki internal pull-up resistor. Output buffer port C dapat mengalirkan arus sebesar 20 mA. Ketika port C digunakan sebagai input dan di pull-down secara langsung, maka port C akan mengeluarkan arus. Fungsi-fungsi khusus pin-pin port C dapat ditabelkan seperti yang tertera pada tabel dibawah ini.


(49)

Tabel 2.3 Fungsi khusus port C Port Alternate Function

PC7 TOSC2 (Timer Oscillator Pin 2)

PC6 TOSC1 (Timer Oscillator Pin 1)

PC6 TD1 (JTAG Test Data In)

PC5 TD0 (JTAG Test Data Out)

PC3 TMS (JTAG Test Mode Select)

PC2 TCK (JTAG Test Clock)

PC1 SDA (Two-wire Serial Bus Data Input/Output Line)

PC0 SCL (Two-wire Serial Bus Clock Line)

6. Port D (PD7 – PD0)

Port D adalah 8-bit port I/O yang berfungsi bi-directional dan setiap pin memiliki internal pull-up resistor. Output buffer port D dapat mengalirkan arus sebesar 20 mA. Ketika port D digunakan sebagai input dan di pull-down secara langsung, maka port D akan mengeluarkan arus jika internal pull-up resistor diaktifkan. Fungsi-fungsi khusus pin-pin port D dapat ditabelkan seperti yang tertera pada tabel dibawah ini.

Tabel 2.4 Fungsi khusus port D Port Alternate Function


(50)

PD7 ICP1 (Timer/Counter1 Input Capture Pin)

PD4 OCIB (Timer/Counter1 Output Compare B Match Output)

PD6 TD0 (JTAG Test Data Out)

PD3 INT1 (External Interrupt 1 Input)

PD2 INT0 (External Interrupt 0 Input)

PD1 TXD (USART Output Pin)

PD0 RXD (USART Input Pin)

2.2.3 Arsitektur CPU ATMega32

Fungsi utama CPU adalah memastikan pengeksekusian instruksi dilakukan dengan benar. Oleh karena itu CPU harus dapat mengakses memori, melakukan kalkulasi, mengontrol peripheral, dan menangani interupsi. Ada 32 buah General Purpose Register yang membantu ALU bekerja. Untuk operasi aritmatika dan logika, operand berasal dari dua buah general register dan hasil operasi ditulis kembali ke register. Status and Control berfungsi untuk menyimpan instruksi aritmatika yang baru saja dieksekusi. Informasi ini

berguna untuk mengubah alur program saat mengeksekusi operasi kondisional. Instruksi di jemput dari flash memory. Setiap byte flash memory memiliki alamat masing-masing. Alamat instruksi yang akan dieksekusi senantiasa disimpan Program Counter. Ketika terjadi interupsi atau pemanggilan rutin biasa, alamat di Program Counter disimpan terlebih dahulu di stack. Alamat interupsi atau rutin kemudian ditulis ke Program Counter, instruksi kemudian dijemput dan dieksekusi. Ketika CPU telah selesai mengeksekusi rutin interupsi atau rutin biasa, alamat yang ada di stack dibaca dan ditulis kembali ke Program Counter.


(51)

2.2.4 Program Memori

ATMega 32 memiliki 32 KiloByte flash memori untuk menyimpan program.Karena lebar intruksi 16 bit atau 32 bit maka flash memori dibuat berukuran 16K x 16. Artinya ada 16K alamat di flash memori yang bisa dipakai dimulai dari alamat 0 heksa sampai alamat 3FFF heksa dan setiap alamatnya menyimpan 16 bit instruksi.

2.2.5 SRAM Data Memori

ATMega 32 memiliki 2 KiloByte SRAM. Memori ini dipakai untuk menyimpan variabel. Tempat khusus di SRAM yang senantiasa ditunjuk register SP disebut stack. Stack berfungsi untuk menyimpan nilai yang dipush.

2.2.6 EEPROM Data Memori

ATMega 32 memiliki 1024 byte data EEPROM. Data di EEPROM tidak akan hilang walaupun catuan daya ke sistem mati. Parameter sistem yang penting disimpan di EEPROM. Saat sistem pertama kali menyala paramater tersebut dibaca dan system diinisialisasi sesuai dengan nilai parameter tersebut.

2.2.7 Interupsi

Sumber interupsi ATMega 32 ada 21 buah. Tabel 2 hanya menunjukkan 10 buah interupsi pertama. Saat interupsi diaktifkan dan interupsi terjadi maka CPU menunda instruksi sekarang dan melompat ke alamat rutin interupsi yang terjadi. Setelah selesai mengeksekusi intruksi-instruksi yang ada di alamat rutin interupsi CPU kembali melanjutkan instruksi yang sempat tertunda.

2.2.8 Status register (SREG)

Status register adalah Status Register berisi informasi tentang hasil yang paling baru-baru ini dieksekusi aritmatika instruksi. Informasi ini dapat digunakan untuk mengubah aliran program untuk melakukan operasi bersyarat. Perhatikan bahwa Register Status diperbarui setelah semua operasi ALU, sebagai ditentukan dalam Instruction Set Reference. Ini akan dalam banyak kasus menghilangkan kebutuhan


(52)

untuk menggunakan didedikasikan membandingkan instruksi, sehingga lebih cepat dan lebih kompak kode. Status Register tidak secara otomatis disimpan ketika memasuki rutin interupsi dan dipulihkan ketika kembali dari interupsi. Ini harus ditangani oleh perangkat lunak.

Gambar 2.3 Status Register ATMega 32 • Bit 7 - I: Dunia Interrupt Enable

Global Interrupt Enable bit harus ditetapkan untuk menyela harus diaktifkan . Individu interrupt memungkinkan kontrol selanjutnya dilakukan dalam register kontrol terpisah . Jika Global Interrupt Enable Daftar dibersihkan , tidak ada interupsi diaktifkan independen dari interrupt individu mengaktifkan pengaturan . The I- bit dihapus oleh hardware setelah interupsi telah terjadi , dan diatur oleh instruksi RETI untuk mengaktifkan interupsi berikutnya . The I- bit juga dapat diatur dan dibersihkan oleh aplikasi dengan SEI dan CLI instruksi, seperti yang dijelaskan dalam referensi set instruksi .

• Bit 6 - T : Bit Copy Storage

The Bit Copy instruksi BLD ( Bit Load) dan BST ( Bit Store) menggunakan T - bit sebagai sumber atau tujuan untuk bit yang dioperasikan . Sedikit dari register dalam Daftar file dapat disalin ke T oleh Instruksi BST , dan sedikit di T dapat disalin ke dalam sedikit dalam register dalam Daftar file oleh Instruksi BLD .

• Bit 5 - H : Half Carry Flag

The Half Carry Flag H menunjukkan setengah carry dalam beberapa operasi aritmatika . Half Carry berguna dalam BCD aritmatika.

• Bit 4 - S : Sign Bit , S = N ⊕ V


(53)

Overflow Flag V.

• Bit 3 - V : Two Complement Overflow Flag

The Two Complement Overflow Flag V mendukung dua itu aritmatika komplemen.

• Bit 2 - N : Negative Flag

Negatif Flag N menunjukkan hasil negatif dalam aritmatika atau operasi logika • Bit 1 - Z : Nol Flag Zero Flag Z

mengindikasikan hasil nol dalam aritmatika atau operasi logika . • Bit 0 - C : Carry Flag The Carry Flag C

mengindikasikan carry dalam aritmatika atau operasi logika.

2.3 Frekuensi Radio

Frekuensi Radio adalah sinyal arus berfrekuensi tinggi yang berubah-ubah yang melewati konduktor tembaga yang panjang dan kemudian diradiasikan ke udara melalui sebuah antenna. Sebuah antenna mentranformasikan sinyal kabel ke sinyal wireless dan sebaliknya. Ketika sinyal AC berfrekuensi tinggi diradiasikan ke udara,akan membentuk gelombang radio. Gelombang radio tersebut berpindah dari sumber (antenna) pada sebuah garis lurus semuanya bersamaan. Mengerti tingkah laku dari panyebaran gelombang RF adalah bagian penting untuk mengerti mengapa dan bagaimana wireless LAN berfungsi.

Tanpa dasar pengetahuan tersebut,seorang administrator tidak mampu menentukan lokasi instalasi dari perlengkapan dan tidak akan mengerti bagaimana memecahkanmasalah wireless LAN.Penyerapan terjadi ketika sinyal RF merambat objek dan terserap dalam material objek dengan cara tidak menembusnya, memantul, atau mengitari objek. Frekuensi Radio merupakan suatu gelombang elektromagnetik yang memiliki spektrum radiasi elektromagnetik pada rangefrekuensi antara 9 kHz-300 GHz. Gelombang elektromagnetik dihasilkan dari arus AC yang diberikan pada suatu konduktor atau antena. Antena tersebut akan meradiasikan suatu medan elektromagnetik melalui udara. Panjang gelombang dari frekuensi radio berbanding terbalik dengan frekuensinya berdasarkan rumus berikut :


(54)

dengan λ = panjang gelombang (m) c = kecepatan cahaya (3x108 m/s) f = frekuensi (Hz)

Frekuensi Radio ini digunakan sebagai media pengiriman data dari transmitter ke receiver.

2.3.1 Transmitter

Transmitter adalah rangkaian pengirim data yang mengirimkan data ke receiver Transmitter ini terdiri dari modul RF transmitter dan Antena.

RF Transmiter INPUT

Antena

Gambar 2.4 Diagram Blok RangkaianTransmitter

Transmitter ini digunakan sebagai pengirim data antar device . Pada proyek akhir ini modul RF transmitter yang digunakan yaitu tipe TLP 315 sudah tersedia dan dapat dibeli dengan mudah dipasaran. Modul RF transmitter.

Modul RF Transmitter TLP 315 adalah modul pengirim data dengan media pengiriman data melalui gelombang radio yang frekuensi kerjanya telah ditetapkan yaitu 315 MHz.


(55)

Gambar 2.5 Bentuk Fisik dan Konfigurasi Kaki Transmitter

Keterangan : 1. GND 2. Data Out 3. VCC 4. Antena 2.3.2 Receiver

Receiver adalah rangkaian penerima data yang menerima data dari Transmitter. Receiverini terdiri dari modul RF receiver, decoder, dan Antena.

Berikut ini adalah Diagram Blok dari receiver.

OUTPUT RF

Receiver Antena

Gambar 2.6 Diagram Blok Rangkaian Receiver

Receiver ini digunakan sebagai penerima data yang dikirim dari transmitter sebagai sebuah input bagi mikrokontroler Atmega 32.

Modul RF Receiver

Pada proyek Akhir ini modul RF receiver yang digunakan yaitu tipe RLP 315 sudah tersedia dan dapat dibeli dengan mudah dipasaran. Modul RF receiver RLP


(56)

315 adalah modul penerima data yang menerima data dari modul RF transmitter TLP 315 dengan frekuensi 315 MHz. Data yang diterima adalah data serial, kemudian data ini diubah oleh decoder.

Gambar 2.7 Bentuk Fisik dan Konfigurasi Kaki Receiver Keterangan :

1. GND

2. Data Out Digital 3. Linear Output 4. VCC

5. VCC 6. GND 7. GND 8. Antena

2.4 Liquid Crystal Display (LCD)

Fungsi display dalam suatu aplikasi mikrokontroler sangat penting sekali diantaranya yaitu :

 Mematikan data yang kita input valid  Mengetahui hasil suatu proses

 Memonitoring suatu proses  Mendebug program

 Menampilkan pesan

LCD berfungsi menampilkan suatu nilai hasil sensor, menampilkan teks, atau menampilkan menu pada aplikasi mikrokontroler. LCD yang digunakan


(57)

adalah jenis LCD M1632. LCDM1632 merupakan modul LCD dengan tampilan 16 x 2 baris dengan konsumsi daya rendah. M1632 adalah merupakan modul LCD dengan tampilan 16 x 2 baris dengan konsumsi daya yang rendah. Kegunaan LCD banyak sekali dalam perancangan suatu sistem dengan menggunakan mikrokontroler. LCD dapat berfungsi untuk menampilkan suatu nilai hasil sensor, menampilkan teks, atau menampilkan menu pada aplikasi mikrokontroler. Gambar 2.12 berikut ini adalah Pin LCD M1632:

Tabel 2.5 Fungsi pin pada Liquid Crystal Display

Sebagaimana terlihat pada kolom deskripsi (symbol and functions), interface LCD merupakan sebuah parallel bus, dimana hal ini sangat memudahkan dan sangat cepat dalam pembacaan dan penulisan data dari atau ke LCD. Kode ASCII yang ditampilkan sepanjang 8 bit dikirim ke LCD secara 4 atau 8 bit pada satu waktu. Jika mode 4 bit yang digunakan, maka 2 nibble data dikirim untuk membuat sepenuhnya 8 bit (pertama dikirim 4 bit MSB lalu 4 bit LSB dengan pulsa clock


(58)

EN setiap nibblenya). Gambar 2.12 berikut adalah contoh LCD (2×16) yang umum digunakan :

Gambar 2.8 LCD M1632

Jalur kontrol EN digunakan untuk memberitahu LCD bahwa mikrokontroller mengirimkan data ke LCD. Untuk mengirim data ke LCD program harus menset EN ke kondisi high (1) dan kemudian menset dua jalur kontrol lainnya (RS dan R/W) atau juga mengirimkan data ke jalur data bus. Saat jalur lainnya sudah siap, EN harus diset ke 0 dan tunggu beberapa saat (tergantung pada datasheet LCD), dan set EN kembali ke high (1). Ketika jalur RS berada dalam kondisi low (0), data yang dikirimkan ke LCD dianggap sebagai sebuah perintah atau instruksi khusus (seperti bersihkan layar, posisi kursor dll). Ketika RS dalam kondisi high atau 1, data yang dikirimkan adalah data ASCII yang akan ditampilkan dilayar.

Misal, untuk menampilkan huruf pada layar maka RS harus diset ke 1. Jalur kontrol R/W harus berada dalam kondisi low (0) saat informasi pada data bus akan dituliskan ke LCD. Apabila R/W berada dalam kondisi high (1), maka program akan melakukan query (pembacaan) data dari LCD. Instruksi pembacaan hanya satu, yaitu Get LCD status (membaca status LCD), lainnya merupakan instruksi penulisan. Jadi hampir setiap aplikasi yang menggunakan LCD, R/W selalu diset ke 0. Jalur data dapat terdiri 4 atau 8 jalur (tergantung mode yang dipilih pengguna), mereka dinamakan DB0, DB1, DB2, DB3, DB4, DB5, DB6 dan DB7. Mengirim data secara parallel baik 4 atau 8 bit merupakan 2 mode operasi primer.

Untuk membuat sebuah aplikasi interface LCD, menentukan mode operasi merupakan hal yang paling penting. Mode 8 bit sangat baik digunakan ketika kecepatan menjadi keutamaan dalam sebuah aplikasi dan setidaknya minimal tersedia 11 pin I/O (3 pin untuk kontrol, 8 pin untuk data). Sedangkan mode 4 bit


(59)

minimal hanya membutuhkan 7 bit (3 pin untuk kontrol, 4 untuk data). Aplikasi dengan LCD dapat dibuat dengan mudah dan waktu yang singkat, mengingat koneksi parallel yang cukup mudah antara kontroller dan LCD.

2.5 Keypad Matriks

Keypad matrix 4x4 adalah keypad yang digunakan penulis pada alat ini yang berfungsi sebagai interface antara perangkat (mesin) elektronik dengan manusia atau dikenal dengan istilah HMI (Human Machine Interface). Matrix keypad 4×4 memiliki konstruksi atau susunan yang simple dan hemat dalam penggunaan port mikrokontroler. Konfigurasi keypad dengan susunan bentuk matrix ini bertujuan untuk penghematan port mikrokontroler karena jumlah key (tombol) yang dibutuhkan banyak pada suatu sistem dengan mikrokontroler. Konstruksi matrix keypad 4×4 untuk mikrokontroler dapat dibuat seperti pada gambar berikut:

Gambar 2.9 Konstruksi Matrix Keypad 4×4

Konstruksi matrix keypad 4×4 diatas cukup sederhana, yaitu terdiri dari 4 baris dan 4 kolom dengan keypad berupas saklar push buton yang diletakan disetiap persilangan kolom dan barisnya. Rangkaian matrix keypad diatas terdiri dari 16 saklar push buton dengan konfigurasi 4 baris dan 4 kolom. 8 line yang terdiri dari 4 baris dan 4 kolom tersebut dihubungkan dengan port mikrokontroler 8 bit. Sisi baris dari matrix keypad ditandai dengan nama Row1, Row2, Row3 dan Row4 kemudian sisi kolom ditandai dengan nama Col1, Col2, Col3 dan Col4.

Sisi input atau output dari matrix keypad 4×4 ini tidak mengikat, dapat dikonfigurasikan kolom sebagi input dan baris sebagai output atau sebaliknya tergantung programernya. Keypad Matriks 4×4 cukup menggunakan 8 pin untuk 16 tombol. Proses pengecekkan dari tombol yang dirangkai secara maktriks


(60)

adalah dengan teknik scanning, yaitu proses pengecekkan yang dilakukan dengan cara memberikan umpan-data pada satu bagian dan mengecek feedback (umpan-baliknya) pada bagian yang lain. Dalam hal ini, pemberian umpan-data dilakukan pada bagian baris dan pengecekkan umpan-balik pada bagian kolom. Pada saat pemberian umpan-data pada satu baris, maka baris yang lain harus dalam kondisi inversi-nya.

2.5.1 Proses Scanning Matrix 4×4 Untuk Mikrokontroler

Proses scaning untuk membaca penekanan tombol pada matrix keypad 4×4 untuk mikrokontroler diatas dilakukan secara bertahap kolom demi kolom dari kolom pertama sampai kolom ke 4 dan baris pertama hingga baris ke 4. Program untuk scaning matrix keypad 4×4 dapat bermacam-macam, tapi pada intinya sama. Misal kita asumsikan keyapad aktif LOW (semua line kolom dan baris dipasang resistor pull-up) dan dihubungkan ke port mikrokontrolr dengan jalur kolom adalah jalur input dan jalur baris adalah jalur output maka proses scaning matrix keypad 4×4 diatas dapat dituliskan sebagai berikut:

 Mengirimkan logika Low untuk kolom 1 (Col1) dan logika HIGH untuk kolom yang lain kemudian membaca data baris, misal tombol SW1 ditekan maka data baris pertama (Row1) akan LOW sehingga data baris yang dibaca adalah 0111, atau tombol yang ditekan tombol SW5 maka data pada baris ke 2 akan LOW sehingga data yang terbaca 1011, atau tombol SW9 yang ditekan sehingga data yang terbaca 1101, atau tombol SW13 yang ditekan maka data yang dibaca adalah 1110 dan atau tidak ada tombol pada kolom pertama yang di tekan maka data pembacaan baris akan 1111.

 Mengirimkan logika Low untuk kolom 2 (Col2) dan logika HIGH untuk kolom yang lain kemudian membaca data baris, misal tombol SW1 ditekan maka data baris pertama (Row1) akan LOW sehingga data baris yang dibaca adalah 0111, atau tombol yang ditekan tombol SW5 maka data pada baris ke 2 akan LOW sehingga data yang terbaca 1011, atau tombol SW9 yang ditekan sehingga data yang terbaca 1101, atau tombol SW13 yang ditekan maka data yang dibaca adalah 1110 dan atau tidak ada


(61)

tombol pada kolom pertama yang di tekan maka data pembacaan baris akan 1111.

 Mengirimkan logika Low untuk kolom 3 (Col3) dan logika HIGH untuk kolom yang lain kemudian membaca data baris, misal tombol SW1 ditekan maka data baris pertama (Row1) akan LOW sehingga data baris yang dibaca adalah 0111, atau tombol yang ditekan tombol SW5 maka data pada baris ke 2 akan LOW sehingga data yang terbaca 1011, atau tombol SW9 yang ditekan sehingga data yang terbaca 1101, atau tombol SW13 yang ditekan maka data yang dibaca adalah 1110 dan atau tidak ada tombol pada kolom pertama yang di tekan maka data pembacaan baris akan 1111.

 Mengirimkan logika Low untuk kolom 4 (Col4) dan logika HIGH untuk kolom yang lain kemudian membaca data baris, misal tombol SW1 ditekan maka data baris pertama (Row1) akan LOW sehingga data baris yang dibaca adalah 0111, atau tombol yang ditekan tombol SW5 maka data pada baris ke 2 akan LOW sehingga data yang terbaca 1011, atau tombol SW9 yang ditekan sehingga data yang terbaca 1101, atau tombol SW13 yang ditekan maka data yang dibaca adalah 1110 dan atau tidak ada tombol pada kolom pertama yang di tekan maka data pembacaan baris akan 1111.

2.6 PWM (Pulse Width Modulation)

Pulse Width Modulation (PWM) secara umum adalah sebuah cara memanipulasi lebar sinyal yang dinyatakan dengan pulsa dalam satu periode, untuk mendapatkan tegangan rata-rata yang berbeda. Aplikasi PWM berbasis mikrokontroller biasanya berupa pengendalian kecepatan motor DC, pengendalian motor servo, dan pengaturan nyala terang LED. Oleh karena itu diperlukan pemahaman terhadap konsep PWM itu sendiri. Cara pengaturan kecepatan yang digunakan adalah dengan menggunakan teknik PWM ( Pulse Width Modulation), salah satu teknik untuk mengatur kecepatan motor DC yang umum digunakan.


(62)

Dengan menggunakan PWM kita dapat mengatur kecepatan yang diinginkan dengan mudah. Teknik PWM untuk pengaturan kecepatan motor adalah, pengaturan kecepatan motor dengan cara merubah-rubah besarnya duty cycle pulsa. Pulsa yang yang berubah ubah duty cycle-nya inilah yang menentukan kecepatan motor. Besarnya amplitudo dan frekuensi pulsa adalah tetap, sedangkan besarnya duty cycle berubah-ubah sesuai dengan kecepatan yang diinginkan, semakin besar duty cylce maka semakin cepat pula kecepatan motor, dan sebaliknya semakin kecil duty cycle maka semakin pelan pula kecepatan motor. Sebagai contoh: Bentuk pulsa yang dikirimkan adalah seperti pada gambar 2.10, pulsa kotak dengan duty cycle pulsa 50%. Sedangkan sebagai contoh bentuk pulsa PWM adalah seperti pada gambar 2.11.

Gambar 2.10 Pulsa dengan Duty Cycle 50%

Dengan mengatur besarnya duty cycle pulsa kotak yang dikirimkan, kita dapat mengatur banyaknya logika high yang diberikan pada motor, dengan kata lain mengatur lamanya waktu motor untuk berputar dalam satu periode pulsa. Jika lamanya waktu motor untuk berputar dalam satu periode pulsa ini berubah maka kecepatan purtaran motor juga akan berubah, sesuai dengan duty cycle atau waktu motor untuk berputar dalam satu periode pulsa.

2.6.1 Konsep Dasar PWM

Sinyal PWM pada umumnya memiliki amplitude dan frekuensi dasar yang tetap, namun memiliki lebar pulsa yang bervariasi. Lebar pulsa PWM berbanding lurus dengan amplitude sinyal asli yang belum termodulasi. Artinya, sinyal PWM memiliki frekuensi gelombang yang tetap namun duty cycle bervariasi antara 0%


(63)

hingga 100%. Secara analog setiap perubahan PWM-nya sangat halus, sedangkan secara digital setiap perubahan PWM dipengaruhi oleh resolusi PWM itu sendiri. Resolusi adalah jumlah variasi perubahan nilai dalam PWM tersebut. Misalkan suatu PWM memiliki resolusi 8 bit, berarti PWM ini memiliki variasi perubahan nilai sebanyak 256 variasi mulai dari 0 – 225 perubahan nilai yang mewakili duty cycle 0% – 100% dari keluaran PWM tersebut. A pulse-width modulation sinyal dimulai dengan tegangan yang naik dan turun berulang kali. Metode klasik menciptakan osilasi adalah dengan sirkuit resistor-kapasitor (RC). Sirkuit ini menggunakan RC waktu dengan twist dioda untuk mengubah rasio on-pulsa waktu versus waktu off-pulsa (disebut "siklus").


(64)

BAB 1

PENDAHULUAN

1.1Latar Belakang

Perkembangan ilmu pengetahuan dan teknologi informasi dijaman yang modern ini sangat berkembang dengan sangat pesat. Perkembangan tersebut membuat orang banyak semakin kreatif dalam mengembangkan teknologi yang lebih canggih. Pengaruh perkembangan teknologi ini juga dapat diciptakan alat yang dapat mempermudah pekerjaan manusia, baik itu di dunia industri, pertanian, ekonomi bahkan dalam rumah tangga.

Dengan dibutuhkannya teknologi dalam kehidupan maka sangat banyak penemuan bahkan perkembangan yang dilakukan untuk lebih meningkatkan teknologi yang lebih canggih .Sistem akuisisi data, mikrokontroler, sistem jaringan dan komunikasi data merupakan merupakan beberapa jenis tekhnologi yang banyak berkembang saat ini dalam dunia.

Komunikasi data merupakan suatu tekhnologi yang dapat membawa data atau informasi dari suatu tempat ke tempat lain dengan media kabel, maupun nirkabel, tekhnolgi yang banyak berkembang saat ini merupakan komunikasi data nirkabel yang memiliki lebih banyak keuntungan penggunaan nya disbanding tekhnologi menggunakan kabel, ada beberapa jenis tekhnolgi nirkabel diantara nya menggunakan wifi, frekuensi radio, infrared, dll, terkhnolgi ini mendukung untuk pengiriman atau penerimaan data yang cukup jauh, agar konsumen yang menggunakan tekhnolgi ini dapat berkomunikasi ataupun mengendalikan suatu alat atau benda dari tempat yang cukup jauh.

Banyak penelitian telah dilakukan untuk mengembnagkan teknologi seperti pada peneliatian sebelumnya yakni mengatur kipas dengan sensor suhu[1], mengendalikan lampu dengan computer[2], mengendalikan lampu ruang dengan bahasa bascom[3],control kipas angin dengan bluetoot berbasis arduino[4]. Dengan penelitian yang sudah ada maka penulis mencoba membuat suatu rancangan alat berteknologi yang menggabungkan system jaringan data, penggunaan mikrokontroler dan komunikasi data nirkabel atau komunikasi data


(65)

jarak jauh untuk mengendalikan peralatan atau beban listrik dari suatu tempat, dimana untuk mengendalikan beban listrik tersebut penulis menggunakan remote dengan tujuan sebagai alat pengontrol beban listrik tersebut.

Dalam hal ini penulis mengembangkan teknologi jaringan komunikasi data untuk membuat suatu alat pengendali lampu dan kipas angin. Penulis juga menggunakan jaringan komunikasi data yaitu Radio Frekuensi sebagai komunikasi data yang dihubungkan dengan mikrokontroler.

1.2 Rumusan Masalah

Berdasarkan uraian latar belakang yang telah dijelaskan, secara umum dapat dirumuskan masalah sebagai berikut :

1. Bagaimana merancang dan membuat alat pengendali lampu dan kipas dengan menggunkana system jaringan komunikasi data berbasis mikrokontroler AT mega32 .

2. Bagaimana merancang program kontrol system dapat bekerja sesuai fungsinya.

1.3Batasan Masalah

Pembatasan masalah dalam penyusunan skripsi ini mencakup masalah – masalah sebagai berikut :

1. Komunikasi data Radio Frekuensi sebagai input output komunikasi data yang mengirim data pada mikrokonroler.

2. Mikrokontroler yang digunakan merupakan mikrokontroler ATMega32. 3. Dalam penelitian ini mengaplikasikan program bahasa C dalam

memprogram keypad matrix yang akan digunakan sebagai pengendali (Remote)


(66)

1.4 Tujuan Penelitian

Adapun tujuan dari penelitian ini adalah :

1. Membuat suatu alat yang berfungsi sebagai pengendali peralatan listrik lampu dan kipas dengan menggunakan mikrokontroler sehingga dapat dikendalikan dari suatu tempat.

2. Merancang rangkaian berbasis mikrokontroler ATMega32 untuk mengendalikan lampu dan kipas via jaringan.

3. Merancang program control agar system dapat bekerja sesuai dengan fungsinya.

1.5Manfaat Penelitian

Adapun manfaat yang diperoleh dari penelitian ini adalah :

1. Mempermudah kita mengendalikan lampu dan kipas dalam rumah tangga. 2. Mempermudah dan menyederhanakan pekerjaan baik dalam rumah,

kantor,pabrik dalam mengendalikan beban listrik khususnya lampu dan kipas pada tempat tersebut.

1.6Sistematika Penulisan

Untuk mempermudah pembahasan dan pemahaman maka penulis membuat sistematika dalam penulisan skripsi ini sebagai berikut :

BAB I PENDAHULUAN

Dalam bab ini berisi mengenai latar belakang, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian serta sistematika penulisan.

BAB II LANDASAN TEORI

Dalam bab ini menjelaskan tentang teori pendukung yang digunakan untuk pembahasan dan system kerja dari rangkaian. Teori pendukung seperti cara kerja dan instruksi dari mikrokontroler ATMega32, komunikasi data Radio frekuensi


(67)

315 Mhz, transmitter dan receiver ,keypad matriks dan prinsip kerja LCD.

BAB III PERANCANGAN ALAT

Bab ini membahas tentang perancangan dari alat, yaitu diagram blok dari rangkaian, skematik dan diagram alir dari penelitian tersebut.

BAB IV PENGUJIAN ALAT DAN PROGRAM

Dalam bab ini dibahas meliputi hasil pengujian alat, analisa data, serta penjelasan mengenai program yang sudah digunakan.

BAB V KESIMPULAN DAN SARAN

Bagian penutup yang berisikan kesimpulan dan saran dari pembuatan alat tersebut.


(68)

PERANCANGAN ALAT PENGENDALI LAMPU DAN KIPAS

ANGIN DENGAN JARINGAN KOMUNIKASI DATA

BERBASIS MIKROKONTROLER ATMEGA32

ABSTRAK

Telah dirancang suatu alat pengendali lampu dan kipas angin dengan menggunakan mikrokontroler ATMega32. Alat ini terdiri dari keypad, LCD, lampu dan kipas yang dikendalikan serta Radio Frekuensi yang akan digunakan sebagai komunikasi data jarak jauh. Software pada alat ini menggunakan bahasa pemrograman Cod Vision AVR. Prinsip kerja alat ini adalah menggunakan gelombang radio untuk mengontrol lampu dan kipas pada jarak jauh, pada bagian transmitter (remote) terdiri dari keypad, mikrokontroler dan gelombang frekuensi 315Mhz. dari keypad data akan dikirim ke transmiter secara wireless (tanpa kabel). Kemudian pada receiver data diterima dan diolah kemudian dibandingkan dengan data yang telah ditentukan pada program sebagai pengontrolan. Pada alat ini, jika pada transmiter di tekant 1, maka kipas akan hidup dengan kecepatan 25% , ditekan 2, kipas dengan kecepatan 50%, ditekan 3, kipas dengan kecepatan 75% dan jika ditekan 4, kipas akan bergerak dengan kecepatan 100%. Untuk menghidupkan lampu maka di tekan 5, maka lampu akan menyala dengan terang 25%,di tekan 6, terangnya 50%, ditekan 7, terangnya 75% dan jika ditekan 8 lampu akan menyala dengan terang maksimum yaitu 100%. Untuk mematikan lampu ditekan C, mematikan kipas ditekan B dan untuk mematikan lampu dan kipas ditekan 0.

Kata Kunci : Mikrokontroler ATMega32, RF 315 Mhz, Keypad Matrix, Transmitter dan receiver


(69)

DESIGN AND CONTROL DEVICE OF LAMP AND FAN WITH

DATA COMMUNICATIONS NETWORK BY USING A

MICROCONTROLLER ATMEGA 32

ABSTRACT

A lamp controller and fun by using a microcontroller ATMega 32 have been designed. This device is consists of a keypad as a controller, LCD displays messages from the transmitter, the lights and the fan will be controlled and Radio Frequency used as a data communications with far distance. Software on the device using the programming language Cod Vision AVR. The working principle of this tool is to use radio waves to control lights and fans at a distance, at the transmitter (remote) consists of a 4x4 matrix keypad, microcontroller and 315Mhz frequency bands. of keypad data will be sent to the transmitter with a wireless (cordless). Then the data is received and processed receiver then compared with the data that has been determined in the program as control. In this tool, if the transmitter in press 1 then the fan will be live at 25%, in press 2 fans live at 50%, pressured 3 fans live at the speed of 75%, and when pressed four fans will be living with a rate of 100%. To turn on the lights, pressed the 5 lights will be lit with the light of 25%, pressed 6 explained 50%, reduced 7 explained 75% and if pressed 8 lights will flash with a bright maximum of 100%. To turn off the lights pressed B, turn off fans pressed C and turn off lights and fans pressed 0.

Keywords : Microcontroller ATMega32, RF 315Mhz, Keypad Matrix, Transmitter and receiver


(70)

BERBASIS MIKROKONTROLER ATMEGA 32

SKRIPSI

JEKSON SIAHAAN

120801024

DEPARTEMEN FISIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN

ALAM

UNIVERSITAS SUMATERA UTARA

MEDAN


(71)

BERBASIS MIKROKONTROLER ATMEGA 32

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Sains

JEKSON SIAHAAN

120801024

DEPARTEMEN FISIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN

ALAM

UNIVERSITAS SUMATERA UTARA

MEDAN


(1)

vii DAFTAR ISI

Halaman

Persetujuan i

Pernyataan ii

Penghargaan iii

Abstrak v

Abstrac vi

Daftar Isi vii

Daftar Tabel ix

Daftar Gambar x

Daftar Singkatan xi

Daftar Lampiran xii

Bab 1. Pendahuluan 1.1. Latar Belakang 1

1.2. Rumusan Masalah 2

1.3. Batasan Masalah 2

1.4. Tujuan Penelitian 3

1.5. Manfaat Penelitian 3

1.6. Sistematika Penulisan 3

Bab 2. Tinjauan Pustaka 2.1 Mikrokontroler 5

2.2 Mikrokontroler ATmega 32 5

2.2.1 Arsitektur ATmega 32 6

2.2.2 Konfiguras ATmega 32 8

2.2.3 Arsitektur CPU ATmega 32 13

2.2.4 Program Memori 14

2.2.5 SRAM Data Memori 14

2.2.6 EEPROM Data Memori 14

2.2.7 Interupsi 14

2.2.8 Status Register (SREG) 14

2.3 Radio Frekuensi 16

2.3.1 Transmiter 17

2.3.2 Receiver 18

2.4 LCD (Liquid Crystal Display) 19

2.5 Keypad Matrix 22

2.5.1 Proses Scanning Matrix 4×4 Untuk Mikrokontroler 23

2.6 PWM ( Pulse Widhth Modulation) 24

2.6.1 Konsep Dasar PWM 25

Bab 3. Perancangan Sistem 3.1 Diagram Blok Sistem 27


(2)

viii

3.2 Rangkaian mikrokontroller ATMega 32 28

3.3 Rangkaian LCD (Liquid Crystal Display) 29

3.4 Rangkaian Power Suply 30

3.5 Rangkaian Radio Freakuensi 315 Mhz 31

3.6 Rangkaian Rangkaian Keypad 4 x 4 31

3.7 Rangkaian Kipas dan Lampu 32

3.8 Flowchart Transmiter 33

3.9 Flowchart Receiver 34

Bab 4 Pengujian Alat dan Program 4.1 Pengujian Power Supply 35

4.2 Pengujian Mikrokontroler ATmega 32 36

4.3 Pengujian LCD 36

4.4 Pengujian Keypad Matriks 4 x 4 38

4.5 Pengujian Radio Frekuensi 315 MHZ 41

4.6 Pengujian Alat Keseluruhan 46

Bab 5 Kesimpulan dan Saran 5.1 Kesimpulan 48

5.2 Saran 48

Daftar Pustaka 49

Lampiran 50


(3)

ix

DAFTAR TABEL

Halaman

Tabel 2.1 Fungsi Khusus Port A 9

Tabel 2.2 Fungsi Khusus Port B 11

Tabel 2.3 Fungsi Khusus Port C 12

Tabel 2.4 Fungsi Khusus Port D 12

Tabel 2.5 Fungsi Pin Pada Liquid Crystal Display 20

Tabel 4.5 Pengujian Transmiter dan Receiver 42

Tabel 4.1 Pengujian Alat keseluruhan 47


(4)

x

DAFTAR GAMBAR

Halaman

Gambar 2.1 Blok Diagram dan Arsitektur ATmega 32 7

Gambar 2.2 Pin – Pin ATmega 32 9

Gambar 2.3 Status Register ATmega 32 15

Gambar 2.4 Diagram Blok Rangkaian Transmiter 17

Gambar 2.5 Bentuk Fisik dan Konfigurasi Kaki Transmiter 18

Gambar 2.6 Diagram Blok Rangkaian Receiver 18

Gambar 2.7 Bentuk Fisik dan Konfigurasi Kaki Receiver 19

Gambar 2.8 LCD M1632 21

Gambar 2.9 Konstruksi Matrix Keypad 4 x 4 22

Gambar 2.10 Pulsa dengan Duty Cycle 50% 25

Gambar 3.1 Diagram Blok Sistem 27

Gambar 3.2 Rangkaian Mikrokontroler ATMega32 28

Gambar 3.3 Rangkaian LCD 29

Gambar 3.4 Rangkaian Power Supply 30

Gambar 3.5 Rangkaian Radio Frekuensi 315 Mhz Transmiter dan Receiver 31 Gambar 3.6 Rangkaian Keypad Matrix 32

Gambar 3.7 Rangkaian Kipas dan Lampu 32

Gambar 3.8 Flowchart System Transmiret 33

Gambar 3.9 Flowchart System Receiver 34

Gambar 4.1 Pengujian Power Supply 35

Gambar 4.2 Informasi Signature Mikrokontroler 36

Gambar 4.3 Pengujian LCD 38

Gambar 4.4 Pengujian Keypad Matrix 41

Gambar 4.6 Pengujian Alat Keseluruhan 46


(5)

xi

DAFTAR LAMPIRAN

Nomor Lampiran Judul Halaman

1. Gambar alat secara keseluruhan 50

2. Program Pada Alat 52


(6)

xii

DAFTAR SINGKATAN

AC = Analog Comparator

ADC = Analog to Digital Converter

ASCII = American Standart Code for Information Interchange AVR = Alf and Vegard’s Risc processor

BTS = Base Transceiver System BSS = Base Station Subsystem

CMOS = Complementary Metal Oxide Semiconductorial CPU = Central Proccesing Unit

EEPROM = Electrical Erasable Programmable Read Only Memory GHz = Giga Hearzt

GND = Ground

I/O = Input/Output IC = Intergrated Circuit LAN = Local Area Network LCC = Leadless Chip Carrier LCD = Liquid Crystal Display LSB = Least Significant Byte MSB = Most Significant Byte MHz = Mega Heartz

RAM = Random Acces Memory

RISC = Reduce Instruction Set Computer ROM = Read Only Memory

RF = Radio Frekuensi

RST = Reset

SPI = Serial Peripheral Interface TWI =Two-wire Serial Interface

USART = Universal Shynchronous and Asyncrhonous Serial Receiver and Transmitter

WDT = Watchdog Timer