Oleh :
Oleh:
Disetujui Oleh:
Pembimbing
Diketahui Oleh:
Ketua Departemen Teknik Elektro FT USU
Dr.Ir.Fahmi,ST.,M.Sc,IPM,ASEAN Eng
NIP: 197912092006041015
Pembangkit Listrik Tenaga Surya (PLTS) adalah salah satu aplikasi dari
pemanfaatan matahari sebagai sumber energi baru dan terbarukan. Salah satu
kekurangan dari sistem tenaga surya adalah ketika cahaya matahari tidak dapat
menyinari sel surya (kondisi cuaca hujan/berawan dan juga malam hari). Untuk
dapat menjamin pasokan daya listrik mengalir ke beban (pompa air) tidak terputus
dibutuhkan sumber energi cadangan, maka digunakanlah generator bahan bakar
minyak. Generator disini berfungsi untuk menahan tegangan baterai agar energi
pada baterai tidak habis. Pada penelitian ini, dirancang sebuah sistem kendali
otomatis yang dapat menghidupkan generator saat nilai tegangan baterai PLTS
≤12,37V dan mematikan generator ketika tidak ada beban yang terbuhung. Sistem
ini memanfaatkan mikrokontroller NodeMCU ESP8266 dan berbasis aplikasi
sehingga kondisi baterai dapat dipantau dari jarak jauh melalui smartphone
Android. Berdasarkan pengujian yang dilakukan, sistem kendali ini mampu
merespon dengan baik terhadap perubahan tegangan pada baterai, dan pengiriman
data dari ESP8266 ke server Firebase dengan waktu yang sama. Pada saat sumber
cadangan dari generator bekerja, tegangan baterai dapat ditahan pada nilai tegangan
12,26V-12,29V atau SOC baterai PLTS sekitar 65% melalui rangkaian penstabil
tegangan baterai yang berupa Power Supply DC 12V 30A serta Regulator
StepDown DC 30A.
Segala puji dan syukur penulis panjatkan kehadirat Allah SWT, karena atas
berkat rahmat dan berkat-Nya Skripsi ini dapat disusun dan diselesaikan.
Skripsi ini merupakan bagian dari kurikulum yang harus diselesaikan untuk
memenuhi persyaratan dalam menyelesaikan pendidikan Sarjana Strata Satu di
Departemen Teknik Elektro, Universitas Sumatera Utara. Adapun judul Skripsi ini
adalah :
Selama masa kuliah hingga penyelesaian Skripsi ini, penulis juga banyak
mendapatkan dukungan maupun bantuan dari berbagai pihak. Untuk itu penulis
ingin menyampaikan rasa terima kasih yang mendalam kepada:
ii
Penulis,
160402045
iii
ABSTRAK ............................................................................................................... i
iv
LAMPIRAN .......................................................................................................... 32
vi
vii
3. Power inverter yang di gunakan untuk melayani beban maksimal 500 watt.
5. Generator bahan bakar minyak yang digunakan adalah generator bensin yang
menghasilkan 220V AC dengan kapasitas 3000 watt.
6. Beban yang digunakan adalah Pompa Air dengan daya 260 watt.
BAB V : PENUTUP
Bab ini berisi tentang kesimpulan dan saran dari penelitian yang dilakukan.
TINJAUAN PUSTAKA
10
11
Pada penelitian kali ini sistem kendali yang digunakan adalah kendali dengan
close loop karena output mempengaruhi input. Adapun untuk pengendalian
menggunakan NodeMCU ESP 8266 yang bertindak sebagai mikrokontroler dalam
memproses pengendali relay dan servo untuk perpindahan sistem yang digunakan
antara sumber tenaga surya atau sumber cadangan dari generator.
12
13
14
15
16
17
MULAI
MENCARI
INFORMASI DAN
STUDI LITERATUR
PENENTUAN ALAT
DAN BAHAN YANG
AKAN DIGUNAKAN
PERANCANGAN
RANGKAIAN
ELEKTRONIKA
YA
PENGUJIAN DAN
PENGAMBILAN
DATA
PENARIKAN
KESIMPULAN
SELESAI
18
Perancagan dari alat yang dibuat pada sistem kendali ini ditunjukkan pada
gambar 3.2.
19
MULAI A B C X
1. NodeMCU ESP 8266 akan membaca koneksi wifi dari hotspot apakah wifi
sudah terhubung?
2. Jika NodeMCU ESP 8266 sudah terhubung dengan wifi, maka NodeMCU
ESP 8266 memerintahkan untuk menyalakan relay (kondisi awal normally
open/NO menjadi normally close/NC) pada relay channel 1 (on inverter),
relay channel 3 (line inverter), dan relay channel 5 (kipas box).
20
21
Dari skema perancangan alat, diketahui hubungan relay dengan peralatan seperti
yang dapat dilihat pada Tabel 3.2.
22
Dari logika kondisi pengujian dan rancangan pengujian relay maka dibuatlah
rancangan dari pengujian servo sebagai penggerak katup udara genset untuk
menutup katup udara (genset mati) dari kondisi awal servo 0° menjadi membuka
katup udara (genset hidup) dengan kondisi servo 180°. Logika dari rancangan
kendali servo dapat dilihat pada Tabel 3.4.
Rancangan Motor
Kondisi Katup Udara Genset
Servo
1 0° Tertutup Mati
2 0° Tertutup Mati
3 180° Terbuka Hidup
4 180° Terbuka Hidup
5 180° Terbuka Hidup
6 180° Terbuka Hidup
23
Pada gambar 3.4 menunjukkan komponen yang digunakan pada rangkaian ini
yaitu Generator-set sebagai sumber listrik yang dihubungkan dengan relay sebagai
saklar elektromagnetik lalu dihubungkan dengan Power Supply DC 30A sebagai
pengubah keluaran arus bolak balik dari generator menjadi arus searah yang
dihubungkan dengan Regulator Stepdown DC 30A sebagai pembatas keluaran
power supply lalu keluaran dari regulator akan terhubung dengan baterai VLRA
100AH.
24
25
A. Pengujian Relay DC
Tujuan dari pengujian ini untuk mengetahui keberhasilan kerja relay dalam
menghubungkan atau memutus rangkaian kendali, pada saat diberi beragai macam
kondisi seperti rancangan relay pada Tabel 3.3. Data hasil percobaan yang
didapatkan dari pengujian ini seperti yang ditunjukkan pada Tabel 4.1.
Tujuan dari pengujian ini untuk mengetahui keberhasilan kerja servo dalam
membuka katup udara (genset hidup) atau menutup katup udara (genset mati) pada
genset sesuai dengan rancangan pada Tabel 3.4. Pengaplikasian servo pada genset
ditunjukkan pada Gambar 4.2.
26
Hasil Pengujian
Kondisi Katup Udara Genset
Servo
1 0° Tertutup Mati
2 0° Tertutup Mati
3 180° Terbuka Hidup
4 180° Terbuka Hidup
5 180° Terbuka Hidup
6 180° Terbuka Hidup
27
Gambar 4.4 Data Hasil Pengujian rangkaian penahan tegangan baterai VLRA
Dari data pada Gambar 4.4 dapat dilihat kotak warna hijau menandakan waktu pada
saat pengujian dan kotak warna merah menampilkan nilai tegangan pada baterai
PLTS/VLRA. Ketika genset menyala untuk menahan tegangan baterai, besar nilai
tegangan pada baterai VLRA stabil di angka 12,26V-12,29V atau SOC Baterai
sekitar 65%.
28
Dari data pada gambar 4.5 maka dapat dilihat kotak warna biru manandakan
waktu pengujian, kotak warna merah menampilkan nilai tegangan pada baterai
PLTS/VLRA, sedangkan kotak warna hijau menampilkan nilai tegangan baterai
pada generator-set. Maka dapat disimpulkan bahwa waktu pengiriman dan data
nilai tegangan pada baterai yang dibaca NodeMCU ESP8266 sampai data diterima
oleh aplikasi Firebase pada smartphone android adalah sama.
29
5.1 Kesimpulan
Kesimpulan yang didapat dari hasil penelitian adalah
5.2 Saran
Saran yang dapat diberikan penulis pada penelitian ini adalah
30
31
32
34
36
37
38
#include <ESP8266WiFi.h>
#include <Servo.h>
#include <Adafruit_ADS1015.h>
//#include "ACS712.h"
#define FIREBASE_AUTH
"kGH9ipBTgAxG0v6VSqBA4kSzCNemvuAWmO9EZ1j4"
FirebaseData firebaseData;
FirebaseData button1Data;
FirebaseData button2Data;
FirebaseData button3Data;
FirebaseJson json;
Adafruit_ADS1115 ads(0x48);
Servo servo;
39
int siap1 = 0;
int siap2 = 0;
int overLoad = 0;
int cek;
int mVperAmp = 185; // use 100 for 20A Module and 66 for 30A Module
double AmpsRMS1 = 0;
float I = 0;
void setup() {
Serial.begin(9600);
ads.begin();
pinMode(sensorIn1, INPUT);
40
pinMode(lineGenset, OUTPUT);
pinMode(starterGenset, OUTPUT);
servo.write(0);
cek = 0;
pinMode(LED_BUILTIN, OUTPUT);
// sensor.calibrate();
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("Connecting to Wi-Fi");
Serial.print(".");
delay(300);
Serial.println();
Serial.println(WiFi.localIP());
Serial.println();
41
Firebase.reconnectWiFi(true);
digitalWrite(starterGenset, HIGH);
digitalWrite(saklarInverter, HIGH);
digitalWrite(kipas, HIGH);
digitalWrite(lineGenset, HIGH);
digitalWrite(lineInverter, HIGH);
digitalWrite(lineInverter, LOW);
digitalWrite(saklarInverter, LOW);
digitalWrite(kipas, LOW);
void sensorUpdate() {
//float I = sensor.getCurrentAC();
// Serial.println(I, 9);
// ------------- Arus
float result1;
42
readValue1 = analogRead(sensorIn1);
maxValue1 = readValue1;
minValue1 = readValue1;
Serial.print("Arus = " );
if (AmpsRMS1 < 1) {
AmpsRMS1 = 0;
Serial.println("0");
43
else {
Serial.println(AmpsRMS1);
//---------tegangan
adc0 = ads.readADC_SingleEnded(0);
Voltage = Voltage + 0.27; //We sum 0.27? (voltage drop on the diode only if
voltage is applied)
if (Voltage > 0)
// Serial.print("Voltage1 = ");
// Serial.print(Voltage);
// Serial.println("V");
// delay(100);
else
44
// Voltage = 0;
// Serial.print("0.0000");
// Serial.println("V");
// delay(100);
adc0 = ads.readADC_SingleEnded(1);
Voltage2 = Voltage2 + 0.27; //We sum 0.27? (voltage drop on the diode only if
voltage is applied)
if (Voltage2 > 0)
Serial.print("Voltage2 = ");
Serial.print(Voltage2);
Serial.println("V");
delay(100);
else
45
Voltage2 = 0;
Serial.print("0.0000");
Serial.println("V");
delay(100);
adc0 = ads.readADC_SingleEnded(2);
Voltage3 = Voltage3 + 0.27; //We sum 0.27? (voltage drop on the diode only if
voltage is applied)
if (Voltage3 > 0)
Serial.print("Voltage3 = ");
Serial.print(Voltage3);
Serial.println("V");
delay(100);
else
46
Voltage3 = 0;
Serial.print("0.0000");
Serial.println("V");
delay(100);
else
// Serial.println("FAILED");
// Serial.println("------------------------------------");
// Serial.println();
// Serial.println("PASSED");
// Serial.println("------------------------------------");
// Serial.println();
47
// Serial.println("FAILED");
// Serial.println("------------------------------------");
// Serial.println();
//------------------------------------------------------------------------------------------------
----------
void loop() {
sensorUpdate();
if (AmpsRMS1 < 1) {
cek = 1;
if (siap2 == 0) {
Serial.println("Genset Nyala");
digitalWrite(starterGenset, LOW);
servo.write(0);
48
siap2 = 1;
else {
digitalWrite(starterGenset, HIGH);
digitalWrite(lineGenset, LOW);
digitalWrite(lineGenset, HIGH);
padamkanGenset();
cek = 0;
else {
if (cek == 0) {
padamkanGenset();
else {
nyalakanGenset();
49
else {
cek = 1;
if (siap2 == 180) {
Serial.println("Genset Nyala");
digitalWrite(starterGenset, LOW);
servo.write(0);
delay(3000);
siap2 = 1;
else {
digitalWrite(starterGenset, HIGH);
digitalWrite(lineGenset, LOW);
digitalWrite(lineGenset, HIGH);
padamkanGenset();
cek = 1;
50
void nyalakanGenset() {
if (siap2 == 0) {
Serial.println("Genset Nyala");
digitalWrite(starterGenset, LOW);
servo.write(0);
delay(3000);
digitalWrite(starterGenset, HIGH);
siap2 = 1;
delay(10000);
else {
digitalWrite(lineGenset, LOW);
void padamkanGenset() {
Serial.println("Genset Padam");
digitalWrite(starterGenset, HIGH);
digitalWrite(lineGenset, HIGH);
servo.write(180);
51
siap1 = 0;
siap2 = 0;
52