Perancangan Alat Pengisi Baterai Lead Acid Berbasis Mikrokontroler ATMEGA 8535

(1)

BERBASIS MIKROKONTROLER ATMEGA 8535

Diajukan untuk memenuhi salah satu persyaratan dalam menyelesaikan Pendidikan Sarjana (S-1) pada Departemen Teknik Elektro

Sub Jurusan Teknik Komputer

Oleh:

BUKRY CHAMMA SIBURIAN 100422004

DEPARTEMEN TEKNIK ELEKTRO

FAKULTAS TEKNIK

UNIVERSITAS SUMATERA UTARA

MEDAN


(2)

(3)

ABSTRAK

Tulisan ini membahas tentang perancangan sebuah alat pengisi baterai lead acid. Pengendali utama pada alat ini menggunakan mikrokontroler ATMega 8535. Alat ini bekerja untuk memantau keadaan tegangan baterai pada saat kosong dan saat penuh. Ketika tegangan baterai berada pada tegangan minimum maka akan dilakukan proses pengisian dan ketika tegangan baterai berada pada tegangan maksimum maka akan menghentikan proses pengisian. Setiap tegangan baterai yang tebaca ditampilkan pada LCD.


(4)

KATA PENGANTAR

Puji dan Syukur penulis panjatkan kepada Tuhan yang Maha Esa, atas berkat dan karuniaNya sehingga penulis dapat menyelesaikan laporan Tugas Akhir ini.

Adapun Tugas akhir ini disusun sebagai salah satu syarat untuk menyelesaikan Pendidikan Sarjana (S-1) Teknik Komputer pada Departemen Teknik Elektro, Fakultas Teknik Universitas Sumatera Utara, yang penulis beri judul Perancangan Alat Pengisi Baterai Lead Acid Berbasis Mikrokontroler ATMEGA 8535.

Dalam menyelesaikan Tugas Akhir ini penulis banyak menerima bimbingan dan dorongan berupa pemikiran tenaga dan waktu dari berbagai pihak. Oleh sebab itu, pada kesempatan ini penulis mengucapkan terima kasih yang sebesar-besarnya kepada :

1. Ayahanda Gr. Drs. J. Siburian dan Ibunda T. Sihite, BA tercinta selaku orangtua penulis, Kakak dan adik-adikku Yusrini Siburian, AMG, Yosi Enola Siburian,SE dan Abram Yosua Siburian yang selalu memberikan dukungan moril dan semangat kepada saya.

2. Bapak Ir. T. Ahri Bahriun, MSc, selaku dosen pembimbing Tugas Akhir yang telah memberikan bimbingan, arahan, kritik, semangat dan pengetahuan kepada penulis selama masa kuliah sampai menyelesaikan Tugas Akhir.

3. Bapak Ir. Surya Tarmizi Kasim, M.Si, selaku Ketua Departemen Teknik Elektro, Fakultas Teknik Universitas Sumatera Utara.


(5)

4. Bapak Rahmad Fauzi, ST, MT, selaku Sekretaris Departemen Teknik Elektro, Fakultas Teknik Universitas Sumatera Utara dan sekaligus dosen wali penulis.

5. Seluruh Bapak/Ibu Dosen Pengajar Departemen Teknik Elektro, Fakultas Teknik Universitas Sumatera Utara yang telah mengajar dan mendidik penulis selama masa perkuliahan.

6. Seluruh staff karyawan Departemen Teknik Elektro, Fakultas Teknik Universitas Sumatera utara.

7. Teman-teman seperjuangan penulis Leo, Elda, Ratih, Yetty, Mutiara, Wilfrid, Erik, Rinaldi, Adi, Bg Doli, Bg Ronald, Bg Jackson, Bg Fery, yang telah memberikan masukan dan semangat kepada penulis.

Penulis menyadari bahwa Tugas Akhir ini belum sempurna, karena masih banyak kekurangan. Oleh karena itu, saran dan kritik yang bersifat membangun sangat diharapkan. Akhirnya penulis berharap Tugas Akhir ini dapat bermanfaat bagi yang membacanya.

Medan, Maret 2015 Hormat Penulis

Bukry Chamma Siburian NIM : 100422004


(6)

DAFTAR ISI

ABSTRAK ... ii

KATA PENGANTAR ... iv

DAFTAR ISI ... vi

DAFTAR GAMBAR ... viii

DAFTAR TABEL ... ix

BAB I PENDAHULUAN ... 1

1.1 Latar Belakang Penulisan ... 1

1.2 Rumusan Masalah ... 2

1.3 Batasan Masalah ... 2

1.4 Tujuan Penulisan ... 2

1.5 Metodologi Penulisan ... 3

1.6 Sistematika Penulisan ... 3

BAB II DASAR TEORI ... 5

2.1 Baterai ... 5

2.1.1 Jenis – Jenis Baterai ... 5

2.1.2 Prinsip Kerja Baterai ... 9

2.1.3 Prinsip Kerja Baterai Asam ... 10

2.2 Alat Pengisi Baterai ... 11

2.2.1 Prinsip Kerja Alat Pengisi Baterai ... 11

2.2.2 Bagian-Bagian Alat Pengisi Baterai ... 12

2.2.3 Metode Pengisian ... 13

2.3 Mikrokontroler Secara Umum ... 14

2.3.1 Mikrokontroler ATMega 8535 ... 17

2.3.1.1 Arsitektur Mikrokontroler 8535 ... 17

2.3.1.2 Fitur ATMega 8535 ... 18

2.3.1.3 Konfigurasi Pin ATMega 8535 ... 19

2.3.1.4 Sistem Minimum ATMega 8535 ... 20

2.3.2 Bahasa Pemrograman Mikrokontroler ... 21

2.4 LCD (Liquid Crystal Display)... 22

2.5 Relay ... 23


(7)

BAB III PERANCANGAN SISTEM ... 26

3.1 Spesifikasi Sistem yang dirancang... 26

3.2 Rangkaian Alat Pengisi Baterai Lead Acid ... 27

3.3 Rangkaian Catu Daya Mikrokontroler... 33

3.4 Rangkaian Penggerak Relay... 34

3.5 Rangkaian Mikrokontroler ATMega 8535 ... 36

3.6 Rangkaian Pembagi Tegangan ... 38

3.8 Hubungan Tombol ke Mikrokontroler ... 39

3.9 Hubungan LCD ke Mikrokontroler ... 40

3.10 Flowchart Program ... 42

BAB IV PENGUJIAN SISTEM ... 46

4.1 Pengujian Rangkaian ... 46

4.1.1 Pengujian Rangkaian Catu Daya ... 46

4.1.2 Pengujian Rangkaian Relay... 47

4.1.3 Pengujian Rangkaian Mikrokontroler ATMega 8535, LCD dan Tombol ... 47

4.1.4 Pengujian Rangkaian Pembagi Tegangan ... 49

4.2 Pengujian Secara Keseluruhan ... 51

BAB V KESIMPULAN DAN SARAN ... 53

5.1 Kesimpulan ... 53

5.2 Saran ... 53

DAFTAR PUSTAKA ... 54


(8)

DAFTAR GAMBAR

Gambar 2.1 Blok Diagram Fungsional ATMega 8535 ... 17

Gambar 2.2 Konfigurasi pin ATMega 8535 ... 20

Gambar 2.3 Skema Sistem Minimum ATMega 8535... 20

Gambar 2.4 LCD 16x2 ... 22

Gambar 2.5 Relay ... 23

Gambar 3.1 Blok Diagram Sistem Pengisian Secara Keseluruhan ... 26

Gambar 3.2 Baterai Lead Acid 12V 4Ah... 28

Gambar 3.3 Rangkaian penyearah Gelombang penuh ... 28

Gambar 3.4 Bentuk Gelombang dengan Filter Kapasitor... 29

Gambar 3.5 Rangkaian regulator tegangan LM317 ... 29

Gambar 3.6 Jumlah tegangan yang diperlukan pada setiap komponen ... 31

Gambar 3.7 Rangkaian alat pengisi baterai lead acid ... 33

Gambar 3.8 Rangkaian Catu Daya Mikrokontroler ... 34

Gambar 3.9 Rangkaian Penggerak Relay ... 34

Gambar 3.10 Rangkaian Penggerak relay Keseluruhan ... 36

dan Gambar 3.11 Rangkaian minimum Mikrokontroler ATMega 8535 ... 37

Hubungan I/O PORT... 37

Gambar 3.12 Rangkaian Pembagi Tegangan ... 38

Gambar 3.13 Hubungan Tombol ke Mikrokontroler ... 40

Gambar 3.14 Hubungan LCD ke Mikrokontroler ... 41

Gambar 3.15 Diagram alir sistem secara keseluruhan ... 42

Gambar 4.1 Pengujian Rangkaian Catu Daya ... 46

Gambar 4.2 Tampilan pengujian Mikrokontroler, LCD dan Tombol... 49

Gambar 4.3 Rangkaian Pembagi Tegangan... 50

Gambar 4.4 Pengujian saat Pengisian Baterai ... 51


(9)

DAFTAR TABEL

Tabel 3.1 Konsumsi arus dari komponen yang dicatu ... 31

Tabel 3.2 Fungsi PORT/Bandar yang digunakan ... 37

Tabel 4.1 Data Pengujian Rangkaian Catu Daya ... 47

Tabel 4.2 Hasil Pengujian Pembagi Tegangan ... 50


(10)

ABSTRAK

Tulisan ini membahas tentang perancangan sebuah alat pengisi baterai lead acid. Pengendali utama pada alat ini menggunakan mikrokontroler ATMega 8535. Alat ini bekerja untuk memantau keadaan tegangan baterai pada saat kosong dan saat penuh. Ketika tegangan baterai berada pada tegangan minimum maka akan dilakukan proses pengisian dan ketika tegangan baterai berada pada tegangan maksimum maka akan menghentikan proses pengisian. Setiap tegangan baterai yang tebaca ditampilkan pada LCD.


(11)

PENDAHULUAN

1.1Latar Belakang Penulisan

Baterai pada saat ini sudah menjadi bagian yang sangat penting dalam kehidupan sehari-hari. Penggunaan baterai juga sangat mudah ditemui, mulai dari kebutuhan industry, rumah tangga dan bahkan juga di kendaraan bermotor. Baterai berdasarkan sifatnya terdiri dari dua jenis yaitu baterai primer dan baterai sekunder. Baterai primer merupakan baterai yang habis dalam sekali pakai, sedangkan baterai sekunder merupakan baterai yang dapat diisi ulang karena reaksi kimia yang dimilikinya dapat dibalik.

Salah satu jenis baterai sekunder adalah Baterai Lead Acid. Baterai ini sangat mudah dijumpai karena baterai ini memiliki performa yang baik dan banyak digunakan pada kendaraan, selain itu material untuk membuat baterai lead acid ini cukup murah.

Baterai lead acid ini memerlukan suatu alat pengisi baterai untuk mengisi ulang apabila baterai sudah lemah. Proses pengisiannya dilakukan dengan cara mengaliri baterai dengan arus listrik secara terus menerus. Pengisian akan berhenti ketika tegangan baterai telah sampai pada tegangan maksimum. Apabila pada saat tegangan baterai penuh tetap dilakukan pengisian maka akan menyebabkan pemanasan yang berlebihan pada baterai dan akan memperpendek umur baterai dan juga pemborosan listrik.

Maka dari itu penulis mencoba untuk membuat suatu alat pengisi baterai lead acid secara otomatis, dimana cara kerja dari alat ini adalah apabila baterai sudah


(12)

penuh maka proses pengisian akan berhenti dan akan mengisi kembali apabila tegangan baterai sudah hampir habis.

1.2 Rumusan Masalah

Dari latar belakang diatas maka dapat diambil rumusan masalah pada Tugas Akhir ini adalah bagaimana merancang alat pengisi baterai lead acid yang dapat membaca kondisi tegangan baterai saat penuh dan saat kosong. sehingga dapat secara otomatis memutus dan mengisi kembali baterai sesuai dengan kondisi tegangan baterai.

1.3 Batasan Masalah

Batasan masalah pada Tugas akhir ini adalah :

1. Alat ini bekerja dengan membaca tegangan baterai.

2. Baterai yang digunakan disini adalah Baterai jenis lead acid yang mempunyai tegangan 12 volt 4Ah.

3. Mikrokontroler yang digunakan adalah Mikrokontroler ATMega8535

1.4 Tujuan Penulisan

Tujuan Tugas Akhir ini adalah :

1. Merancang suatu alat pengisi baterai lead acid yang dapat memutus dan mengisi kembali sesuai dengan kondisi tegangan baterai.

2. Memperkaya pengetahuan dan pemahaman tentang penggunaan mikrokontroler ATMega8535.


(13)

1.5 Metodologi Penulisan

Metodologi penulisan pada Tugas Akhir ini dilakukan dalam beberapa tahapan yakni :

1. Tahap Perancangan Perangkat Keras

Pada tahap ini dilakukan perancangan perangkat keras yaitu meliputi : perancangan rangkaian power supply, rangkaian pengisi baterai, rangkaian sistem minimum mikrokontroler, rangkaian sensor dll.

2. Tahap Perancangan Perangkat Lunak

Pada tahap ini dilakukan perancangan perangkat lunak yang akan ditanamkan pada mikrokontroler dan menggunakan bahasa c sebagai media pemasukan data. Aplikasi yang digunakan sebagai compiler adalah CodeVisionAVR.

3. Tahap pengujian

Pengujian alat dari sistem yang dirancang ini dibutuhkan untuk memeriksa kinerja dari sistem yang dirancang.

1.6 Sistematika Penulisan

Untuk memudahkan pemahaman terhadap tugas akhir ini maka penulis menyusun sistematika penulisan sebagai berikut :

BAB I : PENDAHULUAN

Bab ini merupakan gambaran menyeluruh tentang apa yang diuraikan dalam Tugas Akhir ini, yaitu pembahasan tentang latar


(14)

belakang penulisan, rumusan masalah, batasan masalah, tujuan penulisan, metodologi penulisan, dan sistematika penulisan.

BAB II : DASAR TEORI

Bab ini berisi pembahasan sekilas tentang Baterai, Alat Pengisi Baterai, Mikrokontroler, LCD (Liquid Crystal Display), CodeVisionAVR yang digunakan dalam Tugas Akhir ini.

BAB III : PERANCANGAN SISTEM

Bab ini berisi pembahasan tentang perancangan alat pengisi baterai, perancangan program menggunakan Bahasa C dan cara kerja alat.

BAB IV : PENGUJIAN SISTEM

Bab ini membahas tentang pengujian-pengujian sistem keseluruhan perangkat yang telah dirancang.

BAB V : KESIMPULAN DAN SARAN

Bab ini berisi tentang kesimpulan hasil perancangan perangkat keras dan perangkat lunak keseluruhan dan saran-saran yang mungkin untuk pengembangan lebih lanjut.


(15)

DASAR TEORI

2.1 Baterai

Baterai atau akumulator adalah sebuah sel listrik di mana di dalamnya berlangsung proses elektrokimia yang reversible (dapat berbalikan) dengan efisiensinya yang tinggi. Yang dimaksud dengan proses elektrokimia reversibel, adalah di dalam baterai dapat berlangsung proses pengubahan energi kimia menjadi energi listrik (proses pengosongan), dan sebaliknya dari energi listrik menjadi energi kimia, pengisian kembali dengan cara regenerasi dari elektroda-elektroda yang dipakai, yaitu dengan melewatkan arus listrik dalam arah (polaritas) yang berlawanan di dalam sel.

Jenis sel baterai ini disebut juga Storage Battery, adalah suatu baterai yang dapat digunakan berulang kali pada keadaan sumber listrik arus bolak – balik (AC).

2.1.1 Jenis – Jenis Baterai

Jenis-jenis baterai dibedakan berdasarkan bahan elektrolit yang digunakan pada baterai tersebut. Bahan elektrolit yang banyak digunakan pada baterai adalah jenis asam (Lead acid) dan basa (alkali). Untuk itu dibawah ini akan dibahas beberapa jenis baterai :

1. Baterai Asam (Lead Acid Storage Battery)

Baterai asam bahan elektrolitnya adalah larutan asam belerang (Sulfuric Acid = H2SO4). Di dalam baterai asam, elektroda-elektrodanya terdiri


(16)

dari pelat-pelat timah peroksida PbO2 (Lead Peroxide) sebagai anoda (kutub positif) dan timah murni Pb (Lead Sponge) sebagai katoda (kutub negatif). Ciri-ciri umum (tergantung pabrik pembuat) sebagai berikut.

- Tegangan nominal per sel 2 volt.

- Ukuran baterai per sel lebih besar bila dibandingkan dengan baterai alkali.

- Nilai berat jenis elektrolit sebanding dengan kapasitas baterai. - Suhu elektrolit sangat mempengaruhi terhadap nilai berat jenis

elektrolit, semakin tinggi suhu elektrolit semakin rendah berat jenisnya dan sebaliknya.

- Nilai standar berat jenis elektrolit tergantung dari pabrik pembuatnya.

- Umur baterai tergantung pada operasi dan pemeliharaan, biasanya dapat mencapai 10-15 tahun, dengan syarat suhu baterai tidak lebih dari 200 C.

- Tegangan pengisian per sel harus sesuai dengan petunjuk operasi dan pemeliharaan dari pabrik pembuat. sebagai contoh adalah :

 Pengisian awal (Initial Charge) : 2,7 Volt  Pengisian secara Floating : 2,18 Volt  Pengisian secara Equalizing : 2,25 Volt  Pengisian secara Boosting : 2,37 Volt.


(17)

2. Baterai Alkali (Alkaline Storage Battery)

Baterai alkali bahan elektrolitnya adalah larutan alkali (Potassium Hydroxide) yang terdiri dari :

- Nickel-Iron Alkaline Battery (Ni-Fe battery) - Nickel-Cadmium Alkaline Battery (Ni-Cd battery)

Pada umumnya yang banyak dipergunakan di instansi unit pembangkit adalah baterai alkali-cadmium (Ni-Cd). Ciri-ciri umum (tergantung pabrik pembuat) sebagai berikut.

- Tegangan nominal per sel 1,2 volt

- Nilai berat jenis elektrolit tidak sebanding dengan kapasitas baterai.

- Umur baterai tergantung pada operasi dan pemeliharaan, biasanya dapat mencapai 15-20 tahun, dengan syarat suhu baterai tidak lebih dari 200 C.

- Tegangan pengisian per sel harus sesuai dengan petunjuk operasi dan pemeliharaan dari pabrik pembuat. Sebagai contoh adalah :

 Pengisian awal (initial charge) = 1,6-1,9 Volt  Pengisian secara Floating = 1,40-1,42 volt  Pengisian secara Equalizing = 1,45 Volt  Pengisian secara Boosting = 1,50-1,65 Volt Tegangan Pengosongan per sel (Discharge) : 1 Volt.


(18)

3. Baterai Ni-Cd (Nickel-Cadmium)

Baterai Ni-Cd (Nickel-Cadmium) adalah jenis baterai yang menggunakan Nickel Oxide Hydroxide dan Metallic Cadmium sebagai bahan Elektrolitnya. Baterai Ni-Cd memiliki kemampuan beroperasi dalam jangkauan suhu yang luas dan siklus daya tahan yang lama. Di satu sisi, Baterai Ni-Cd akan melakukan discharge sendiri (self discharge) sekitar 30% per bulan saat tidak digunakan. Baterai Ni-Cd juga mengandung 15% Toksin/racun yaitu bahan Carcinogenic

Cadmium yang dapat membahayakan kesehatan manusia dan

lingkungan hidup.

4. Baterai Ni-MH (Nickel-Metal Hydride)

Baterai Ni-MH (Nickel-Metal Hydride) memiliki keunggulan yang hampir sama dengan Ni-Cd, tetapi baterai Ni-MH mempunyai kapasitas 30% lebih tinggi dibandingkan dengan Baterai Ni-Cd serta tidak memiliki zat berbahaya Cadmium yang dapat merusak lingkungan dan kesehatan manusia. Baterai Ni-MH dapat diisi ulang hingga ratusan kali sehingga dapat menghemat biaya dalam pembelian baterai. Baterai Ni-MH memiliki Self-discharge sekitar 40% setiap bulan jika tidak digunakan. Saat ini Baterai Ni-MH banyak digunakan dalam Kamera dan Radio Komunikasi. Meskipun tidak memiliki zat berbahaya Cadmium, Baterai Ni-MH tetap mengandung sedikit zat berbahaya yang dapat merusak kesehatan manusia dan Lingkungan hidup, sehingga perlu dilakukan daur ulang (recycle) dan tidak boleh dibuang di sembarang tempat.


(19)

5. Baterai Li-Ion (Lithium-Ion)

Baterai jenis Li-Ion (Lithium-Ion) merupakan jenis baterai yang paling banyak digunakan pada peralatan Elektronika portabel seperti Digital Kamera, Handphone, Video Kamera ataupun Laptop. Baterai Li-Ion memiliki daya tahan siklus yang tinggi dan juga lebih ringan sekitar 30% serta menyediakan kapasitas yang lebih tinggi sekitar 30% jika dibandingkan dengan Baterai Ni-MH. Rasio Self-discharge adalah sekitar 20% per bulan. Baterai Li-Ion lebih ramah lingkungan karena tidak mengandung zat berbahaya Cadmium. Sama seperti Baterai Ni-MH (Nickel- Metal Hydride), Meskipun tidak memiliki zat berbahaya Cadmium, Baterai Li-Ion tetap mengandung sedikit zat berbahaya yang dapat merusak kesehatan manusia dan lingkungan hidup, sehingga perlu dilakukan daur ulang (recycle) dan tidak boleh dibuang di sembarang tempat.

2.1.2 Prinsip Kerja Baterai

Ada dua prinsip kerja baterai yaitu : - Proses Discharging (Pengosongan)

Bila sel dihubungkan dengan beban maka elektron mengalir dari anoda melalui beban ke katoda, kemudian ion-ion negatif mengalir ke anoda dan ion-ion positif mengalir ke katoda.


(20)

- Proses Charging (Pengisian)

Bila sel dihubungkan dengan power supply maka elektroda positif menjadi anoda dan elektroda negatif menjadi katoda dan proses kimia yang terjadi adalah sebagai berikut :

- Aliran elektron menjadi terbalik, mengalir dari anoda melalui power supply ke katoda.

- Ion-ion negatif mengalir dari katoda ke anoda Ion-ion positif mengalir dari anoda ke katoda.

2.1.3 Prinsip Kerja Baterai Asam

Bila sel baterai tidak dibebani, maka setiap molekul cairan elektrolit Asam Sulfat (H2SO4) dalam sel tersebut pecah menjadi dua yaitu ion hydrogen yang bermuatan positif (2H+) dan ion sulfat yang bermuatan negatif (SO4)

H2SO4 2H+ + SO4-  Proses Pengosongan

Bila baterai dibebani, maka tiap ion negatif sulfat (SO4) akan bereaksi dengan pelat timah murni (Pb) sebagai katoda menjadi timah sulfat (Pb SO4) sambil melepaskan dua elektron. Sedangkan sepasang ion hydrogen (2H+) akan bereaksi dengan pelat timah peroksida (Pb O2) sebagai anoda menjadi timah sulfat (Pb SO4) sambil mengambil dua elektron dan bersenyawa dengan satu atom oksigen untuk membentuk air (H2O). Pengambilan dan pemberian elektron dalam proses kimia ini akan menyebabkan timbulnya beda potesial listrik antara kutub-kutub sel baterai.


(21)

 Proses Pengisian

Proses ini adalah kebalikan dari proses pengosongan di mana arus listrik dialirkan yang arahnya berlawanan dengan arus yang terjadi pada saat pengosongan. Pada proses ini setiap molekul air terurai dan tiap pasang ion hydrogen (2H+) yang dekat pelat negatif bersatu dengan ion negatif sulfat (SO4-) pada pelat negatif untuk membentuk asam sulfat. Sedangkan ion oksigen yang bebas bersatu dengan tiap atom Pb pada pelat positif membentuk timah peroxide (PbO2).

2.2 Alat Pengisi Baterai

Alat pengisi baterai atau charger adalah suatu rangkaian peralatan listrik yang digunakan untuk mengubah arus listrik bolak-balik (Alternating Current) menjadi arus listrik searah (Direct Current), yang berfungsi untuk pasokan DC power baik ke peralatan-peralatan yang menggunakan sumber DC maupun untuk mengisi baterai agar kapasitasnya tetap terjaga penuh.

2.2.1 Prinsip Kerja Alat Pengisi Baterai

Sumber tegangan AC yang masuk melalui terminal input trafo step-down dari tegangan 220V menjadi tegangan 12VAC kemudian oleh dioda penyearah/thyristor arus bolak-balik (AC) tersebut dirubah menjadi arus searah dengan ripple atau gelombang DC tertentu. Kemudian untuk ripple atau gelombang DC yang terjadi diratakan dengan sebuah kapasistor yang dipasang sebelum terminal output.


(22)

2.2.2 Bagian-Bagian Alat Pengisi Baterai

Alat pengisi baterai yang digunakan terdiri dari beberapa peralatan antara lain adalah :

1. Trafo utama

Trafo utama yang terpasang di rectifier merupakan trafo Step-Down (penurun tegangan) dari AC 220Volt menjadi AC 12 Volt. Besarnya kapasitas trafo tergantung dari kapasitas baterai dan beban yang terpasang pada baterai yaitu paling tidak kapasitas arus output trafo harus lebih besar 20 % dari arus pengisian baterai. Trafo yang digunakan ada yang 1 fasa ada juga yang 3 fasa.

2. Penyearah (dioda)

Dioda merupakan suatu bahan semikonduktor yang berfungsi merubah arus bolak-balik menjadi arus searah. Mempunyai 2 terminal yaitu terminal positif (anoda) dan terminal negatif (katoda).

3. Thyristor

Suatu bahan semikonduktor seperti dioda yang dilengkapi dengan satu terminal kontrol, Thyristor berfungsi untuk merubah arus bolak-balik menjadi arus searah.

Thyristor mempunyai 3 terminal yaitu : - Terminal positif (anoda)

- Terminal negatif (katoda) - Terminal kontrol (gate).

Terminal gate ini terletak diantara katoda dan anoda yang bilamana diberi trigger sinyal positif maka konduksi mulai terjadi antara katoda dan anoda melalui


(23)

gate, sehingga arus mengalir sebanding dengan besarnya tegangan trigger positif yang masuk pada terminal gate tersebut. Tegangan keluaran penyearah thyristor bervariasi tergantung pada sudut penyalaan dari thyristor.

2.2.3 Metode Pengisian

Ada beberapa metode pengisian baterai antara lain adalah : -Tegangan Konstan (Constant Voltage)

Pada dasarnya adalah berupa DC power supply biasa. Terdiri dari transformator step down dengan rangkaian penyearah untuk memberikan tegangan DC yang digunakan untuk mengisi baterai.

-Arus Konstan (Constant Current)

Metode ini memvariasikan nilai tegangan sehingga didapatkan besarnya arus yang konstan.

-Taper Constant

Metode taper constant mengisi daya baterai dari sumber tegangan konstan. Arus akan berkurang seiring dengan terbentuknya ggl (gaya gerak listrik) pada tegangan sel.

-Pulsed Charged

Metode ini bekerja dengan mengirimkan arus listrik berbentuk pulsa pada baterai. Tingkat pengisian (berdasarkan rata-rata arus) dapat dikendalikan dengan memvariasikan lebar pulsa, biasanya sekitar satu detik. Selama proses pengisian, terdapat jeda kosong kira-kira sebesar 20 sampai 30 milidetik. Jeda ini diberikan untuk memungkinkan terjadinya reaksi kimia pada baterai untuk menstabilkan proses pengisian dari efek-efek yang


(24)

tidak diinginkan seperti timbulnya gelombang gas, timbulnya kristal dan passivasi.

-Burp Charging

Metode ini merupakan kebalikan dari metode pulse charged, pengisian terjadi dengan menggunakan pulsa negatif pada baterai.

-Trickle Charge

Metode ini dirancang untuk mengimbangi debit daripada baterai. Tingkat pengisian disesuaikan dengan frekuensi debit baterai yang akan diisi.

2.3 Mikrokontroler Secara Umum

Mikrokontroler adalah sebuah chip yang didalamnya terdapat mikroprosesor yang sudah dilengkapi dengan I/O dan memori. Mikrokontroler terdiri dari sejumlah komponen, antara lain : Prosesor, ROM, RAM, Timer/Counter, Bandar I/O dan peralatan pendukung lainnya.

1. Prosesor

Prosesor (CPU) melaksanakan penjemputan instruksi dari memori, mendekodekan dan menjalankannya dan mengarahkan perpindahan data antar register atau antara register dan memori. Register dalam prosesor mikrokontroler pada umumnya dipetakan sebagai memori (RAM). Semua kegiatan ini diserempakkan oleh penabuh yang dibangkitkan oleh pembangkit penabuh yang dicatu oleh osilator Kristal, RC (Resistor-Capasitor) atau sumber luar.


(25)

2. ROM

ROM digunakan untuk menyimpan data yang bersifat permanen. Dalam mikrokontroler, program disimpan dalam ROM, atau EPROM, atau Flash ROM. Ada mikrokontroler yang dapat ditambah ROM eksternal di luar serpih mikrokontroler. Dalam beberapa mikrokontroler, di samping ROM untuk program, juga digunakan EEPROM untuk menyimpan data.

3. RAM

RAM digunakan untuk menyimpan data yang bersifat sementara. Dalam kebanyakan mikrokontroler, RAM yang tersedia sangat sedikit yang sebagiannya digunakan lagi sebagai register prosesor, dikatakan register dipetakan sebagai memori.

4. Timer

Timer (pewaktu) adalah counter (pencacah) yang digunakan untuk membangkitkan pulsa atau deretan pulsa pada saat-saat tertentu atau dengan frekuensi tertentu. Pulsa ini digunakan sebagai interupsi internal untuk memulai atau mengakhiri kegiatan tertentu. Dalam kebanyakan mikrokontroler, pencacah ini adalah pencacah naik, berbeda dengan pencacah turun yang diterapkan dalam sistem mikroprosesor.

5. Bandar I/O

Bandar I/O (I/O ports) terdiri atas Bandar parallel dan Bandar seri yang pada umumnya mempunyai kemampuan tristate. Pada beberapa mikrokontroler, juga disediakan Bandar masukan/keluaran analog. Fungsi Bandar ini dalam kebanyakan dipilih (dikonfigurasi) sebagai masukan atau keluaran paralel atau seri atau analog. Arah aliran data pada Bandar,


(26)

masukan atau keluaran pada umumnya dipilih melalui register arah (Data Direction Register, disingkat DDR). Bandar-bandar ini juga dipetakan sebagai memori.

6. Interupsi

Interupsi dapat dibedakan atas interupsi perangkat lunak yang dibangkitkan oleh instruksi interupsi yang ditanamkan dalam program dan interupsi perangkat keras yang dibangkitkan oleh sinyal perangkat keras baik yang berasal dari sumber internal seperti timer atau sumber eksternal dari Bandar seri atau paralel.

7. Bus

Bus adalah saluran yang melakukan (membawa) sinyal-sinyal perangkat keras. Bus dibedakan atas bus data, alamat dan kontrol. Bus data melakukan data antara register dan memori atau I/O, bus ini bersifat dua arah (bidirectional). Bus alamat menunjuk nomor alamat memori dari/ke mana data disimpan, bus ini bersifat satu arah (unidirectional). Bus kontrol melakukan sinyal-sinyal yang mengendalikan kegiatan sistem termasuk didalamnya sinyal-sinyal pewaktuan dan interupsi.

Terdapat beberapa produsen mikrokontroler, antara lain, Intel dengan rumpun MCS-51 dan AVR, Motorola dengan rumpun MC68HC, National dengan rumpun COP8, Microchip dengan rumpun PIC, yang masing-masing juga ditawarkan dalam puluhan tipe, mulai dari yang sederhana sampai dengan yang sudah kompleks. Mikrokontroler sudah dibuat dalam teknologi RISC (Reduced Instruction Set Computer), di mana satu intruksi dapat dilaksanakan dalam satu periode penabuh (clock) dasar.


(27)

2.3.1 Mikrokontroler ATMega 8535

Mikrokontroler AVR (Alf and Vegard’s Risc processors) memiliki arsitektur 8 bit, dimana semua instruksi dikemas dalam kode 16 bit (16-bits word) dan sebagian besar instruksi dieksekusi dalam 1 (satu) siklus clock. Mikrokontroler AVR berteknologi RISC (Reduced Instruction Set Computing). Secara umum, AVR dikelompokkan menjadi 4 kelas yaitu, keluarga ATtiny, AT90Sxx, ATMega dan AT86RFxx.

2.3.1.1 Arsitektur Mikrokontroler 8535

Mikrokontroler AVR ATMega 8535 memiliki arsitektur seperti terlihat pada Gambar 2.1.

Gambar 2.1 Blok Diagram Fungsional ATMega 8535

Dari Gambar 2.1 dapat dilihat bahwa ATMega 8535 memiliki bagian sebagai berikut :


(28)

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

- Tiga buah Timer/Counter dengan kemampuan perbandingan. - CPU yang terdiri atas 32 register.

- Watchdog Timer dengan osilator internal. - SRAM sebesar 512 byte.

- Memori flash sebesar 8 KB dengan kemampuan Read While Write. - Unit interupsi internal dan eksternal.

- Port antarmuka SPI.

- EEPROM sebesar 512 byte yang dapat diprogram saat operasi. - Antarmuka komparator anolog.

- Port USART untuk komunikasi serial.

2.3.1.2 Fitur ATMega 8535

Mikrokontroler AVR ATMega 8535 memiliki fitur sebagai berikut : - Sistem mikroprossesor 8 bit berbasis RISC dengan kecepatan

maksimal 16 MHz.

- Kapabilitas memori flash 8 KB, SRAM sebesar 512 byte dan EEPROM sebesar 512 byte.

- ADC internal dengan fidelitas 10 bit sebanyak 8 saluran.

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


(29)

2.3.1.3 Konfigurasi Pin ATMega 8535

Konfigurasi pin dari mikrokontroler ATMega 8535 sebanyak 40 pin dapat dilihat pada Gambar 2.2. Dari gambar tersebut dapat dijelaskan secara funsional konfigurasi pin ATMega 8535 sebagai berikut :

- VCC merupakan pin yang berfungsi sebagai pin masukan catu daya. - GND merupakan pin ground.

- Port A (PA0..PA7) merupakan pin I/O dua arah dan pin masukan ADC.

- Port B (PB0..PB7) merupakan pin I/O duah arah dan pin fungsi khusus, yaitu Timer/Counter, komparator dan SPI.

- Port C (PC0..PC7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu komparator analog, interupsi eksternal dan komunikasi serial. - Port D (PD0..PD7) merupakan pin I/O dua arah dan pin fungsi khusus,

yaitu komparator analog, interupsi eksternal dan komunikasi serial. - RESET merupakan pin yang digunakan untuk me-reset mikrokontroler. - XTAL1 dan XTAL2 merupakan pin masukan clock eksternal.

- AVCC merupakan pin masukan tegangan untuk ADC. - AREF merupakan pin masukan tegangan refrensi ADC.


(30)

Gambar 2.2 Konfigurasi pin ATMega 8535

2.3.1.4 Sistem Minimum ATMega 8535

Disebut sistem minimum karena pemakaian komponen hardware yang digunakan merupakan kebutuhan yang paling minimal agar sebuah prosesor dapat bekerja. Pada ATMega 8535 sudah mencakup prosesor, RAM, ROM, dan I/O, sehingga cukup dengan menambahkan osilator (sumber clock) dan catu daya saja akan bisa membuat sistem bekerja. Skema Sistem Minimum ATMega 8535 seperti ditunjukan pada Gambar 2.3.


(31)

2.3.2 Bahasa Pemrograman Mikrokontroler

Bahasa Pemrograman adalah instruksi standar untuk memerintah komputer. Bahasa pemrograman ini merupakan suatu himpunan dari aturan sintaks dan semantic yang dipakai untuk mendefenisikan program komputer.

Menurut tingkat kedekatannya dengan mesin komputer, bahasa pemrograman terdiri dari :

1. Bahasa Mesin, yaitu memberikan perintah kepada komputer dengan memakai kode bahasa biner, contohnya 01100101100110. Terkadang untuk memudahkan penulisan, bahasa biner ini dituliskan dalam bilangan heksadesimal, seperti : 2A, F5 dan BC. File yang dihasilkan dari penulisan bahasa mesin berekstensi *.hex.

2. Bahasa tingkat rendah, atau dikenal dengan istilah bahasa rakitan(Assembly), yaitu memberikan perintah kepada komputer dengan memakai kode-kode singkat (kode mnemonic), contohnya MOV, SUB, CJNE, JMP,LOOP,dsb. File yang dihasilkan dari penulisan bahasa ini berekstensi *.asm.

3. Bahasa Tingkat Menengah, yaitu bahasa komputer yang memakai campuran instruksi dalam kata-kata bahasa manusia dan instruksi yang bersifat simbolik, contohnya {, }, ?, <<,>>,&&,||, dsb.

4. Bahasa Tingkat Tinggi, yaitu bahasa komputer yang memakai instruksi berasal dari unsur kata-kata bahasa manusia, contohnya begin, end, if, for, while, and, or, dsb.


(32)

Sebagian besar bahasa pemrograman digolongkan sebagai bahasa tingkat tinggi, hanya bahasa C yang digolongkan sebagai bahasa tingkat menengah dan Assembly yang merupakan bahasa tingkat rendah.

Mikrokontroler juga harus memerlukan suatu program agar dapat bekerja sesuai dengan yang diinginkan. Bahasa pemrograman untuk mikrokontroler dapat ditulis dengan berbagai bahasa, namun harus di kompilasi agar mendapatkan hasil file eksekusi dengan ekstensi *.hex. File *.hex kemudian di download ke memori program pada mikrokontroler menggunakan suatu

downloader.

2.4 LCD (Liquid Crystal Display)

LCD 16x2 adalah Liquid Crystal Display dot matrix yang mampu menampilkan 16x2 karakter atau 16 kolom dan 2 baris. Alat ini membutuhkan daya yang kecil dan dilengkapi panel LCD dengan tingkat kontras yang cukup tinggi serta kontroler LCD CMOS yang telah terpasang dalam modul tersebut. Kontroler ini memiliki ROM/RAM dan display data RAM. Semua fungsi display dikontrol dengan instruksi khusus. Modul LCD ini juga dapat dengan mudah dihubungkan dengan unit mikrokontroler. Secara fisik, LCD 16x2 dapat dilihat dari Gambar 2.4 berikut :


(33)

2.5 Relay

Relay adalah suatu peralatan elektronik yang berfungsi untuk memutuskan atau untuk menghubungkan suatu rangkaian elektronik yang satu dengan rangkaian yang lainnya. Pada dasarnya relay adalah saklar elektro magnectic yang akan bekerja apabila arus mengalir melalui kumparan, inti besi akan menjadi magnet dan akan menarik kontak-kontak relay. Kontak-kontak dapat ditarik apabila garis magnet yang ditetapkan oleh medan yang ada pada celah udara pada jangkar dan inti magnet, dan banyaknya lilitan kumparan, kuat arus yang mengalir atau yang disebut dengan imperal lilitan dan pelawan magnet yang berada pada sirkuit pemagnetan. Untuk memperkuat medan magnet di bentuk suatu sirkuit.

Kontak-kontak atau kutub dari relay umumnya memiliki tiga dasar pemakaian yaitu :

1. Bila kumparan di aliri arus listrik maka kontaknya akan menutup dan disebut sebagai kontak Normally Open (NO).

2. Bila kumparan di aliri arus listrik maka kontaknya akan membuka dan disebut dengan Normally Close (NC).

3. Tukar sambung (Change Over/NO), relay jenis ini mempunyai kontak tengah yang normalnya tertutup tetapi melepaskan diri dari posisi dan membuat kontak dengan yang lain bila relay di aliri arus listrik.

Bentuk relay dapat dilihat pada Gambar 2.5. :


(34)

2.6 Code Vision AVR

CodeVisionAVR merupakan salah satu software compiler yang khusus digunakan untuk mikrokontroler keluarga AVR. CodeVisionAVR merupakan yang terbaik bila dibandingkan dengan compiler yang lain karena beberapa kelebihan yang dimiliki oleh CodeVisionAVR antara lain : - Menggunakan IDE (Integrated Development Environment).

- Fasilitas yang disediakan lengkap (mengedit program, meng-compile program, men-download program) serta tampilannya terlihat menarik dan mudah dimengerti. Kita dapat mengatur settingan editor sedemikian rupa sehingga memudahkan kita dalam penulisan program.

- Mampu membangkitkan kode program secara otomatis dengan menggunakan fasilitas CodeVisionAVR.

- Memiliki fasilitas untuk men-download program langsung dari CodeVisionAVR dengan menggunakan hardware khusus seperti Atmel STK500, Kanda System STK200/300 dan beberapa hardware lain yang telah didefenisikan oleh CodeVisionAVR.

- Memiliki fasilitas debugger sehingga dapat menggunakan software compiler lain untuk mengecek kode assembler nya, contohnya AVRStudio.

- Memiliki terminal komunikasi serial yang terintegrasi dalam CodeVisionAVR sehingga dapat digunakan untuk membantu pengecekan program yang telah dibuat khususnya yang menggunakan fasilitas komunikasi serial USART. (Bejo, 2008)


(35)

Salah satu kelebihan dari CodeVisionAVR adalah tersedianya fasilitas untuk men-download program ke mikrokontroler yang telah terintegrasi sehingga demikian CodeVisionAVR ini selain dapat berfungsi sebagai software compiler juga dapat berfungsi sebagai software programmer/downloader. Jadi kita dapat melakukan proses download program yang telah dikompilasi dengan menggunakan software CodeVisionAVR juga.


(36)

MIKROKONTROLER

LCD

RELAY CHARGER

BATTERY

SENSOR TEGANGAN (PEMBAGI TEGANGAN)

TOMBOL SETTING

CATU DAYA

PERANCANGAN SISTEM

3.1

Spesifikasi Sistem yang dirancang

Spesifikasi dalam perancangan alat pengisi baterai Lead Acid ini adalah : - Sumber Tegangan 220 VAC/50Hz

- Tegangan Output adalah 13,8 V - Arus pengisian adalah 0,4 A.

- Sebagai pengendali otomatis digunakan Mikrokontroler ATMega 8535.

Dari spesifikasi diatas maka dibuat Blok Diagram untuk memudahkan dalam pembacaan cara kerja sistem secara keseluruhan. Blok diagram sistem yang dibuat dapat dilihat pada Gambar 3.1.


(37)

Berdasarkan blok diagram diatas, fungsi dari masing-masing blok dapat dijelaskan sebagai berikut :

1. Catu Daya berfungsi untuk mensupply tegangan dan arus ke seluruh rangkaian.

2. Charger berfungsi untuk mengisi baterai.

3. Relay berfungsi untuk memutus dan mengalirkan arus listrik ke baterai. 4. Sensor Tegangan berfungsi untuk membaca tegangan baterai.

5. LCD berfungsi untuk menampilkan nilai tegangan.

6. Tombol Setting berfungsi untuk mengatur tegangan yang kita inginkan pada saat pengisian.

7. Mikrokontroler berfungsi sebagai pengendali seluruh rangkaian.

3.2 Rangkaian Alat Pengisi Baterai Lead Acid

Charger adalah suatu peralatan listrik yang digunakan untuk mengubah arus listrik bolak-balik (AC) menjadi arus listrik searah (DC), yang berfungsi untuk mengisi baterai agar kapasitasnya tetap terjaga penuh sehingga kehandalan baterai tetap terjamin.

Rangkaian alat pengisi baterai yang akan dirancang ini berfungsi untuk mengisi baterai jenis lead acid. Baterai ini merupakan baterai yang dapat diisi ulang. Baterai yang digunakan pada rancangan ini memiliki kapasitas sebesar 12 V 4Ah, seperti ditunjukkan pada Gambar 3.2.


(38)

Gambar 3.2 Baterai Lead Acid 12V 4Ah

Pada perancangan ini tegangan baterai yang diinginkan pada saat penuh adalah 13,8 Volt dan pada saat tegangan rendah adalah sebesar 12,1 Volt, dengan arus pengisian normal sebesar 400mA atau 0,4 A. Sebagai sumber tegangan pada perancangan ini diperlukan catu daya. Catu daya merupakan rangkaian elektronik yang mengubah arus listrik bolak-balik menjadi arus searah. Secara prinsip rangkaian catu daya ini berfungsi untuk menurunkan tegangan AC, menyearahkan tegangan AC sehingga menjadi DC, dan menstabilkan tegangan DC. Pada catu daya ini digunakan transformator step down CT yang berfungsi untuk menurunkan tegangan, yang kemudian akan disearahkan dengan dioda penyearah. Rangkaian penyearah yang digunakan disini adalah rangkaian penyearah gelombang penuh. Pada rangkaian ini, tegangan positif phasa yang pertama diteruskan oleh D1 sedangkan phasa yang berikutnya dilewatkan melalui D2 ke beban dengan CT Transformator sebagai common ground. Dengan demikian beban mendapat suplai tegangan gelombang penuh, seperti terlihat pada Gambar 3.3.


(39)

Pada Gambar 3.3 tegangan ripple (riak)disini masih sangat besar karena itu perlu digunakan sebuah kapasitor yang berfungsi untuk menyaring tegangan ripple agar tegangan keluaran menjadi rata. Semakin besar nilai kapasitor yang dipakai maka tegangan ripple akan semakin kecil. Dengan adanya kapasitor ini bentuk gelombang tegangan keluarannya menjadi rata, seperti terlihat pada Gambar 3.4.

Gambar 3.4 Bentuk Gelombang dengan Filter Kapasitor

Tegangan DC yang sudah disearahkan masih perlu untuk distabilkan dan pada rangkaian catu daya ini diperlukan suatu regulator tegangan. Regulator tegangan yang digunakan pada rancangan ini adalah IC LM317 dimana IC ini dapat memberikan tegangan output dari 1,25 V sampai dengan 37V dengan arus maksimal yang mampu dialirkan 1,5 A.

Gambar 3.5 Rangkaian regulator tegangan LM317

Untuk menghasilkan tegangan output sebesar 13,8V dari IC LM317 digunakan


(40)

�out = , � +�

� + IAdj*R2)

Nilai dari R2 dan R1 dipilih sesuai dengan datasheet, R2 sebesar 2400 ohm dan untuk R1 sebesar 240 ohm, sehingga tegangan output dari LM317 dapat dihitung dengan menggunakan rumus sesuai dengan datasheet LM317, yaitu :

�out = , � +�

� + IAdj*R2)

�out = , � + Ω

Ω + �� ∗ Ω

�out = , � + . �

�out = , �

Dari hasil diatas maka tegangan keluaran yang diinginkan akan tetap sebesar 13,8Volt. Pada alat pengisi baterai ini pengisian dilakukan dengan arus pengisian sebesar 0,4 A. Untuk mengatur arus pengisian maka pada rancangan ini digunakan IC LM317 sebagai pembatas arus yang dapat menghasilkan arus pengisian sebesar 0,4 A.

� =

��

Dari rumus diatas untuk mengatur arus pengisian sebesar 400mA atau 0,4 A maka kita harus menentukan nilai hambatan (R),dimana nilai I = 0,4A, Vref = 1,2 V maka dapat dicari nilai R1 dengan rumus :

� =��

� = , �

,


(41)

maka besar arus pengisian akan dibatasi sebesar 0,4A. Pada rancangan ini pemilihan nilai tegangan trafo ditentukan dengan mengetahui tegangan puncak dan arus yang dikonsumsi pada komponen yang dicatu. Ada beberapa komponen yang harus dicatu antara lain Rangkaian charger, mikrokontroler ATMega8535, Sensor, dan LCD. Konsumsi arus yang dibutuhkan komponen tersebut sesuai dengan datasheet dapat dilihat seperti yang tertera pada tabel 3.1:

Tabel 3.1 Konsumsi arus dari komponen yang dicatu

No Komponen yang dicatu Konsumsi Arus

1 Rangkaian Charger 400mA 2 Rangkaian Driver 30mA

3 Rangkaian sistem minimum 50mA

4 Rangkaian Sensor 13mA 5 Rangkaian LCD 3mA

Total 496mA

Dari tabel 3.1 diperoleh arus total yang dikonsumsi untuk rangkaian seluruhnya adalah sebesar 496mA, maka dapat ditentukan tegangan trafo dengan terlebih dahulu menghitung tegangan VDC, tegangan ripple Vrip, dan tegangan puncak VP. Untuk menentukan tegangan DC jumlah seluruh tegangan yang diperlukan oleh setiap komponen dijumlahkan, yaitu dengan menjumlahkan nilai tegangan yang ada di titik A,B, dan C. Seperti terlihat pada Gambar 3.6. Jumlah setiap tegangan dapat dihitung dengan rumus sebagai berikut :

Gambar 3.6 Jumlah tegangan yang diperlukan pada setiap komponen


(42)

VC = Vout = 13,8 V

VB = VC + Vjatuh IC1 = 16,8 V + 1,2 V = 18 Volt VA = VB + VIC1 = 18 V + 3 V = 21 Volt

maka nilai VDC pada saat diberi beban adalah sebesar 21 Volt.

Untuk menentukan tegangan ripple digunakan rumus sebagai berikut dimana nilai kapasitor yang digunakan adalah 4700µF :

V

ripple =

� �.�

=

9 . −3 . . −6

= 1V

Dari hasil diatas maka dapat ditentukan nilai tegangan puncak dengan mengggunakan rumus seperti berikut :

VDC = VP - ���� VP = VDC + ���� = 21 + = 21 + 0,5 = 21,5 Volt.

Maka untuk menentukan nilai tegangan trafo digunakan rumus sebagai berikut :

Vtrafo = VP/√2 = 21,5/1,4 = 15 Volt

Dari hasil diatas maka trafo yang akan digunakan adalah trafo step down CT dengan tegangan sekunder 15 V. Setelah nilai trafo, kapasitor dan regulator


(43)

tegangan diperoleh, sesuai dengan perhitungan diatas maka dapat dirangkai suatu alat pengisi baterai seperti terlihat pada Gambar 3.7 :

Gambar 3.7 Rangkaian alat pengisi baterai lead acid

3.3 Rangkaian Catu Daya Mikrokontroler

Power supply atau catu daya adalah suatu rangkaian yang berfungsi untuk memberikan daya listrik kepada seluruh rangkaian yang ada. Khususnya pada rangkaian mikrokontroler. Rangkaian catu daya yang akan dibuat untuk Mikrokontroler ini adalah rangkaian yang memiliki tegangan keluaran 5 Volt, karena mikrokontroler hanya dapat membaca tegangan 5 V. Untuk itu diperlukan suatu regulator tegangan agar tegangan keluaran tetap pada satu nilai meskipun masukannya lebih besar dari nilai yang diinginkan. Pada rancangan ini digunakan IC LM7805 sebagai penstabil tegangan, LM7805 merupakan regulator tegangan tetap untuk mendapat tegangan +5 Volt yang dapat memberikan arus sampai 1A sehingga kebutuhan komponen yang digunakan dapat terpenuhi. LM7805 memiliki tiga terminal, yaitu terminal Vin, GND dan Vout. LED hanya sebagai indikator apabila regulator tegangan dinyalakan. Dari penjelasan diatas maka


(44)

dibuat sebuah rangkaian catu daya mikrokontroler dengan regulator tegangan IC LM7805, seperti terlihat pada Gambar 3.8 :

Gambar 3.8 Rangkaian Catu Daya Mikrokontroler

3.4 Rangkaian Penggerak Relay

Rangkaian penggerak (driver) ini berfungsi untuk mengaktifkan relay pada saat pengisian baterai dan memutuskan relay pada saat proses pengisian selesai atau baterai penuh. Rangkaian penggerak (driver) ini menggunakan transistor, transistor disini berfungsi untuk menguatkan arus basis sehingga dapat menggerakkan atau menghidupkan relay, dengan kata lain transistor bekerja sebagai saklar. Relay berfungsi sebagai saklar elektronik yaitu yang menghubungkan dua titik penghantar dengan menggunakan saklar sehingga arus akan mengalir dari sumber ke beban. Pada rangkaian transistor dirangkai sebagai rangkaian common-emitor. Dengan demikian, pemberian arus pada basis transistor akan menjenuhkan (saturasi) transistor tersebut.


(45)

Pada Gambar 3.9 diperlihatkan rangkaian penggerak (driver) relay. Berikut penjabaran perhitungan arus, tegangan dan hambatan yang dibutuhkan pada perancangan rangkaian penggerak (driver) :

Diketahui nilai VCC Relay = +12 Volt, hambatan relay (Relay) = 400Ω, VCE(saturasi) = 0 Volt, VBE = 0,7 Volt, sehingga arus yang mengalir adalah

V = I.R IC = Irelay

IC = (Vcc- VCE(sat))/Rrelay = (12V-0V)/400Ω IC = 12V/400Ω = 0,03 A atau 30mA

Berikutnya untuk menghitung nilai IB adalah (hFE min =100)

0,3mA 100

30mA

IB   

FE C h

I

dengan demikian untuk menentukan nilai RB yang harus digunakan adalah :

Ω

11.666

0,3mA

V

0,7

V

4.2

I

V

V

R

B BE OH

B

K

Dari hasil perhitungan diatas diperoleh nilai RB (13) sebesar 11KΩ. Karena nilai resistor 11 KΩ jarang ada di pasaran, maka resistor yang dipilih untuk rangkaian driver ini adalah resistor 10KΩ. Dan untuk transistor yang digunakan adalah transistor tipe NPN C945. Dioda (D1) berfungsi untuk meredam ggl (gaya gerak listrik) balik dari kumparan relay yang biasanya muncul di saat transistor menjadi off sehingga dapat menghindarkan kerusakan pada transistor. Dari perhitungan rangkaian penggerak (driver) relay tersebut kapasitas arus yang diperlukan ±1 Ampere maka dioda yang digunakan jenis 1N4004. Dari penjelasan


(46)

diatas diperoleh nilai dan jenis komponen yang digunakan pada rangkaian Driver seperti terlihat pada Gambar 3.9.

Gambar 3.10 Rangkaian Penggerak relay Keseluruhan

3.5 Rangkaian Mikrokontroler ATMega 8535

Rangkaian sistem minimum mikrokontroler ATMega 8535 terdiri dari rangkaian sistem minimum dan rangkaian I/O. Rangkaian minimum mikrokontroler terdiri dari rangkaian clock dan rangkaian reset. Rangkaian clock pada mikrokontroler ATMega 8535 ini membutuhkan osilator Kristal dan 2 buah kapasitor non polar agar dapat berosilasi. Pada perancangan ini, besar frekuensi osilator Kristal yang digunakan adalah 12 MHz dan besar kapasitor adalah 22pF. Pemilihan frekuensi dan besar kapasitor tersebut dirancang berdasarkan datasheet mikrokontroler ATMega 8535.

Rangkaian reset pada mikrokontroler ATMega 8535 berfungsi untuk mengembalikan mikrokontroler pada program awal. Rangkaian reset ini terdiri dari resistor 10KΩ dan kapasitor nonpolar 100nF. Kombinasi komponen kapasitor dan resistor ini berfungsi untuk menentukan nilai konstanta waktu pengisian


(47)

muatan pada kapasitor. Ketika catu daya dihidupkan, kapasitor akan melakukan pengisian muatan awal sehingga logika yang diterima pena reset saat itu dalam keadaan logika rendah dan mikrokontroler masuk ke dalam modus reset. Akan tetapi setelah pengisian muatan kapasitor penuh, pena reset akan berubah menjadi logika tinggi. Setelah itu, mekanisme reset dilakukan dengan mengosongkan kembali kapasitor melalui penekanan tombol reset.

Gambar 3.11 Rangkaian minimum Mikrokontroler ATMega 8535 dan Hubungan I/O PORT

Rangkaian I/O adalah semua rangkaian yang terhubung dengan mikrokontroler ATMega 8535. Bandar-bandar yang digunakan untuk mengendalikan rangkaian I/O dapat dilihat pada Tabel 3.2 :

Tabel 3.2 Fungsi PORT/Bandar yang digunakan

PORT/Bandar Bit Fungsi

A 1 Sensor Tegangan

B

1-5 Hubungan ke Tombol

6 Led Indikator

7 Relay Charger


(48)

Untuk pemograman ke mikrokontroler ATMega8535, maka diperlukan suatu programmer/downloader ISP (In System Programming). Programmer ISP mempunyai keuntungan yaitu dapat memprogram mikrokontroler yang sedang terpasang dengan rangkaian lainnya tanpa harus mencabut serpih (chip) mikrokontroler tersebut sehingga lebih praktis jika ingin melakukan pemograman secara berulang-ulang. Pemograman berbasis ISP cukup menghubungkan antara pin MOSI, MISO, SCK, RESET, VCC dan Ground dengan programmer ISP tersebut.

3.6 Rangkaian Pembagi Tegangan

Rangkaian pembagi tegangan berfungsi untuk membaca tegangan, dimana tegangan keluarannya nanti akan dikirimkan ke ADC yang kemudian mengolah data analog menjadi data digital. Komponen yang digunakan sebagai sensor tegangan adalah dua buah resistor yaitu R14=4K7 dan R15=10K, Gambar rangkaian pembagi tegangan dapat dilihat pada Gambar 3.12.

Gambar 3.12 Rangkaian Pembagi Tegangan

sehingga dapat dihitung tegangan output dengan menggunakan rumus pembagi tegangan, yaitu :


(49)

�out = �

� +� × �in

�out = � Ω

kΩ+ � Ω× , �

�out = Ω× 13,8 V

�out = , �

Jadi, tegangan output adalah 4,4V, tegangan ini dapat dibaca oleh mikrokontroler karena tidak lebih dari 5V. Ketika sensor tegangan membaca tegangan baterai 4,4 V, maka pengisian akan dihentikan yang menandakan bahwa baterai lead acid sudah penuh. Untuk mengetahui kondisi baterai lemah (low) dapat juga diketahui dengan menggunakan sensor tegangan, diasumsikan tegangan pada saat baterai lemah adalah 12,1 V, maka dapat dihitung berapa tegangan output dari sensor tegangan, yaitu :

Vout= �

� +� ×Vin

Vout=

� Ω

KΩ+ � Ω×12,1 V

Vout= Ω

Ω×12,1 V

Vout= 3,8V

Tegangan output 3,8V akan dibaca oleh ADC sebagai logika “1” yang akan mengaktifkan relay untuk melakukan pengisian baterai lead acid.

3.8 Hubungan Tombol ke Mikrokontroler

Pada perancangan ini, Tombol disini digunakan untuk mensetting tegangan maksimum dan minimum sebelum melakukan pengisian pada baterai sesuai dengan keinginan. Tombol ini juga berfungsi untuk memulai dalam pengisian


(50)

baterai. Hubungan tombol ke mikrokontroler dapat dilihat seperti pada Gambar 3.13.

Gambar 3.13 Hubungan Tombol ke Mikrokontroler

Pada Gambar 3.13 Tombol 1 dan tombol 4 dihubungkan ke PB 6 dan PB2 pada kaki mikrokontroler yang berfungsi untuk mengatur besar kecil nilai tegangan minimum, Tombol 2 dan 5 dihubungkan ke PB 5 dan PB 3 yang berfungsi untuk mengatur besar kecil nilai tegangan maksimum. Dan Tombol 3 dihubungkan ke PB 4 yang berfungsi untuk memulai proses pengisian.

3.9 Hubungan LCD ke Mikrokontroler

LCD digunakan untuk menampilkan nilai tegangan dan suhu pada saat pengisian baterai, sehingga dapat diketahui kondisi tegangan baterai. LCD yang digunakan adalah LCD 2x16, lebar display 2 baris 16 kolom. Hubungan antara mikrokontroler dan LCD diperlihatkan pada Gambar 3.14.


(51)

Gambar 3.14 Hubungan LCD ke Mikrokontroler

Pada Gambar 3.14 pin 1 dihubungkan ke Vcc (5V), pin 2 dan 16 dihubungkan ke Ground (GND), pin 3 merupakan pengaturan tegangan contrast dari LCD, pin 4 merupakan register (RS), pin 5 merupakan R/W (read/write), pin 6 merupakan Enable, pin 11-14 merupakan data. Reset Enable R/W dan data dihubungkan ke mikrokontroler ATMega 8535. Fungsi dari potensiometer adalah untuk mengatur gelap/terangnya karakter yang ditampilkan pada LCD.


(52)

Start Inisialisasi Vmax,Vmin Apakah Nilai ADC<=0? Cek tegangan baterai Tampilkan tegangan baterai ,

Vmax,Vmin V<=Vmin ? Aktifkan relay(ON) Proses charging V>=Vmax ?

Non aktifkan relay(OFF)

Tampilkan Pesan error Tidak Ya Ya Tidak Ya Tidak Tekan Tombol? Masukan nilai Vmax, Vmin baru

Ya Tidak

3.10 Flowchart Program

Diagram alir yang menggambarkan aliran atau proses kerja program diperlihatkan pada Gambar 3.15.


(53)

Program dimulai dengan menampilkan tegangan maksimum dan minimum yang kemudian dilanjutkan dengan pembacaan tegangan baterai melalui ADC. Apabila tegangan minimum, maka charger akan aktif dan ketika tegangan baterai mencapai maksimum maka charger akan putus. Selanjutnya pada saat pengisian sudah berhenti maka tampilan akan kembali seperti semula.

Prinsip Kerja dan fungsi perintah-perintah pada program awal.

#define charger PORTB.7 #define indikator PORTB.6 #define setting PINB.3 #define max_naik PINB.5 #define max_turun PINB.1 #define min_naik PINB.4 #define min_turun PINB.2

Perintah program diatas merupakan perintah untuk penamaan port yaitu memberikan nama ataupun inisialisasi pada port-port yang digunakan. Tujuan penamaan adalah untuk mempermudah pemograman.

// Alphanumeric LCD Module functions #asm

.equ __lcd_port=0x15 ;PORTC #endasm

#include <lcd.h>

Perintah diatas untuk mensetting LCD di port C // LCD module initialization

lcd_init(16);

lcd_gotoxy(4,0); lcd_putsf("My Projek"); lcd_gotoxy(5,1); lcd_putsf("Bukry"); delay_ms(2000); lcd_clear(); V_max=13.8; V_min=12.1; settingan=1; baca_ADC=0; charger=0;


(54)

indikator=0; status=0;

simpan_sensor=0; simpan_nilai_V=0; while (1)

Perintah diatas merupakan inisialisasi dan tampilan pada LCD

// ADC initialization

// ADC Clock frequency: 750,000 kHz // ADC Voltage Reference: AVCC pin // ADC High Speed Mode: Off

// ADC Auto Trigger Source: Free Running ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0xA4;

SFIOR&=0x0F;

Perintah diatas merupakan inisialisasi ADC. {

nilai_V=read_adc(1);

lcd_gotoxy(0,0); lcd_putsf("Baca Nilai ADC"); sprintf(datalcd,"nilai ADC=%d",nilai_V); lcd_gotoxy(0,1); lcd_puts(datalcd); delay_ms(1000); lcd_clear(); if(max_turun==0){baca_ADC=0; delay_ms(1000);} } delay_ms(500); };

Perintah diatas untuk membaca nilai tegangan dengan menggunakan ADC.

//Input/Output Ports initialization //Port A initialization

//Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

//State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTA=0x00; DDRA=0x00;


(55)

//Port B initialization

//Func7=Out Func6=Out Func5=In Func4=In Func3=In Func2=In Func1=In Func0=Out

//State7=0 State6=0 State5=P State4=P State3=P State2=P State1=P State0=0

PORTB=0x3E; DDRB=0xC1; //Port C initialization

//Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

//State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTC=0x00; DDRC=0x00;

//Port D initialization

//Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

//State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTD=0x00; DDRD=0x00;

Printah diatas merupakan inisialisasi setiap port yang dipakai.

if(nilai_V1>=V_max){charger=0; indikator=0; status=0;} if(nilai_V1<=V_min){charger=1; indikator=1; status=1;}

Perintah diatas untuk mengaktifkan dan memutuskan charger setelah tegangan baterai yang dibaca ADC sesuai dengan nilai Vmax dan Vmin.


(56)

PENGUJIAN SISTEM

4.1 Pengujian Rangkaian

Setelah melakukan perancangan maka tahap selanjutnya adalah tahap pengujian. Pengujian dilakukan kepada rangkaian yang telah dibuat untuk mengetahui sejauh mana kinerja alat yang telah dibuat dan untuk mengetahui kekurangan dari alat yang dirancang.

4.1.1 Pengujian Rangkaian Catu Daya

Pengujian pada rangkaian catu daya bertujuan untuk mengukur besarnya tegangan yang dibutuhkan oleh setiap blok rangkaian. Pengujian ini dilakukan dengan mengukur tegangan pada titik A,B, dan C. Seperti terlihat pada Gambar 4.1.

Gambar 4.1 Pengujian Rangkaian Catu Daya

Dari hasil pengukuran diperoleh nilai tegangan pada titik A, B, dan C, seperti terlihat pada Tabel 4.1.


(57)

Tabel 4.1 Data Pengujian Rangkaian Catu Daya

No. Tegangan (Volt) Hasil Pengukuran

1 Pada Titik A 21 V

2 Pada Titik B 18 V

3 Pada Titik C 13,8 V

4.1.2 Pengujian Rangkaian Relay

Pengujian rangkaian relay dapat dilakukan dengan memberikan tegangan 5 volt pada basis transistor Q1 melalui resistor R13. Tegangan atau sinyal pemicu dari transistor berasal dari mikrokontroler Port PB7. Pada saat logika pada port PB7 adalah tinggi, maka transistor mendapat tegangan bias dari kaki basis, dengan adanya tegangan bias ini maka transistor akan aktif (saturasi), sehingga adanya arus yang mengalir ke kumparan relay. Hal ini akan menyebabkan saklar pada relay menjadi tertutup, sehingga rangkaian pengisi baterai akan terhubung ke baterai (terjadi proses pengisian). Begitu juga sebaliknya pada saat logika pada port PB7 adalah rendah maka relay tidak dialiri arus, hal ini akan menyebabkan saklar pada relay terbuka, sehingga hubungan antara rangkaian pengisi baterai dengan baterai akan terputus (tidak terjadi proses pengisian). Dari hasil pengujian diperoleh bahwa relay berfungsi dengan baik.

4.1.3 Pengujian Rangkaian Mikrokontroler ATMega 8535, LCD dan Tombol Pengujian rangkaian mikrokontroler, LCD dan Tombol ini dilakukan untuk mengecek apakah data yang dimasukkan (input) dan dikeluarkan (output)

mikrokontroler berfungsi sesuai dengan deskripsi kerja sistem. Pengujian ini dilakukan dengan mengisikan program kedalam mikrokontroler kemudian hasilnya akan ditampilkan pada LCD, dan pengujian tombol dilakukan dengan


(58)

menekan tombol satu per satu secara bergantian, dimana tombol ini berfungsi untuk mengatur nilai Vmax dan Vmin dan hasil pengujian tombol akan ditampilkan pada LCD. Berikut ini merupakan potongan listing program pengujian mikrokontroler, LCD dan Tombol :

Chip type : ATmega8535 Program type : Application Clock frequency : 12,000000 MHz Memory model : Small

External SRAM size : 0 Data Stack size : 128

*****************************************************/ #include <mega8535.h>

// Alphanumeric LCD Module functions #asm

.equ __lcd_port=0x15 ;PORTC #endasm

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

// LCD module initialization lcd_init(16);

lcd_gotoxy(4,0); lcd_putsf("My Projek"); lcd_gotoxy(5,1); lcd_putsf("Bukry"); delay_ms(2000); lcd_clear(); V_max=13.70; V_min=12.09; settingan=1; baca_ADC=0; charger=0; indikator=0; status=0; simpan_sensor=0; simpan_nilai_V=0; while (1)


(59)

{

// Place your code here while(settingan==1) {

if(max_naik==0){V_max=V_max+0.1;} if(max_turun==0){V_max=V_max-0.1;} if(min_naik==0){V_min=V_min+0.1;} if(min_turun==0){V_min=V_min-0.1;} sprintf(datalcd,"Vmax=%0.01f V",V_max); lcd_gotoxy(0,0);

lcd_puts(datalcd);

sprintf(datalcd,"Vmin=%0.01f V",V_min); lcd_gotoxy(0,1);

lcd_puts(datalcd);

lcd_gotoxy(12,0); lcd_putsf("Vbat"); lcd_gotoxy(12,1); lcd_putsf("Eror");

Dari hasil pengujian program diatas, mikrokontroler, LCD dan tombol berfungsi dengan baik, seperti yang terlihat pada Gambar 4.2 :

Gambar 4.2 Tampilan pengujian Mikrokontroler, LCD dan Tombol

4.1.4 Pengujian Rangkaian Pembagi Tegangan

Rangkaian pembagi tegangan ini digunakan untuk membaca kondisi tegangan baterai seperti pada gambar 4.3. Rangkaian ini dipasang karena tegangan yang dapat di baca oleh mikrokontroler adalah 5V. Jadi dengan pembanding ini


(60)

ketika diperoleh tegangan baterai maksimal maka pada mikrokontroler akan terbaca 5V.

� = �+ �� � ����

Pada saat proses pengisian, kondisi baterai dapat terbaca oleh mikrokontroler, sehingga pengisian akan berhenti mengisi, saat baterai terbaca dengan nilai Vmax, dan ketika baterai terbaca sama dengan nilai Vmin maka pengisian akan dijalankan kembali.

Gambar 4.3 Rangkaian Pembagi Tegangan

Pengujian ini dilakukan dengan cara mengukur tegangan keluaran pada mikrokontroler dengan menggunakan multimeter digital pada saat terhubung dengan baterai. Hasil pengujian dari rangkaian pembagi tegangan dapat dilihat pada Tabel 4.2.

Tabel 4.2 Hasil Pengujian Pembagi Tegangan No. Tegangan Baterai

(V)

Tegangan Keluaran Pembagi Tegangan (V)

1 13,8 4,4

2 13,5 4,1

3 13,0 4,0

4 12,5 3,8

5 12,0 3,7

6 11,5 3,5


(61)

Dari hasil pengujian ini diperoleh bahwa nilai tegangan yang dihasilkan oleh pembagi tegangan dapat dibaca oleh mikrokontroler. Dengan demikian maka rangkaian pembagi tegangan berfungsi dengan baik.

4.2 Pengujian Secara Keseluruhan

Pengujian keseluruhan sistem dilakukan setelah semua rangkaian dan perangkat lunak diintegrasikan menjadi satu sistem. Pengujian ini bertujuan untuk menunjukkan bahwa perancangan sesuai dengan yang diharapkan. Pengujian ini dilakukan dengan cara mengisi baterai 12V 4Ah dengan kondisi tegangan awal yang berbeda-beda sebanyak 5 kali. Gambar dan Data hasil dari pengujian ini dapat dilihat pada Gambar 4.4 dan Tabel 4.3.

Gambar 4.4 Pengujian saat Pengisian Baterai

Tabel 4.3 Hasil Pengujian Keseluruhan

No. Besar Tegangan (V) Lama Waktu Pengisian

Vmin Vmax

1 11,0 13,8 10 Jam 0 menit

2 11,5 13,8 8 Jam 0 menit

3 12,0 13,8 5 Jam 59 menit

4 12,5 13,8 3 Jam 30 menit


(62)

Dari hasil pengujian secara keseluruhan ini diperoleh bahwa :

- Sistem dapat mengisi baterai pada saat tegangan baterai terbaca rendah dan pengisian akan berhenti ketika tegangan baterai terbaca tinggi.

- Sistem dapat mengisi baterai sesuai dengan tegangan yang diatur dengan menggunakan tombol setting.


(63)

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Setelah melakukan perancangan dan pengujian sistem, dapat disimpulkan beberapa hal antara lain :

1. Alat yang dirancang berfungsi sesuai dengan yang diharapkan.

2. Ketika baterai mencapai tegangan maksimum, maka proses pengisian akan berhenti, dan ketika tegangan baterai terbaca minimum maka proses pengisian berjalan.

3. Pengaturan tegangan maksimum dan minimum dapat diatur dengan mengggunakan tombol setting, untuk menghentikan pengisian dan melakukan pengisian.

5.2 Saran

Adapun saran yang diperlukan dalam penyempurnaan Tugas Akhir ini adalah: Alat yang dibuat ini masih sederhana, sehingga dapat dikembangkan lebih lanjut, dengan menggunakan berbagai rangkaian tambahan dan memiliki fungsi yang lebih luas, sehingga dapat mengisi segala jenis baterai dengan tegangan yang berbeda-beda.


(64)

DAFTAR PUSTAKA

Albert Paul Malvino, P. E. (2003). Prinsip-Prinsip Elektronika. Jakarta: Salemba Teknika. Bejo, A. (2008). C&AVR Rahasia Kemudahan Bahasa C dalam Mikrokontroler ATMega8535. Yogyakarta: GRAHA ILMU.

Wardhana, L. (2006). Belajar Sendiri Mikrokontroler AVR Seri ATMega 8535 Simulasi, Hardware dan Aplikasi. yogyakarta: ANDI OFFSET.

www.alldatasheets.com, Juli 2014 www.elecfree.com

http://en.wikipedia.or/wiki/baterai,Mei 2014 www.maxembedded.com


(65)

(66)

(67)

LISTING PROGRAM

/***************************************************** This program was produced by the

CodeWizardAVR V1.25.8 Standard Automatic Program Generator

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

Project : Version :

Date : 05/09/2014

Author : F4CG Company : F4CG Comments:

Chip type : ATmega8535 Program type : Application Clock frequency : 12,000000 MHz Memory model : Small

External SRAM size : 0 Data Stack size : 128

*****************************************************/ #include <mega8535.h>

// Alphanumeric LCD Module functions #asm

.equ __lcd_port=0x15 ;PORTC #endasm

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

#define charger PORTB.7 #define indikator PORTB.6 #define setting PINB.3 #define max_naik PINB.5 #define max_turun PINB.1 #define min_naik PINB.4 #define min_turun PINB.2

int settingan, simpan_sensor; float V_max, V_min; unsigned char datalcd[16]; #define ADC_VREF_TYPE 0x40 // Read the AD conversion result


(68)

unsigned int read_adc(unsigned char adc_input) {

ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);

// Delay needed for the stabilization of the ADC input voltage delay_us(10);

// Start the AD conversion ADCSRA|=0x40;

// Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0);

ADCSRA|=0x10; return ADCW; }

// Declare your global variables here

int nilai_V, baca_ADC, simpan_nilai_V, i, nilai_Vmax; float nilai_V1;

void main(void) {

// Declare your local variables here // Input/Output Ports initialization // Port A initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00;

DDRA=0x00;

// Port B initialization

// Func7=Out Func6=Out Func5=In Func4=In Func3=In Func2=In Func1=In Func0=Out

// State7=0 State6=0 State5=P State4=P State3=P State2=P State1=P State0=0 PORTB=0x3E;

DDRB=0xC1;

// Port C initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00;

DDRC=0x00;

// Port D initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00;


(69)

DDRD=0x00;

// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh // OC0 output: Disconnected TCCR0=0x00;

TCNT0=0x00; OCR0=0x00;

// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off

// Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00;

// Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected ASSR=0x00;

TCCR2=0x00; TCNT2=0x00; OCR2=0x00;

// External Interrupt(s) initialization // INT0: Off

// INT1: Off // INT2: Off


(70)

MCUCR=0x00; MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00;

// Analog Comparator initialization // Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80;

SFIOR=0x00; // ADC initialization

// ADC Clock frequency: 750,000 kHz // ADC Voltage Reference: AVCC pin // ADC High Speed Mode: Off

// ADC Auto Trigger Source: Free Running ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0xA4;

SFIOR&=0x0F;

// LCD module initialization lcd_init(16);

lcd_gotoxy(4,0); lcd_putsf("My Projek"); lcd_gotoxy(5,1); lcd_putsf("Bukry"); delay_ms(2000); lcd_clear(); V_max=13.70; V_min=12.09; settingan=1; baca_ADC=0; charger=0; indikator=0; simpan_sensor=0; simpan_nilai_V=0; while (1) {

// Place your code here while(settingan==1) { if(max_naik==0){V_max=V_max+0.1;} if(max_turun==0){V_max=V_max-0.1;} if(min_naik==0){V_min=V_min+0.1;} if(min_turun==0){V_min=V_min-0.1;} sprintf(datalcd,"Vmax=%0.01f V",V_max); lcd_gotoxy(0,0); lcd_puts(datalcd);


(71)

sprintf(datalcd,"Vmin=%0.01f V",V_min); lcd_gotoxy(0,1); lcd_puts(datalcd); lcd_gotoxy(12,0); lcd_putsf("Vbat"); lcd_gotoxy(12,1); lcd_putsf("Eror"); nilai_Vmax=0; for(i=0;i<=100;i++) { nilai_V=read_adc(1); while(nilai_V<=100) { nilai_V=read_adc(1); delay_ms(10); } if (nilai_Vmax<=nilai_V){nilai_Vmax=nilai_V;} } nilai_V=nilai_Vmax; nilai_V1=nilai_V*0.055424; lcd_clear(); sprintf(datalcd,"Vmax=%0.01f V",V_max); lcd_gotoxy(0,0); lcd_puts(datalcd); sprintf(datalcd,"Vmin=%0.01f V",V_min); lcd_gotoxy(0,1); lcd_puts(datalcd); lcd_gotoxy(12,0); lcd_putsf("Vbat"); sprintf(datalcd,"%0.01f",nilai_V1); lcd_gotoxy(12,1); lcd_puts(datalcd); delay_ms(1000); lcd_clear(); if(nilai_V1==V_max){charger=0; indikator=0;} if(nilai_V1>V_max){charger=0; indikator=0;} if(nilai_V1==V_min){charger=1;indikator=1;} if(nilai_V1<V_min){charger=1;indikator=1;} if(setting==0){settingan=0; delay_ms(1000);} } nilai_Vmax=0; for(i=0;i<=100;i++)


(72)

{ nilai_V=read_adc(1); while(nilai_V<=100) { nilai_V=read_adc(1); delay_ms(10); } if (nilai_Vmax<=nilai_V){nilai_Vmax=nilai_V;} } nilai_V=nilai_Vmax; nilai_V1=nilai_V*0.055424; lcd_clear();

sprintf(datalcd,"V = %0.01f Volt",nilai_V1); lcd_gotoxy(0,0); lcd_puts(datalcd); if(nilai_V1==V_max){charger=0; indikator=0;} if(nilai_V1>V_max){charger=0; indikator=0;} if(nilai_V1==V_min){charger=1;indikator=1;} if(nilai_V1<V_min){charger=1;indikator=1;} if(setting==0){settingan=1; delay_ms(1000);} if(max_turun==0){baca_ADC=1; delay_ms(1000);} while(baca_ADC==1) { nilai_V=read_adc(1);

lcd_gotoxy(0,0); lcd_putsf("Baca Nilai ADC"); sprintf(datalcd,"nilai ADC=%d",nilai_V); lcd_gotoxy(0,1); lcd_puts(datalcd); delay_ms(1000); lcd_clear(); if(max_turun==0){baca_ADC=0; delay_ms(1000);} } delay_ms(500); }; }


(1)

LISTING PROGRAM

/***************************************************** This program was produced by the

CodeWizardAVR V1.25.8 Standard Automatic Program Generator

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

Project : Version :

Date : 05/09/2014

Author : F4CG Company : F4CG Comments:

Chip type : ATmega8535 Program type : Application Clock frequency : 12,000000 MHz Memory model : Small

External SRAM size : 0 Data Stack size : 128

*****************************************************/ #include <mega8535.h>

// Alphanumeric LCD Module functions #asm

.equ __lcd_port=0x15 ;PORTC #endasm

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

#define charger PORTB.7 #define indikator PORTB.6 #define setting PINB.3 #define max_naik PINB.5 #define max_turun PINB.1 #define min_naik PINB.4 #define min_turun PINB.2

int settingan, simpan_sensor; float V_max, V_min; unsigned char datalcd[16]; #define ADC_VREF_TYPE 0x40 // Read the AD conversion result


(2)

unsigned int read_adc(unsigned char adc_input) {

ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);

// Delay needed for the stabilization of the ADC input voltage delay_us(10);

// Start the AD conversion ADCSRA|=0x40;

// Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0);

ADCSRA|=0x10; return ADCW; }

// Declare your global variables here

int nilai_V, baca_ADC, simpan_nilai_V, i, nilai_Vmax; float nilai_V1;

void main(void) {

// Declare your local variables here // Input/Output Ports initialization // Port A initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00;

DDRA=0x00;

// Port B initialization

// Func7=Out Func6=Out Func5=In Func4=In Func3=In Func2=In Func1=In Func0=Out

// State7=0 State6=0 State5=P State4=P State3=P State2=P State1=P State0=0 PORTB=0x3E;

DDRB=0xC1;

// Port C initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00;

DDRC=0x00;

// Port D initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00;


(3)

DDRD=0x00;

// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh // OC0 output: Disconnected TCCR0=0x00;

TCNT0=0x00; OCR0=0x00;

// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off

// Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00;

TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00;

// Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected ASSR=0x00;

TCCR2=0x00; TCNT2=0x00; OCR2=0x00;

// External Interrupt(s) initialization // INT0: Off

// INT1: Off // INT2: Off


(4)

MCUCR=0x00; MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00;

// Analog Comparator initialization // Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80;

SFIOR=0x00; // ADC initialization

// ADC Clock frequency: 750,000 kHz // ADC Voltage Reference: AVCC pin // ADC High Speed Mode: Off

// ADC Auto Trigger Source: Free Running ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0xA4;

SFIOR&=0x0F;

// LCD module initialization lcd_init(16);

lcd_gotoxy(4,0); lcd_putsf("My Projek"); lcd_gotoxy(5,1); lcd_putsf("Bukry"); delay_ms(2000);

lcd_clear(); V_max=13.70; V_min=12.09; settingan=1; baca_ADC=0; charger=0; indikator=0; simpan_sensor=0; simpan_nilai_V=0; while (1)

{

// Place your code here while(settingan==1) {

if(max_naik==0){V_max=V_max+0.1;} if(max_turun==0){V_max=V_max-0.1;} if(min_naik==0){V_min=V_min+0.1;} if(min_turun==0){V_min=V_min-0.1;} sprintf(datalcd,"Vmax=%0.01f V",V_max); lcd_gotoxy(0,0);


(5)

sprintf(datalcd,"Vmin=%0.01f V",V_min); lcd_gotoxy(0,1);

lcd_puts(datalcd);

lcd_gotoxy(12,0); lcd_putsf("Vbat"); lcd_gotoxy(12,1); lcd_putsf("Eror");

nilai_Vmax=0; for(i=0;i<=100;i++) {

nilai_V=read_adc(1); while(nilai_V<=100) {

nilai_V=read_adc(1); delay_ms(10); }

if (nilai_Vmax<=nilai_V){nilai_Vmax=nilai_V;} }

nilai_V=nilai_Vmax;

nilai_V1=nilai_V*0.055424;

lcd_clear();

sprintf(datalcd,"Vmax=%0.01f V",V_max); lcd_gotoxy(0,0);

lcd_puts(datalcd);

sprintf(datalcd,"Vmin=%0.01f V",V_min); lcd_gotoxy(0,1);

lcd_puts(datalcd);

lcd_gotoxy(12,0); lcd_putsf("Vbat"); sprintf(datalcd,"%0.01f",nilai_V1); lcd_gotoxy(12,1);

lcd_puts(datalcd);

delay_ms(1000); lcd_clear();

if(nilai_V1==V_max){charger=0; indikator=0;} if(nilai_V1>V_max){charger=0; indikator=0;} if(nilai_V1==V_min){charger=1;indikator=1;} if(nilai_V1<V_min){charger=1;indikator=1;} if(setting==0){settingan=0; delay_ms(1000);} }

nilai_Vmax=0; for(i=0;i<=100;i++)


(6)

{

nilai_V=read_adc(1); while(nilai_V<=100) {

nilai_V=read_adc(1); delay_ms(10); }

if (nilai_Vmax<=nilai_V){nilai_Vmax=nilai_V;} }

nilai_V=nilai_Vmax;

nilai_V1=nilai_V*0.055424; lcd_clear();

sprintf(datalcd,"V = %0.01f Volt",nilai_V1); lcd_gotoxy(0,0);

lcd_puts(datalcd);

if(nilai_V1==V_max){charger=0; indikator=0;} if(nilai_V1>V_max){charger=0; indikator=0;} if(nilai_V1==V_min){charger=1;indikator=1;} if(nilai_V1<V_min){charger=1;indikator=1;} if(setting==0){settingan=1; delay_ms(1000);} if(max_turun==0){baca_ADC=1; delay_ms(1000);} while(baca_ADC==1)

{

nilai_V=read_adc(1);

lcd_gotoxy(0,0); lcd_putsf("Baca Nilai ADC"); sprintf(datalcd,"nilai ADC=%d",nilai_V); lcd_gotoxy(0,1);

lcd_puts(datalcd); delay_ms(1000); lcd_clear();

if(max_turun==0){baca_ADC=0; delay_ms(1000);} }

delay_ms(500); };