• Tidak ada hasil yang ditemukan

DAFTAR PUSTAKA. Rele Gangguan Tanah (GFR) Sistem Proteksi Kota Padang. Universitas Bung. [2] Abdul Kadir BUKU PANDUAN PRAKTIS MEMPELAJARI APLIKASI

N/A
N/A
Protected

Academic year: 2021

Membagikan "DAFTAR PUSTAKA. Rele Gangguan Tanah (GFR) Sistem Proteksi Kota Padang. Universitas Bung. [2] Abdul Kadir BUKU PANDUAN PRAKTIS MEMPELAJARI APLIKASI"

Copied!
18
0
0

Teks penuh

(1)

DAFTAR PUSTAKA

[1] Rina. (2007). Perencanaan Sistem Koordinasi Rele Arus Lebih (OCR) Dengan Rele Gangguan Tanah (GFR) Sistem Proteksi Kota Padang. Universitas Bung Hatta: Skripsi S1.

[2] Abdul Kadir “BUKU PANDUAN PRAKTIS MEMPELAJARI APLIKASI MIKROKONTROLLER DAN PEMPROGRAMANNYA MENGGUNAKAN ARDUINO , Andi Publiser, 2013.

[3] Heru Dibyo Laksono, M. Nasir Sonni “PERANCANGAN DAN IMPLEMENTASI RELAY ARUS LEBIH SESAAT BERBASIS MICROCONTROLLER”. Jurusan Teknik Elektro, Univeristas Andalas Padang Sumatera Barat. September 2007.

[4] Zuhal. (1991). Dasar Tenaga Listrik. Institute Teknologi Bandung: Skripsi S1. [5] Desrizal. (2007). Studi Penentuan Karakteristik Waktu Tunda Dan Waktu

Kerja Over Current Relay (OCR) Dan Pemutus Balik Otomatis. Universitas Bung Hatta: Skripsi S1

[6] Ir. ILMANZA R.K., M.InfoTech.,17 Proyek Arduino.

[7] Massimo Banzi “GETTING STARTED WITH ARDUINO”, USA , 2009. [8] Operation and configuration instructions Datasheet vamp 40, Vamp LTD

Vaasa Finlandia

(2)

LAMPIRAN 1

Kode Program Mikrokontroler Arduino

#include <Wire.h>

#include <LiquidCrystal_I2C.h> #include <Keypad.h>

#define inSensor A0 #define relay 13 #define off HIGH

float settOCR,TMS,adcOCR; // SettOCR = Variabel setingan OCR, TMS = Time multiple setting OCR, adcOCR = variabel menyimpan hasil pembacaan sensor int type; //variabel type karakter OCR

int oc = 0; //variabel marker status OCR float k1 = 0.14; //konstanta pada N.inv float k2 = 13.5; // konstanta pada L.inv float k3 = 80; //Konstanta pada E.inv float k4 = 120; //konstanta pada L.inv

float curr = 0; // Variabel sementara perhitungan perbandingan I/Iset float expfactor1= 0.02;

float expfactor2= 2; float interval,interval2;

float amplitude_current; // Float amplitude current float effective_value; // Float effective current

(3)

unsigned long tim;

const byte ROWS = 4; //Setting Jumlah baris keypad const byte COLS = 4; //Setting Jumlah kolom Keypad

char keys[ROWS][COLS] = { // Mapping Karakter Keypad {'1','2','3','A'},

{'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','.'} };

byte rowPins[ROWS] = {0,1,2,3}; // pin pada arduino yang digunakan sebagai pin row

byte colPins[COLS] = { 4,5,6,7 }; // pin pada arduino yang digunakan sebagai pin row

Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); //inisialisai Keypad

LiquidCrystal_I2C lcd(0x3f,16,4); //menuliskan alamat i2c dan type LCD void setup() {

lcd.init(); //inisialisasi LCD

lcd.backlight(); // fungsi menyalakan backlight

pinMode(inSensor,INPUT); // inisialisasi pin A0/insensor sebagai input pinMode(relay,OUTPUT); // inisialisasi pin 13/relay sebagai output

(4)

lcd.print("OCR Digital"); lcd.setCursor(0,1); lcd.print("Tugas Akhir"); lcd.setCursor (-4,2); lcd.print("Annisa Amy F"); delay(3000); initSetup(); lcd.print("OCR Start"); } void loop() { while(oc != 2){ adcOCR=getCurrent();

f (adcOCR < settOCR){ // Section ini untuk handling sensor terhadap perubahan dinamis dari sensor Ta12-100

oc = 0; interval = 0; }

if (adcOCR > settOCR && oc == 0 ){ // Section ini untuk trigger apabila terjadi overload

//interval2 = getInterval(); tim = millis();

oc = 1; }

(5)

if (oc == 1 && millis() - tim > getInterval() ){ // section ini adalah timer yang akan bekerja saat terjadi overload

digitalWrite(relay,LOW); oc = 2; } lcd.setCursor (0,0); lcd.print("ADC :"); lcd.print(adcOCR); lcd.setCursor (0,1); lcd.print("OCR :"); lcd.print(settOCR); lcd.setCursor (-4,2); lcd.print("TMS :"); lcd.print(TMS);

switch(type){ //section menuliskan type karakter dari OCR yang dipilih case 1: lcd.setCursor (7,2); lcd.print("N.Inv"); break; case 2: lcd.setCursor (7,2);

(6)

lcd.print("V.Inv"); break; case 3: lcd.setCursor (7,2); lcd.print("E.Inv"); break; case 4: lcd.setCursor (7,2); lcd.print("L.Inv"); break; } lcd.setCursor (-4,3); lcd.print("t :"); lcd.print(interval); } lcd.clear(); lcd.setCursor(0,0); lcd.print("TRIP"); lcd.setCursor(0,1); lcd.print("Press * to Reset"); lcd.setCursor (-4,2); lcd.print("Trip :");

(7)

lcd.print(interval); lcd.setCursor (-4,3); lcd.print("ADC :"); lcd.print(adcOCR);

char key = kpd.getKey(); if (key == '*'){ lcd.clear(); oc = 0; digitalWrite(relay,HIGH); } delay(200); } void initSetup(){ lcd.clear(); lcd.setCursor(0,0); lcd.print("Enter I max"); lcd.setCursor (0,1); lcd.print("min : 0.1 "); lcd.setCursor (-4,2); lcd.print("max : 5 "); lcd.setCursor (-4,3); lcd.print("Enter : ");

(8)

settOCR = GetNumberFloat(5,0.1); lcd.clear(); lcd.setCursor(0,0); lcd.print("Enter TMS"); lcd.setCursor (0,1); lcd.print("min : 0.1 "); lcd.setCursor (-4,2); lcd.print("max : 10 "); lcd.setCursor (-4,3); lcd.print("Enter : "); TMS = GetNumberFloat(10,0.1); lcd.clear(); lcd.setCursor(0,0); lcd.print("Enter Type"); lcd.setCursor (0,1); lcd.print("1.N.Inv"); lcd.setCursor (8,1); lcd.print("2.V.Inv"); lcd.setCursor (-4,2); lcd.print("3.E.Inv"); lcd.setCursor (4,2); lcd.print("4.L.Inv");

(9)

lcd.setCursor (-4,3); lcd.print("Enter : ");

type = GetNumberInt(4,1); }

float GetNumberFloat(float maximal,float minimal) // Fungsi pengolah data input keypad agar bisa digunakan sebagai masukan nilai integer pada variabel tertunjuk

{

float num = 0; float num2 = 0; int digit = LOW; int po = 0;

char key = kpd.getKey(); while(key != '#') { switch (key) { case NO_KEY: break;

case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': lcd.print(key);

(10)

po = po+1; num2 = (key -'0');

num2 = num2 /pow(10,po); num = num + num2;

} else{

num = num * 10 + (key - '0'); } break; case '.': lcd.print(key); digit= HIGH; break; case '*': num = 0; lcd.clear(); lcd.print("Enter:"); break; } key = kpd.getKey(); } if (num > maximal){ lcd.clear();

(11)

lcd.setCursor(0,0); lcd.print("Invalid Value"); lcd.setCursor(0,1); lcd.print("Max Value:"); lcd.print(maximal); delay(3000); lcd.clear(); num = maximal; }

else if (num < minimal){ lcd.clear(); lcd.setCursor(0,0); lcd.print("Invalid Value"); lcd.setCursor(0,1); lcd.print("Min Value:"); lcd.print(minimal); delay(3000); lcd.clear(); num = minimal; } else { lcd.clear();

(12)

lcd.print("save data"); delay(1000); lcd.clear(); } return num; }

int GetNumberInt(int maximal,int minimal) // Fungsi pengolah data input keypad agar bisa digunakan sebagai masukan nilai integer pada variabel tertunjuk {

float num = 0; float num2 = 0; int digit = LOW; int po = 0;

char key = kpd.getKey(); while(key != '#') { switch (key) { case NO_KEY: break;

(13)

case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': lcd.print(key);

num = num * 10 + (key - '0'); break; case '*': num = 0; lcd.clear(); lcd.print("Enter:"); break; } key = kpd.getKey(); } if (num > maximal){ lcd.clear(); lcd.setCursor(0,0); lcd.print("Invalid Value"); lcd.setCursor(0,1); lcd.print("Max Value:"); lcd.print(maximal); delay(3000); lcd.clear();

(14)

num = maximal; }

else if (num < minimal){ lcd.clear(); lcd.setCursor(0,0); lcd.print("Invalid Value"); lcd.setCursor(0,1); lcd.print("Min Value:"); lcd.print(minimal); delay(3000); lcd.clear(); num = minimal; } else { lcd.clear(); lcd.print("save data"); delay(1000); lcd.clear(); } return num; }

(15)

float getInterval(){

float num;// Fungsi Pengolah Interval delay aktifasi relay if ( adcOCR > settOCR){

switch(type){ case 1 :

curr = adcOCR / settOCR; curr = pow(curr,expfactor1); curr = curr - 1;

interval = TMS * k1; interval = interval / curr ; interval = interval * 1000; num = interval;

break; case 2 :

curr = adcOCR / settOCR; curr = curr - 1;

interval = TMS * k2; interval = interval / curr ; interval = interval * 1000; num = interval;

break; case 3:

(16)

curr = adcOCR / settOCR; curr = pow(curr,expfactor2); curr = curr - 1;

interval = TMS * k3; interval = interval / curr ; interval = interval * 1000; num = interval;

break; case 4:

curr = adcOCR / settOCR; curr = curr - 1;

interval = TMS * k4; interval = interval / curr ; interval = interval * 1000; num = interval; break; default: interval = 0; num = interval; break; } }

(17)

else if (adcOCR <= settOCR){ interval = 0; num = interval *1000; } return num; } float getCurrent() { float result;

int readValue; //value read from the sensor int maxValue = 0; // store max value here uint32_t start_time = millis();

while((millis()-start_time) < 1000) //sample for 1 Sec {

readValue = analogRead(A0); // see if you have a new maxValue if (readValue > maxValue) {

/*record the maximum sensor value*/ maxValue = readValue;

} }

(18)

result = (maxValue * 5.0)/1024.0; // Convert the digital data to a voltage result = (result/200) * 1000; //Use Ohms law to calculate current across resistor and express in mA

result = result * 0.707; // nilai I RMS dari hasil perhitungan

result = result * 1000; // ratio perbandingan 1000 : 1 pada CT sehingga nilai akhir sbb

result = result/1000; //nilai arus dalam A return result;

Referensi

Dokumen terkait

Penelitian ini bertujuan mempelajari pola ekspresi gen HbACO1 terhadap pengaruh pelukaan dan pemberian stimulan pada berbagai tahap perkembangan tanaman dengan hipotesis

Namun pemeliharaan ini akan memakan waktu pemberhentian peralatan ( alat tidak operasi ) biasanya cukup lama dan mahal karena penggantian komponen yang masih dalam kondisi baik bersama

Tampilan arsitektural seperti sayap, rosettes, dan potongan sel lebih sering muncul Kromatin nuclear kasar atau granular, seringkali tampak terbuka.. Nuclei mungkin lebih

Berdasarkan hasil analisis data dan pembahasan yang telah dikemukakan, maka kesimpulan yang dapat diambil dari penelitian ini adalah sebagai berikut : (1) Secara simultan

Tugas Akhir ini dibuat untuk memenuhi salah satu syarat dalam menyelesaikan Pendidikan pada program Diploma III Program Studi Keuangan dan Perbankan Jurusan

Studi ini bertujuan untuk mengetahui pengaruh penambahan pemlastis polietilen glikol 400, dietilen glikol, dan dimetil ftalat terhadap kemampuan bioplastik

Dari hal yang telah diuraikan tersebut, diperlukan sebuah alat untuk memotong pipa diameter besar, dengan bentuk potongan lurus maupun bersudut untuk beveling

Ini menunjukkan bahwa adanya hubungan searah antara variabel Kompetensi (X) dengan Kinerja Karyawan (Y) yang di moderasi oleh variabel Motivasi (Z) pada