• Tidak ada hasil yang ditemukan

Bab 2. Tinjauan Pustaka

3.3 Rangkaian Power Supply

Untuk mempermudah perancangan alat, pada rangkaian saya ini menggunakan Power Supply 12 volt yang telah ada dipasaran. Tetapi Mikrokontroller hanya membutuhkan tegangan 5 volt. Jadi untuk menstabilkan tegangan yaitu menggunakan IC7805 yang berfungsi untuk menjaga tegangan 5 volt.

Gambar 3.3. Rangkaian Power Supply

3.4 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 Mikrokontroller menjadi tampilan karakter. Gambar 3.4 berikut merupakan gambar rangkaian LCD yang dihubungkan ke Mikrokontroller.

Gambar 3.4 Rangkaian LCD

Rangkaian ini terhubung ke PB0, PD7, PD6, PD5, PB7, PB6, PD4, yang merupakan pin I/O dua arah dan pin fungsi khusus, sebagai pengiriman data secara serial. Sehingga nilai yang akan tampil pada LCD display akan dapat dikendalikan oleh Mikrokontroller ATMega 8.

3.5 Rangkaian Sensor Koduktivitas

Dari Probe ke Microkontroller, Rangkaian Sensor terdiri dari 6 probe lempeng kawat atau wayar yang bertingkat bertujuan untuk mengetahui tinggi air didalam tangki Bahan Bakar Minyak. keluaran dari sensor kemudian akan masuk port ADC pada Mikro dan dibandingkan dengan nilai tengah atau nilai refrensi.

3.6 Rangkaian Driver Relay Dan Pompa

Rangkaian driver relay atau sering disebut dengan penggerak relay atau saklar elektrik, ini menggunakan transistor BD139 sebagai saklar pada relay, Ketika basis diberikan supply maka colektor dan emitter dalam keadaan satu rasi. Sehingga relay hidup dan menutup katupnya. Diode berfungsi sebagai menghidari arus balik. Pompa terhubung ke COM dan NC sehingga ketika basis transistor diberi suplay oleh mikrokontroller transistor akan mengalami satu rasi dan relay akan aktif dan pompa aktif.

Gambar 3.6 Rangkaian Driver Relay Dan Pompa

3.7 Rangkaian Bluetooth HC-05

Rangkaian modul Bluetooth ini menggunakan komunikasi serial sehingga sangat mudah digunakan. Untuk rangkaian Tx pada Bluetooth di hubungkan ke Rx mikrokontroller begitu juga dengan Rx Bluetooth di hubungkan ke Tx mikrokontroller. Baudrate HC-05 ini yaitu 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 dapat disesuaikan dengan kebutuhan, pada alat ini saya menggunakan boudrate 9600, yaitu baudrate standar yang digunakan komunikasi antar komputer dengan mikrokontroler atau peralatan lain.

3.8 Diagram Alir Sistem (flowchart) Start inisialisasi Sensor mendeteksi Volume Air Volume <= 0 mL? Volume > 500mL? Kirim status volume air ke android Kalibrasi data Pompa Hidup ya tidak Pompa mati ya tidak Selesai Tampil LCD

BAB 4

PENGUJIAN ALAT DAN PROGRAM

4.1 Pengujian Rangkaian Mikrokontroler ATMega8

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

Gambar 4.1. Informasi Signature Mikrokontroler

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

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

Pada pengujian yang dilakukan tegangan masukan dari PLN sebesar 220 Volt AC kemudian masuk ke trafo diubah menjadi 12 Volt AC, kemudian di searahkan ke Dioda sebesar 12 Volt DC. Kemudian tegangan 12 Volt DC itu diubah oleh IC 7805 menjadi 5 Volt DC.

Setelah dilakukan pengukuran maka diperoleh besarnya tegangan keluaran sebesar 5 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. Pengujian pada power supply dapat kita lihat pada gambar di bawah ini:

Gambar 4.2 Pengujian pada Power Supply

Dibawah ini dapat kita lihat tegangan input dan output pada rangkaian power supply yang saya gunakan pada saat pengujian.

Tabel 4.1 Tegangan input dan output pada Pengujian Power Supply Vin Vout

4.3 Pengujian Rangkaian LCD

Bagian ini hanya terdiri dari sebuah LCD dot matriks 16x2 karakter yang berfungsi sebagai tampilan hasil pengukuran dan tampilan dari beberapa keterangan. LCD dihubungkan langsung ke Pin Sebagai Berikut :

RS dihubungkan ke PORTB pada pin 0 RD dihubungkan ke PORTD pada pin 7 EN dihubungkan ke PORTD pada pin 6 D4 dihubungkan ke PORTD pada pin 5 D5 dihubungkan ke PORTB pada pin 7 D6 dihubungkan ke PORTB pada pin 6 D7 dihubungkan ke PORTD pada pin 4

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 )

Dibawah ini merupakan gambar tampilan display LCD, dimana saya sudah berhasil menampilkan tulisan kata “tes LCD” di baris pertama pada display

LCD 16x2. Tulisan pada tampilan LCD “tes LCD” diperoleh karena sudah ada

pada library LCD jadi kita hanya mencetak string atau karakter saja pada saat mengisi program ke mikrokontroller untuk menampilkan karakter pada display LCD.

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 <mega8a.h> #include <alcd.h> void main(void) { PORTA=0x00; DDRA=0x00; PORTB=0x00; DDRB=0x00; PORTC=0x00; DDRC=0x00; PORTD=0x00; DDRD=0x00; lcd_init(16); while (1) {

// Place your code here lcd_gotoxy(0,0);

lcd_putsf("tes LCD"); }

}

Program di atas akan menampilkan kata “tes LCD” di baris pertama pada display

LCD 16x2

4.4 Pengujian Rangkaian Sensor Koduktivitas

Pengujian dilakukan dengan membedakan hasil keluaran dari ADC air dan bensin, kemudian perbedaan tersebut dimasukan kedalam program. agar ketika pompa hidup, bensin tidak ikut terkuras. Pengujian yang saya lakukan pada sensor konduktivitas, pada kondisi awal ketika diberi tegangan masukan sebesar 5 Volt sensor memberikan nilai tegangan ADC pada bensin sebesar 1023 bit. Akan

tetapi apabila terdeteksi air maka nilai tegangan ADC turun. Ini disebabkan apabila kutub positif pada sensor ketemu ground pada saat terdeteksi air maka nilai tegangan ADC turun. Pengujian pada sensor ini dapat kita lihat pada tabel 4.2. Pengujian pada sensor konduktivitas dapat kita lihat pada gambar dibawah ini:

Gambar 4.4 Tampilan pengujian Sensor Koduktivitas

Tabel 4.2 Perbandingan Nilai ADC Air dengan Bensin Sensor Nilai ADC Air (bit) Nilai ADC Bensin (bit)

1. 643 1023 2. 623 1023 3. 615 1023 4. 611 1023 5. 609 1023 6. 617 1023

Adapun program yang diisikan ke mikrokontroller untuk menampilkan volume air yang terdeteksi sensor konduktivitas adalah sebagai berikut:

#include <mega8.h> #include <stdlib.h> #include <delay.h>

#define pompa PORTD.2 int data[6];

int n,counter; char buff[30]; int volume;

unsigned int tinggi_air=0;

#include <alcd.h>

#include <stdio.h>

#define ADC_VREF_TYPE ((0<<REFS1) | (0<<REFS0) | (0<<ADLAR))

unsigned int read_adc(unsigned char adc_input) {

ADMUX=adc_input | ADC_VREF_TYPE; delay_us(10);

ADCSRA|=(1<<ADSC);

while ((ADCSRA & (1<<ADIF))==0); ADCSRA|=(1<<ADIF); return ADCW; } void main(void) { 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<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);

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

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

(0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0); TCCR0=(0<<CS02) | (0<<CS01) | (0<<CS00); TCNT0=0x00; lcd_init(16); while (1) {

// Place your code here awal: counter++; for (n=0;n<6;n++) { data[n]=read_adc(n); if (data[n]>500){data[n]=0;} else {data[n]=1;} } tinggi_air=(data[0]+data[1]+data[2]+data[3]+data[4]+dat a[5]); if (tinggi_air>6){tinggi_air=6;} volume=3.14*5.25*5.25*tinggi_air; if (volume>=500){pompa=1;} else if (tinggi_air<=0){pompa=0;} lcd_clear(); itoa(volume,buff); lcd_gotoxy(0,0);

lcd_putsf(" Volume air"); lcd_gotoxy(0,1); lcd_putsf("Volume = "); lcd_puts(buff); lcd_gotoxy(13,1); lcd_putsf("cm3"); printf("*D"); puts(buff); printf("*"); delay_ms(600); } }

4.5 Pengujian Rangkaian Relay, Driver Relay Dan Pompa

Untuk pengujian relay yaitu diberikan tegangan pada kaki basis di transistor, maka transistor BD 139 akan aktif (satu rasi) . Hal ini menyebabkan kumparan pada relay dialiri arus listrik. Dengan demikian, kontak relay akan terhubung. Dioda berfungsi sebagai komponen pengaman transistor arus balik yang mungkin timbul akibat dari aktifnya kumparan relay.

Pengujian dilakukan dengan mengukur tegangan pada basis dan kolektor

pada saat “high” dan “low” pada PORTD.2 menggunakan multimeter digital. Dibawah ini adalah tabel pengujian relay :

Tabel 4.3 Pengujian Relay

No PORT Status Basis Kolektor Status Pompa

1. PORTD.2 1 4,98 V 0,05 V Hidup

2. PORTD.2 0 0,7 V 11,31 V Mati

Pengujian pada relay dapat kita lakukan dengan menjalankan program di bawah ini:

#include <mega8.h> #include <delay.h>

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

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<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);

PORTC=(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) | (1<<DDD2) | (0<<DDD1) | (0<<DDD0);

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

(0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0); lcd_init(16); while (1) { PORTD.2=1; delay_ms(100); PORTD.2=0; delay_ms(100); } }

Jika program diatas dijalankan maka relay akan aktif selama 2 detik dan mati selama 2 detik. Apabila relay aktif maka pompa hidup dan apabila relay tidak aktif maka pompa dalam keadaan mati.

Pengujian Bluetooth menggunakan komunikasi serial dan dapat dilihat pada android. pada android dapat digunakan aplikasi Bluetooth elektronik, aplikasi dapat didownload diplaystore. Untuk melihat datanya di android. kita terlebih dahulu harus mencocokan antara device dengan android atau mensinkronisasi. Pengujian yang saya lakukan adalah adalah dengan menghubungkan rangkaian Tx pada Bluetooth di hubungkan ke Rx mikrokontroller begitu juga dengan Rx Bluetooth di hubungkan ke Tx mikrokontroller.

Kemudian menghidupkan Bluetooth handphone cari dan pairing Bluetooth mikrokontroller dengan nama yang kita buat misalnya andrianus kemudian setelah itu masukkan password yang kita inginkan, setelah itu buka aplikasi Bluetooth Electronic kemudian pilih menu > connect device > andrianus. Apabila sudah terhubung maka akan ada tulisan connected. Maka bluetooth ini sudah dapat dijalankan. Tampilan pada Pengujian terhadap Bluetooth dapat kita lihat pada gambar dibawah ini:

Gambar 4.5 Pengujian Bluetooth HC-05

dibawah ini yaitu program untuk pengujian Bluetooth agar terhubung ke peralatan secara langsung adalah sebagai berikut:

#include <mega8.h> #include <stdlib.h> #include <delay.h> #include <alcd.h>

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<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);

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

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

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

TCCR0=(0<<CS02) | (0<<CS01) | (0<<CS00); TCNT0=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<<TOIE0);

MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) |

(0<<ISC00);

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=0x0C; While (1) { printf("tes serial"); } }

Pengujian keseluruhan ini bertujuan untuk mengetahui apakah fungsi tiap blok berjalan dengan baik. Prinsip kerja alat ini adalah pada kondisi awal sensor konduktivitas yang berada pada tangki terdiri dari 6 sensor konduktivitas ketika diberi tegangan sebesar 5 Volt maka sensor akan memberikan Nilai tegangan ADC sebesar 1023 bit pada bensin. Apabila terdeteksi air maka nilai tegangan ADC turun ini disebabkan karena kutub positip pada sensor dan ground sehingga nilai tegangan ADC turun.

Kemudian apabila ketinggian air pada sudah melewati 6 cm maka pada LCD akan menampilkan jumlah volume air yang terdapat pada tangki. Kita juga dapat melihat status volume air pada tangki dengan android dimana Bluetooth HC-05 sebagai media mengirim data ke android dengan mengunduh aplikasi Bluetooth Electronic. Pada saat air melewati sensor ke enam dengan ketinggian 6 cm maka pompa secara otomatis aktif dan air pada tangki akan terkuras secara otomatis dan kita dapat melihat volume air terkuras pada LCD maupun menggunakan android. Perbandingan Tinggi Air, Volume Air, dan Status Pompa ketika tangki Terdeteksi air lebih dari 6 cm dapat dilihat pada tabel 4.4.

Tabel 4.4 perbandingan antara ketinggian air, volume air setelah diuji, volume air secara teori dan status pompa.

Sensor Tinggi Air (cm) Volume Air (cm3) setelah diuji Volume Air (cm3) secara Teori Status Pompa 1. 6 519 519,27 Hidup 2. 5 432 432,73 Hidup 3. 4 346 346,18 Hidup 4. 3 259 259,63 Hidup 5. 2 173 173,09 Hidup 6. 1 86 86,54 Hidup

Pada tabel di atas Volume Air (cm3) setelah diuji dengan Volume Air (cm3) secara Teori terdapat perbedaan nilai dikarenakan pada saat penginputan program pada

alat yang di uji tidak ada bilangan pecahan ataupun bilangan bulat yang di input pada program alat

Volume air secara teori didapat dengan menggunakan rumus volume tabung : V= luas alas x tinggi

Dimana :

V= Volume Tabung = phi (3,14 atau 22/7) r = jari-jari alas

t = Tinggi tabung

Maka, didapat dengan menggunakan rumus diatas : 1) Sensor 1 Pada Ketinggian 6 cm

V= 3,14 x 5,25 cm x 5,25 cm x 6 cm V = 519,27 cm3

2) Sensor 2 Pada Ketinggian 5 cm

V= 3,14 x 5,25 cm x 5,25 cm x 5 cm V = 432,73 cm3

3) Sensor 3 Pada Ketinggian 4 cm

V= 3,14 x 5,25 cm x 5,25 cm x 4 cm V = 346,18 cm3

4) Sensor 4 Pada Ketinggian 3 cm

V = 259,63 cm3

5) Sensor 5 Pada Ketinggian 2 cm

V= 3,14 x 5,25 cm x 5,25 cm x 2 cm V = 173,09 cm3

6) Sensor 6 Pada Ketinggian 1 cm

V= 3,14 x 5,25 cm x 5,25 cm x 1 cm V = 86,54 cm3

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 mendeteksi air pada tangki bahan bakar minyak menggunakan sensor konduktivitas berbasis Android serta dapat mengontrol pengurasan air secara otomatis dengan jarak jauh. Berdasarkan pengujian yang telah dilakukan, pada alat ini apabila ketinggian air melewati batas sensor pada ketinggian 6 cm, maka pompa otomatis hidup dan melakukan pengurasan air.

2. Berdasarkan pengujian yang telah dilakukan pada alat ini, Data dari sensor konduktivitas akan diterima oleh Android melalui media Bluetooth. volume air yang terdeteksi pada tangki dapat kita lihat pada ponsel Android yang digunakan sebagai monitoring proses pengurasan air secara otomatis.

5.2 Saran

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

1.Untuk pengembangan lebih lanjut, perlu dibuat alat yang lebih besar sesuai dengan tangki Bahan bakar yang sesungguhnya.

BAB 2

TINJAUAN PUSTAKA

2.1 AVR Mikrokontroller ATMega 8

AVR merupakan salah satu jenis mikrokontroler yang di dalamnya terdapat berbagai macam fungsi. Perbedaannya pada mikro yang pada umumnya digunakan seperti MCS51 adalah pada AVR tidak perlu menggunakan oscillator

eksternal karena di dalamnya sudah terdapat internal oscillator. Selain itu kelebihan dari AVR adalah memiliki Power-On Reset, yaitu tidak perlu ada tombol reset dari luar karena cukup hanya dengan mematikan supply, maka secara otomatis AVR akan melakukan reset. Untuk beberapa jenis AVR terdapat beberapa fungsi khusus seperti ADC, EEPROM sekitar 128 byte sampai dengan 512 byte.

Gambar 2.1. Mikrokontroller ATMEGA8

AVR ATmega8 adalah mikrokontroler CMOS 8-bit berarsitektur AVR RISC yang memiliki 8K byte in-System Programmable Flash. Mikrokontroler dengan konsumsi daya rendah ini mampu mengeksekusi instruksi dengan kecepatan maksimum 16MIPS pada frekuensi 16MHz. Jika dibandingkan dengan ATmega8L perbedaannya hanya terletak pada besarnya tegangan yang diperlukan untuk bekerja.

Untuk ATmega8 tipe L, mikrokontroler ini dapat bekerja dengan tegangan antara 2,7 - 5,5V sedangkan untuk ATmega8 hanya dapat bekerja pada tegangan antara 4,5–5,5 V. (Dayat, 2009)

2.1.1. Konfigurasi Pin ATMega8

Gambar 2.2. Konfigurasi Pin Atmega8

ATmega8 memiliki 28 Pin, yang masing-masing pin nya memiliki fungsi yang berbeda-beda baik sebagai port maupun fungsi yang lainnya. Berikut akan dijelaskan fungsi dari masing-masing kaki ATmega8.

a. VCC Merupakan supply tegangan digital.

b. GND Merupakan ground untuk semua komponen yang membutuhkan grounding.

c. Port B (PB7...PB0) Didalam Port B terdapat XTAL1, XTAL2, TOSC1, TOSC2. Jumlah Port B adalah 8 buah pin, mulai dari pin B.0 sampai dengan B.7. Tiap pin dapat digunakan sebagai input maupun output. Port B merupakan sebuah 8-bit bi- directional I/O dengan internal pull-up

resistor. Sebagai input, pin-pin yang terdapat pada port B yang secara eksternal diturunkan, maka akan mengeluarkan arus jika pull-up resistor diaktifkan. Khusus PB6 dapat digunakan sebagai input Kristal (inverting oscillator amplifier) dan input ke rangkaian clock internal, bergantung pada pengaturan Fuse bit yang digunakan untuk memilih sumber clock. Sedangkan untuk PB7 dapat digunakan sebagai output Kristal (output oscillator amplifier) bergantung pada pengaturan Fuse bit yang digunakan untuk memilih sumber clock. Jika sumber clock yang dipilih dari oscillator

menggunakan maka PB6 dan PB7 (TOSC2 dan TOSC1) digunakan untuk saluran input timer.

Tabel 2.1. Fungsi Alternatif Port B

d. Port C (PC5…PC0) Port C merupakan sebuah 7-bit bi-directional I/O port yang di dalam masing-masing pin terdapat pull-up resistor. Jumlah pin nya hanya 7 buah mulai dari pin C.0 sampai dengan pin C.6. Sebagai keluaran/output port C memiliki karakteristik yang sama dalam hal menyerap arus (sink) ataupun mengeluarkan arus (source). ADC 6 channel (PC0,PC1,PC2,PC3,PC4,PC5) dengan resolusi sebesar 10bit. ADC dapat kita gunakan untuk mengubah input yang berupa tegangan analog menjadi data digital. I2C (SDA dan SDL) merupakan salah satu fitur yang terdapat pada PORTC. I2C digunakan untuk komunikasi dengan sensor atau device

lain yang memiliki komunikasi data tipe I2C seperti sensor kompas,

accelerometer nunchuck, dll.

e. RESET/PC6 Jika RSTDISBL Fuse diprogram, maka PC6 akan berfungsi sebagai pin I/O. Pin ini memiliki karakteristik yang berbeda dengan pin-pin yang terdapat pada port C lainnya. Namun jika RSTDISBL Fuse tidak diprogram, maka pin ini akan berfungsi sebagai input reset. Dan jika level tegangan yang masuk ke pin ini rendah dan pulsa yang ada lebih pendek dari pulsa minimum, maka akan menghasilkan suatu kondisi reset meskipun clock-nya tidak bekerja. RESET merupakan salah satu pin penting di mikrokontroler, RESET dapat digunakan untuk merestart program. Pada ATMega8 pin RESET digabungkan dengan salah satu pin

IO (PC6). Secara default PC6 ini di disable dan diganti menjadi pin RESET. Kita dapat melakukan konfigurasi di fusebit untuk melakukan pengaturannya.

Tabel 2.2. Fungsi Alternatif Port C

f. Port D (PD7…PD0) Port D merupakan 8-bit bi-directional I/O dengan internal pull-up resistor. Fungsi dari port ini sama dengan port-port yang lain. Hanya saja pada port ini tidak terdapat kegunaan-kegunaan yang lain. Pada port ini hanya berfungsi sebagai masukan dan keluaran saja atau biasa disebut dengan I/O.

Tabel 2.3. Fungsi Alternatif Port D

USART (TXD dan RXD) merupakan jalur data komunikasi serial dengan level sinyal TTL. Pin TXD berfungsi untuk mengirimkan data serial, sedangkan RXD kebalikannya yaitu sebagai pin yang berfungsi untuk menerima data serial. Interrupt (INT0 dan INT1) merupakan pin dengan fungsi khusus sebagai interupsi hardware. Interupsi biasanya digunakan sebagai selaan dari program, misalkan pada saat program berjalan kemudian terjadi interupsi hardware/software maka program

utama akan berhenti dan akan menjalankan program interupsi. XCK dapat difungsikan sebagai sumber clock external untuk USART, namun kita juga dapat memanfaatkan clock dari CPU, sehingga tidak perlu membutuhkan

external clock. T0 dan T1 berfungsi sebagai masukan counter external untuk timer 1 dan timer 0. AIN0 dan AIN1 keduanya merupakan masukan input untuk analog comparator.

g. Avcc, Pin ini berfungsi sebagai supply tegangan untuk ADC. Untuk pin ini harus dihubungkan secara terpisah dengan VCC karena pin ini digunakan untuk analog saja. Bahkan jika ADC pada AVR tidak digunakan tetap saja disarankan untuk menghubungkannya secara terpisah dengan VCC. Jika ADC digunakan, maka AVcc harus dihubungkan ke VCC melalui low pass filter.

h. AREF, Merupakan pin referensi jika menggunakan ADC.

2.1.2. Status Register

Pada AVR status register mengandung beberapa informasi mengenai hasil dari kebanyakan hasil eksekusi instruksi aritmatik. Informasi ini digunakan untuk altering arus program sebagai kegunaan untuk meningkatkan performa pengoperasian. Register ini di-update setelah operasi ALU (Arithmetic Logic Unit) hal tersebut seperti yang tertulis dalam datasheet khususnya pada bagian

Instruction Set Reference.

Dalam hal ini untuk beberapa kasus dapat membuang penggunaan kebutuhan instruksi perbandingan yang telah didedikasikan serta dapat menghasilkan peningkatan dalam hal kecepatan dan kode yang lebih sederhana dan singkat. Register ini tidak secara otomatis tersimpan ketika memasuki sebuah rutin interupsi dan juga ketika menjalankan sebuah perintah setelah kembali dari interupsi. Namun hal tersebut harus dilakukan melalui software. Berikut adalah gambar status register.

Penjelasan :  Bit 7(I)

Merupakan bit Global Interrupt Enable. Bit ini harus di-set agar semua perintah interupsi dapat dijalankan. Untuk perintah interupsi individual akan di jelaskan pada bagian yang lain. Jika bit ini di-reset, maka semua perintah interupsi baik yang individual maupun yang secara umum akan di abaikan. Bit ini akan dibersihkan atau cleared oleh hardware setelah sebuah interupsi di jalankan dan akan di-set kembali oleh perintah RETI. Bit ini juga dapat di-set dan di-reset melalui aplikasi dan intruksi SEI dan CLL.

 Bit 6(T)

Merupakan bit Copy Storage. Instruksi bit Copy Instructions BLD (Bit Load) and BST (Bit Store) menggunakan bit ini sebagai asal atau tujuan untuk bit yang telah dioperasikan. Sebuah bit dari sebuah register dalam Register File dapat disalin ke dalam bit ini dengan menggunakan instruksi BST, dan sebuah bit di

Dokumen terkait