PERANCANGAN SOLAR CHARGE CONTROLLER DAN
INVERTER PADA APLIKASI SOLAR PANEL
BERBASIS ATMEGA 8535
SECARA SOFTWARE
TUGAS AKHIR
DEVI LARASATI
112408023
PROGRAM STUDI D-3 FISIKA
DEPARTEMEN FISIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS SUMATERA UTARA
PERANCANGAN SOLAR CHARGE CONTROLLER DAN
INVERTER PADA APLIKASI SOLAR PANEL
BERBASIS ATMEGA 8535
SECARA SOFTWARE
TUGAS AKHIR
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh Ahli Madya
DEVI LARASATI
112408023
PROGRAM STUDI D-3 FISIKA
DEPARTEMEN FISIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS SUMATERA UTARA
PERSETUJUAN
Judul : Perancangan Solar Charge Controller dan Inverter
pada Aplikasi Solar Panel Berbasis Atmega8535 secara Software
Kategori : Tugas Proyek
Nama : Devi Larasati
Nomor Induk Mahasiswa : 112408023
Program Studi : Diploma 3 ( D-3) Fisika Departemen : Fisika
Fakultas : Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara
Disetujui di Medan, Juli 2014
Disetujui Oleh
Prodi D-3 Fisika FMIPA USU Pembimbing, Ketua,
PERNYATAAN
PERANCANGAN SOLAR CHARGE CONTROLLER DAN INVERTER PADA APLIKASI SOLAR PANEL BERBASIS ATMEGA8535 SECARA SOFTWARE
TUGAS AKHIR
Saya mengakui bahwa tugas akhir ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.
Medan, Juli 2014
PENGHARGAAN
Alhamdulillahirobbil’alamin,
Segala puji dan syukur bagi Allah Subhanahuwata’ala yang telah melimpahkan barokah, rahmat, hidayah-Nya dan menganugerahkan kemudahan serta kelancaran
sehingga penulis dapat menyelesaikan penulisan tugas proyek ini sesuia waktu yang telah
ditetapkan. Sholawat dan salam semoga senantiasa tercurahkan kepada Rasulullah
Sallallahu’alaihiwassalam sang pembawa petunjuk dan selalu menjadi inspirasi dan teladan bagi penulis.
Tugas Akhir ini disusun untuk melengkapi persyaratan dalam mencapai gelar Ahli
Madya pada Program Studi Diploma Tiga Fisika Departemen Fisika Fakultas Matematika
dan Ilmu Pengetahuan Alam Universitas Sumatera Utara.
Adapun judul Tugas Proyek ini adalah
PERANCANGAN SOLAR CHARGE CONTROLLER DAN INVERTER PADA APLIKASI SOLAR PANEL BERBASIS ATMEGA8535 SECARA SOFTWARE
Penulis menyadari bahwa tersusunnya Tugas Akhir ini dari Do’a, perhatian,
bimbingan, motivasi dan dukungan berbagai pihak, sehingga dengan keikhlasan dan
kerendahan hati pada kesempatan ini penulis mengucapkan terima kasih yang
sebesar-besarnya kepada :
1. Kedua orang tua penulis serta saudara kandung yang telah memberikan bantuan
moril maupun materil, semangat dan do’a yang begitu besar kepada penulis.
2. Ibu Dr. Susilawati, M.Si, selaku Ketua Program Studi D-3 Fisika Fakultas
Matematika dan Ilmu Pengetahuan Alam.
3. Bapak Drs. Perdinan Sinuhaji, M.S, selaku Sekretaris Program Studi D-3 Fisika
Fakultas Matematika dan Ilmu Pengetahuan Alam.
4. Bapak Dr. Tulus Ikhsan Nst, S.Si, M.Sc selaku dosen pembimbing, yang telah
banyak membantu dan mendukung penulis dalam menyelesaikan Tugas Akhir ini.
5. Seluruh Dosen dan Karyawan Program Studi D-3 Fisika Departemen Fisika
Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara.
6. Seluruh pihak yang telah banyak membantu penulis didalam menyelesaikan Tugas
Penulis menyadari sepenuhnya bahwa dalam pembuatan Tugas Akhir ini masih
jauh dari kesempurnaan, untuk itu penulis mengharapkan kritik dan saran dari pembaca
yang bersifat ny membangun dalam penyempurnaan Tugas Akhir ini.
Semoga laporan ini menjadi ibadah yang baik bagi penulis dan menjadi ilmu yang
bermanfaat bagi pembaca.
Amin Yaa Rabbal’alamin
Medan, Juli 2014
PERANCANGAN SOLAR CHARGE CONTROLLER DAN INVERTER PADA APLIKASI SOLAR PANEL BERBASIS ATMEGA8535 SECARA SOFTWARE
ABSTRAK
Tujuan pembuatan tugas akhir ini adalah untuk mengaplikasikan Codevision AVR pada ATMega 8535 untuk mengolah data pengisian arus pada baterai aki dari solar panel. Nilai arus yang diolah pada mikrokontroler merupakan arus yang di deteksi dengan menggunakan sensor arus ACS-712. Untuk menghindari terjadinya arus balik dari baterai aki ke solar panel ketika tegangan solar panel lebih kecil daripada tegangan baterai aki, arus dari solar panel dialirkan melalui solar charge controller sebelum ke baterai aki.
Codevision AVR merupakan software untuk membuat program berbasis bahasa C yang kemudian dimasukkan ke dalam mikrokontroler. Program yang di compile pada Codevision AVR, itulah yang di eksekusi oleh mikrokontroler.
Pada alat ini, program yang dibuat adalah untuk mengontrol pengisian baterai aki oleh solar panel dan menginstruksikan mikrokontroler untuk memutus pengisian pada tegangan yang terbaca oleh mikrokontroler bernilai maksimum sesuai dengan program yang dimasukkan.
PERANCANGAN SOLAR CHARGE CONTROLLER DAN INVERTER PADA APLIKASI SOLAR PANEL BERBASIS ATMEGA8535 SECARA SOFTWARE
ABSTRACT
The purpose of this final project is to apply the codevision AVR ATMega 8535 to process the data on the storage accumulator battery charging current from the solar panels. Value current is processed in the microcontroller is in the current detection using current sensor ACS-712. To prevent backflow from batteries to solar panels when the solar panel voltage is less than accumulator battery voltage, current flows from the solar panels through solar charge controller to the battery before.
Codevision AVR is a software to create a program based on the C language which are then loaded into the microcontroller. Programs that are compiled on codevision AVR, that is executed by the microcontroller.
In this tool, programs are created to control the accumulator battery charging by solar panels and instruct the microcontroller to decide on the charging voltage is read by the microcontroller according to the maximum value-added programs.
DAFTAR ISI
Halaman
Persetujuan i
Pernyataan ii
Penghargaan iii
Abstrak v Abstract vi Daftar Isi vii
Daftar Tabel x
Daftar Gambar xi Bab I Pendahuluan ……… 1
1.1. Latar Belakang ……… 1
1.2. Rumusan Masalah ……… 2
1.3. Tujuan Penulisan ……… 2
1.4. Batasan Masalah ……… 3
1.5. Metodologi Penulisan ……… 3
1.6. Sistematika Penulisan ……… 4
Bab II Landasan Teori ……… 5
2.1. Solar Panel ……… 5
2.2. Solar Charger Controller ……… 6
2.2.1. Mikrokontroller ATMega 8535 ……… 8
2.2.1.1. Fitur ATMega8535 ……… 9
2.2.1.2. Konfigurasi Pin ATMega 8535 ……… 10
2.2.1.3. Peta Memori ATMega 8535 ……… 14
2.2.1.4. Status Register (SREG) ATMega8535 …… 16
2.2.2. Sensor Arus ACS-712 ……… 17
2.2.3. LCD ……… 19
2.2.4. Bahasa Pemograman Mikrokontroler ……… 21
2.2.5.1Pendahuluan ……… 22
2.2.5.2. Pengenal Pada Bahasa C ……… 22
2.2.5.3. Tipe Data ……… 23
2.2.5.4. Header ……… 26
2.2.5.5. Operator Aritmatika ……….... 26
2.2.5.6. Operator Pembanding ……… 28
2.2.5.7. Operator Logika ……… 28
2.2.5.8. Operator Bitwise ……… 30
2.2.5.9. Operator Penugasan dan Operator Majemuk ……… 31
2.2.5.10. Operator Penambahan dan Pengurangan ……… 32
2.2.5.11. Pernyataan If dan If Bersarang ……….... 33
2.2.5.12. Pernyataan Switch ……… 35
2.2.5.13. Pernyataan While ……… 36
2.2.5.14. Pernyataan Do..While ……… 37
2.2.5.15. Pernyataan For ……… 38
2.2.6. Software ATMega8535 Editor dan Simulator ……… 39
2.2.6.1. Software ATMega8535 Editor ……….... 39
2.2.6.2. Software Downloader ……….... 39
2.2.6.3. Software Desain PCB Eagle 4.13r ……… 40
2.2.7. Pembagi Tegangan (Voltage Divider) ………...… 41
2.2.8. Relay ……… 42
2.2.9. Baterai Aki ……… 44
2.3. Inverter ……… 45
2.3.1. Transformator ……… 46
2.3.2. Transistor Mosfet IRFz44 ……… 48
Bab III Perancangan Sistem ……… 50
3.1. Diagram Blok Sistem ……… 50
3.2. Rangkaian Mikrokontroller ATMega8535 ……… 52
3.3. Perancangan Rangkaian LCD (Liquid Crystal Display) ……… 53
3.4. Perancangan Sensor Tegangan ……… 54
3.6. Perancangan Inverter ……… 58
3.7. Flow Chart Program ……… 60
Bab IV Pengujian Rangkaian ……… 62
4.1. Pengujian Rangkaian Mikrokontroller ATMega 8535 ……… 62
4.2. Pengujian Rangkaian LCD ……… 63
4.3. Pengujian Sensor Tegangan ……… 63
4.4. Pengujian Sensor Arus ……… 68
4.5. Pengujian Inverter ……… 68
4.6. Pengujian Lama Waktu Pengisian Baterai Aki ……… 69
4.7. Program Code-Vision AVR ……… 71
Bab V Penutup ……… 82
5.1. Kesimpulan ……… 82
5.2. Saran ……… 82
DAFTAR TABEL
Halaman
Tabel 2.1 Penjelasan Pin pada Port B 12
Tabel 2.2 Penjelasan Pin pada Port D 13
Tabel 2.3 Tipe Data 24
Tabel 2.4 Operator Aritmatika 27
Tabel 2.5 Operator Pembanding 28
Tabel 2.6 Operator Logika 28
Tabel 2.7 Operator Bitwise 30
Tabel 2.8 Operator Penugasan 31
Tabel 2.9 Operator Majemuk 32
Tabel 2.10 Operator Penambahan dan Pengurangan 32
Tabel 4.1. Pengujian Sensor Tegangan pada Solar Panel dengan Baterai Aki 64 Tabel 4.2. Pengujian Sensor Tegangan pada Solar Panel 66
Tabel 4.3 Data pengujian sensor arus ACS712 68
Tabel 4.4. Data Pengujian Inverter 69
DAFTAR GAMBAR
Halaman
Gambar 2.1 Konfigurasi Pin ATmega8535 PDIP 11
Gambar 2.2 Peta Memori Program 14
Gambar 2.3 Peta Memori Data 15
Gambar 2.4 EEPROM Data Memory 15
Gambar 2.5 Status Register ATMega 8535 16
Gambar 2.6 Sensor Arus ACS712 18
Gambar 2.7 LCD 20
Gambar 2.8 Tampilan Code Vision AVR 39
Gambar 2.9 Tampilan Ponyprog2000 40
Gambar 2.10 Tampilan software Eagle 4.13r 40
Gambar 2.11 Rangkaian Pembagi Tegangan 41
Gambar 2.12 Relay 43
Gambar 2.13 Baterai Aki Basah 45
Gambar 2.14 Trafo 46
Gambar 2.15 Hubungan Primer – Sekunder 47
Gambar 2.16 IRFz44 49
Gambar 3.1 Diagram Blok Sistem 50
Gambar 3.2 Rangkaian Sistem Minimum Mikrokontroler ATMEGA 8535 52
Gambar 3.3 Rangkaian LCD 54
Gambar 3.4 Rangkaian Sensor Tegangan 54
Gambar 3.5 Rangkaian Aplikasi Sensor Arus ACS 712 ,5 Ampere 57 Gambar 3.6 Konfigurasi Pin LM321 dan Rangkaian Inverting Amplifier 57
Gambar 3.7 Rangkaian inverter 59
PERANCANGAN SOLAR CHARGE CONTROLLER DAN INVERTER PADA APLIKASI SOLAR PANEL BERBASIS ATMEGA8535 SECARA SOFTWARE
ABSTRAK
Tujuan pembuatan tugas akhir ini adalah untuk mengaplikasikan Codevision AVR pada ATMega 8535 untuk mengolah data pengisian arus pada baterai aki dari solar panel. Nilai arus yang diolah pada mikrokontroler merupakan arus yang di deteksi dengan menggunakan sensor arus ACS-712. Untuk menghindari terjadinya arus balik dari baterai aki ke solar panel ketika tegangan solar panel lebih kecil daripada tegangan baterai aki, arus dari solar panel dialirkan melalui solar charge controller sebelum ke baterai aki.
Codevision AVR merupakan software untuk membuat program berbasis bahasa C yang kemudian dimasukkan ke dalam mikrokontroler. Program yang di compile pada Codevision AVR, itulah yang di eksekusi oleh mikrokontroler.
Pada alat ini, program yang dibuat adalah untuk mengontrol pengisian baterai aki oleh solar panel dan menginstruksikan mikrokontroler untuk memutus pengisian pada tegangan yang terbaca oleh mikrokontroler bernilai maksimum sesuai dengan program yang dimasukkan.
PERANCANGAN SOLAR CHARGE CONTROLLER DAN INVERTER PADA APLIKASI SOLAR PANEL BERBASIS ATMEGA8535 SECARA SOFTWARE
ABSTRACT
The purpose of this final project is to apply the codevision AVR ATMega 8535 to process the data on the storage accumulator battery charging current from the solar panels. Value current is processed in the microcontroller is in the current detection using current sensor ACS-712. To prevent backflow from batteries to solar panels when the solar panel voltage is less than accumulator battery voltage, current flows from the solar panels through solar charge controller to the battery before.
Codevision AVR is a software to create a program based on the C language which are then loaded into the microcontroller. Programs that are compiled on codevision AVR, that is executed by the microcontroller.
In this tool, programs are created to control the accumulator battery charging by solar panels and instruct the microcontroller to decide on the charging voltage is read by the microcontroller according to the maximum value-added programs.
BAB I PENDAHULUAN
1.1. Latar Belakang
Beberapa jenis teknologi telah banyak diciptakan oleh manusia untuk
dapat mempermudah manusia dalam melakukan pekerjaannya. Sebagai salah satu
teknologi yang berkembang adalah teknologi dibidang solar cell. Menggunakan
solar cell dalam kehidupan sehari-hari bisa mengurangi biaya listrik di rumah.
Solar cell ini menggunakan energi yang tidak pernah habis dan gratis yaitu cahaya
matahari.
Matahari merupakan sumber energi yang diharapkan dapat mengatasi
permasalahan kebutuhan energi masa depan setelah berbagai sumber energi
konvensional berkurang jumlahnya serta tidak ramah terhadap lingkungan. Jumlah
energi yang begitu besar yang dihasilkan dari sinar matahari, membuat solar cell
menjadi alternatif sumber energi masa depan yang sangat menjanjikan. Solar cell
juga memiliki kelebihan menjadi sumber energi yang praktis mengingat tidak
membutuhkan transmisi karena dapat dipasang secara modular di setiap lokasi
yang membutuhkan dan sistem solar cell juga sangat bersih dan ramah
lingkungan. Jadi, sekali beli atau invest bisa menikmati untuk bertahun-tahun.
Dapat di lihat berapa alat di rumah yang tidak bisa berjalan tanpa listrik. Mulai
dari TV, DVD, kipas angin, AC hingga kulkas semuanya menggunakan listrik.
Jika tidak bisa mengatur dan berhemat, pengeluaran untuk listrik bisa sangat
besar. Menggunakan solar cell ini akan banyak membantu untuk memperkecil
Untuk lebih mengoptimalkan pemanfaatan dari sumber energi matahari
(solar cell), maka dalam laporan tugas akhir ini penulis membuat sistem
perancangan solar charge controller dan inverter. Sistem solar cell yang
digunakan terdiri dari panel solar cell, rangkaian kontroler pengisian (charge
controller) dan baterai aki 12 volt. Konsepnya cukup sederhana yaitu mengubah
cahaya matahari menjadi tegangan listrik. Tegangan listrik yang dihasilkan dari
panel solar cell masuk kedalam charge controller yang dideteksi arus listriknya
oleh sensor arus ACS-712. Arus yang dideteksi oleh sensor arus akan berbanding
lurus dengan tegangan output dari sensor arus dan ditampilkan pada LCD. Setelah
masuk ke dalam charge controller, arus listrik tersebut kemudian masuk ke dalam
baterai aki. Setelah proses pengisian berlangsung selama beberapa jam, tegangan
baterai aki akan naik. Bila tegangan baterai aki itu telah mencapai 12 volt, maka
charge controller akan menghentikan proses pengisian baterai aki.
1.2. Rumusan Masalah
Laporan tugas akhir ini membahas tentang:
1. Bagaimana merencanakan dan membuat suatu alat yang dapat mengontrol
pengisian arus pada aki baterai ?
2. Bagaimana merencanakan dan membuat suatu alat untuk menghidupkan
perangkat AC dengan sumber DC ?
1.3. Tujuan Penulisan
1. Sebagai salah satu syarat untuk dapat menyelesaikan program Diploma III
Fisika FMIPA Universitas Sumatera Utara
2. Pengembangan kreatifitas mahasiswa dalam bidang ilmu instrumentasi
pengontrolan dan elektronika sebagai bidang diketahui.
3. Memberikan penjelasan tentang Codevision AVR untuk mengaktifkan
Mikrokontroler ATMega8535 dalam pengolahan data arus terukur pada
solar panel dan baterai aki.
1.4. Batasan Masalah
Adapun batasan masalah dalam laporan tugas akhir ini adalah :
1. Pembahasan mikrokontroler ATMega 8535.
2. Sensor yang digunakan adalah Sensor Arus ACS712
3. Program yang digunakan adalah Codevision AVR.
4. Sistem solar charge controller hanya melakukan pengisian pada baterai 12
V dan solar panel yang digunakan hanya 10 Watt.
1.5. Metodologi Penulisan
Adapun metode penulisan yang digunakan dalam menyusun dan menganalisa
tugas akhir ini adalah:
1. Studi literatur yang berhubungan dengan perancanangan dan pembuatan
alat ini.
2. Perencanaan dan pembuatan alat
Merencanakan peralatan yang telah dirancang baik software maupun
3. Pengujian alat
Peralatan yang telah dibuat kemudian diuji apakah telah sesuai yang telah
direncanakan.
1.6. Sistematika Penulisan
Sistematika penulisan dalam tugas akhir ini terdiri dari 5 bab, yaitu:
BAB I : PENDAHULUAN
Berisi latar belakang permasalahan, rumusan masalah, batasan masalah, tujuan
pembahasan, metodologi pembahasan, dan sistematika penulisan dari penulisan
laporan proyek ini.
BAB II : LANDASAN TEORI
Membahas tentang solar panel, solar charge controller, mikrokontroller, sensor
arus, inverter dan alat – alat pendukung lainnya.
BAB III : PERANCANGAN SISTEM
Membahas tentang perencanaan dan pembuatan sistem secara keseluruhan.
BAB IV : PENGUJIAN RANGKAIAN
Berisi tentang uji coba alat yang telah dibuat, pengoperasian dan spesifikasi alat.
BAB V : PENUTUP
Merupakan kesimpulan dari pembahasan pada bab-bab sebelumnya dan
BAB II
LANDASAN TEORI
Landasan teori sangat membantu untuk dapat memahami suatu sistem.
Selain dari pada itu dapat juga dijadikan sebagai bahan acuan didalam
merencanakan suatu sistem. Dengan pertimbangan hal-hal tersebut, maka
landasan teori merupakan bagian yang harus dipahami untuk pembahasan
selanjutnya. Pengetahuan yang mendukung perencanaan dan realisasi alat meliputi
solar charge controller dan inverter.
2.1. Solar Panel
Solar Cell adalah salah satu jenis sensor cahaya photovoltaic, yaitu sensor
yang dapat mengubah intensitas cahaya menjadi perubahan tegangan pada
outputnya. Apabila solar cell menerima pancaran cahaya maka pada kedua
terminal outputnya akan keluar tegangan DC sebesar 0,5 volt hingga 0,5 volt.
Dalam aplikasinya solar cell lebih sering digunakan sebagai pembangkit listrik
DC tenaga surya (matahari).
Jumlah energi yang begitu besar yang dihasilkan dari sinar matahari,
membuat solar cell menjadi alternatif sumber energi masa depan yang sangat
menjanjikan. Solar cell juga memiliki kelebihan menjadi sumber energi yang
praktis mengingat tidak membutuhkan transmisi karena dapat dipasang secara
Solar Panel merupakan modul yang terdiri beberapa solar cell yang
digabung dalam hubungkan seri dan paralel tergantung ukuran dan kapasitas yang
diperlukan. Yang sering digunakan adalah modul solar cell 20 watt atau 30 watt.
Modul solar cell itu menghasilkan energi listrik yang proporsional dengan luas
permukaan panel yang terkena sinar matahari.
2.2. Solar Charge Controller
Solar charge controller adalah komponen penting dalam Pembangkit
Listrik Tenaga Surya. Pada dasarny
mengatur voltage yang didapat dari panas matahari agar voltage yang masuk
kedalam aki menjadi tidak berlebih. Beberapa fungsi dari solar charge controller
adalah (a) Mengatur arus untuk pengisian ke baterai, menghindari overcharging
dan overvoltage, (b) Mengatur arus yang dibebaskan/diambil dari baterai agar
baterai tidak full discharge, dan overloading dan (c) Monitoring temperatur
baterai.
Solar charge controller yang baik biasanya mempunyai kemampuan
mendeteksi kapasitas baterai. Bila baterai sudah penuh terisi maka secara otomatis
pengisian arus dari panel surya berhenti. Cara deteksi adalah melalui monitor
level tegangan tertentu, kemudian apabila level tegangan turun maka baterai akan
diisi kembali. Solar charge controller biasanya terdiri dari : 1 input (2 terminal)
yang terhubung dengan output panel sel surya, 1 output (2 terminal) yang
terhubung dengan baterai/aki dan 1 output (2 terminal yang terhubung dengan
sel surya karena biasanya ada diode protection yang hanya dilewati arus listrik
DC dari panel sel surya ke baterai, bukan sebaliknya.
Cara kerja solar charge controller antara lain: (a) Charging Mode Solar
Charge Controller dan (b) Mode Operasi Solar Charge Controller.
1. Charging Mode Solar Charge Controller
Dalam charging mode, umumnya baterai diisi dengan metoda three
stage charging:
a. Fase bulk : baterai akan di-charge sesuai dengan tegangan setup (bulk)
antara 14,4 – 14,6 Volt) dan arus diambil secara maksimun dari panel
surya. Pada saat baterai sudah pada tegangan setup (bulk) dimulailah fase
absorption.
b. Fase absorption : pada fase ini, tegangan baterai akan dijaga sesuai
dengan tegangan bulk, sampai solar charge controller timer (umumnya
satu jam) tercapai, arus yang dialirkan menurun sampai tercapai
kapasitas dari baterai.
c. Fase float : baterai akan dijaga pada tegangan float setting (umumnya
13,4-13,7 Volt). Beban yang terhubung ke baterai dapat menggunakan
arus maksimun dari panel surya pada stage ini.
2. Mode Operation Solar Charge Controller
Pada mode ini, baterai akan melayani beban. Apabila ada over-discharge
ataun over-load, maka baterai akan dilepaskan dari beban. Hal ini berguna
2.2.1. Mikrokontroler ATMega 8535
Mikrokontroler merupakan sebuah single chip yang didalamnya telah
dilengkapi dengan CPU (Central Processing Unit), RAM (Random Access
Memori), ROM (Read Only Memori), Input dan Output, Timer/Counter, Serial
com port secara spesifik digunakan untuk aplikasi – aplikasi kontrol dan aplikasi
serbaguna. Perangkat ini sering digunakan untuk kebutuhan kontrol tertentu
seperti pada sebuah penggerak motor. Read Only Memori (ROM) yang isinya
tidak berubah meskipun IC kehilangan catu daya. Memori penyimpanan program
dinamakan sebagai memori program. Random Access Memori (RAM) isinya akan
langsung hilang ketika IC kehilangan catudaya yang 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
Asychronous Receiver Transmitter) yaitu port serial komunikasi serial asinkron,
USART (Universal Syncrhronous and Asyncrhronous Serial Receiver and
Transmitter) yaitu port yang digunakan untuk komunikasi serial sinkron 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 standart pengkabelan SAE (Society of Automatic Engineers).
Mikrokontroler saat ini sudah dikenal dan digunakan secara luas pada
dunia industri. Banyak sekali penelitian atau proyek mahasiswa yang
menggunakan berbagai versi mikrokontroler yang dapat dibeli dengan harga yang
peralatan elektronika canggih. Mikrokontroler AVR memiliki arsitektur RISC 8
bit, dimana semua instruksi dikemas dalam kode 16 bit (16 bit word) dan sebagian
besar instruksi dieksekusi dalam satu siklus clock, berbeda dengan instruksi CS51
yang membutuhkan siklus 12 clock. AVR berteknologi RISC (Reduce Instruction
Set Computing), sedangkan seri MCS51berteknologi CISC (Complex Instruction
Set Computing). Secara umum, AVR dikelompokkan menjadi beberapa kelas,
yaitu keluarga AT90Sxx, keluarga ATMega dan AT86RFxx. Pada dasarnya yang
membedakan masing – masing kelas adalah memori, peripheral dan fungsinya.
Dari segi arsitektur dan instruksi yang digunakan, mereka bias dikatakan hamper
sama.
2.2.1.1. Fitur ATMega8535
Fitur-fitur yang dimiliki oleh mikrokontroler ATmega8535 adalah sebagai
berikut:
1. Saluran I/O sebanyak 32 buah, yaitu port A, port B, port C, dan port D.
2. ADC internal sebanyak 8 saluran.
3. Tiga buah Timer/Counter dengan kemampuan pembandingan.
4. CPU yang terdiri atas 32 buah register.
5. SRAM sebesar 512 byte.
6. Memori Flash sebesar 8 kb dengan kemampuan Read While Write.
7. Port antarmuka SPI
8. EEPROM sebesar 512 byte yang dapat diprogram saat operasi.
9. Antarmuka komparator analog.
11.Sistem mikroprosesor 8 bit berbasis RISC dengan kecepatan maksimal 16
MHz.
2.2.1.2. Konfigurasi Pin ATMega 8535
Konfigurasi pin ATmega8535 dengan kemasan 40 pin DIP (Dual Inline
Package) dapat dilihat pada gambar xxxxxx. Dari gambar di atas dapat
dijelaskan fungsi dari masing-masing pin Atmega8535 sebagai berikut:
1. VCC merupakan pinyang berfungsi sebagai masukan catu daya.
2. GND merukan pin Ground.
3. PortA (PortA0…PortA7) merupakan pin input/outputdua arah dan pin
masukan ADC.
4. PortB (PortB0…PortB7) merupakan pin input/outputdua arah dan dan
pinfungsi khusus,
5. Port C (PortC0…PortC7) merupakan pin input/output dua arah dan pin
fungsi khusus,
6. Port D (PortD0…PortD7) merupakan pin input/output dua arah dan pin
fungsi khusus,
7. RESET merupakan pinyang digunakan untuk me-resetmikrokontroler.
8. XTAL1 dan XTAL2 merupakan pin masukan clockeksternal.
9. AVCC merupakan pinmasukan tegangan untuk ADC.
Gambar 2.1 Konfigurasi Pin ATmega8535 PDIP
Berikut ini penjelasan mengenai konfigurasi pin ATMega8535 sebagai
berikut :
1. Port A
Pin33 sampai dengan pin 40 merupakan pin dari port A. Merupakan 8 bit
directional port I/O. Setiap pin-nya dapat menyediakan internal pull-up
resistor (dapat diatur per bit). Output buffer port A dapat memberi arus 20 mA
dan dapat mengendalikan display LED secara langsung. Data Direction
Register port A (DDRA) harus di-setting terlebih dahulu sebelum port A
digunakan. Bit-bit DDRA diisi 0 jika ingin memfungsikan pin-pin port A yang
disesuaikan sebagai input, atau diisi 1 jika sebagai output.
2. Port B
Pin 1 sampai dengan pin 8 merupakan pin dari port B. Merupakan 8 bit
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 di-setting terlebih dahulu sebelum port B
digunakan. Bit-bit DDRB diisi 0 jika ingin memfungsikan pin-pin port B yang
disesuaikan sebagai input, atau diisi 1 jika sebagai output. Selain itu, pin-pin
port B juga memiliki fungsi-fungsi alternatif khusus seperti yang dapat dilihat
dalam tabel:
Tabel 2.1 Penjelasan pin pada port B
Pin Keterangan
PB.7 SCK (SPI Bus Serial Clock)
PB.6 VISO (SPI Bus Master Input/Slave Output)
PB.5 VOSI (SPI Bus Master Output/Slave Input)
PB.4 SS (SPI Slave Select Input)
PB.3 AIN1 (Analog Comparator Negative Input)OCC
(Timer/Counter0 Output Compare Match Output)
PB.2 AIN0 (Analog Comparator Positive Input)INT2 (External
Interrupt2 Input)
PB.1 T1 (Timer/Counter1 External Counter Input)
PB.0 T0 (Timer/Counter0 External Counter Input)XCK (JSART
External Clock Input/Output)
3. Port C
Pin 22 sampai dengan pin 29 merupakan pin dari port C. Port C sendiri
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 di-setting terlebih dahulu sebelum port C
digunakan. Bit-bit DDRC diisi 0 jika ingin memfungsikan pin-pin port C yang
disesuaikan sebagai input, atau diisi 1 jika sebagai output.
4. Port D
Pin 14 sampai dengan pin 20 merupakan pin dari port D. Merupakan 8 bit
directional port I/O. Setiap pin-nya 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 di-setting terlebih dahulu sebelum port D
digunakan. Bit-bit DDRD diisi 0 jika ingin memfungsikan pin-pin port D yang
disesuaikan sebagai input, atau diisi 1 jika sebagai output. Selain itu, pin-pin
port D juga memiliki fungsi-fungsi alternatif khusus seperti yang dapat dilihat
dalam tabel:
Tabel 2.2 Penjelasan pin pada port D
Pin Keterangan
PD.0 RDX (UART input line)
PD.1 TDX (UART output line)
PD.2 INT0 (external interrupt 0 input)
PD.3 INT1 (external interrupt 1 input)
PD.4 OC1B (Timer/Counter1 output compareB match output)
PD.5 OC1A (Timer/Counter1 output compareA match output)
PD.7 OC2 (Timer/Counter2 output compare match output)
2.2.1.3. Peta Memori ATMega 8535
ATMega8535 memiliki dua jenis memori yaitu Data Memori dan Program
Memori ditambah satu fitur tambahan yaitu EEPROM Memori untuk penyimpan
data.
1. Program Memori
ATMEGA 8535 memiliki On-Chip In-Sistem Reprogrammable Flash
Memory untuk menyimpan program. Untuk alasan keamanan, program memori
dibagi menjadi dua bagian, yaitu Boot Flash Section dan Application Flash
Section. Boot Flash Section digunakan untuk menyimpan program Boot Loader,
yaitu program yang harus dijalankan pada saat AVR reset atau pertama kali
diaktifkan.
Application Flash Section digunakan untuk menyimpan program aplikasi
yang dibuat user. AVR tidak dapat menjalakan program aplikasi ini sebelum
menjalankan program Boot Loader. Besarnya memori Boot Flash Section dapat
diprogram dari 128 word sampai 1024 word tergantung setting pada konfigurasi
bit di register BOOTSZ. Jika Boot Loader diproteksi, maka program pada
Application Flash Section juga sudah aman.
2. Data Memori
Gambar berikut menunjukkan peta memori SRAM pada ATMEGA 8535.
Terdapat 608 lokasi address data memori. 96 lokasi address digunakan untuk
Register File dan I/O Memori sementara 512 lokasi address lainnya digunakan
untuk internal data SRAM. Register file terdiri dari 32 general purpose working
register, I/O register terdiri dari 64 register.
[image:30.595.206.422.250.400.2]
Gambar 2.3 Peta Memori Data
3. EEPROM Data Memori
ATMEGA 8535 memiliki EEPROM 8 bit sebesar 512 byte untuk
menyimpan data. Loaksinya terpisah dengan sistem address register, data register
dan control register yang dibuat khusus untuk EEPROM. Alamat EEPROM
[image:30.595.252.366.615.708.2]dimulai dari $000 sampai $1FF.
2.2.1.4. Status Register (SREG) ATMega8535
Status register adalah register berisi status yang dihasilkan pada setiap
operasi yang dilakukan ketika suatu instruksi dieksekusi. SREG merupakan
bagian dari inti CPU mikrokontroler.
Gambar 2.5 Status Register ATMega 8535
1. Bit 7-I : Global Interrupt Enable
Bit harus diset untuk meng-enable interupsi. Setelah itu anda dapat
mengaktifkan interupsi mana yang akan digunakan dengan cara
meng-enable bit kontrol register yang bersangkutan secara individu. Bit akan
di-clear apabila terjadi suatu interupsi yang dipicu oleh hardware, dan bit
tidak akan mengizinkan terjadinya interupsi, serta akan diset kembali oleh
instruksi RETI.
2. Bit 6-T : Bit Copy Storage
Instruksi BLD dan BST menggunakan bit-T sebagai sumber atau tujuan
dalam operasi bit. Suatu bit dalam sebuah register GPR dapat disalin ke bit
T menggunakan instruksi BTS, dan sebaliknya bit-T dapat disalin kembali
ke suatu bit dalam register GPR menggunakan instruksi BDL.
3. Bit 5-H : half Carry Flag
4. Bit 4-S : Sigh Bit
Bit-S merupakan hasil operasi EOR antara Flag-N (negatif) dan flag V
5. Bit 3-V : Two’s Complement Overflow Flag
Bit berguna untuk mendukung operasi aritmatika.
6. Bit 2-N : Negative Flag
Apabila suatu operasi menghasilkan bilangan negatif, maka flag-N akan
di-set.
7. Bit 1-Z : Zero Flag
Bit akan di-set bila hasil operasi yang diperoleh adalah nol.
8. Bit 0-C : Carry Flag
Apabila suatu operasi menghasilkan carry, maka bit akan di-set.
Port I/O pada mikrokontroler ATMega8535 dapat difungsikan sebagai
input ataupun dengan keluaran high atau low. Untuk mengatur fungsi port I/O
sebagai input ataupun output perlu dilakukan setting pada DDR dan Port. Logika
port I/O dapat berubah-ubah dalam program secara byte atau hanya bit tertentu.
Mengubah sebuah keluaran bit I/O dapat dilakukan menggunakan perintah cbi
(clear bit I/O) untuk menghasilkan output low atau perintah sbi (set bit I/O) untuk
menghasilkan output high. Perubahan secara byte dilakukan dengan perintah in
atau out yang menggunakan register bantu.
2.2.2. Sensor Arus ACS-712
ACS712 adalah Hall Effect current sensor. Hall effect allegro ACS712
merupakan sensor yang presisi sebagai sensor arus AC atau DC dalam pembacaan
Gambar 2.6 Sensor Arus ACS712
Pada umumnya aplikasi sensor ini biasanya digunakan untuk mengontrol
motor, deteksi beban listrik, switched-mode power supplies dan proteksi beban
berlebih.
Sensor ini memiliki pembacaan dengan ketepatan yang tinggi, karena
didalamnya terdapat rangkaian low-offset linear Hall dengan satu lintasan yang
terbuat dari tembaga. Cara kerja sensor ini adalah arus yang dibaca mengalir
melalui kabel tembaga yang terdapat didalamnya yang menghasilkan medan
magnet yang di tangkap oleh integrated Hall IC dan diubah menjadi tegangan
proporsional. Ketelitian dalam pembacaan sensor dioptimalkan dengan cara
pemasangan komponen yang ada didalamnya antara penghantar yang
menghasilkan medan magnet dengan hall transducer secara berdekatan.
Persisnya, tegangan proporsional yang rendah akan menstabilkan Bi CMOS Hall
IC yang didalamnya yang telah dibuat untuk ketelitian yang tinggi oleh pabrik.
Sensor ini memiliki beberapa fitur penting, yaitu :
a. Jalur sinyal analog yang rendah noise
b. Bandwidth perangkat diatur melalui pin filter yang baru
c. Waktu naik keluaran 5 mikrodetik dalam menanggapi langkah masukan
d. Bandwith 50 kHz
e. Total error keluaran 1,5% pada TA = 25° dan 4% pada -40° C sampai
85°C
f. Bentuk yang kecil, paket SOIC8 yang kompak.
g. Resistansi internal 1.2 mΩ.
h. 2.1 kVRMS tegangan isolasi minimum dari pin 1-4 ke pin 5-8
i. Operasi catu daya tunggal 5.0 V
j. Sensitivitas keluaran 66-185 mV/A
k. Tegangan keluaran sebanding dengan arus AC atau DC
l. Akurasi sudah diatur oleh pabrik
m. Tegangan offset yang sangat stabil
n. Histeresis magnetic hampir mendekati nol
o. Keluaran ratiometric diambil dari sumber daya
2.2.3. LCD
LCD (liquid crystal display) merupakan suatu alat yang dapat
menampilkan karakter ASCI sehingga kita bisa menampilkan campuran huruf dan
angka sekaligus. LCD didalamnya terdapat sebuah mikroprosesor yang
mengendalikan tampilan, kita hanya perlu membuat program untuk
berkomunikasi.
Ukuran lcd ada berbagai macam seperti :
a. lcd 16 x 2 ada 16 colom dan 2 baris
Gambar 2.7 LCD
Adapun konfigurasi dan deskripsi dari pin-pin LCD antara lain:
a. VCC (Pin 1)
Merupakan sumber tegangan +5V.
b. GND 0V (Pin 2)
Merupakan sambungan ground.
c. VEE (Pin 3)
Merupakan input tegangan Kontras LCD.
d. RS Register Select (Pin 4)
Merupakan Register pilihan 0 = Register Perintah, 1 = Register Data.
e. R/W (Pin 5)
Merupakan read select, 1 = read, 0 = write.
f. Enable Clock LCD (Pin 6)
Merupakan masukan logika 1 setiap kali pengiriman atau pembacaan data.
g. D0 – D7 (Pin 7 – Pin 14)
Merupakan Data Bus 1 -7.
h. Anoda ( Pin 15)
i. Katoda (Pin 16)
Merupakan masukan tegangan negatif backlight.
Display karakter pada LCD diatur oleh pin EN, RS dan RW. Jalur EN
dinamakan Enable. Jalur ini digunakan untuk memberitahu LCD bahwa sebuah
data sedang dikirimkan. Untuk mengirimkan data ke LCD, maka melalui
program EN harus dibuat logika low “0” dan set pada dua jalur kontrol yang lain
RS dan RW. Ketika dua jalur yang lain telah siap, set EN dengan logika “1”
dan tunggu dan berikutnya di set.
2.2.4. Bahasa Pemograman Mikrokontroler
Pengembangan sebuah sistem menggunakan mikrokontroler AVR buatan
ATMEL menggunakan software AVR STUDIO dan CodeVisionAVR. AVR
STUDIO merupakan software yang digunakan untuk bahasa assembly yang
mempunyai fungsi yang sangat lengkap, yaitu digunakan untuk menulis program,
kompilasi, simulasi dan download program ke IC mikrokontroler AVR.
Sedangkan CodeVisionAVR merupakan software C-cross Compiler, dimana
program dapat ditulis dalam bahasa C, CodeVision memiliki IDE (Integrated
Development Environment) yang lengkap, dimana penulisan program, compile,
link, pembuatan kode mesin (assembler) dan download program ke chip AVR
dapat dilakukan dengan CodeVision, selain itu ada fasilitas terminal, yaitu
melakukan komunikasi serial dengan mikrokontroler yang sudah di program.
programmable Flash on-Chip mengizinkan memori program untuk diprogram
ulang dalam sistem menggunakan hubungan serial SPI.
2.2.5. Dasar Pemrograman ATMega8535 dengan Bahasa C 2.5.5.1. Pendahuluan
C adalah bahasa pemrograman yang dapat dikatakan berada antara bahasa
tingkat rendah (bahasa yang berorientasi pada mesin) dan bahasa tingkat tinggi
(bahasa yang berorientasi pada manusia). Seperti yang diketahui, bahasa tingkat
tinggi mempunyai kompatibilitas antara platform. Karena itu, amat mudah untuk
membuat program pada berbagai mesin. Berbeda halnya dengan menggunakan
bahasa mesin, sebab setiap perintahnya sangat bergantung pada jenis mesin.
Pembuat bahasa C adalah Brian W. Kernighan dan Dennis M. Ritchie pada
tahun 1972. C adalah bahasa pemrograman terstruktur, yang membagi program
dalam bentuk blok. Tujuannya untuk memudahkan dalam pembuatan dan
pengembangan program. Program yang ditulis dengan bahasa C mudah sekali
dipindahkan dari satu jenis program ke bahasa program lain. Hal ini karena
adanya standarisasi bahasa C yaitu berupa standar ANSI (American National
Standart Institute) yang dijadikan acuan oleh para pembuat kompiler.
2.5.5.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:
b. Karakter kedua berupa huruf, angka, garis bawah,;
c. Tidak menggunakan spasi;
d. Bersifat case sensitive, yaitu huruf kapital dan huruf kecil dianggap
berbeda;
e. Tidak boleh menggunakan kata-kata yang merupakan sintaks atau operator
dari bahasa C.
Contoh menggunakan pengenal yang diperbolehkan:
1. Nama
2. _nama
3. Nama2
4. Nama_pengenal
Contoh penggunaan pengenal yang tidak diperbolehkan:
1. 2nama
2. Nama+2
3. Nama pengenal
2.5.5.3. 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 2.3 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
Unsigned long int Unsigned long 0 s/d 4.294.967.295
Contoh program yang menunjukkan pengaruh signed dan unsigned pada hasil
program,
#include <mega.8535>
#include <delay.h>
Void main (void)
{
int a, b; // pengenal
unsigned d, e;
a = 50;
b = 40;
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);
};
}
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
Contoh:
// ini adalah komentar
/* ini adalah komentar
Yang lebih panjang
Dan lebih panjang lagi */
2.5.5.4. 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 .hdisebut file header.
File header yang digunakan untuk mendefinisikan jenis mikrokontroler
yang digunakan berfungsi sebagai pengarah yang mana pendeklarasian
register-register 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.5.5.5. Operator Aritmatika
Operator aritmatika digunakan untuk melakukan proses perhitungan
matematika. Fungsi-fungsi matematika yang terdapat pada bahasa C dapat dilihat
Tabel 2.4 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)
{
unsigned char a, b;
a = 0x03;
b = 0x05;
DDRC 0XFF; // PORTC digunakan sebagai output
while (1)
{
PORTC = (a * b);
delay_ms(500);
}
2.5.5.6. 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.
Tabel 2.5 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.5.5.7. Operator Logika
Operator logika digunakan untuk membentuk logika dari dua pernyataan atau
[image:43.595.133.495.246.458.2]lebih. Operator logika dapat dilihat pada tabel di bawah ini.
Tabel 2.6 Operator Logika
Operator Keterangan
&& Logika AND
| | Logika OR
Contoh program:
#include < mega8535.h>
#include <delay.h>
void main (void)
{
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
2.5.5.8. 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 sedangkan pada operator bitwise akan menghasilkan data biner.
[image:45.595.222.403.276.478.2]Operator bitwise dapat dilihat pada tabel di bawah ini.
Tabel 2.7 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);
};
}
Penjelasan program:
a = 0x12 = 0001 0010
b = 0x32 = 0011 0000
---
a & b = 0x10 = 0001 0000
2.5.5.9. Operator Penugasan dan Operator Majemuk
Operator ini digunakan untuk memberikan nilai atau manipulasi data
[image:46.595.211.414.532.732.2]sebuah variabel. Operator penguasa dapat kita lihat pada tabel di bawah ini:
Tabel 2.8 Operator Penugasan
Operator Keterangan
= Memberikan nilai variabel
+= Menambahkan nilai variabel
- = Mengurangi nilai variabel
*= Mengalikan nilai variabel
/= Membagi nilai variable
Contoh:
a += 2 ; artinya nilai variabel a berubah menjadi a = a + 2
b *= 4; artinya nilai variabel b berubah menjadi b = b * 4
selain operator penugasan di atas juga ada operator penugasan yang berkaitan
dengan operator bitwise seperti pada tabel di bawah ini:
Tabel 2.9 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.5.5.10. Operator Penambahan dan Pengurangan
Operator ini digunakan untuk menaikkan atau menurunkan nilai suatu
[image:47.595.174.448.271.480.2]variabel dengan selisih 11. Operator ini dapat dilihat pada tabel di bawah ini.
Tabel 2.10 Operator Penambahan dan Pengurangan
Operator Keterangan
++ Penambahan 1 pada variable
Contoh:
a = 1;
b = 2;
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.5.5.11. 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) {
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)
{
PORTC = 0xff;
}
else
{
PORTC = 0x00;
}
Penjelasan program:
Jika PINA.0 diberi input logika 1 maka PORTC akan mengeluarkan logika 0xff,
2.5.5.12. Pernyataan Switch
Pernyataan switch digunakan untuk melakukan pengambilan keputusan
terhadap banyak kemungkinan. 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 pernyataan switch, masing-masing pernyataan (pernyataan_1 sampai
dengan pernyataan_default) dapat berupa satu atau beberapa perintah dan tidak
perlu 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 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.5.5.13. Pernyataan While
Pernyataan while digunakan untuk mengulangi sebuah pernyataan atau
blok kenyataan secara terus menerus selama kondisi tertentu masih terpenuhi.
Bentuk pernyataan while adalah sebagai berikut :
while (kondisi)
{
// sebuah pernyataan atau blok pernyataan
}
Jika pernyataan yang akan diulang hanya berupa sebuah pernyataan saja
maka tanda { dan } bisa 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 niai a
mencapai 10 maka pengulangan selesai.
2.5.5.14. 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 b;ok pernyataan
} while (kondisi).
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
pernyataaan do..while blok pernyataan pasti akan dikerjakan minimal satu kali
sedangkan pada pernyataan while blok pernyataan beum tentu dikerjakan.
2.5.5.15. 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.
Contoh :
unsigned int 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.
2.5.6. Software ATMega8535 Editor dan Simulator 2.5.6.1Software ATMega8535 Editor
Instruksi - instruksi yang merupakan bahasa C tersebut dituliskan pada
sebuah editor, yaitu Code Vision AVR. Tampilannya seperti berikut ini:
Gambar 2.8 Tampilan Code Vision AVR
2.5.6.2 Software Downloader
Melakukan download program ke mikrokontroler dapat menggunakan
Gambar 2.9 Tampilan Ponyprog2000
2.5.6.3Software Desain PCB (Printed Circuit Board) Eagle 4.13r
Untuk mendesain PCB dapat digunakan software eagle 4.13r yang dapat
di-download di internet secara gratis . Tampilan software eagle 4.13r dapat dilihat
pada gambar 2.4 dibawah ini :
[image:55.595.151.477.466.710.2]Cara menggunakan software ini terlebih dahulu yang dikerjakan adalah
mendesain skematik rangkaian, setelah itu memindahkannya ke dalam bentuk
board dan mendesain tata letak komponen sesuai keinginan tetapi harus sesuai
jalur rangkaian nya agar rangkaian dapat berfungsi sesuai dengan skematiknya.
Setelah itu didesain layout PCB nya , barulah siap di-print dan di-transfer ke
PCB. Pada proses pentransferan layout ke PCB dapat digunakan kertas Transfer
Paper.
2.5.7. Pembagi Tegangan (Voltage Divider)
Rangkaian pembagi tegangan biasanya digunakan untuk membuat suatu
tegangan referensi dari sumber tegangan yang lebih besar, titik tegangan referensi
pada sensor, untuk memberikan bias pada rangkaian penguat atau untuk memberi
bias pada komponen aktif. Rangkaian pembagi tegangan pada dasarnya dapat
dibuat dengan 2 buah resistor, contoh rangkaian dasar pembagi tegangan dengan
output Vo dari tegangan sumber Vi menggunakan resistor pembagi tegangan R1
[image:56.595.261.401.555.670.2]dan R2 seperti pada gambar berikut.
Dari rangkaian pembagi tegangan diatas dapat dirumuskan tegangan
output Vo. Arus (I) mengalir pada R1 dan R2 sehingga nilai tegangan sumber VI
adalah penjumlahan Vs dan Vo sehingga dapat dirumuskan sebagai berikut.
VI = VS + VO = i . R1 + i . R2
Nampak bahwa tegangan masukan terbagi menjadi dua bagian,
masing-masing sebading dengan harga resistor yang dikenai tegangan tersebut. Sehingga
besarnya Vo dapat dirumuskan sebagai berikut.
�
���=
���+���×
�
��2.5.8. Relay
Relay adalah komponen elektronika berupa saklar elektronik yang
digerakkan oleh arus listrik. Secara prinsip, relay merupakan tuas saklar dengan
lilitan kawat pada batang besi (solenoid) di dekatnya. Ketika solenoid dialiri arus
listrik, tuas akan tertarik karena adanya gaya magnet yang terjadi pada solenoid
sehingga kontak saklar akan menutup. Pada saat arus dihentikan, gaya magnet
akan hilang, tuas akan kembali ke posisi semula dan kontak saklar kembali
terbuka.Relay biasanya digunakan untuk menggerakkan arus/tegangan yang besar
(misalnya peralatan listrik 4 ampere AC 220 V) dengan memakai arus/tegangan
yang kecil (misalnya 0.1 ampere 12 Volt DC). Dalam pemakaiannya biasanya
relay yang digerakkan dengan arus DC dilengkapi dengan sebuah dioda yang
di-paralel dengan lilitannya dan dipasang terbalik yaitu anoda pada tegangan (-) dan
katoda pada tegangan (+). Ini bertujuan untuk mengantisipasi sentakan listrik yang
terjadi pada saat relay berganti posisi dari on ke off agar tidak merusak komponen
Gambar 2.12 Relay
Penggunaan relay perlu memperhatikan tegangan pengontrolnya serta
kekuatan relay men-switch arus/tegangan. Biasanya ukurannya tertera pada body
relay. Misalnya relay 12VDC/4 A 220V, artinya tegangan yang diperlukan
sebagai pengontrolnya adalah 12Volt DC dan mampu men-switch arus listrik
(maksimal) sebesar 4 ampere pada tegangan 220 Volt. Sebaiknya relay
difungsikan 80% saja dari kemampuan maksimalnya agar aman, lebih rendah lagi
lebih aman. Relay jenis lain ada yang namanya reedswitch atau relay lidi. Relay
jenis ini berupa batang kontak terbuat dari besi pada tabung kaca kecil yang
dililitin kawat. Pada saat lilitan kawat dialiri arus, kontak besi tersebut akan
menjadi magnet dan saling menempel sehingga menjadi saklar yang on. Ketika
arus pada lilitan dihentikan medan magnet hilang dan kontak kembali terbuka
(off).
Kontak penghubung relay terdiri dari dua bagian, yaitu :
a. Kontak NC (NormallyClose),
Kontak penghubung dalam kondisi menutup atau terhubung bila relay
tegangan yang mencukupi pada kumparannya maka kontak penghubung
menjadi terbuka.
b. Kontak NO (Normally Open).
Kontak penghubung dalam kondisi terbuka bila relay tidak mendapat
tegangan pada kumparannya. Tetapi bila diberi tegangan yang mencukupi
pada kumparannya maka kontak penghubung menjadi tertutup.
2.2.7. Baterai Aki
Baterai atau aki, atau bisa juga accu adalah sebuah sel listrik dimana di
dalamnya berlangsung proses elektrokimia yang reversibel (dapat berbalikan)
dengan efisiensinya yang tinggi. Yang dimaksud dengan proses elektrokimia
reversibel, adalah di dalam baterai dapat berlangsung proses pengubahan kimia
menjadi tenaga listrik (proses pengosongan), dan sebaliknya dari tenaga listrik
menjadi tenaga kimia, pengisian kembali dengan cara regenerasi dari
elektroda-elektroda yang dipakai, yaitu dengan melewatkan arus listrik dalam arah
(polaritas) yang berlawanan di dalam sel.
Baterai berfungsi untuk menyimpan energi listrik dalam bentuk energi
kimia, yang akan digunakan untuk mensuplai (menyediakan) listik ke komponen -
komponen kelistrikan lainnya.
Accu ini berisi air accu (cairan asam belerang / sulfuric acid). Pada accu
basah, terdapat lubang dengan tutup yang dapat dibuka-tutup untuk menambah air
accu. Air accu dapat berkurang saat accu digunakan. Hal ini terjadi karena reaksi
Gambar 2.13 Baterai Aki Basah
2.3. Inverter
listrik searah (DC) menjadi arus listrik bolak balik (AC). Inverter mengkonversi
DC dari perangkat seperti
Penggunaa
untuk perangkat yang menggunakan AC (Alternating Current).
Rugi-rugi / loss yang terjadi pada
dalam bentuk panas. Effisiensi tertinggi dipegang oleh grid tie inverter yang
diklaim bisa mencapai 95-97% bila beban outputnya hampir mendekati rated
bebannya. Sedangkan pada umumnya effisiensi inverter adalah berkisar 50-90%
tergantung dari beban outputnya. Bila beban outputnya semakin mendekati beban
kerja inverter yang tertera maka effisiensinya semakin besar, demikian pula
sebaliknya. Modified sine wave inverter ataupun square wave inverter bila
dipaksakan untuk beban-beban induktif maka effisiensinya akan jauh berkurang
dibandingkan dengan true sine wave inverter. Perangkatnya akan menyedot daya
20% lebih besar dari yang seharusnya.
1. Fungsi inverter sebagai perubah tegangan Direct current menjadi
Alternating current.
2. Fungsi inverter sebagai penggerak motor.
Fungsi inverter sebagai perubah tegangan DC ke AC ada dua di pasaran yaitu
1. Inverter yang dilengkapi charger aki.
2. Inverter tanpa charger.
2.3.1. Transformator
Transformer atau trafo adalah kompone
mengubah taraf suatu tegangan
merupakan piranti yang menggunakan transformator step-down.
Transformator step-down
Gambar 2.14 Trafo
Transformator bekerja berdasarkan prinsi
Tegangan masukan bolak-balik yang membentangi primer menimbulka
balik ini menginduksika
semua daya pada lilitan primer akan dilimpahkan ke lilitan sekunder.
Hubungan Primer-Sekunder
Gambar 2.15 Hubungan Primer - Sekunder
Fluks pada transformator
Rumus untuk fluks magnet yang ditimbulkan lilitan primer adalah
dan rumus untuk GGL induksi yang terjadi di lilitan sekunder adalah .
Karena kedua kumparan dihubungkan dengan fluks yang sama, maka
dimana dengan menyusun ulang persamaan akan didapat
sedemikian hingga . Dengan kata lain, hubungan
antara tegangan primer dengan tegangan sekunder ditentukan oleh perbandingan
jumlah lilitan primer dengan lilitan sekunder.
2.3.2. Transistor Mosfet IRFZ44
Transistor FET bekerja bergantung dari satu pembawa muatan, baik itu
elektron atau hole. Karena hanya bergantung pada satu pembawa muatan saja,
transistor ini disebut komponen unipolar. Transistor FET memiliki impedansi
input (input impedance) yang sangat besar. Terutama jika digunakan sebagai
switch karena resistansi dan disipasi dayanya yang kecil.
Ada dua jenis transistor FET yaitu JFET (junction FET) dan MOSFET
(metal-oxide semiconductor FET). Pada dasarnya kedua jenis transistor memiliki
prinsip kerja yang sama, namun tetap ada perbedaan yang mendasar pada struktur
dan karakteristiknya.
Ada dua jenis MOSFET yaitu jenis depletion-mode dan jenis
enhancement-mode. Jenis MOSFET yang kedua adalah komponen utama dari
gerbang logika dalam bentuk IC (integrated circuit), uC (micro controller) dan uP
(micro processor) yang tidak lain adalah komponen utama dari komputer modern
saat ini.
FET bentuk fisiknya seperti transistor. Fungsinya adalah untuk menaikkan
tegangan atau menurunkan tegangan. FET memiliki tiga kaki juga yaitu :
a. Gate (G) adalah kaki input
b. Drain (D) adalah kaki output
c. Source (S) adalah kaki sumber
Fungsinya biasanya digunakan pada rangkaian power supply jenis
switching untuk menghasilkan tegangan tinggi untuk menggerakkan trafo.
Kakinya biasanya sudah pasti yaitu bila kita hadapkan FET ke arah kita maka
BAB III
PERANCANGAN SISTEM
3.1. Diagram Blok Sistem
ATMEGA 8535 SOLAR
PANEL TEGANGANPEMBAGI
Relay 1
Relay 2
LCD Sensor arus
baterai PEMBAGI
TEGANGAN
[image:65.595.112.539.190.557.2]Load/inverter
Gambar 3.1 Diagram Blok Sistem
Penjelasan dari masing-masing blok adalah sebagai berikut:
a. Solar panel berfungsi sebagai sumber arus untuk pengisian pada baterai.
b. Pembagi tegangan digunakan sebagai rangkaian untuk membagi tegangan
tegangan dari solar panel bernilai 21 volt, sedangkan fitur adc pada
mikrokontroler hanya bisa dilalui oleh tegangan 5 volt.
c. Sensor arus ACS-712 digunakan untuk mendeteksi arus yang berasal dari
solar panel ke baterai.
d. Baterai digunakan sebagai sumber tegangan dan untuk menghidupkan
beban dan sistem.
e. Mikrokontroler ATMega8535 sebagai pengolah data dari inputan.
f. Relay digunakan sebagai pemutus dan penyambung arus dari solar panel
ke baterai.
g. LCD digunakan untuk menampilkan hasil pengukuran dari solar panel dan
baterai.
h. Load/Inverter digunakan sebagai beban dan mengubah arus dc dari baterai
3.2. Rangkaian Mikrokontroler ATMega8535
Rangkaian sistem minimum mikrokontroler ATMEGA 8535 dapat dilihat
[image:67.595.120.489.172.537.2]pada gambar 3.2 di bawah ini :
Gambar 3.2 Rangkaian Sistem Minimum Mikrokontroler ATMEGA 8535
Dari gambar 3.2, Rangkaian tersebut berfungsi sebagai pusat kendali dari
seluruh sistem yang ada. Komponen utama dari rangkaian ini adalah IC
Mikrokontroler ATMega8535. Semua program diisikan pada memori dari I