Pada Tugas Akhir ini digunakan satu buah mikrokontroler Arduino UNO
yang berfungsi sebagai penerima data dan pemberi signal output kepada relay.
Untuk melakukan fungsi - fungsinya tersebut, maka dilakukan pengalokasian
penggunaan port pada Arduino UNO.
Pada Port Analog In A5 digunakan sebagai masukan SCL (RTC dan I2C),
A4 digunakan sebagai input SDA (RTC dan I2C), dan Port Digital Pin
29
8,9,10,11,12 digunakan sebagai output relay, pin 13 digunakan sebagai output
buzzer, dan pin 5 sebagai input dari sensor Optocoupler.
30
Gambar 3.3 Desain Casing bagian belakang
31
Gambar 3.6 Desain Casing bagian atas
32
Gambar 3.9 Panel box
33
Relay 1, (Starter Genset)
Relay 2, (Kontak Genset)
Relay 3, (Indikator Genset)
Relay 4, (PLN)
Relay 5, (Suplai daya Genset)
Untuk komunikasi serialnya pada Arduino terdapat 5 pin yang fungsinya sangat
vital, yaitu :
Pin 7 sebagai digital write yang dihubungkan dengan sensor tegangan.
Pin 8 sebagai digital write yang terhubung dengan Relay 1
Pin 9 sebagai digital write yang terhubung dengan Relay 2
Pin10 sebagai digital write yang terhubung dengan Relay 3
Pin 11 sebagai digital write yang terhubung dengan Relay 4
Pin 12 sebagai digital write yang terhubung dengan Relay 5
Pin 13 sebagai digital write yang terhubung dengan buzzer.
34
Gambar 3.11 Flowchart pemanas mesin genset
35
Gambar 3.12 Flowchart Automatic Transfer Switch
Jika tegangan PLN tidak terdeteksi selama, kondisi ini menyatakan tidak
adanya tegangan PLN atau kondisi PLN padam. Maka program akan mengirim
perintah untuk menyalakan genset., selanjutnya starting genset dilakukan selama 3
detik. Setelah genset mencapai tegangan steady state genset, maka selanjutnya
relay PLN di OFF kan dan relay genset ON. Beban akan disuplai dari genset.
36
Line pertama perancangan program adalah memasukkan alamat-alamat
untuk mengakses komponen. Perintah ini berfungsi sebagai pendeklarasian bahwa
komponen yang dimaksud dapat diakses oleh arduino
#define buz 13
int sensorPLN = 7;
int re1 = 8;
int re2 = 9;
int re3 = 10;
int re4 = 11;
int re5 = 12;
int gen = 6;
int Hor;
int Min;
int Sec;
int Dday;
int statusPLN = 0;
Struktur dasar dari bahasa pemrograman arduino terdiri dari dua bagian,
yaitu void setup dan void loop.
void setup()
{
Wire.begin();
rtc.begin();
Serial.begin(9600);
pinMode(buz, OUTPUT);
pinMode(re1, OUTPUT);
pinMode(re2, OUTPUT);
pinMode(re3, OUTPUT);
pinMode(re4, OUTPUT);
pinMode(re5, OUTPUT);
pinMode(gen, OUTPUT);
pinMode(sensorPLN, INPUT);
lcd.begin(20, 4);
lcd.setCursor(0, 1);
37
lcd.print("Electronica Industry");
lcd.setCursor(2, 2);
lcd.print("Generator Set On");
delay(5000);
lcd.clear();
digitalWrite(re5, 1);
}
void loop()
{
t = rtc.getTime();
Hor = t.hour;
Min = t.min;
Sec = t.sec;
Dday = t.dow;
lcd.setCursor(0, 0);
lcd.print("Time: ");
lcd.print(rtc.getTimeStr());
lcd.setCursor(0, 1);
lcd.print("Date: ");
lcd.print(rtc.getDateStr());
lcd.setCursor(0,2);
lcd.print("Day : ");
lcd.print(rtc.getDOWStr());
lcd.setCursor(2, 3);
lcd.print("Teknisi Ahli XV");
if ( Dday == 3 && Hor == 15 && Min == 18 && Sec == 00 ) //Setting Nyala Pemanasan
Genset
{
Buzzer();
Buzzer();
Buzzer();
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Contact ON");
digitalWrite(re1, 1);
38
delay(3000);
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("Engine Start");
digitalWrite (re2, 1);
delay(3000);
digitalWrite (re2,0);
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("Generator ON");
digitalWrite(re3, 1);
delay(1000);
lcd.clear();
}
Jika RTC menunjukkan waktu sesuai dengan kondisi program yang kita buat
yaitu waktu genset off, maka relay akan mati.
if ( Dday == 3 && Hor == 15 && Min == 19 && Sec == 00 ) //Setting untuk mematikan
pemanasan genset
{
lcd.clear();
lcd.setCursor(3,0);
lcd.print("Generator OFF");
delay(2000);
digitalWrite(re1, 0);
digitalWrite(re3, 0);
delay(2000);
Buzzer();
Buzzer();
Buzzer();
lcd.clear();
delay(1000);
}
if (digitalRead(sensorPLN)==HIGH && digitalRead(re4)==LOW ) //Sensor ketika PLN mati
untuk menyalakan genset
39
{
Buzzer();
Buzzer();
Buzzer();
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("CONTACT ON");
digitalWrite(re5, 0);
digitalWrite(re1, 1);
delay(3000);
lcd.clear();
statusPLN=1;
lcd.setCursor(3, 0);
lcd.print("ENGINE START");
digitalWrite (re2, 1);
delay(3000);
digitalWrite (re2,0);
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("GENERATOR ON");
digitalWrite(re3, 1);
delay(3000);
digitalWrite(re4, 1);
digitalWrite(gen, 1);
lcd.clear();
statusPLN=1;
}
else
{
}
Kondisi ini untuk mematikan suplai daya genset dan mematikan genset
setelah PLN menyala.
lcd.setCursor(3,0);
lcd.print("GENERATOR OFF");
delay(3000);
Buzzer();
Buzzer();
Buzzer();
40
digitalWrite(re1, 0);
digitalWrite(re3, 0);
digitalWrite(re4, 0);
digitalWrite(gen, 0);
delay(3000);
digitalWrite(re5, 1);
lcd.clear();
statusPLN=0;
}
41