Anda di halaman 1dari 49

ABSTRAK

Selama ini dalam proses pemetaan kabel bawah tanah


yang tidak teratur, sehingga apabila terjadi kerusakan kabel tanah
sulit terdeteksi. Alat pendeteksi kerusakan kabel tanah ini
menggunakan metoda jembatan dengan pengujian uji simpal
varley. Uji simpal varley ini merupakan salah satu metoda yang
paling teliti untuk menemukan kerusakan pada kabel tanah. Jenis
kabel tanah yang digunakan adalah NYM Suprime dengan
diameter 1.5 mm². Menggunakan sensor halleffect sebagai
masukan ADC mikrokontroller. Bahasa pemrograman
menggunakan bahasa C.
Dalam tugas akhir ini menggunakan teori varley loop,
yang mana jarak kesalahan kabel akan ditampilkan langsung ke lcd
melalui mikrokontroler ATMEGA 16.

Kata kunci : Varley loop, Mikrokontroller Atmega 16, LCD.


KATA PENGANTAR

Puji syukur kehadirat Allah SWT atas rahmat, hidayah, inayah


dan karunia-Nya, sehingga penyusunan buku Tugas Akhir ini dapat
diselesaikan dengan baik.
Buku Tugas Akhir ini yang berjudul:

ALAT PENDETEKSI KERUSAKAN KABEL TANAH


(VARLEY LOOP TESTER) BERBASIS
MIKROKONTROILLER

Disusun guna memenuhi persyaratan kurikulum akademis


kelulusan studi dari program D3 Politeknik Elektronika Negeri
Surabaya.
Penyusun menyadari bahwa dalam penulisan buku ini masih
jauh dari kesempurnaan, untuk itu dengan segala kerendahan hati
kami mengharapkan bantuan dari berbagai pihak untuk dapat
memberikan kritik dan saran yang membangun dalam rangka
perbaikan di kemudian hari.
Penyusun berharap semoga buku Tugas Akhir ini bermanfaat
bagi kita semua, khususnya bagi pembaca.

Surabaya, Juli 2007

Penyusun
UCAPAN TERIMA KASIH

Segala puji bagi Allah SWT yang telah melimpahkan rahmat,


hidayah, inayah serta karunia-Nya, sehingga penyusunan buku Tugas
Akhir ini dapat diselesaikan dengan baik.
Kami menyadari keberhasilan Proyek Akhir ini tak lepas dari
bantuan banyak pihak, untuk itu dengan segala kerendahan hati kami
ingin mengucapkan terima kasih yang tak terkira kepada:

1. Papa dan ibuku yang tercinta, atas segala nasihat, doa,


dukungan, dan rasa sayang kalian yang begitu besar
kepadaku.
2. Nenekku yang tercinta, yang selalu mendoakan aku agar
kelak jadi orang yang berguna.
3. Bapak Dr. Ir. Titon Dutono selaku direktur PENS-ITS.
4. Bapak Ainur Rofiq Nansur, ST. MT, selaku ketua Jurusan
Teknik Elektro Industri PENS-ITS.
5. Bapak Ir. Yahya CA, MT dan Bapak Ir. Suryono, MT
selaku Dosen pembimbing, terima kasih atas segala
dukungan, masukan dan bimbingannya selama ini,
sehingga proyek akhir ini dapat selesai dengan baik.
6. Bapak Hendik, Bapak Epyk, dan Bapak Endro selaku tim
penguji, terima kasih atas saran dan kritik yang diberikan
serta revisinya bagi pengembangan Proyek Akhir kami.
Sehingga penyusunan buku ini menjadi lebih baik.
7. Seluruh dosen dan karyawan PENS-ITS atas segala waktu
dan fasilitas yang telah diberikan.
8. Kakak sepupuku yang lagi tugas di Bengkulu dan keluarga
besarku, terima kasih atas dukungan dan doanya selama ini.
9. Mas Wisnu terima kasih banyak mau nganterin aku cari
data-data buat program dan perhatiannya selama ini.
10. Partner dan rekan sejati “Ceka” cah Ngawi atas kerjasama,
kerja keras dan yang selalu memberi support. Meski kalian
jauh, keberadaan kalian tetap kurasakan. He...he...
11. Penghuni lab RL-D4 lantai 2, terima kasih atas segala
bantuan kalian semua. Kapan lagi nie bisa ngumpul?!
12. Komunitas lab lantai dasar dan lantai 3 khususnya temen –
temen yang tugas akhirnya hampir sama., terima kasih atas
segala bantuan dan dukungannya.
13. Rekan-rekan jurusan Teknik Elektro Industri ’04 khususnya
kelas B, canda tawa kalian akan selalu kurindukan.
14. Dan semua pihak yang tidak dapat kami sebutkan satu-
persatu disini, terima kasih telah mendukung kami selama
ini.

Semoga sedikit yang dapat kami lakukan ini dapat bermanfaat


bagi semua pihak, Amin.
DAFTAR ISI

JUDUL i
LEMBAR PENGESAHAN ii
ABSTRAK iii
KATA PENGANTAR iv
UCAPAN TERIMA KASIH v
DAFTAR ISI vii
DAFTAR GAMBAR ix
DAFTAR TABEL x

BAB I : PENDAHULUAN 1
1.1 Latar Belakang 1
1.2 Tujuan 1
1.2.1 Umum 2
1.2.2 Khusus 2
1.3 Batasan masalah 2
1.4 Sistematika pembahasan 2

BAB II : TEORI PENUNJANG 4


2.1 Mikrokontroller 4
2.1.1 Mikrokontroller AVR 4
2.1.2 Port sebagai input/ output digital 8
2.1.3 Rutin-rutin standar 9
2.1.4 Modul I/ O 10
2.1.5 Code Vision AVR 1.24.0.1 11
2.2. Jembatan Wheatstone 14
2.2.1. Rangkaian Varley Loop Test 14

BAB III : PERENCANAAN DAN PEMBUATAN ALAT 16


3.1 Pendahuluan 16
3.2 Blok Diagram Sistem 16
3.3 Flowchart Perangkat Lunak 17
3.4 Perencanaan Sistem Mikrokontroller 18
3.4.1 Perancangan ADC pada mikrokontroller AVR
Atmega16 18
3.4.2 Perancangan Pada Microcontroller AVR
Atmega16 21
3.4.3 Perancangan Software CodeVision
AVR 1.24.0.1 21
3.5 Modul LCD (Liquid Crystal Display) 23
3.6 Keypad Matrik 24

BAB IV : PENGUJIAN DAN ANALISA 25


4.1 Pendahuluan 25
4.2 Pengujian Alat 25
4.2.1 Pengujian ADC Mikrokontroller AVR ATmega16 25
4.2.2 Pengujian Minimum Sistem AVR ATmega16 28
4.2.3 Pengujian LCD 29
4.2.4 Pengujian Keypad 29
4.3 Data Hasil Percobaan 30
4.3.1 Sebelum Galvanometer di Ground 30
4.3.2 Galvanometer di Ground 30

BAB V : PENUTUP 31
5.1 Kesimpulan 31
5.2 Saran-saran 31

DAFTAR PUSTAKA
DAFTAR GAMBAR

Gambar 2.1 Pin-pin ATmega8535 kemasan 40-pin


Gambar 2.2 Arsitektur CPU dari AVR
Gambar 2.3 Alur pemrograman AVR menggunakan
CodeVisionAVR
Gambar 2. 4 Modul I/O AVR yang digunakan
Gambar 2.5 Code Vision AVR 1.24.0.1
Gambar 2.6 Blok Penginisialisasian Program
Gambar 2.7 Bagian Penulisan Program
Gambar 2.8 Jembatan wheatstone untuk tes varley-loop
Gambar 2.9 Jembatan saat ada gangguan isolasi pada kabel
Gambar 3.1 Blok diagram sistem
Gambar 3.2 Flowchart
Gambar 3.3 Rangkaian Input Analog
Gambar 3.4 Inisialisasi ADC Ssecara Program
Gambar 3.5 Rangkaian dasar keypad 4x4
Gambar 4.1 Tampilant LCD
Gambar 4.2 Tampilan LCD melalui keypad
DAFTAR TABEL

Tabel 2.1 Konfigurasi pin port


Tabel 2.2 Hubungan port AVR dengan I/O
Tabel 2.3 Resistansi Jenis Tanah
Tabel 4.1 Hasil Pengujian ADC Microcontroller AVR ATmega 16
Tabel 4.3.1 Sebelum Galvanometer di ground
Tabel 4.3.1 Setelah Galvanometer di ground
BAB I

PENDAHULUAN

1.1. Latar Belakang


Alat pendeteksi kerusakan kabel tanah yang semakin
berkembang memungkinkan pemanfaatan dari metode konvensional
menjadi metode yang berbasis mikrokontroller yang dapat merespon
kondisi kabel bawah tanah yang terjadi gangguan. Mikrokontroller
ini mempunyai mempunyai tingkat kecermatan dan tingkat ketelitian
yang baik dan dapat mengubah analog menjadi digital serta
sebaliknya dengan bantuan ADC dan DAC.
Selama ini dalam proses pemetaan kabel tanah tidak teratur,
sehingga apabila terjadi kerusakan kabel tanah sulit terdeteksi.
Dengan adanya bahasa pemrograman berbasis mikrokontroller yang
diaplikasikan pada alat pendeteksi kerusakan kabel tanah, maka pada
sektor pengguna akan mendapatkan beberapa keuntungan seperti
kemudahan dalam pembuatan program dan proses instalasi kabel
bawah tanah sehingga system pemetaan kabel bawah tanah lebih
tertata rapi dan tampak lebih sederhana. Sehingga dapat
mempermudah proses pendeteksian jika terjadi kerusakan kabel
tanah.
Pada penelitian dan pengembangan ini akan membahas
rangkaian dasar arus searah. Dimulai dengan instrument uji yang
dapat dipindahkan (portabel) dengan perangkat uji (test set) untuk
pemeriksaan tahanan kabel. Perangkat uji ini menggunakan
pengujian simpal varley. Pengujian simpal varley adalah salah satu
metoda yang paling teliti untuk menemukan tanah, persimpangan
atau hubungan hubungan singkat dalam sebuah kabel kawat banyak.
Metoda ini, pada dasarnya adalah modifikasi dari pengujian simpal
murray yang digunakan untuk menemukan kerusakan pentanahan
pentanahan (ground) di dalam kabel kabel terbungkus.
Metode varley loop test yang digunakan adalah berbasis
microcontroller. Metode ini didasarkan pada pertimbangan bahwa
pengujian simpal varley adalah salah satu metoda yang paling teliti
untuk menemukan kerusakan kabel tanah, hubungan hubungan
singkat dalam sebuah kabel kawat banyak.
I.2. Tujuan
Pada pembuatan Proyek Akhir ini, terdapat beberapa tujuan
yang ingin dicapai antara lain:

I.2.1. Umum
Untuk memenuhi salah satu persyaratan kurikulum akademis
pada program Diploma III Politeknik Elektronika Negeri Surabaya
Institut Teknologi Sepuluh Nopember Surabaya.

I.2.2. Khusus
Dalam penyelesaian Proyek Akhir ini, terdapat tujuan khusus
yang ingin dicapai antara lain:
™ Merancang serta membuat sebuah alat pendeteksi kerusakan
kabel tanah (varley loop tester) berbasis mikrokontroller.

I.3. Batasan Masalah


Pada penyelesaian Proyek Akhir ini terdapat beberapa batasan
masalah seperti:
™ Jenis mikrokontroller yang digunakan adalah AVR
Atmega16
™ Menggunakan satu jenis kabel suprime dengan diameter
yang berbeda.
™ Sensor arus yang digunakan menggunakan sensor halleffect
.

I.4. Sistematika Pembahasan


Dalam pembuatan buku pada Proyek Akhir ini, sistematika
penulisannya adalah sebagai berikut:

BAB I : PENDAHULUAN
Membahas hal-hal yang berkaitan dengan latar
belakang pemilihan judul, tujuan, batasan
masalah dan sistematika pembahasan.

BAB II : TEORI PENUNJANG


Membahas tentang dasar-dasar teori yang
menunjang dalam pengerjaan Proyek Akhir.

BAB III : PERENCANAAN DAN PEMBUATAN ALAT


Membahas tuntas tentang perencanaan dan proses
pembuatan Proyek Akhir, meliputi perencanaan
dan pembuatan jembatan wheatstone dengan
menggunakan uji simpal varley loop dengan
menggunakan sensor arus halleffect, dengan
mengguanakan Mikrokontroller AVR Atmega16
serta LCD yang akan digunakan sebagai
tampilannya dan keypad untuk menginputkan
jenis kabel yang akan dideteksi.

BAB IV : PENGUJIAN DAN ANALISA


Pada bab ini akan dilampirkan hasil dari
pengujian dan pembahasan analisa dari hasil
yang diperoleh.

BAB V : PENUTUP
Bab ini merupakan bab penutup yang berisikan
kesimpulan dari hasil yang diperoleh setelah
dibandingkan dengan teori, serta berisi tentang
saran-saran atas kekurangan dan kelemahan dari
Proyek Akhir ini.
BAB II

TEORI PENUNJANG

2.1. Mikrokontroller
2.1.1. Mikrokontroller AVR
AVR merupakan seri mikrokontroller CMOS 8-bit buatan
Atmel, betbasis arsitektur RISC (Reduced Instruction Set Computer).
Hampir semua instruksi dieksekusi dalam satu siklus clock. AVR
mempunyai 32 register general-purpose, timer/ counter fleksibel
dengan mode compare, interrupt internal dan eksternal, serial UART,
programmable Watchdog Timer, dan mode power saving. Beberapa
diantaranya mempunyai ADC dan PWM internal. AVR juga
mempunyai In-System Programmable Flash on-chip yang
mengijinkan memori program untuk diprogram ulang dalam sistem
menggunakan hubungan serial SPI. Chip AVR yang digunakan
adalah Atmega16.
Atmega16 adalah mikrokontroller CMOS 8-bit daya-rendah
berbasis arsitektur RISC yang ditingkatkan. Kebanyakan intruksi
dikerjakan pada satu siklus clock, Atmega16 mempunyai throughput
mendekati 1 MIPS per MHz membuat disainer sistem untuk
mengoptimasi konsumsi daya versus kecepatan proses.
Beberapa keistimewaan dari AVR Atmega16 antara lain:
• Advanced RISC Architecture
1. 130 Powerful Instructions – Most Single Clock
Cycle Execution
2. 32 x 8 General Purpose Working Registers
3. Fully Static Operation
4. Up to 16 MIPS Throughput at 16 MHz
5. On-chip 2-cycle Multiplier
• Nonvolatile Program and Data Memories
1. 8K Bytes of In-System Self-Programmable Flash
♠ Endurance: 10,000 Write/ Erase Cycles
2. Optional Boot Code Section with Independent
Lock Bits
♠ In-System Programming by On-Chip Boot
Program
♠ True Read-While-Write Operati
3. 512 Bytes EEPROM
♠ Endurance: 100,000 Write/Erase Cycles
4. 512 Bytes Internal SRAM
5. Programming Lock
• Peripheral Features
1. Two 8-bit Timer/Counters with Separate Prescalers
and Compare Modes
2. One 16-bit Timer/Counter with Separate Prescaler,
Compare Mode, and Capture Mode
3. Real Time Counter with Separate Oscillator
4. Four PWM Channels
5. 8-Channel, 10-bit ADC
♠ 8 Single-ended Channels
♠ 7 Differential Channels for TQFP Package Only
♠ 2 Differential Channels with Programmable Gain
at 1x, 10x, or 200x for TQFP Package Only
6. Byte-oriented Two-wire Serial Interface
7. Programmable Serial USART
8. Master/Slave SPI Serial Interface
9. Programmable Watchdog Timer with Separate On-
chip Oscillator
10. On-chip Analog Comparator
• Special Microcontroller Features
1. Power-on Reset and Programmable Brown-out
Detection
2. Internal Calibrated RC Oscillator
3. External and Internal Interrupt Sources
4. Six Sleep Modes: Idle, ADC Noise Reduction,
Power-save, Power-down, Standby and Extended
Standby
• I/O and Packages
1. 32 Programmable I/O Lines
2. 40-pin PDIP, 44-lead TQFP, 44-lead PLCC, and
44-pad MLF
• Operating Voltages
1. 2.7 - 5.5V for ATmega16L
2. 4.5 - 5.5V for ATmega16
• Speed Grades
1. 0 - 8 MHz for ATmega16L
2. 0 - 16 MHz for ATmega16
Gambar 2.1. Pin-pin ATmega16 kemasan 40-pin

Pin-pin pada ATmega16 dengan kemasan 40-pin DIP (dual


in-line package) ditunjukkan oleh gambar 1.
Guna memaksimalkan performa dan paralelisme, AVR
menggunakan arsitektur Harvard (dengan memori dan bus terpisah
untuk program dan data). Arsitektur CPU dari AVR ditunjukkan oleh
gambar 2. Instruksi pada memori program dieksekusi dengan
pipelining single level. Selagi sebuah instruksi sedang dikerjakan,
instruksi berikutnya diambil dari memori program.
Gambar 2.2. Arsitektur CPU dari AVR

Program ditulis menggunakan tool CodeVisionAVR.


CodeVisionAVR merupakan crosscompiler. Program cukup ditulis
menggunakan bahasa-C.
Gambar 2.3. Alur pemrograman AVR menggunakan
CodeVisionAVR

2.1.2 Port sebagai input/output digital


ATmega16 mempunyai empat buah port yang bernama
PortA, PortB, PortC, dan PortD. Keempat port tersebut merupakan
jalur bi-directional dengan pilihan internal pull-up.
Tiap port mempunyai tiga buah register bit, yaitu DDxn, PORTxn,
dan PINxn. Huruf ‘x’mewakili nama huruf dari port sedangkan huruf
‘n’ mewakili nomor bit. Bit DDxn terdapatpada I/O address DDRx,
bit PORTxn terdapat pada I/O address PORTx, dan bit PINxn
terdapat pada I/O address PINx.
Bit DDxn dalam regiter DDRx (Data Direction Register)
menentukan arah pin. Bila DDxn diset 1 maka Px berfungsi sebagai
pin output. Bila DDxn diset 0 maka Px berfungsi sebagai pin input.
Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin input,
maka resistor pull-up akan diaktifkan. Untuk mematikan resistor
pull-up, PORTxn harus diset 0 atau pin dikonfigurasi sebagai pin
output. Pin port adalah tri-state setelah kondisi reset.
Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin output
maka pin port akan berlogika 1. Dan bila PORTxn diset 0 pada saat
pin terkonfigurasi sebagai pin output maka pin port akan berlogika 0.
Saat mengubah kondisi port dari kondisi tri-state (DDxn=0,
PORTxn=0) ke kondisi output high (DDxn=1, PORTxn=1) maka
harus ada kondisi peralihan apakah itu kondisi pull-up enabled
(DDxn=0, PORTxn=1)atau kondisi output low (DDxn=1,
PORTxn=0). Biasanya, kondisi pull-up enabled dapat diterima
sepenuhnya, selama lingkungan impedansi tinggi tidak
memperhatikan perbedaan antara sebuah strong high driver dengan
sebuah pull-up. Jika ini bukan suatu masalah, maka bit PUD pada
register SFIOR dapat diset 1 untuk mematikan semua pull-up dalam
semua port.
Peralihan dari kondisi input dengan pull-up ke kondisi output low
juga menimbulkan masalah yang sama. Kita harus menggunakan
kondisi tri-state (DDxn=0, PORTxn=0) atau kondisi output high
(DDxn=1, PORTxn=0) sebagai kondisi transisi.
Lebih detil mengenai port ini dapat dilihat pada manual datasheet
dari IC ATmega16.
Tabel 2.1. Konfigurasi pin port

Bit 2 – PUD : Pull-up Disable


Bila bit diset bernilai 1 maka pull-up pada port I/O akan dimatikan
walaupun register DDxn dan PORTxn dikonfigurasikan untuk
menyalakan pull-up (DDxn=0, PORTxn=1).

2.1.3 Rutin-rutin standar


Pada software CodeVisionAVR telah disediakan beberapa
rutin standar yang dapat langsung digunakan. Anda dapat melihat
lebih detil pada manual dari CodeVisionAVR. Beberapa contoh
fungsi yang telah disediakan antara lain adalah:
Fungsi LCD
Berada pada header lcd.h yang harus di-include-kan sebelum
digunakan. Sebelum melakukan include terlebih dahulu disebutkan
pada port mana LCD akan diletakkan. Hal ini juga dapat dengan
mudah dilakukan dengan menggunakan CodeWizardAVR.

/* modul LCD dihubungkan dengan PORTC */


#asm
.equ __lcd_port=0x15
#endasm
/* sekarang fungsi LCD dapat di-include*/
#include <lcd.h>

Fungsi-fungsi untuk mengakses LCD diantaranya adalah :


• unsigned char lcd_init(unsigned char lcd_columns)
Untuk menginisialisasi modul LCD, menghapus layar dan
meletakkan posisi karakter pada baris ke-0 kolom ke-0. Jumlah
kolom pada LCD harus disebutkan(misal, 16). Kursor tidak
ditampakkan. Nilai yang dikembalikan adalah 1 bila modul LCD
terdeteksi, dan bernilai 0 bila tidak terdapat modul LCD. Fungsi ini
harus dipanggil pertama kali sebelum menggunakan fungsi yang
lain.
• void lcd_clear(void)
Menghapus layar LCD dan meletakkan posisi karakter pada
baris ke-0 kolom ke-0.
• void lcd_gotoxy(unsigned char x, unsigned char y)
Meletakkan posisi karakter pada kolom ke-x baris ke-y.
Nomor baris dan kolom dimulai dari nol.
• void lcd_putchar(char c)
Menampilkan karakter c pada LCD.
• void lcd_puts(char *str)
Menampilkan string yang disimpan pada SRAM pada LCD.

Fungsi Delay
Menghasilkan delay dalam program-C. Berada pada header delay.h
yang harus di-includekan sebelum digunakan. Sebelum memanggil
fungsi, interrupsi harus dimatikan terlebih dahulu, bila tidak maka
delay akan lebih lama dari yang diharapkan. Juga sangat penting
untuk menyebutkan frekuensi clock chip IC AVR yang digunakan
pada menu Project- Configure-C Compiler-Code Generation.

Fungsi delay yang disediakan adalah:


• void delay_us(unsigned int n)
menghasilkan delay selama n µ-detik, n adalah nilai konstan
• void delay_ms(unsigned int n)
menghasilkan delay selama n mili-detik, n adalah nilai
konstan

Kedua fungsi tersebut secara otomatis akan me-reset watchdog-timer


setiap 1 milidetik dengan mengaktifkan instruksi wdr.

2.1.4 Modul I/O


Modul I/O yang digunakan mempunyai skema tampak atas seperti
pada gambar 4. Sedangkan hubungan port AVR dengan I/O yang
digunakan ditunjukkan oleh tabel 2.
Gambar 2. 4. Modul I/O AVR yang digunakan

Tabel 2.2. Hubungan port AVR dengan I/O

*) nomor dihitung dari kiri ke kanan

2.1.5. Code Vision AVR 1.24.0.1


Merupakan suatu software yang digunakan dalam penulisan
program yang nantinya akan di download pada microcontroller AVR
ATmega 8535. Dapat dilihat seperti pada struktur program dibawah
ini :

Gambar 2.5. Code Vision AVR 1.24.0.1

Dalam penggunaan microcontroller AVR menggunakan


software CodeVision AVR. Seperti umumnya microcontroller,
program untuk microcontroller AVR ditulis menggunakan bahasa
assembly. CodeVision AVR merupakan software C-cross compiler,
dimana program dapat ditulis menggunakan bahasa-C. dengan
menggunakan pemrograman bahasa-C diharapkan waktu desain
(deleloping time) akan menjadi lebih singkat. Setelah program dalam
bahasa-C ditulis dan dilakukan kompilasi tidak terdapat kesalahan
(error) maka proses download dapat dilakukan. Microcontroller
AVR mendukung system download secara ISP (In-System
Programming)
Dalam menggunakan program ini terlebih dahulu
diperlukan inisialisasi chip yang digunakan, clock, I/O port, dan
segala hal diperlukan dalam mendesain suatu pemrograman pada
umumnya. Blok inisialisasi dapat dilihat pada gambar 2.5 di bawah
ini:
Gambar 2.6. Blok Penginisialisasian Program

Setelah penginisialisasian chip maka selanjutnya “Generate,


Save and Exit”. Selanjutnya yaitu penulisan program pada blok
bagian yang telah tersedia, seperti ditunjukkan pada gambar 2.6
berikut:

Gambar 2.7. Bagian Penulisan Program


2.2. Jembatan Wheatstone
2.2.1. Rangkaian Varley Loop Test
Pada dasarnya rangkaian varley loop merupakan
pengembangan dari jembatan weatstone dan uji simpul murray.
Rangkaian varley loop terdiri dari 2 buah lengan dengan resistansi
yang sudah tetap dan sebuah lengan standart dengan tahanan geser
atau resistansi variabel .
Andaikata sebuah hubungan ke tanah terjadi pada titik X
dalam konduktor dinyatakan degan resistansi Rb. Sebuah kawat
dinyatakan dengan resistansi Rb dihubungkan ke konduktor yang
dihubungkan ke tanahpada titik Y.Untuk menentukan kesalahan,
pertama-tama kita hubungkan sumber pada rangkaian jembatan
yang terlihat pada gambar di bawah .Kemudian menyeimbang kan
jembatan dengan mengatur R 4 .Maka saat jembatan seimbang:

R1 R + Rb
= a (2-1)
R3 R4

Ra

R1

E
Rb
G

R3 R4

Gambar 2.8 Jembatan wheatstone untuk tes varley-loop

Gambar 2.9 Jembatan saat ada gangguan isolasi pada kabel


Kemudian kita hubungkan negative dari galvanometer dan
kita seimbangkan lagi jembatan sehingga persamaannya
menjadi:

R1 ( Ra + Rb ) − R x (2-2)
=
R3 R4 + Rx

Penyelesaian untuk hasil Rx :


R 3 ( R a + R b ) − R 1 .R 4
Rx = (2-3)
R1 + R 3

Harga (Ra + Rb) dapat diperoleh dari persamaan (2-1).

Dalam pengukuran pendeteksian kerusakan kabel tanah


juga memperhitungkan jenis resistansi tanah yang akan diukur,
sesuai data berikut:

Tabel 2.3. Resistansi Jenis Tanah


1 2 3 4 5 6 7

Jenis tanah Tanah Tanah Pasir Kerikil Pasir dan Tanah


rawa liat & basah basah kerikil berbatu
tanah kering
ladang
Resistan 30 100 200 500 1000 3000
jenis (W )
BAB III

PERENCANAAN DAN PEMBUATAN PERANGKAT LUNAK

3.1. Pendahuluan
Pada bab ini akan dibahas mengenai perencanaan perangkat
lunak yang berhubungan dengan proses penyelesaian Proyek Akhir.
Berikut ini akan dibahas terlebih dahulu tentang blok diagram
perangkat keras dan flowchart perangkat lunak sebelum melangkah
ke prinsip dan cara kerja dari perangkat secara keseluruhan.

3.2. Blok Diagram Sistem


Pada bagian perancangan Tugas Akhir ini dapat digambarkan
blok diagram dari sistem yang direncanakan sebagai berikut:

Keypad

Hall Effect Mikrokontroller


Sensor LCD
ATmega16

Gambar 3.1. Blok diagram sistem


3.3 Flowchart Perangkat Lunak

Start

Inisialisasi ADC
Inisialisasi keypad
Inisialisasi LCD

Baca V&I dari ADC,


Input diameter jenis
kawat dari keypad

R4=R3(Ra+Rb) / R1

Rx=R3(Ra+Rb)-(R1*R4) / R1+R3

N
1.5 mm²

N
Y 2.5 mm²

L=Rx:12.1 Ω/km N
Y 4 mm²

L=Rx:7.28 Ω/km Y
6 mm²
N

L=Rx:4.56 Ω/km
Y 10 mm²

L=Rx:3.03 Ω/km Y

L=Rx:1.81 Ω/km

Tampilkan
di LCD

End

Gambar 3.2. Flowchart


3.4 Perencanaan Sistem Mikrokontroller
Sistem mikrokontroller AVR Atmega16 dan interface pada
sistem pengaturan disini dimaksudkan untuk mendapatkan sistem
mikrokontroller yang sesuai dengan kebutuhan dan menghubungkan
mikrokontroller yang berisi alur program dengan peralatan lain yang
berfungsi untuk membaca data dari sensor halleffect melalui ADC
dan output respon jarak gangguan akan ditampilkan pada LCD.

3.4.1 Perancangan ADC Pada Microcontroller AVR Atmega16


Pada microcontroller AVR Atmega16 sudah tersedia
fasilitas interfacing berupa ADC dengan berbagai ketentuan interface
sesuai dengan yang kita perlukan.
Fasilitas ADC yang tersedia pada microcontroller ini adalah
sebagai berikut :
1. resolusi 10 bit
2. 0.5 LSB integral Non linear
3. Absolut akurasi ± 2 LSB
4. Waktu konversi 65 - 260 µs
5. Maksimum resolusi diatas 15 kSPS
6. 8 multiplexed single ended input channel
7. 7 defferential input channel
8. 2 differential input channel with optional gain dari 10x
dan 200x
9. Optional left adjustment for ADC result readout
10. Selectable 2.56 V ADC Reference Voltage
11. Free running or single convertion mode.
12. Interrupt on ADC Conversion complete
13. Sleep mode noise canceler

Pada ADC microcontroller AVR Atmega16 mengkonversi


tegangan masukan analog ke nilai digital 8 bit secara berurutan. Nilai
tegangan minimum dijadikan ground dan nilai tegangan maksimal
dijadikan tegangan referensi dengan pin minus 1 LSB. Dapat dengan
bebas memilih AVCC atau tegangan internal 2.56 V yang
dihubungkan dengan pin AREF dengan menuliskan RESFN pada
register ADMUX Referensi tegangan maksimal boleh di kopel
dengan eksternal kapasitor di AREF untuk dapat menghilangkan
noise
Channel input analog dan gain differential dipilih dalam
penulisan bit MUX dalam ADMUX. Pin input ADC seperti halnya
ground dan tegangan referensi fix bandgap dapat dipilih sebagai
masukan akhir single pada ADC. Pemilihan pin input ADC dapat
dipilih ketika positif dan input negatif pada differential gain
amplifier.
Single konversi dimulai dengan penulisan logis pada ADC
start convertion bit, ADSC. Bit ini akan tetap dalam kondisi high
selama konversi berlangsung dan akan dihapus oleh hardware ketika
konversi selesai. Jika suatu saluran data berbeda digunakan
sedangkan konversi masih berlangsung maka, maka ADC akan
menyelesaikan konversi sekarang sebelum mengubah saluran.
Dalam mode free running, ADC secara konstan disampling
dan selalu mengupdate data register ADC. Dalam mode free running
dipilih dengan menulis bit ADFR dalam ADCSRA. Konversi
pertama harus dimulai dengan menuliskan perintah logic pada bit
ADSC pada ADCSRA. Di dalam mode ADC akan menjalankan
konversi secara bebas berurutan dalam ADC interupt flag, ADIF
dibersikan atau tidak.
Pada microcontroller AVR Atmega dapat ditunjukkan
rangkaian input analog internal ADC sebagai berikut :

Gambar 3.3 Rangkaian Input Analog

Sedangkan untuk hasil konversi tegangan pada kondisi


single konversi adalah sebagai berikut :

VIN .1024
ADC = (3-1)
VREF

Dimana VIN adalah tegangan pada pin input yang terpilih


dan Vref adalah tegangan referensi yang dipilih. Sedangkan alamat
yang digunakan adalah pada ground 0x000 dan pada tegangan
referensi yang dipilih minus 1 LSB terdapat pada alamat 0x3FF.
Sedangkan jika saluran diferensial digunakan maka hasil
konversinya adalah :

(VPOS − V NEG ).GAIN .512


ADC = (3-2)
VREF
Dimana Vpos adalah tegangan pada pin input positif dan
Vneg adalah tegangan pada pin input negative, sedangkan untuk
Vref adalah tegangan referensi.
Pada proyek akhir ini pin-pin yang digunakan sebagai
masukan ADC adalah pada PORTA pin ke 0. Digunakannya PORTA
karena pada PORTA hanya dapat digunakan sebagai masukan analog
untuk A/D converter. Pada PORTA pin 0 digunakan sebagai
masukan dari sensor halleffect.
Sedangkan pada ADC yang digunakan pada proyek akhir
ini diinisialisasikan pada program CodeVision AVR ebagai berikut :

Gambar 3.4 Inisialisasi ADC Ssecara Program

Inisialisasi ADC berdasarkan Run the CodeWizardAVR


automatic program generator, didapatkan bahwa ADC ini
menggunakan
• 8 bit dengan ADC interrupt.
• AVCC sebagai tegangan referensi , max 5.5 V min 2.75 V
• Clock = 125.000 kHz.
• Dengan automatic scan :
™ PORTA pin 0 sebagai scan index nomor 0
3.4.2 Perancangan Pada Microcontroller AVR Atmega16
Dalam proyek akhir ini digunakannya microcontroller AVR
Atmega16 dengan ketentuan pin-pin yang digunakan adalah sebagai
berikut :
™ Microcontroller AVR ATmega16 8 bit, memory SRAM 512
bytes , EEPROM 512 Bytes, 8 KB ISP
™ Clock yang digunakan 4 MHz
™ 32 programmable I/O lines
™ Tegangan operasi 4.5 V – 5.5 V
™ Grade kecepatan 0 – 16 MHz
™ PORTA pin 0 sebagai masukan sensor halleffect
™ PORTC dihubungkan LCD
™ PORTD sebagai input keypad

3.4.3 Perancangan Software CodeVision AVR 1.24.0.1


Untuk penulisan program untuk CodeVision AVR
menggunakan syntax bahasa C dasar. Sehingga dalam pemrograman
mempermudah penggunaan microcontroller ini. Sedangkan dalam
mengcompile diserahkan pada software ini. Adapaun contoh dalam
pembuatan program adalah sebagai berikut :
Program dibawah ini digunakan pada pengetesan ADC dan
selanjutnya di tampilkan di LCD , contoh listing program dapat
dilihat sebagai berikut :

/*********************************************
This program was produced by the
CodeWizardAVR V1.24.0 Standard
Automatic Program Generator
© Copyright 1998-2003 HP InfoTech s.r.l.
http://www.hpinfotech.ro
e-mail:office@hpinfotech.ro
Project :
Version :
Date : 7/20/2007
Author : Prima Dewi P
Company :
Comments:
Chip type : ATmega16
Program type : Application
Clock frequency : 4.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*********************************************/
#include <mega16.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15
#endasm
#include <lcd.h>
#include <delay.h>
#include <stdlib.h>
#define ADC_VREF_TYPE 0x40
// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;
// 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
float dia_mm;
unsigned dia[4];

void ADC_view()
{ lcd_gotoxy(0,1);
ftoa(dia_mm,4,dia);
lcd_puts(dia);
lcd_putsf(" km");
}
void main(void)
{
// LCD module initialization
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf("Varley Loop Test");
while (1)
{ delay_ms(1000);
dia_mm=read_adc(0);
ADC_view();
// Place your code here
};}

3.5. Modul LCD (Liquid Crystal Display)


Modul LCD yang digunakan menggunakan chip controller LCD
M1632 dari Seiko Instrument Inc.
Beberapa kemampuan yang dimiliki oleh modul LCD ini adalah
konsumsi daya yang rendah dengan High Contrast Panel dan CMOS
LCD Drive Controller. Controller-nya memiliki sebuah Character
Generator ROM / RAM (CG ROM / RAM), dan sebuah Display
Data RAM (DD RAM).
LCD ini mempunyai display sebanyak 2 baris dengan 5x7 dot matriks termasuk
juga kursor. Character generator ROM terdiri atas 192 tipe karakter sedangkan
character generator RAM terdiri atas 8 tipe karakter.

Jumlah karakter maksimum yang dapat ditampilkan tiap


baris adalah sebanyak 40 buah karakter, sehingga total karakter
yang dapat ditampilkan untuk 2 baris adalah sebanyak 80 buah
karakter.
Modul LCD ini terdiri atas 16 pin. Fungsi dari tiap pin akan
dijelaskan secara singkat sebagai berikut:
™ Pin 1 (Vss) dihubungkan dengan ground.
™ Pin 2 (Vcc) dihubungkan dengan tegangan supply +5V
dengan toleransi ± 10%.
™ Pin 3 (Vee) digunakan untuk mengatur tingkat kontras
LCD. Pada modul ini digunakan potensiometer 1KOhm.
Sebuah kaki input dihubungkan dengan ground (Vss) dan
sebuah kaki input lainnya dihubungkan dengan tegangan
supply +5V (Vcc). Lalu kaki output dari potensiometer
dihubungkan dengan Vee.
™ Pin 4 (RS), bernilai logic ‘0’ untuk input instruksi dan
bernilai logic ‘1’ untuk input data.
™ Pin 5 (R/W), bernilai logic ‘0’ untuk proses ‘write’ dan
bernilai logic ‘1’ untuk proses ‘read’. Karena pada Tugas
Akhir ini modul LCD hanya digunakan untuk menampilkan
data saja maka pin 5 ini dihubungkan dengan ground
sehingga senantiasa bernilai logic ‘0’.
™ Pin 6 (E), merupakan sinyal enable. Sinyal ini akan aktif
pada failing edge dari logic ‘1’ ke logic ‘0’.
™ Pin 7 (DB0) merupakan pin data D0.
™ Pin 8 (DB1) merupakan pin data D1.
™ Pin 9 (DB2) merupakan pin data D2.
™ Pin 10 (DB3) merupakan pin data D3.
™ Pin 11 (DB4) merupakan pin data D4.
™ Pin 12 (DB5) merupakan pin data D5.
™ Pin 13 (DB6) merupakan pin data D6.
™ Pin 14 (DB7) merupakan pin data D7.
™ Pin 15 (V + BL) digunakan apabila kita hendak
menampilkan Back Light pada LCD. Pin ini dihubungkan
dengan tegangan sebesar 4 – 4,2 V dengan arus 50 – 200
mA.
™ Pin 16 (V – BL) digunakan apabila kita hendak
menampilkan Back Light pada LCD. Pin ini dihubungkan
dengan ground.

3.6 Keypad Matrik

Keypad sering digunakan sebagi suatu input pada beberapa


peralatan yang berbasis mikroprosessor atau mikrokontroller.
Keypad sesungguhnya terdiri dari sejumlah saklar, yang terhubung
sebagai baris dan kolom dengan susuan seperti yang ditunjukkan
pada gambar 7.2. Agar mikrokontroller dapat melakukan scan
keypad, maka port mengeluarkan salah satu bit dari 4 bit yang
terhubung pada kolom dengan logika low “0” dan selanjutnya
membaca 4 bit pada baris untuk menguji jika ada tombol yang
ditekan pada kolom tersebut. Sebagai konsekuensi, selama tidak ada
tombol yang ditekan, maka mikrokontroller akan melihat sebagai
logika high “1” pada setiap pin yang terhubung ke baris.
Gambar 3.5 Rangkaian dasar keypad 4x4
BAB IV
PENGUJIAN DAN ANALISA

4.1. Pendahuluan
Perencanaan dan pembuatan alat yang telah diselesaikan
diharapkan mampu menghasilkan data atau informasi sesuai dengan
tujuan yang diharapkan.
Untuk mengetahui bahwa program kita berjalan dengan baik
atau tidak maka kita harus melakukan pengujian. Pengujian yang
dilakukan ini, untuk mendapatkan data pengukuran yang
dipergunakan sebagai bahan pertimbangan antara teori dengan data
yang diperoleh dari hasil percobaan, sekaligus melakukan setting
untuk mendapatkan tampilan output dari rangkaian yang mendekati
perhitungan. Pengujian tersebut dilakukan beberapa tahap. Adapun
pengujian yang akan dilakukan meliputi:
™ Pengujian ADC Mikrokontroller AVR ATmega 16
™ Pengujian minimum sistem AVR ATmega 16
™ Pengujian LCD
™ Pengujian Keypad

4.2. Pengujian Alat


4.2.1. Pengujian ADC Mikrokontroller AVR ATmega16
Pengujian program ini merupakan langkah awal sebelum
pengujian alat secara keseluruhan. Langkah pertama yang dilakukan
adalah pengujian terhadap ADC Mikrokontroller AVR ATmega16
dengan menggunakan 8 bit. Sebagai masukan ADC ini,
digunakannya PORTA pin 0, digunakannya PORTA karena pada
port ini mengijinkan untuk masukan analog. Dan tegangan reference
yang digunakan adalah tegangan VREF, dimana tegangan VREF
merupakan supply tegangan pin untuk PORTA dan A/D converter.
Untuk ADC ini digunakan clock sebesar 125.000 kHz atau sebesar
125 MHz dengan menggunakan scan input secara otomatis. Pada
ADC kali ini menggunakan pin 0 maka scan dilakukan dimulai dari
0.
Pada ADC ini digunakan tegangan referensi (Vref) sebesar 5
Vdc. Sedangkan untuk dapat mengetahui besarnya tegangan yang
diterima oleh mikrokontroller dapat menggunakan persamaan
dibawah ini:
VIN
V ADC = * 28 (4-1)
VREF
Dimana,
VADC = Tegangan terukur yang masuk ke microcontroller

VIN = Tegangan analog yang masuk ke ADC

VREF = Tegangan referensi ADC sebesar 5 V

28 = ADC yang digunakan adalah 8 bit

Dalam pengujian ini untuk mencoba program pengambilan data


melalui ADC dan ketepatan pembacaan ADC. Ketepatan pembacaan
ADC dipengaruhi waktu sampling pengambilan data dan output dari
penguat instrumentasinya. Sehingga didapatkan hasil uji ADC dapat
dilihat pada table 4.1 di bawah ini

Tabel 4.1 Hasil Pengujian ADC Microcontroller AVR ATmega 16

Nomer Input ADC (V) Vout (biner) Vout


(desimal)
1 0 00000000 0
2 0.363 00010000 16
3 0.505 00011000 24
4 1.090 00110000 48
5 1.559 01000000 64
6 2.046 01100000 96
7 2.406 01111000 120
8 2.868 10010000 144
9 3.158 10100000 160
10 3.471 10110000 176
11 3.61 10111000 184
12 4.03 11000000 192
13 4.35 11100000 224
14 4.46 11100110 230
15 4.53 11100111 231
16 4.60 11101000 232
17 4.65 11110000 240
18 4.76 11110110 246
19 4.84 11111000 248
20 4.95 11111111 255

#include <mega16.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15
#endasm
#include <lcd.h>
#include <delay.h>
#include <stdlib.h>

#define ADC_VREF_TYPE 0x40


// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;
// 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
float dia_mm;
unsigned dia[4];
void ADC_view()
{ lcd_gotoxy(0,1);
ftoa(dia_mm,4,dia);
lcd_puts(dia);
lcd_putsf(" km");
}
// ADC initialization
// ADC Clock frequency: 125.000 kHz
// ADC Voltage Reference: AVCC pin
// ADC High Speed Mode: Off
// ADC Auto Trigger Source: Free Running
ADMUX=ADC_VREF_TYPE;
ADCSRA=0xA5;
SFIOR&=0x0F;
// LCD module initialization
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf("Varley Loop Test");
while (1)
{ delay_ms(1000);
dia_mm=read_adc(0);
ADC_view();
// Place your code here
};
}

4.2.2. Pengujian Minimum Sistem AVR ATmega16


Setelah minimum sistem dibuat, maka langkah pertama yang
dilakukan adalah pengujian terhadap port-port mikrokontroller AVR
Atmega16. PORTC digunakan sebagai output dan dihubungkan ke
rangkaian LCD. Hasil yang diperoleh adalah LCD menyala dan
menampilkan karakter yang diinginkan melalui design program yang
dibuat. Berikut ini program bahasa C untuk menguji PORTA sebagai
output pada mikrokontroller melalui LCD.
#include <mega16.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15
#endasm
#include <lcd.h>
// LCD module initialization
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf("Varley Loop Test");
delay_ms(2000);
lcd_gotoxy(0,1);
lcd_putsf("Welcome");
while (1)
{
};}
4.2.3. Pengujian LCD
Pengujian LCD diawali dengan melakukan
penginisialisasian, kemudian menampilkan karakter pada LCD
dengan program bahasa C yang telah dibuat. Hasil yang
diperoleh adalah karakter (huruf atau angka) yang langsung bisa
diamati pada LCD. Data yang tampilkan pada LCD tergantung
dari metode penampilan yang dibuat dan inisialisasi LCD yang
disusun. Contoh program pengujian pada LCD dapat dilihat
pada lampiran.

Gambar 4.1 Tampilan LCD

4.2.4. Pengujian Keypad

Agar mikrokontroller dapat melakukan scan keypad, maka


port mengeluarkan salah satu bit dari 4 bit yang terhubung pada
kolom dengan logika low “0” dan selanjutnya membaca 4 bit pada
baris untuk menguji jika ada tombol yang ditekan pada kolom
tersebut. Sebagai konsekuensi, selama tidak ada tombol yang
ditekan, maka mikrokontroller akan melihat sebagai logika high “1”
pada setiap pin yang terhubung ke baris.
Gambar 4.2 Tampilan LCD melalui keypad

4.3 Data Hasil Percobaan


4.3.1 Tabel sebelum Galvanometer di ground

V I R4 Ra+Rb

0.87 0.39 2.231 2.231

0.87 0.39 2.231 2.231

0.87 0.39 2.231 2.231

0.87 0.39 2.231 2.231

4.3.2 Tabel setelah Galvanometer di ground

Lx
V I R4 Rx Lx(m) Sebenarnya(m)

0.090 0.670 0.134 1.048 87.352 90

0.150 0.530 0.283 0.974 81.156 80

0.150 0.387 0.388 0.922 76.799 75

0.120 0.192 0.625 0.803 66.907 65

0.150 0.140 1.071 0.580 48.306 45


BAB V

PENUTUP

5.1. Kesimpulan
Dari proses pengujian dan analisa serta pengambilan data
diatas, maka dapat diambil beberapa kesimpulan sebagai berikut:
1. Dalam perhitungan RaRb tegangan yang digunakan adalah
1,5 karena nilai R1 dan R3 sama dengan inputan 3 volt
2. Penulisan listing program menggunakan instruksi ”temp”
yaitu temporari sebagai batasan data yang diambil
3. Menggunakan resolusi 10 bit
4. ADC yang digunakan internal dari minimum sistem
Atmega16, dari settingan awal sebelum proses
pemrograman
5. Skala tegangan yang digunakan pada program
menggunakan arus maksimal 25A dari sensor
6. Resistansi jenis tanah mempengaruhi dalam proses
perhitungan pendeteksian kerusakan kabel tanah

5.2. Saran
Dari hasil yang didapat, maka alat ini sebenarnya masih jauh
dari kesempurnaan. Oleh karena itu, penulis ingin memberi saran
guna meningkatkan kinerja dari alat tersebut agar dapat dipakai
secara maksimal.
Adapun saran yang ingin disampaikan oleh penulis adalah
sebagai berikut:
™ Dalam pembuatan listing program menggunakan AVR
Atmega16 harus menggunakan block untuk penulisan program
yang sudah disediakan.
™ Pada saat pengambilan data, sebaiknya digunakan ADC dengan
resolusi 10 bit, Sehingga hasilnya dapat meminilisasi error
pembacaan. Dan data sudah sesuai dengan parameter.
DAFTAR PUSTAKA

1. William D. Cooper.”Instrumentasi Elektronik Dan Teknik


Pengukuran”, Erlangga, Jakarta. 1999
2. Lingga Wardhana,2006, ”Mikrokontroller AVR Seri
Atmega 16”, Penerbit Andi,Jakarta.
3. www.cropico.co.uk
4. Nalwan Paulus Andi ”Teknik Antarmuka dan Pemograman
Mikrokontroler AT89C51”Elex Media Komputindo,Jakarta.
2003
LAMPIRAN

/*********************************************
This program was produced by the
CodeWizardAVR V1.24.0 Standard
Automatic Program Generator
© Copyright 1998-2003 HP InfoTech s.r.l.
http://www.hpinfotech.ro
e-mail:office@hpinfotech.ro

Project : Alat Pendeteksi Kerusakan Kabel Tanah (Varley


Loop Tester)Berbasis Mikrokontroller
Version :
Date : 7/20/2007
Author : Prima Dewi P
Company : EEPIS - ITS
Comments :

Chip type : ATmega16


Program type : Application
Clock frequency : 4.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*********************************************/
#include <mega16.h>

// Alphanumeric LCD Module functions


#asm
.equ __lcd_port=0x15
#endasm
#include <lcd.h>
#include <delay.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>

#define ADC_VREF_TYPE 0x40


// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;
// 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


unsigned char dia[16];
//char tombol='X';
signed int pengali=1,temp,posisi=0,step_prog=0,no_kabel=0;
float
dia_mm=0,res_kabel,RaRb,R4,R1,R3,RX,Tegangan,adcV,adcI,Skal
a,Arus;

void dia_view2()
{ lcd_gotoxy(0,1);
//dia_mm=1234.4321;
ftoa(dia_mm,4,dia);
lcd_puts(dia);
lcd_putsf(" Ohm/km");

void R_view()
{ lcd_gotoxy(0,1);
ftoa(dia_mm,4,dia);
lcd_puts(dia);
lcd_putsf(" Ohm");

void L_view()
{ lcd_gotoxy(0,1);
ftoa(dia_mm,4,dia);
lcd_puts(dia);
lcd_putsf(" km");
}

void ADC_view()
{ lcd_gotoxy(0,1);
lcd_putsf("I:");
ftoa(Arus,4,dia);
lcd_puts(dia);
lcd_gotoxy(7,1);
lcd_putsf(" V:");
ftoa(Tegangan,4,dia);
lcd_puts(dia);
}

void pilih_kabel()
{ lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("Pilih (UP/DN):");
if (no_kabel==0){ lcd_gotoxy(0,1); lcd_putsf("1.5
mm^2");res_kabel=12.1;};
if (no_kabel==1){ lcd_gotoxy(0,1); lcd_putsf("2.5
mm^2");res_kabel=7.28;};
if (no_kabel==2){ lcd_gotoxy(0,1); lcd_putsf("4
mm^2");res_kabel=4.56;};
if (no_kabel==3){ lcd_gotoxy(0,1); lcd_putsf("6
mm^2");res_kabel=3.03;};
if (no_kabel==4){ lcd_gotoxy(0,1); lcd_putsf("10
mm^2");res_kabel=1.81;};
}

void step0()
{
PORTD =0b11011111;
temp=0;
if (PIND.0==0)
{ while (PIND.0==0) { };
if (no_kabel>0) no_kabel--; else {no_kabel=4;} ;
pilih_kabel();
}; // up
PORTD =0b11101111;
temp=0;
if (PIND.1==0)
{while (PIND.1==0) { };
dia_mm=res_kabel;
dia_view2();
delay_ms(1000);
step_prog=1;
lcd_clear();
lcd_gotoxy(0,0);
R1=2.4;
R3=2.4;
lcd_putsf("Atr Glvno u RaRb");
}; // enter

if (PIND.0==0)
{ while (PIND.0==0) { };
if (no_kabel<4) no_kabel++; else {no_kabel=0;}
pilih_kabel();
;}; // down
}

void step1()
{

PORTD =0b11101111;
temp=0;
if (PIND.1==0)
{while (PIND.1==0) { };
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("Nilai RaRb :");
RaRb=Tegangan/Arus;
step_prog=2;
dia_mm=RaRb;
R_view();
delay_ms(3000);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("Atr Galvano u RX");
}; // enter

delay_ms(250);
adcI=read_adc(0);
adcV=read_adc(1);
Skala=2.5; // teg ADC
Arus=(adcI/1023)*Skala;
Skala=2.5;
Tegangan=(adcV/1023)*Skala;
ADC_view();
}

void step2()
{
PORTD =0b11101111;
temp=0;
if (PIND.1==0)
{while (PIND.1==0) { };
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("Jarak RX :");
R4=Tegangan/Arus;
RX=((R3*RaRb)-(R1*R4))/(R1+R3);
dia_mm=RX;
L_view();
step_prog=3;
}; // enter
if (step_prog==2)
{
delay_ms(250);
adcI=read_adc(0);
adcV=read_adc(1);
Skala=2.5; // teg ADC
Arus=(adcI/1023)*Skala;
Skala=2.5;
Tegangan=(adcV/1023)*Skala;
ADC_view();
};
}
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In
Func6=In Func7=In
// State0=T State1=T State2=T State3=T State4=T State5=T
State6=T State7=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In
Func6=In Func7=In
// State0=T State1=T State2=T State3=T State4=T State5=T
State6=T State7=T
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In
Func6=In Func7=In
// State0=T State1=T State2=T State3=T State4=T State5=T
State6=T State7=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In
Func6=In Func7=In
// State0=T State1=T State2=T State3=T State4=T State5=T
State6=T State7=T
PORTD=0x00;
DDRD=0xF0;

// 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
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=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
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
// Analog Comparator Output: Off
ACSR=0x80;
SFIOR=0x00;

// ADC initialization
// ADC Clock frequency: 125.000 kHz
// ADC Voltage Reference: AVCC pin
// ADC High Speed Mode: Off
// ADC Auto Trigger Source: Free Running
ADMUX=ADC_VREF_TYPE;
ADCSRA=0xA5;
SFIOR&=0x0F;

// LCD module initialization


lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf("Varley Loop Test");
delay_ms(1000);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("Masukkan Jenis Diameter Kabel");
delay_ms(1000);
pilih_kabel();
dia_mm=0;
//pengali=1;
//posisi=0;
step_prog=0;
PORTD=0x0F;

while (1)
{if (step_prog==0){ step0();};
if (step_prog==1){ step1();};
if (step_prog==2){ step2();};

};}

Anda mungkin juga menyukai