Perancangan Pengendalian Lampu Ruangan Dengan Menggunakan Komputer Berbasis Mikrokontroler ATmega8535

(1)

PERANCANGAN PENGENDALIAN LAMPU RUANGAN

DENGAN MENGGUNAKAN KOMPUTER BERBASIS

MIKROKONTROLER ATMEGA8535

TUGAS AKHIR

NADILA KASOGI

082408002

PROGRAM STUDI D-III FISIKA INSTRUMENTASI

DEPARTEMEN FISIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

MEDAN

2011


(2)

PERANCANGAN PENGENDALIAN LAMPU RUANGAN DENGAN MENGGUNAKAN KOMPUTER BERBASIS

MIKROKONTROLER ATMEGA8535

TUGAS AKHIR

Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Ahli Madya

NADILA KASOGI 082408002

PROGRAM STUDI D-III FISIKA INSTRUMENTASI DEPARTEMEN FISIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA

MEDAN 2011


(3)

PERSETUJUAN

Judul : PERANCANGAN PENGENDALIAN LAMPU RUANGAN DENGAN MENGGUNAKAN KOMPUTER BERBASIS MIKROKONTROLER ATMEGA8535

Kategori : LAPORAN TUGAS AKHIR Nama : NADILA KASOGI

Nomor Induk Mahasiswa : 082408002

Program Studi : DIPLOMA (D3) FISIKA INSTRUMENTASI Departemen : FISIKA

Fakultas : MATEMATIKA DAN ILMU PENGETAHUAN ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA

Diluluskan di Medan, 15 Agustus 2011

Diketahui/Disetujui oleh

Program Studi D-III Fisika Instrumentasi Pembimbing, Ketua,

Dr. Susilawati, M.Si Dr. H.Nasruddin MN, M.Eng. Sc NIP.196009301986011011 NIP. 195507061981021002


(4)

PERNYATAAN

PERANCANGAN PENGENDALIAN LAMPU RUANGAN

DENGAN MENGGUNAKAN KOMPUTER BERBASIS

MIKROKONTROLER ATMEGA8535

TUGAS AKHIR

Saya mengakui bahwa Laporan Tugas Akhir ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya Medan, 15 Agustus 2011

NADILA KASOGI 082408002


(5)

PENGHARGAAN

Puji dan Syukur Penulis panjatkan kepada ALLAH SWT Yang Maha Pemurah dan Maha Penyayang dengan limpah karunia-NYA, sehingga penulis dapat menyelesaikan Laporan Tugas Akhir dalam waktu yang telah ditetapkan.

Penulis mengucapkan terima kasih kepada Bapak Dr.H.Nasruddin MN, M.Eng. Sc Selaku dosen pembimbing pada penyelesaian Laporan Tugas Akhir ini, yang telah memberikan panduan dan perhatian kepada penulis untuk menyempurnakan laporan tugas akhir ini. Ucapan terima kasih juga ditujukan kepada ketua program studi D3 Fisika Instrumentasi yaitu Ibu Dr. Susilawati, M.Si dan Bapak Dr. Sutarman, M.Sc selaku Dekan FMIPA Universitas Sumatera Utara, dan kepada semua dosen pengajar dan staf pegawai di Departemen Fisika FMIPA USU. Terimakasih juga penulis ucapkan teristimewa kepada Kedua orang tua penulis yang telah banyak memberikan dukungan baik moril maupun materil kepada penulis dalam menyelesaikan laporan tugas akhir ini. Terimakasih juga penulis ucapkan kepada teman penulis yang selalu memberikan doa dan membantu saya, Ahmad Nawawi Harahap. Dan kawan - kawan mahasiswa Fisika Instrumentasi khususnya stambuk 2008 sehingga penulis dapat menyelesaikan laporan ini dengan baik, Semoga kita semua tetap kompak dibawah balutan Ikatan Mahasiswa Instrumentasi (IMI). Semoga Tuhan Yang Maha Esa akan membalasnya.


(6)

ABSTRAK

Kendali atau control melalui Personal Computer (PC) menggunakan Visual Basic digunakan pada banyak aplikasi terutama dalam bidang pengontrolan barang-barang elektronik , misalnya untuk pengontrolan lampu pada sebuah gedung perkantoran. Dimana lampu gedung tersebut bisa dinyalakan dan dimatikan secara otomatis ataupun secara manual. Pada tugas akhir ini dibuat simulasi untuk pengontrolan lampu beserta status lampunya. Dimana ketika lampu menyala maka status lampu ON dan ketika lampu mati maka status lampu OFF. Kita juga bias menggunakan timer waktu untuk mngendalikan lampu. Misalkan kita menggunakan timer untuk menghidupkan lampu secara otomatis, maka kita menyetel waktu yang ada di program visiual basic secara otomatis lampu akan hidup. Dan secara otomatis dapat juga mematikan lampu sesuai waktu yang kita inginkan. Sistem tersebut dibuat dengan alat bantu komputer dengan bahasa pemrograman C dan Visual Basic untuk sistem operasi Windows dari simulasi pengontrolan lampu itu sendiri. Sistem ini memiliki cara pengontrolan secara otomatis yaitu menghidupkan dan mematikan lampu dengan menggunakan sistem waktu atau timer.


(7)

DAFTAR ISI

Halaman

PERSETUJUAN...ii

PERNYATAAN iii

PENGHARGAAN...iv

ABSTRAK v

DAFTAR ISI...vi

DAFTAR TABEL vii

DAFTAR GAMBAR...ix

BAB I PENDAHULUAN 1.1 Latar Belakang 1

1.2Rumusan Masalah...2

1.3Tujuan Penulisan...2

1.4Batasan Masalah...3

1.5Sistematika Penulisan...3

BAB II LANDASAN TEORI 2.1Teori Dasar Mikrokontroller ATMega8535...5

2.1.1Konfigurasi Pin ATMega8535...8

2.2Pengenal pada bahasa C...24

2.2.1Tipe data...25

2.2.2Header...27

2.2.3Operator aritmatika...28

2.2.4Operator Pembanding...29

2.2.5Operator Logika...20

2.2.6Operator Bitwise...21

2.2.7Operator penugasan dan operator majemuk...23

2.2.8Operator Penambahan dan Pengurangan...24

2.2.9Pernyataan If dan If Bersarang...25

2.2.10Pernyataan Swicth...27

2.2.11Pernyataan While...29

2.2.12Pernyataan Do..While...30


(8)

BAB III PERANCANGAN DAN REALISASI

3.1 Perancangan Blok Diagram...33

3.1.1 Fungsi Tiap Blok...42

3.2Rangkaian Driver Lampu AC...34

3.3Perancangan Visual Basic 6.0 Untuk Komenikasi Serial...35

3.4Pembuatan PCB...38

3.5Aplikasi VB Yang Dirancang...39

3.6Flowchart Program...40

BAB IV PENGUJIAN DAN ANALISA 4.1Analisa Hardware dan Software...42

4.1.1Pengujian Driver Relay Untuk Lampu AC...42

4.1.2Analisa Program Vb Yang Dirancang...45

BAB V KESIMPULAN DAN SARAN 5.1Kesimpulan...48

5.2Saran...48 DAFTAR PUSTAKA


(9)

DAFTAR TABEL

Halaman

Tabel 2.1 Konfigurasi Pin Port B ATMega8535...11

Tabel 2.2 Konfigurasi Pin Port C ATMega8535...12

Tabel 2.3 Port Fungsi Khusus...13

Tabel 2.4 Tipe Data...25

Tabel 2.5 Operator Aritmatika...28

Tabel 2.6 Operator Pembanding...20

Tabel 2.7 Operator Logika...20

Tabel 2.8 Operator Bitwise...22

Tabel 2.9 Operator Penugasan...23

Tabel 2.10 Operator Majemuk...24


(10)

DAFTAR GAMBAR

Halaman

Gambar 2.1 Blok Diagram Fungsional ATMega8535...7

Gambar 2.2 Pin ATMega8535...9

Gambar 3.1 Diagram Blok Rangkaian...33

Gambar 3.2 Rangkaian Driver Lampu AC...34

Gambar 3.3 Insert Komponen Mscomm32.ocx...35

Gambar 3.4 Form VB Serial Sederhana...36

Gambar 3.5 Mengambil Komponen Mscomm32.ocx...40

Gambar 3.6 Penjelasan Flowchart...41


(11)

ABSTRAK

Kendali atau control melalui Personal Computer (PC) menggunakan Visual Basic digunakan pada banyak aplikasi terutama dalam bidang pengontrolan barang-barang elektronik , misalnya untuk pengontrolan lampu pada sebuah gedung perkantoran. Dimana lampu gedung tersebut bisa dinyalakan dan dimatikan secara otomatis ataupun secara manual. Pada tugas akhir ini dibuat simulasi untuk pengontrolan lampu beserta status lampunya. Dimana ketika lampu menyala maka status lampu ON dan ketika lampu mati maka status lampu OFF. Kita juga bias menggunakan timer waktu untuk mngendalikan lampu. Misalkan kita menggunakan timer untuk menghidupkan lampu secara otomatis, maka kita menyetel waktu yang ada di program visiual basic secara otomatis lampu akan hidup. Dan secara otomatis dapat juga mematikan lampu sesuai waktu yang kita inginkan. Sistem tersebut dibuat dengan alat bantu komputer dengan bahasa pemrograman C dan Visual Basic untuk sistem operasi Windows dari simulasi pengontrolan lampu itu sendiri. Sistem ini memiliki cara pengontrolan secara otomatis yaitu menghidupkan dan mematikan lampu dengan menggunakan sistem waktu atau timer.


(12)

BAB I PENDAHULUAN

1.1 Latar Belakang

Inovasi di dalam teknologi telekomunikasi berkembang dengan cepat dan selaras dengan perkembangan karakteristik masyarakat modern yang memiliki mobilitas tinggi, mencari layanan yang fleksibel, serba mudah dan memuaskan serta mengejar efisiensi di segala aspek. Kebutuhan akan sistem untuk pengendalian secara komputer semakin meningkat sejalan dengan era globalisasi dimana perpindahan dan pergerakan manusia semakin luas dan cepat.

Teknologi jaringan komputer merupakan solusi yang dapat dimanfaatkan untuk mengatasi fix point to point dan biaya, serta menjadi model fleksibel multi point to multi point. Pesatnya perkembangan dunia jaringan komputer akhir-akhir ini, memicu berkembangnya teknologi baru yang memanfaatkan teknologi jaringan komputer sebagai media untuk mewujudkan impian manusia akan sebuah aplikasi pengoperasian peralatan dari tempat lain yang sangat jauh tanpa harus berada di tempat tersebut.

Dalam beberapa literatur, teleoperasi disebut sebagai sebuah cara yang mengkombinasikan kecerdasan dan kemampuan beradaptasi dari manusia dengan kemampuan dan ketahanan sebuah robot untuk melakukan pekerjaan yang sangat sulit dikerjakan. Teknologi jaringan rumah tangga atau sering disebut home network pada mulanya ditujukan untuk aplikasi yang berhubungan dengan elektronik seperti televisi, radio, lampu, kipas angin, air conditioner dan peralatan elektronik lainnya.


(13)

Dengan adanya jaringan komputer, terbuka peluang yang sangat lebar untuk diterapkan aplikasi teleoperasi di dalamnya. Jika menggunakan jaringan global seperti internet, maka pengendalian perangkat-perangkat elektronik tadi bisa dilakukan dari mana saja di belahan dunia inis sehingga jarak bukan lagi suatu masalah.

1.2 Rumusan Masalah

Berdasarkan latar belakang yang telah dijelaskan di atas, maka dapat diambil suatu rumusan masalah sebagai berikut: “ Bagaimana mewujudkan pengendalian lampu ruangan dengan menggunakan computer berbasis mikrokontroler atmega8535”

1.3 Batasan Masalah

Dengan adanya batasan masalah maka dapat lebih disederhanakan dan diarahkan penelitian agar tidak menyimpang dari apa yang diteliti.

Adapun batasan masalah adalah sebagai berikut:

1. Penelitian difokuskan pada peralatan elektronik yang tegangan kerjanya 220 V. 2. Pembahasan hanya sebatas pemrograman mikrokontroler dan interfacing untuk

pemrograman dari komputer ke mikrokontroler tidak dibahas.

3. Sistem yang akan dirancang menggunakan PPI 8255 sebagai antarmuka.

4. Sistem hanya berfungsi mengendalikan lampu ruangan dalam artian menghidupkan dan mematikan (ON/OFF).


(14)

1.4 Tujuan Penulisan

Adapun tujuan penulisan laporan proyek ini adalah untuk:

1. Sebagai salah satu syarat untuk dapat menyelesaikan program Diploma Tiga (D-III) Fisika Instrumentasi FMIPA Universitas Sumatera Utara.

2. Pengembangan kreatifitas mahasiswa dalam bidang ilmu instrumentasi pengontrolan dan elektronika sebagai bidang diketahui.

3. Merancang suatu sistem pengendali lampu ruangan dengan PC berbasis Ic Atmrga8535.

4. Penulis ingin memberikan penjelasan tentang penggunaan dan cara kerja sistem pengendali lampu ruangan dengan PC berbasis Ic Atmega8535.

1.5 Sistematika Penulisan

Untuk mempermudah pembahasan dan pemahaman, penulis membuat sistematika penulisan bagaimana sebenarnya prinsip kerja dari sistem pengendali lampu ruangan dengan PC berbasis Ic atmega8535, maka penulis menulis tugas akhir ini dengan urutan sebagai berikut :

BAB I PENDAHULUAN

Dalam hal ini berisikan mengenai latar belakang, rumusan masalah, tujuan penulisan, batasan masalah, serta sistematika penulisan.


(15)

BAB II LANDASAN TEORI

Dalam bab ini dijelaskan tentang teori pendukung yang digunakan untuk pembahasan dan cara kerja dari rangkaian teori pendukung itu antara lain tentang Komputer , bahasa program yang dipergunakankomputer dan komponen pendukung.

BAB III PERANCANGAN DAN REALISASI

Dalam bab ini menjelaskan perancangan sistem antarmuka dari komputer ke obyek, cara mengimplementasikan sistem antarmuka yang telah dibuat, pembuatan program berbasis jaringan komputer dan pengujian sistem.

BAB IV PENGUJIAN DAN ANALISA

Bab ini membahas tentang perbandingan antara hasil dari sistem yang dibuat dibandingkan dengan dasar teori sistem serta pembasan hasil pengujian

BAB V KESIMPULAN DAN SARAN

Bab ini merupakan penutup yang meliputi tentang kesimpulan dari pembahasan yang dilakukan dari laporan ini serta saran apakah rangkaian ini dapat dibuat lebih efisien dan dikembangkan perakitannya pada suatu metode lain yang


(16)

BAB II LANDASAN TEORI

2.1 Teori Dasar Mikrokontroller ATMega8535

Perkembangan teknologi telah maju dengan pesat dalam perkembangan dunia elektronika, khususnya dunia mikroelektronika. Penemuan silicon menyebabkan bidang ini mampu memberikan sumbangan yang amat berharga bagi perkembangan teknologi modern. Mikrokontroler adalah suatu keeping IC dimana terdapat mikroprosesor dan memori program ROM (Read Only Memory) serta memori serbaguna RAM (Random Acces Memory), bahkan ada beberapa jenis mikrokontroler yang memiliki fasilitas ADC, PLL, EEPROM dalam suatu kemasan. Penggunaaan Mikrokontroler dalam bidang control sangat luas dan popular.

Ada beberapa vendor yang membuat mikrokontroler diantaranya Intel, Microchip, Winbond, Atmel, Philips, Xemisc dan lain- lain. Dari beberapa vendor tersebut, yang paling popular digunakan adalah mikrokontroler buatan Atmel. Atmel sebagai salah satu vendor yang mengembangkan dan memasarkan produk mikroelektronika telah menjadi suatu teknologi standar bagi para desainer system elektronika masa kini. Dengan perkembangan terakhir, yaitu generasi AVR(Alf and Vegard’s Risc processor), para desainer system elektronika telah diberi suatu teknologi yang memiliki kapabilitas yang amat maju, tetapi dengan biaya ekonomis yang cukup minimal.

Mikrokontroler AVR memiliki arsitektur RISC 8bit, dimana semua instruksi dikemas dalam kode 16 bit(16- bits word) dan sebagian besar instruksi dieksekusi dalam 1(satu) siklus clock, berbeda dengan instruksi MCS51 yang membutuhkan 12 clock. Tentu saja itu terjadi karena kedua jenis mikrokontroler tersebut memiliki


(17)

arsitektur yang berbeda. Secara umum, AVR dapat dikelompokkan menjadi 4 kelas, yaitu keluarga ATtiny, keluarga AT90Sxx, keluarga ATMega, dan AT86RFxx. Pada dasarnya yang menbedakan masing- masing kelas adalah memory, peripheral, dan fungsinya. Dari segi arsitektur dan instruksi yang digunakan, mereka bisa dikatakan hampir sama.

Oleh karena itu dipergunakan salah satu AVR produk Atmel, yaitu ATMega8535. Dalam hal ini ATMEGA8535 dapat beroperasi pada kecepatan maksimal 16MHz serta memiliki 6 pilihan mode sleep untuk menghemat penggunaan daya listrik. Selain mudah didapat juga dan lebih murah, ATMega8535 juga memiliki fasilitas yang lengkap.


(18)

Gambar 2.1 Blok Diagram Fungsional ATMega8535

Dari gambar tersebut dapat dilihat bahwa ATMega8535 memiliki bagian sebagai berikut:

1. Saluran I/O sebanyak 32 buah, yaitu Port A, Port B, Port C, Port D. 2. ADC 10 bit sebanyak 8 saluran.

3. Tiga buah Timer/Counter dengan kemampuan pembandingan. 4. CPU yang terdiri atas 32 buah register.

5. Watchdog Timer dengan osilator internal. 6. SRAM sebesar 512 byte.


(19)

7. Memory Flash sebesar 8 kb dengan kemampuan Read While Write. 8. Unit interupsi internal dan eksternal.

9. Port antarmuka SPI.

10. EEPROM sebesar 512 byte yang dapat deprogram saat operasi. 11. Antarmuka komparator analog.

12. Port USART untuk komunikasi serial.

Kapabilitas detail dari ATMega8535 adalah sebagai berikut:

1. Sistem mikroprosesor 8 bit berbasis RISC dengan kecepatan maksimal 16MHz.

2. Kapasitas memory flash 8 Kb, SRAM sebesar 512 byte, dan EEPROM (Electrically Erasable Programmable Read Only Memory) sebesar 512 byte.

3. ADC internal dengan fidelitas 10 bit sebanyak 8 channel.

4. Portal komunikasi serial(USART) dengan kecepatan maksimal 2,5 Mbps.

5. Enam pilihan mode sleep menghemat penggunaan daya listrik.

2.1.1 Konfigurasi Pin ATMega8535

Konfigurasi pin ATMega8535 bisa dilihat pada gambar 2.2 di bawah ini. Dari gambar tersebut dapat dijelaskan secara fungsional konfigurasi pin ATMega8535 sebagai berikut:

1. VCC merupakan pin yang berfungsi sebagai pin masukan catu daya. 2. GND merupakan Pin Ground.


(20)

3. Port A (PA0...PA7) merupakan pin I/O dan pin masukan ADC.

4. Port B (PB0...PB7) merupakan pin I/O dan pin yang mempunyai fungsi khusus yaitu Timer/Counter, komparator Analog dan SPI.

5. Port C (PC0...PC7) merupakan port I/O dan pin yang mempunyai fungsi khusus, yaitu komparator analog dan Timer Oscillator.

6. Port D (PD0...PD1) merupakan port I/O dan pin fungsi khusus yaitu komparator analog dan interrupt eksternal serta komunikasi serial.

7. RESET merupakan pin yang digunakan untuk mereset mikrokontroler. 8. XTAL1 dan XTAL2 merupakan pin masukan clock eksternal.

9. AVCC merupakan pin masukan untuk tegangan ADC.

10.AREF merupakan pin masukan tegangan referensi untuk ADC.


(21)

Berikut adalah penjelasan fungsi tiap kaki. 1. PORT A

Merupakan 8- bit directional port I/O. Setiap pinnya dapat menyediakan internal pull- up resistor (dapat diatur per bit). Output buffer Port A dapat memberi arus 20mA dan dapat mengendalikan display LED secara langsung. Data direction Register Port A (DDRA) harus disetting terlebih dahulu sebelum Port A dugunakan. Bit- bit DDRA diisi 0 jika ingin memfungsikan pin- pin Port A yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Selain itu, kedelapan pin Port A juga digunakan untuk masukan sinyal analog bagi A/D converter.

2. PORT B

Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan internal pull-up resistor (dapat diatur per bit). Output buffer Port B dapat memberi arus 20 mA dan dapat mengendalikan display LED secara langsung. Data Direction Register port B (DDRB) harus disetting terlebih dahulu sebelum Port B digunakan. Bit-bit DDRB diisi 0 jika ingin memfungsikan pin-pin port B yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Pin-pin port B juga memiliki untuk fungsi-fungsi alternatif khusus seperti yang dapat dilihat dalam tabel berikut.


(22)

Tabel 2.1 Konfigurasi Pin Port B ATMega8535

PORT PIN FUNGSI KHUSUS

PB0 T0= timer/ counter 0 external counter input PB1 T1= timer/ counter 0 external counter input PB2 AINO= analog comparator positive input PB3 AINI= analog comparator negative input PB4 SS= SPI slave select input

PB5 MOSI= SPI bus master output/ slave input PB6 MISO= SPI bus master input/ slave output PB7 SCK= SPI bus serial clock

3. PORT C

Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan internal pull-up resistor (dapat diatur per bit). Output buffer Port C dapat memberi arus 20 mA dan dapat mengendalikan display LED secara langsung. Data Direction Register port C (DDRC) harus disetting terlebih dahulu sebelum Port C digunakan. Bit-bit DDRC diisi 0 jika ingin memfungsikan pin-pin port C yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Selain itu, dua pin port C (PC6 dan PC7) juga memiliki fungsi alternatif sebagai oscillator untuk timer/counter 2. Pin-pin port C juga memiliki untuk fungsi-fungsi alternatif khusus seperti yang dapat dilihat dalam tabel berikut.


(23)

Tabel 2.2 Konfigurasi Pin Port C ATMega8535

PORT PIN FUNGSI KHUSUS

PC0 SCL ( Two-wire Serial Buas Clock Line) PC1

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

PC2 Input/Output PC3 Input/Output PC4 Input/Output PC5 Input/Output

PC6 TOSC1 ( Timer Oscillator Pin1) PC7 TOSC2 ( Timer Oscillator Pin2)

4. PORT D

Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan internal pull-up resistor (dapat diatur per bit). Output buffer Port D dapat memberi arus 20 mA dan dapat mengendalikan display LED secara langsung. Data Direction Register port D (DDRD) harus disetting terlebih dahulu sebelum Port D digunakan. Bit-bit DDRD diisi 0 jika ingin memfungsikan pin-pin port D yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Selain itu, pin-pin port D juga memiliki untuk fungsi-fungsi alternatif khusus seperti yang dapat dilihat dalam tabel berikut.


(24)

Tabel 2.3 Port Fungsi Khusus

PIN FUNGSI KHUSUS

PD0 RXD (USART Input Pin) PD1 TXD (USART Output Pin) PD2 INT0 (External Interrupt 0 Input) PD3 INT1 (External Interrupt 1 Input)

PD4 OC1B (Timer/Counter1 Output Compare B Match Output) PD5 OC1A (Timer/Counter1 Output Compare A Match Output) PD6 ICP (Timer/Counter1 Input Capture Pin)

PD7 OC2 (Timer/Counter Output Compare Match Output)

5. RESET

RST pada pin 9 merupakan reset dari AVR. Jika pada pin ini diberi masukan low selama minimal 2 machine cycle maka system akan di-reset.

6. XTAL1

XTAL1 adalah masukan ke inverting oscillator amplifier dan input ke internal clock operating circuit.

7. XTAL2

XTAL2 adalah output dari inverting oscillator amplifier. 8. AVcc

Avcc adalah kaki masukan tegangan bagi A/D Converter. Kaki ini harus secara eksternal terhubung ke Vcc melalui lowpass filter.


(25)

9. AREF

AREF adalah kaki masukan referensi bagi A/D Converter. Untuk operasionalisasi ADC, suatu level tegangan antara AGND dan Avcc harus dibeikan ke kaki ini.

10. AGND

AGND adalah kaki untuk analog ground. Hubungkan kaki ini ke GND, kecuali jika board memiliki anlaog ground yang terpisah.

2.2 Pengenal pada bahasa C

Pengenal merupakan sebuah nama yang didefinisikan oleh program untuk menunjukkan sebuah konstanta, variabel, fungsi, label, atau tipe data khusus. Pemberian pengenal pada program harus memenuhi syarat-syarat di bawah ini:

1. Karakter pertama tidak menggunakan angka; 2. Karakter kedua berupa huruf, angka, garis bawah,; 3. Tidak menggunakan spasi;

4. Bersifat case sensitive, yaitu huruf kapital dan huruf kecil dianggap berbeda;

5. Tidak boleh menggunakan kata-kata yang merupakan sintaks atau operator dari bahasa C.

Contoh menggunakan pengenal yang diperbolehkan: 1. Nama

2. _nama 3. Nama2


(26)

4. Nama_pengenal

Contoh penggunaan pengenal yang tidak diperbolehkan: 1. 2nama

2. Nama+2 3. Nama pengenal

2.2.1 Tipe data

Pemberian signed dan unsigned pada tipe data menyebabkan jangkauan dari tipe berubah. Pada unsigned menyebabkan tipe data akan selalu bernilai positif sedangkan signed menyebabkan nilai tipe data bernilai negatif dan memungkinkan data bernilai positif. Perbedaan nilai tipe data dapat kita lihat pada tabel di bawah ini,

Tabel 2.4 Tipe Data

Pemodifikasi Tipe Persamaan Jangkauan Nilai Signed char Char -128 s/d 127 Signed int Int -32.768 s/d 32.767 Signed short int Short, signed short -32.768 s/d 32.767 Signed long int Long, long int, signed

long

-2.147.483.648 s/d 2.147.483.647 Unsigned char Tidak ada 0 s/d 255 Unsigned int Unsigned 0 s/d 65.535 Unsigned short int Unsigned short 0 s/d 65.535


(27)

Contoh program yang menunjukkan pengaruh signed dan unsigned pada hasil program,

#include <mega.32> #include <delay.h>

Void main (void) {

int a, b; // pengenal unsigned d, e;

a = 50; b = 40;

d = 50; e = 40;

PORTC = 0x00;

DDRC = 0Xff; //set PORTC sebagai output PORTB = 0x00;

DDRB = 0Xff; // set PORTB sebagai output

While(1) {

PORTB = a – b; PORTC = d – e; delay_ms(100); };


(28)

Program di atas akan memberikan data di PORTB = 10 (desimal) sedangkan PORTC = -10 (desimal) karena PORT mikrokontroler tidak dapat mengeluarkan nilai negatif maka PORTB dan PORTC akan memiliki keluaran 0x0A tapi pada kenyataannya PORTC lebih banyak memakan memori karena tanda negatif tersebut disimpan dalam memori.

Pada program di atas terdapat tulisan //set PORTB sebagai output yang berguna sebagai komentar yang mana komentar ini tidak mempengaruhi hasil dari program. Ada dua cara penulisan komentar pada pemrograman bahasa C, yaitu dengan mengawali komentar dengan tanda “ // “ ( untuk komentar yang hanya satu baris ) dan mengawali komentar dengan tanda “ /* “ dan mengakhiri komentar dengan tanda “ */ “.

Contoh:

// ini adalah komentar /* ini adalah komentar Yang lebih panjang Dan lebih panjang lagi */

2.2.2 Header

Header digunakan untuk menginstruksikan kompiler untuk menyisipkan file lain. Di dalam file header ini tersimpan deklarasi, fungsi, variable, dan jenis mikrokontroler yang kita gunakan (pada software Code Vision AVR). File-file yang ber akhiran .h disebut file header.

File header yang digunakan untuk mendefinisikan jenis mikrokontroler yang digunakan berfungsi sebagai pengarah yang mana pendeklarasian register-register


(29)

yang terdapat program difungsikan untuk jenis mikrokontroler apa yang digunakan ( pada software Code Vision AVR ).

Contoh:

#include <mega8535.h> #include<delay.h> #include <stdio. h>

2.2.3 Operator aritmatika

Operator aritmatika digunakan untuk melakukan proses perhitungan matematika. Fungsi-fungsi matematika yang terdapat pada bahasa C dapat dilihat pada tabel di bawah ini:

Tabel 2.5 Operator Aritmatika

Operator Keterangan

+ Operator untuk penjumlahan - Operator untuk pengurangan * Operator untuk perkalian / Operator untuk pembagian % Operator untuk sisa bagi

Contoh penggunaan operator aritmatika dapat dilihat di bawah ini,

#include < mega8535.h> #include <delay.h> void main (void) {


(30)

unsigned char a, b; a = 0x03;

b = 0x05;

DDRC 0XFF; // PORTC digunakan sebagai output while (1)

{

PORTC = (a * b); delay_ms(500); }

}

2.2.4 Operator Pembanding

Operator pembanding digunakan untuk membandingkan 2 data atau lebih. Hasil operator akan di jalankan jika pernyataan benar dan tidak dijalankan jika salah. Operator pembanding dapat kita lihat pada tabel di bawah ini:


(31)

Tabel 2.6 Operator Pembanding

Operator Contoh Keterangan

= = x = = y Benar jika kedua data bernilai sama != x != y Bernilai benar jika kedua data tidak sama

> x > y Bernilai benar jika nilai x lebih besar dari pada y < x < y Bernilai jika x lebih kecil dari y

>= x >= y Bernilai jika x lebih besar atau sama dengan y <= x <= y Bernilai benar jika x lebih kecil atau sama dengan y

2.2.5 Operator Logika

Operator logika digunakan untuk membentuk logika dari dua pernyataan atau lebih. Operator logika dapat dilihat pada tabel di bawah ini:

Tabel 2.7 Operator Logika

Operator Keterangan && Logika AND

| | Logika OR ! Logika NOT

Contoh program:

#include < mega8535.h> #include <delay.h> void main (void) {


(32)

DDRC = 0XFF; // sebagai output DDRA = 0X00; // sebagai input

while (1) {

If ( PINA.0 == 1 )|| (PINA.1 == 1 ){ PORTC = 0XFF;

delay_ms(500); PORTC = 0X00; Delay_ms(500); }

else{

PORTC = 0x00; delay_ms(500); }

}

}

Penjelasan program:

Apabila PINA.0 atau PINA.1 diberi input logika 1 maka PORTC akan mengeluarkan logika 0xff kemudian logika 0x00 secara bergantian dengan selang waktu 0,5 s. dan apabila bukan PINA.1 atau PINA.0 diberi logika 1 maka PORTC akan mengeluarkan logika 0x00.

2.2.6 Operator Bitwise

Operator logika ini bekerja pada level bit. Perbedaan operator bitwise dengan operator logika adalah pada operator logika akan menghasilkan pernyataan benar atau salah


(33)

sedangkan pada operator bitwise akan menghasilkan data biner. Operator bitwise dapat dilihat pada tabel di bawah ini:

Tabel 2.8 Operator Bitwise

Operator Keterangan

& Operasi AND level bit | Operasi OR level bit ^ Operasi XOR level bit ~ Operator NOT level bit >> Operator geser kanan << Operator geser kiri

Contoh program:

#include <mega8535.h> #include <delay.h>

void main (void) {

unsigned char a,b,c;

DDRC = 0xff; //portc sebagai output while (1)

{

a = 0x12; b = 0x34; c = a & b; PORTC = c; delay_ms(500);


(34)

}; }

Penjelasan program:

a = 0x12 = 0001 0010 b = 0x32 = 0011 0000 --- a & b = 0x10 = 0001 0000

2.2.7 Operator penugasan dan operator majemuk

Operator ini digunakan untuk memberikan nilai atau manipulasi data sebuah variabel. Operator penguasa dapat kita lihat pada tabel di bawah ini:

Tabel 2.9 Operator Penugasan Operator Keterangan

= Memberikan nilai variabel += Menambahkan nilai variabel - = Mengurangi nilai variabel *= Mengalikan nilai variabel

/= Membagi nilai variable %= Memperoleh sisa bagi

Contoh:

a += 2 ; artinya nilai variabel a berubah menjadi a = a + 2 b *= 4; artinya nilai variabel b berubah menjadi b = b * 4


(35)

selain operator penugasan di atas juga ada operator penugasan yang berkaitan dengan operator bitwise seperti pada tabel di bawah ini:

Tabel 2.10 Operator Majemuk

Operator Contoh Arti

&= x &= 1 Variabel x di AND kan dengan 1 |= x |= 1 Variabel x di OR kan dengan 1 ~= x ~= 1 x = ~ (1) ; x = 0xFE

^= x ^= 1 Variabel x di XOR kan dengan 1 <<= x <<= 1 Variabel x digeser kiri 1 kali >>= x >>= 1 Variabel x digeser kanan 1 kali

2.2.8 Operator Penambahan dan Pengurangan

Operator ini digunakan untuk menaikkan atau menurunkan nilai suatu variabel dengan selisih 11. Operator ini dapat dilihat pada tabel di bawah ini:

Tabel 2.11 Operator Penambahan dan Pengurangan

Operator Keterangan

++ Penambahan 1 pada variable -- Pengurangan

Contoh: a = 1; b = 2;


(36)

a ++; b --;

Penjelasan:

Maka operator a++ akan mengubah variabel a dari satu menjadi 2, sedangkan operator B— akan mengubah variabel b dari 2 menjadi 1.

2.2.9 Pernyataan If dan If Bersarang

Pernyataan if digunakan untuk pengambilan keputusan terhadap 2 atau lebih pernyataan dengan menghasilkan pernyataan benar atau salah. Jika pernyataan benar maka akan di jalankan instruksi pada blok nya, sedangkan jika pernyataan tidak benar maka instruksi yang pada blok lain yang dijalankan ( sesuai dengan arah programnya).

Bentuk pernyataan IF adalah sebagai berikut: 1. Bentuk sederhana

if (kondisi){

Pernyataan_1; Pernyataan_2;

...;

}

2. Pernyataan else if (kondisi) {


(37)

Pernyataan_1; ...; }

else {

Pernyataan_2; ...; }

3. If di dalam if

Pernyataan ini sering disebut nested if atau if bersarang. Salah satu bentuknya adalah sebagai berikut:

if (kondisi1)

Pernyataan_1; else if (kondisi2)

pernyataan_2; else if (kondisi3)

pernyataan_3; else

pernyataan;

contoh program: if ( PINA.0 = =1) {


(38)

PORTC = 0xff; }

else {

PORTC = 0x00; }

Penjelasan program:

Jika PINA.0 diberi input logika 1 maka PORTC akan mengeluarkan logika 0xff, jika yang pernyataan yang lain maka PORTC akan mengeluarkan logika 0x00.

2.2.10 Pernyataan Switch

Pernyataan switch digunakan untuk melakukan pengambilan keputusan terhadap banyak kemungkinana. Bentuk pernyataan switch adalah sebagai berikut :

Switch (ekspresi) {

case nilai_1 : pernyataa_1;break; case nilai_2 : pernyataan_2;break; case niai_3 : pernyataan_3;break; …

Defaut : pernyataan_default;break; }

Pada pernyataanswitch,masing-masing pernyataan (pernyataan_1 sampai dengan pernyataan_default) dapat berupa satu atau beberapa perintah dan tidak perlu


(39)

berupa blok pernyataan. Pernyataan_1 akan dikerjakan jika ekspresi bernilai sama dengan nilai_1, pernyataan_2 akan dikerjakan jika ekspresi bernilai sama dengan nilai_2, pernyataan_3 akan dikerjakan jika ekspresi bernilai sama dengan nilai_3 dan seterusnya. Pernyataan_default bersifat opsional, artinya boeh dikerjakan apabila nilai ekspresi tidak ada yang sama satupun dengan salah satu nilai_1, nilai_2, nilai_3 dan seterusnya. Setiap akhir dari pernyataan harus diakhiri dengan break, karena ini digunakan untuk keuar dari pernyataan swich.

Contoh : Switch (PINA) {

case 0xFE : PORT=0x00;break; case 0xFD : PORT=0xFF;break; }

Pernyataan di atas berarti membaca port A, kemudian datanya (PINA) akan dicocokan dengan nilai case. Jika PINA bernilai 0xFE maka data 0x00 akan dikeluarkan ke port C kemudian program keluar dari pernyataan switch tetapi jika PINA bernilai 0xFD maka data 0xFF akan dikeluarkan ke port C kemudian program keluar dari pernyataan switch.

2.2.11 Pernyatan While

Pernyataan while digunakan untuk menguangi sebuah pernyataan atau blok kenyataan secara terus menerus selama kondisi tertentu masih terpenuhi. Bentuk pernyataan while adalah sebagai berikut :


(40)

while (kondisi) {

// sebuah pernyataan atau blok pernyataan }

Jika pernyataan yang akan diulang hanya berupa sebuah pernyataan saja maka tanda { dan } bias dihilangkan.

Contoh :

unsigned char a=0; …..

while (a<10) {

PORT=a; a++; }

Pernyataan di atas akan mengeluarkan data a ke port C secara berulang-ulang. Setiap kali pengulangan nilai a akan bertambah 1 dan setelah nilai a mencapai 10 maka pengulangan selesai.

2.2.12 Pernyataan Do..While

Pernyataan do…while hamper sama dengan pernyataan while, yaitu pernyataan yang digunakan untuk menguangi sebuah pernyataan atau blok pernyataan secara terus menerus selama kondisi tertentu masih terpenuhi. Bentuk pernyataan while adalah sebagai berikut :

do {

// sebuah pernyataan atau blok pernyataan } while (kondisi).


(41)

Yang membedakan antara pernyataan while dengan do..while adalah bahwa pada pernyataan while pengetesan kondisi dilakukan terlebih dahulu, jika kondisi terpenuhi maka barulah blok pernyataan dikerjakan. Sebaliknya pada pernyataan do…while blok pernyataan dikerjakan terebih dahulu setelah itu baru diakukan pengetesan kondisi, jika kondisi terpenuhi maka dilakukan pengulangan pernyataan atau blok pernyataan lagi. Sehingga dengan demikian pada pernyataaan do..while blop pernyataan pasti akan dikerjakan minimal satu kali sedangkan pada pernyataan whilebok pernyataan belum tentu dikerjakan.

2.2.13 Pernyataan For

Pernyataan for juga digunakan untuk melakukan pengulangan sebuah pernyataan atau blok pernyataan, tetapi berapa kali jumah pengulangannya dapat ditentukan secara lebih spesifik. Bentuk pernyataan for adalah sebagai berikut :

for (nilai_awal ; kondisi ; perubahan) {

// sebuah pernyataan atau blok pernyataan }

Nilai_awal adaah nilai inisial awal sebuah variabel yang didefenisikan terlebih dahulu untuk menentukan nilai variabel pertama kali sebelum pengulangan.

Kondisi merupakan pernyataan pengetesan untuk mengontrol pengulangan, jika pernyataan kondisi terpenuhi (benar) maka blok pernyataan akan diulang terus sampai pernyataan kondisi tidak terpenuhi (salah).

Perubahan adalah pernyataan yang digunakan untuk melakukan perubahan nilai variabel baik naik maupun turun setiap kali pengulangan dilakukan.


(42)

Contoh :

unsigned int a;

for ( a=1, a<10, a++) {

PORT=a; }

Pertama kali nilai a adalah 1, kemudian data a dikeluarkan ke port C. selanjutnya data a dinaikkan (a++) jika kondisi a<10 masih terpenuhi maka data a akan terus dikeluarkan ke port C.


(43)

BAB III

PERANCANGAN DAN REALISASI

3.1 Perancangan Blok Diagram

Gambar 3.1 Diagram Blok Rangkaian

3.1.1 Fungsi Tiap Blok

1. Rangkaian catu daya DC 5v(PSA) merupakan rangkaian yang menghasilkan tegangan 5v stabil dan digunakan untuk suplay tegangan sistem

2. Mikrokontroller ATMega8535 merupakan pengendali system

3. RS232 adalah suatu alat yang berguna untuk memindahkan data dari komputer ke mikrokontroller. Komputer akan mengendalikan sistem mikrokontroller dengan aplikasi visual basic 6.0

4. Driver lampu AC adalah rangkaian yang berguna untuk menyalakan dan mematikan lampu AC dengan input data dari mikrokontroller


(44)

3.2 Rangkaian Driver Lampu AC

Pada system ini memerlukan lampu sebagai pengendali lampu pada ruangan. Lampu ini akan dikontrol oleh mikrokontroller, namun karena lampu ini membutuhkan tegangan 220V AC agar berguna maka dibutuhkan rangkaian driver sebagai penjebatan antara mikrokontroller dengan lampu. Rangkaiannya dapat dilihat di bahwah.

Gambar 3.2 Rangkaian Driver Lampu

Pada rangkaian diatas, Pin mikrokontroller dihubungkan ke basis TIP31. Ketika Pin tersebut mengeluarkan logika 1 ( tegangan 5v ) maka transistor TIP 31 aktif, aktif artinya tegangan pada kaki kolektor dilewatkan ke emitor. Kasus ini menyebabkan relay bekrja karena lilitanya dialiri listrik 12V. sehingga lilitan tersebut berubah menjadi magnet, berubahnya menjadi magnet menyebabkan switch tertarik sehigga terhubung lah tegangan 220AC dengan lampu Blue Light, artinya lampu AC menyala. Pengertian proses kerja rangkaian diatas adalah ketika Pin mikrokontroller


(45)

berlogika “1” maka lampu AC menyala dan ketika Pinya berlogia “0” maka lampu mati. Proses ini akan terjadi sesuai dengan program yang di tanamkan pada mikrokontroller nantinya.

3.3 Perancangan Visual Basic 6.0 Untuk Komenikasi Serial

Software visual basic 6.0 dapat digunakan untuk mengontrol port serial. Pengontrolan port serial ini harus menggunakan komponen mscomm32.ocx sehingga fungsi-fungsi serial dapat digunakan.

Fungsi-fungsi ini akan dapat digunakan untuk mengontrol Atmega8535 sehingga sistem yang dirancang ini dapat dikendalikan dengan visual basic. Pemberian komponen mscomm32.ocx ini dapat diliha pada gambar di bawah ini.

Gambar 3.3 Insert Komponen Mscomm32.ocx


(46)

Gambar 3.4 Form VB Serial Sederhana

Lambang telepon pada form vb diatas adalah komponen mscomm.ocx yang berfungsi untuk mengaktifkan fungsi-fungsi serial nanti nya.

Setelah itu isikan programnya ke editor program visual basicnya sebagai berikut: Private Sub Command1_Click()

MSComm1.Output = Chr$(10) End Sub

Private Sub Form_Load() With MSComm1

.CommPort = 1 .PortOpen = True .Settings = "9600,n,8,1" .DTREnable = True .RTSEnable = True End With


(47)

Pengertian program vb diatas adalah ketika vb nya dijalankan maka properti mscomm1 nya akan di setting sebagai berikut

.CommPort = 1 .PortOpen = True .Settings = "9600,n,8,1" .DTREnable = True .RTSEnable = True

Artinya adalah port yang digunakan adalah port1. port nya di aktifkan kemudian baudratenya di tentukan dengan nilai 9600 tanpa paritas dengan 8bit dan jumlah bit stopnya 1.

Kemudian ketika diclik “kirim data serial” maka komputer akan mengirim data 10.

Private Sub Command1_Click() MSComm1.Output = Chr$(10) End Sub

Data yang dikirim komputer ini akan diterima oleh mikrkontroller dan kemudian diterjemahkannya untuk menjalankan printah yang ada di dalam mikrokontroller. Pada sistem yang dirancang, ketika data yang dikirim komputer adalah 10 maka mikrokontroller akan menyalakan semua lampu AC. Dengan demikian program vb dengan komenikasi serial dapat di kembangkan menjadi program seperti dibawah ini:


(48)

3.4 Pembuatan PCB

Dalam pembuatan PCB penulis menggunakan teknik sablon dalam hal ini membutuhkan bahan-bahan sablon. Adapun bahan-bahan utama yang dibutuhkan adalah :

1. Kertas print out PCB 2. Cat PCB

3. Fericlorida 4. Setrika

Setelah bahan-bahan utama sablon disediakan. Maka langkah-langkah yang dilakukan dalam pembuatan PCB dengan cara sablon adalah sebagai berikut:

1. Menggambar rangakaian di komputer supaya kelihatan rapi. 2. Memprint rangkaian ke kertas print out.

3. Membersihkan papan PCB dengan menggunakan kertas pasir agar permukaan papan PCB rata, kemudian papan yang sudah di kertas pasir tadi dicuci dengan sabun detergen agar bersih lalu dikeringkan.

4. Melengketkan gambar rangkaian pada papan PCB, setelah papan PCB sudah kering selanjutnya melengketkan gambar rangkaian dengan cara: kertas print out PCB diletakkan pada papan PCB, sesuai ukurannya, kemudian setrika yang sudah dipanaskan, kemudian digosok perlahan agar gambar rangkaian lengket pada papan PCB.

5. Merendam papan PCB dan kertas print out PCB stelah disablon dengan air bersih.

6. Bersihkan papan PCB stelah disablon, hal yang harus diperhatikan adalah saat kertas print out telah melekat pada papan PCB apakah gambar rangakain sudah


(49)

benar-benar pas, dan tidak ada jalur rangkaian yang short, jika sudah benar semua maka papan PCB sudah dapat dibersihkan dengan sabun detergen. 7. Mencat ulang jalur rangkaian yang kurang jelas, yang dimaksud mencat ulang

adalah apabila pada papan rangkaian ada yang terputus maka dapat diwarnai dengan spidol permanen sehingga jalur rangkaian terhubung dan tak mudah terhapus sehingga sewaktu dilakukan pelarutan pada PCB.

8. Merendam PCB dengan FeCl setelah jalur rangkaian sudah terhubung dengan pas, setelah dilarutkan kemudian dicuci lagi dengan tiner agar cat yang menempel pada papan PCB terlepas.

9. Memprint jalur PCB yang telah jadi dengan tujuan untuk meningkatkan konduktifitas.

3.5 Aplikasi VB Yang Dirancang

Setelah mikrokontroller dprogram dengan program untuk pengujian driver lampu AC maka sekarang adalah bagaimana mengirim data 1,2,3,dan 4 dari computer dengan aplikasi VB.

Untuk merancang itu maka kita gunakan langkah dibawah ini. Masukkan komponen mscomm32.ocx seperti gambar di bawah Ini


(50)

Gambar 3.5 Mengambil Komponen Mscomm32.ocx

3.6 Flowchart Program

sebelum membuat program maka lebih baiknya membuat flowchart programnya terlebih dahulu. Tujuannya adalah memudahkan pembuatan program yang akan dibuat dan memudahkan memahami cara kerja system yang akan dibuat. Flowchart ini juga akan menjadi acuan dalam memprogram system ini.


(51)

Gambar 3.6 Penjelasan Flowchart

Ketika system ini dihidupkan maka mikrokontroller siap menerima data yang akan diterimanya dari computer. Ketika computer mngirimkan data 1 maka mikrokontroller akan menyalakan lampu1. Begitu seterusnya sampai mikrokontroller menerima data 4 yang akan menyalkan lampu 4 oleh mikrokontroller.


(52)

BAB IV

PENGUJIAN DAN ANALISA

Pengujian dilakukan untuk membuktikan apakah rangkaian yang sudah dibuat bekerja sesuai dengan yang direncanakan.

Pertama sekali dilakukan pengujian pada setiap blok nya dan pengujian beberapa blok yang saling berkaitan. Dalam setiap pengujian dilakukan dengan pengukuran dan pemrograman yang nantinya yang akan digunakan untuk menganalisis hardware dan software pendukungnya setelah semua komponen terpasang dan instalasi telah selesai, lalu dilakukan pemeriksaan ulang terhadap jalur PCB, solderan dan pengawatan agar pengujian dilaksanakan dengan ceoat dan baik.

4.1 Analisa Hardware dan Software

4.1.1 Pengujian Driver Relay Untuk Lampu AC

#include <mega8535.h> #include <delay.h>

#define lamp1 PORTB.0 #define lamp2 PORTB.1 #define lamp3 PORTB.2 #define lamp4 PORTB.3

// Declare your global variables here

void main(void) {


(53)

PORTB = 0X00;

DDRB = 0X0F;//PORTB.0-3 SEBAGAI OUPUT

//SETTING FUNGSI SERIAL UCSRA=0x00;

UCSRB=0x18; UCSRC=0x86; UBRRH=0x00;

UBRRL=0x47; //baud rate 9600

while (1) {

// Place your code here

Rx = getchar();//menerima data serial if (rx == 1) lamp1 = 1;

if (rx == 2) lamp2 = 1; if (rx == 3) lamp3 = 1; if (rx == 4) lamp3 = 1; delay_ms(250);

}; }

Analisa program diatas

#include <mega8535.h> adalah bahwa program ini ditujukan ke mikrokontroller ATmega <delay.h> adalah bahwa mengaktifkan fungsi waktu pada program,

unsigned char rx; adalah membuat variable “rx” dengan tipe data char. Tipe datanya char karena variable ini berguna untuk menyimpan data serial yang dikirim dari computer yang tipe datanya adalah karakter.


(54)

PORTB = 0X00;

DDRB = 0X0F;//PORTB.0-3 SEBAGAI OUPUT

Mengaktifkan PORTB.0-PORTB.3 digunakan sebagai output dan diberikan output 00. //SETTING FUNGSI SERIAL

UCSRA=0x00; UCSRB=0x18; UCSRC=0x86; UBRRH=0x00;

UBRRL=0x47; //baud rate 9600

Program di atas digunakan untuk mengaktifkan fungsi serial yang mana settingannya akan sama dengan settingan serial yang ada pada computer. Settingannya adalah 9600,n,8,1.

Rx = getchar();//menerima data serial if (rx == 1) lamp1 = 1;

if (rx == 2) lamp2 = 1; if (rx == 3) lamp3 = 1; if (rx == 4) lamp3 = 1;

jika data rx yang diterima adalah 1 maka lampu1 akan dinyalakan. Jika data rx yang diterima adalah 2 maka lampu2 akan dinyalakan

Begitu juga dengan data 3 yang akan menyelakan lampu3 dan data 4 akan dinyalakan lamp4


(55)

4.1.2 Analisa program vb yang dirancang

Gambar 4.1 Gambar Form Pengujian VB

Pada setiap tombol perintah di program vb memeliki data serial yang berbeda yang akan dikirimkan ke mikrokontroller.

Pada tombol ‘hidupkan semua lampu’ memiliki data ‘10’ dengan bahasa program mscomm1.ouput = chr$(10).

Pada tombol ‘lamp1 – lamp4 memiliki data 1-4 dengan bahasa program yang sama yaitu mscomm1.ouput = chr$(1) ---- mscomm1.ouput = chr$(4)

Dan pada tombol ‘matikan semua lampu mempunyai data serial ‘0’ dengan program mscomm1.ouput=chr$(0)

Ketika salah satu tombol di atas di clik maka computer akan mengirimkan data serial sesuai data serial yang akan dia terima.

Program keseluruhan dari aplikasi vb diatas adalah sebagai berikut

Private Sub cmd1_Click() MSComm1.Output = Chr$(10) End Sub


(56)

Private Sub cmd2_Click() MSComm1.Output = Chr$(1) End Sub

Private Sub cmd3_Click() MSComm1.Output = Chr$(2) End Sub

Private Sub cmd4_Click() MSComm1.Output = Chr$(3) End Sub

Private Sub cmd5_Click() MSComm1.Output = Chr$(4) End Sub

Private Sub cmd6_Click() MSComm1.Output = Chr$(0) End Sub

Private Sub Form_Load()

With MSComm1 .CommPort = 1 .PortOpen = True .DTREnable = True .RTSEnable = True

End With End Sub


(57)

Jadi untuk menunjukkan program ini berhasil maka di hubungkan computer dengan mikrokontroller dengan rs232 (serial to usb) sehingga ketika diclik tombol lamp1 maka lampu 1 pada system menyala. Begitu juga dengan tombol-tombol lainnya.


(58)

BAB V

KESIMPULAN DAN SARAN

5.1 Kesimpulan

1. Sistem pengendalian lampu ruangan dengan PC berbasis Ic Atmega8535 telah dirancang. Sistem tersebut dibuat dengan alat bantu computer dengan bahasa pemrograman C dan Visual Basic. Dimana program dapat diaplikasikan untuk interface antara computer dengan peralatan rumah tangga.

2. Sistem yang telah dirancang memiliki pengontrolan secara otomatis yaitu menghidupkan dan mematikan lampu dengan menggunakan system waktu atau timer.

Penjelasan prinsip kerjanya:

Ketika system ini dihidupkan maka mikrokontroller siap menerima data yang dikirim dari computer. Ketika computer mengirim Data1 maka mikrokontroller akam mengendalikan lampu1. Begitu seterusnya sampai mikrokontroller menerima Data2, Data3 dan Data4 yang dikirim melalui computer maka mikrokontroller akan mengendalika Lampu2, lampu3 dan Lampu4. Visula Basic pada system ini untuk menyalakan dan mematikan lampu secara otomatis dengan system timer. Pada visual basic memiliki system waktu atau timer, jadi untuk menghidupkan dan mematikan lampu kita tinggal memasukkan waktu untuk menghidupkan lampu dan waktu untuk mematikan lampu.


(59)

5.2 Saran

1. Sebaiknya lebih berhati-hati dalam penempatan komponen-komponen. 2. Alat ini masih memiliki kekurangan sehingga diperlukan pengembangan

lebih lanjut.

3. Alangkah baiknya jika alat ini dimanfaatkan dan disosialisasikan kegunaannya dikalangan mahasiswa, guna mengembangkan inovasi dan teknologi di kalangan mahasiswa.

4. Agar sistem atau rangkaian yang digunakan tidak terganggu, sebaiknya alat ini dirangkai dalam bentuk yang lebih aman dan terlindungi, sehingga penggunaannya lebih efektif.


(60)

DAFTAR PUSTAKA

Andi, Nalwan Paulus. 2004. Panduan Praktis Penggunaan dan Antarmuka Modul LCD M1632. Jakarta: PT. Elex Media Komputindo.

Bejo, Agus. 2005. C & AVR Rahasia Kemudahan Bahasa C dalam Mikrokontroler ATMega8535. Edisi Pertama. Yogyakarta: Penerbit Gava Media.

Budiharto, Widodo. 2005. Panduan Lengkap Belajar Mikrokontroler Perancangan Sistem dan Aplikasi Mikrokontroler. Jakarta: PT Elex media Komputindo.

Elektur, 1996. 302 Rangkaian Elektronika. Penerjemah P.Pratomo dkk. Jakarta: Percetakan PT.Gramedia.

Lingga, W. 2006. Belajar sendiri Pemrograman AVR ATMega8535. Yogyakarta: Andi Offset.


(61)

(62)

PROGRAM MIKROKONTROLLER

#include <mega8535.h> #include <delay.h>

// Alphanumeric LCD Module functions #asm

.equ __lcd_port=0x15 ;PORTC #endasm

#include <lcd.h>

// Standard Input/Output functions #include <stdio.h>

#define lamp1 PORTB.0 #define lamp2 PORTB.1 #define lamp3 PORTB.2 #define lamp4 PORTB.3

// Declare your global variables here void main(void)

{

// Declare your local variables here unsigned char rx;

unsigned char buf[16]; PORTB = 0X00;

DDRB = 0X0F;

UCSRA=0x00;

UCSRB=0x18; UCSRC=0x86; UBRRH=0x00;

UBRRL=0x47; //baud rate 9600 // LCD module initialization lcd_init(16);

while (1) {

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

lcd_putsf("TA DILA");

rx = getchar();

sprintf(buf,"Lamp %u aktif",rx); lcd_gotoxy(0,1);

lcd_puts(buf);

if(rx == 1)lamp1 = 1; if(rx == 11)lamp1 = 0;

if(rx == 2)lamp2 = 1; if(rx == 12)lamp2 = 0;


(63)

if(rx == 3)lamp3 = 1; if(rx == 13)lamp3 = 0;

if(rx == 4)lamp4 = 1; if(rx == 14)lamp4 = 0;

if(rx == 0)PORTB = 0X00; if(rx == 10)PORTB = 0XFF;

delay_ms(250); lcd_clear();

}; }


(64)

PROGRAM VISUAL BASIC

Dim lampu As Boolean

Dim lamp1 As Boolean, lamp2 As Boolean, lamp3 As Boolean, lamp4 As Boolean, waktu As Boolean, waktu2 As Boolean

Private Sub cmd_lamp_Click() If lampu = True Then

cmd_lamp.Caption = "LAMPU MENYALA SEMUA" MSComm1.Output = Chr$(10)

lampu = False Else

cmd_lamp.Caption = "LAMPU MATI SEMUA" lampu = True

MSComm1.Output = Chr$(0) End If

End Sub

Private Sub CMDLAMP_Click() If lampu = True Then

cmdlamp.Caption = "PADAM SEMUA" MSComm1.Output = Chr$(0)

lampu = False Else

cmdlamp.Caption = "NYALA SEMUA" lampu = True


(65)

End If End Sub

Private Sub cmdlamp1_Click() If lamp1 = True Then

cmdlamp1.Caption = "LAMP1 NYALA" MSComm1.Output = Chr$(1)

lamp1 = False

Else

cmdlamp1.Caption = "LAMP1 MATI" MSComm1.Output = Chr$(11)

lamp1 = True End If

End Sub

Private Sub cmdlamp2_Click() If lamp2 = True Then

cmdlamp2.Caption = "LAMP2 NYALA" MSComm1.Output = Chr$(2)

lamp2 = False

Else

cmdlamp2.Caption = "LAMP2 MATI" MSComm1.Output = Chr$(12)

lamp2 = True

End If End Sub


(66)

Private Sub cmdlamp3_Click() If lamp3 = True Then

cmdlamp3.Caption = "LAMP3 NYALA" MSComm1.Output = Chr$(3)

lamp3 = False Else

cmdlamp3.Caption = "LAMP3 MATI" MSComm1.Output = Chr$(13)

lamp3 = True End If

End Sub

Private Sub cmdlamp4_Click() If lamp4 = True Then

cmdlamp4.Caption = "LAMP4 NYALA" MSComm1.Output = Chr$(4)

lamp4 = False

Else

cmdlamp4.Caption = "LAMP4 MATI" MSComm1.Output = Chr$(14)

lamp4 = True

End If


(67)

Private Sub cmdrfs_Click() lampu = False

lamp1 = False lamp2 = False lamp3 = False lamp4 = False waktu = False waktu2 = False End Sub

Private Sub cmdwaktu_Click() If waktu = True Then

cmdwaktu.Caption = "TIDAK AKTIF" waktu = False

Else

cmdwaktu.Caption = "AKTIF" waktu = True

End If

End Sub

Private Sub cmdwaktu2_Click() If waktu2 = True Then

cmdwaktu2.Caption = "TIDAK AKTIF" waktu2 = False

Else


(68)

waktu2 = True End If

End Sub

Private Sub Form_Load()

lampu = False lamp1 = False lamp2 = False lamp3 = False lamp4 = False waktu = False waktu2 = False

With MSComm1 .CommPort = 1 .PortOpen = True .DTREnable = True .RTSEnable = True End With

End Sub

Private Sub Timer1_Timer() lblwaktu.Caption = Time

If txtwaktu.Text = lblwaktu.Caption And waktu = True Then MSComm1.Output = Chr$(0)

End If End Sub


(69)

If txtwaktu2.Text = lblwaktu.Caption And waktu2 = True Then MSComm1.Output = Chr$(10)

End If End Sub


(70)

(71)

(72)

(1)

Private Sub cmdrfs_Click() lampu = False

lamp1 = False lamp2 = False lamp3 = False lamp4 = False waktu = False waktu2 = False End Sub

Private Sub cmdwaktu_Click() If waktu = True Then

cmdwaktu.Caption = "TIDAK AKTIF" waktu = False

Else

cmdwaktu.Caption = "AKTIF" waktu = True

End If

End Sub

Private Sub cmdwaktu2_Click() If waktu2 = True Then

cmdwaktu2.Caption = "TIDAK AKTIF" waktu2 = False

Else


(2)

waktu2 = True End If

End Sub

Private Sub Form_Load()

lampu = False lamp1 = False lamp2 = False lamp3 = False lamp4 = False waktu = False waktu2 = False

With MSComm1 .CommPort = 1 .PortOpen = True .DTREnable = True .RTSEnable = True End With

End Sub

Private Sub Timer1_Timer() lblwaktu.Caption = Time

If txtwaktu.Text = lblwaktu.Caption And waktu = True Then MSComm1.Output = Chr$(0)

End If End Sub


(3)

If txtwaktu2.Text = lblwaktu.Caption And waktu2 = True Then MSComm1.Output = Chr$(10)

End If End Sub


(4)

(5)

(6)