Lompat ke konten Lompat ke sidebar Lompat ke footer

Monitoring Panel Surya Arduino dan Data Logger Sensor INA219

Monitoring Daya Panel Surya Arduino

Monitoring Panel Surya Arduino dan Data Logger Sensor INA219 - Pada tutorial sebelumnya kita udah belajar dasar bagaimana cara membuat data logger menggunakan arduino untuk menyimpan data sensor ke memori micro SD dengan memasukkan data waktu yang presisi jam, detik, menit, tanggal, bulan dan tahun.

Sekarang kita akan belajar bagaimana caranya monitoring panel surya arduino berupa tegangan, arus, dan daya. Kemudian data-data tersebut akan disimpan ke dalam memori micro SD untuk keperluan tertentu.

 

A. Alat dan Bahan

Dalam pembuatan alat monitoring panel surya arduino dan membuat daya logger untuk itu, dibutuhkan berapa komponen, diantaranya adalah:

  1. Arduino Uno
    Bisa juga pakai Nano, pro mini ataupun pro micro.
  2. Panel Surya
    Dalam hal ini saya menggunakan panel surya dengan kapasitas maksimal 2W.
  3. Sensor INA219
  4. Modul Micro SD
  5. RTC DS3231
    Boleh juga menggunakan DS1307
  6. Kabel jumper secukupnya

 

B. Pembuatan Alat

Dalam pembuatan alatmonitoring panel surya arduino ini, saya akan membagikan 2 step untuk memudahkan pembelajaran ini. Adapun 2 langkah tersebut adalah:
1. Monitoring Tegangan, Arus dan Daya dari panel surya Arduino
2. Membuat Data Logger 
 

1. Cara Monitoring Panel Surya (Arus, Tegangan dan Daya).

Untuk dapat membaca sumber listrik berupa arus, tegangan dan daya saat monitoring panel surya arduino, kita membutuhkan sebuah sensor yang dapat mendeteksi dan membaca tegangan, arus dan daya.

Salah satu sensor yang saya gunakan dalam tutorial ini adalah sensor arus INA219. Saya telah menjelaskan secara terperinci tentang sensor ini pada artikel Cara Akses Sensor INA219 Arduino Modul Sensor Arus Tegangan Daya.

1.1. Rangkaian monitoring panel surya arduino

Sekarang mari kita rangkai sensor INA219 ke Arduino. Adapun rangkaiannya adalah sebagai berikut:

 

Penjelasan Rangkaian:

Pada rangkaian monitoring panel surya arduino diatas, saya menghubungkan langsung panel surya ke sensor INA219 dan beban yang dilalui hanya sebuah resistor shunt miliknya modul INA219 yang bernilai 0.1 Ohm 1%. Itu saya lakukan untuk mendapatkan nilai pembacaan maksimum dari Panel Surya.

Adapun sensor INA219 menggunakan protokol I2C untuk bisa berkomunikasi dengan Arduino. Jadi, pin yang digunakan hanya 2 yaitu SDA dan SCL ditambah dengan pin Power 5V dan GND.

Bagaimana cara sensor INA219 ini mendeteksi tegangan, arus dan daya sudah saya jelaskan pada halaman sebelumnya, silahkan baca kembali artikel Cara Akses Sensor INA219 Arduino Modul Sensor Arus Tegangan Daya.

 

1.2 Program Monitor Panel Surya

Untuk dapat membaca nilai daya arus dan tegangan dari sensor INA219, kita membutuhkan library tambahan yang memudahkan kita berkomunikasi menggunakan protokol I2C. 

Library INA2019 Sensor telah tersedia di library manager Arduino IDE. Silahkan tambahkan ke Arduino IDE anda dengan cara:

  • Klik menu Sketch 
  • > Include Library 
  • > Manage Libary.
  • Kemudian silahkan cari Adafruit INA219
  • Klik install.

Setelah itu silahkan copy program dibawah ini lalu upload ke Arduino. Setelah upload, silahkan buka serial monitor untuk mendapatkan hasil dari pembacaan daya arus dan tegangan.

#include <Wire.h>
#include <Adafruit_INA219.h>

Adafruit_INA219 ina219; // Alamat default adalah 0x40, jika jumper A0 dan A1 terbuka
//Adafruit_INA219 ina219 (0x41); // jika jumper A0 dihubungkan
// Adafruit_INA219 ina219 (0x44); // jika jumper A1 dihubungkan
// Adafruit_INA219 ina219 (0x45); // jika jumper A0 and A1 dihubungkan


void setup(void)
{
Serial.begin(9600);

if (! ina219.begin()) {
Serial.println("Gagal mendapatkan modul INA219");
while (1) {
delay(10);
}
}

// Secara default, kalibrasi ada pada (32V, 2A).

// Jika ingin lebih presisi pembacaan arus, Gunakan setingan 32V, 1A
// ina219.setCalibration_32V_1A();

// Jika ingin lebih presisi lagi, Gunakan setingan 16V, 400mA
ina219.setCalibration_16V_400mA();

}

void loop(void)
{
float tegangan_shunt = 0;
float tegangan_bus = 0;
float arus = 0;
float tegangan_load = 0;
float daya = 0;

tegangan_shunt = ina219.getShuntVoltage_mV();
tegangan_bus = ina219.getBusVoltage_V();
  tegangan_load = tegangan_bus + (tegangan_shunt / 1000);
arus = ina219.getCurrent_mA(); daya = tegangan_load * arus;
Serial.print("TEG: "); Serial.print(tegangan_load); Serial.print(" V "); Serial.print("ARUS: "); Serial.print(arus); Serial.print(" mA "); Serial.print("DAYA: "); Serial.print(daya); Serial.println(" mW"); delay(100); }

Maka hasilnya yang akan keluar dari serial monitor arduino adalah sebagai berikut:

 

2. Cara Membuat Data Logger Untuk Panel Surya

Sekarang kita akan membuat data logger untuk menyimpan data Tegangan, Arus dan Daya listrik yang didapatkan dari Sensor INA219. Untuk rangkaian dasar Data Logger bisa dilihat disini.

Untuk rangkaiannya keseluruhannya, kita tambahkan rangkaian di atas dengan dua komponen lagi yaitu modul Micro SD dan RTC DS3231.

Berikut adalah rangkaian keseluruhannya:

 

 Arduino Uno  MicroSD Module
 5V  VCC
 GND  GND
 13  SCK
 12  MISO
 11  MOSI
 10  CS
 
 Arduino Uno  DS3231
 5V  VCC
 GND  GND
 A4  SDA
 A5  SCL
   

 Arduino Uno  INA219
 5V  VCC
 GND  GND
 A4  SDA
 A5  SCL
   

Setelah rangkaian selesai terpasang, sekarang silahkan salin kode program dibawah ini dan upload ke Arduino.

Kode Progam:

#include <RTClib.h>
#include <SPI.h>
#include <SD.h>
#include <Wire.h>
#include <Adafruit_INA219.h>

File myFile;
RTC_DS3231 rtc;

Adafruit_INA219 ina219; // Alamat default adalah 0x40, jika jumper A0 dan A1 terbuka
//Adafruit_INA219 ina219 (0x41); // jika jumper A0 dihubungkan
// Adafruit_INA219 ina219 (0x44); // jika jumper A1 dihubungkan
// Adafruit_INA219 ina219 (0x45); // jika jumper A0 and A1 dihubungkan

int chipselect = 10;
int sensorPin = A0;
int dataSensor = 0;
int detik;
int detikSebelumnya;
String namaFile = "data_log.txt";
String dataJam;
String dataTanggal;

void setup(void)
{
Serial.begin(9600);

if (!SD.begin(chipselect)) {
Serial.println("Pembacaan Micro SD gagal!");
Serial.println("* Apa koneksi telah benar?");
Serial.println("* Atau kartu memori belum di masukkan?");
Serial.println("\n");
while (1) {
delay(10);
}
} else {
Serial.println("Kartu Memori MicroSD terbaca.");
}


if (! rtc.begin()) {
Serial.print("RTC tidak terdeteksi! ");
Serial.println("Apakah rangkaian telah benar?");
Serial.println("\n");
Serial.flush();
abort();
} else {
Serial.println("RTC terbaca.");
}


if (! ina219.begin()) {
Serial.println("Gagal mendapatkan modul INA219");
while (1) {
delay(10);
}
}

// Secara default, kalibrasi ada pada (32V, 2A).

// Jika ingin lebih presisi pembacaan arus, Gunakan setingan 32V, 1A
// ina219.setCalibration_32V_1A();

// Jika ingin lebih presisi lagi, Gunakan setingan 16V, 400mA
ina219.setCalibration_16V_400mA();

}

void loop(void)
{
DateTime now = rtc.now();

dataTanggal = now.timestamp(DateTime::TIMESTAMP_DATE);
dataJam = now.timestamp(DateTime::TIMESTAMP_TIME);
detik = now.second();

float tegangan_shunt = 0;
float tegangan_bus = 0;
float arus = 0;
float tegangan_load = 0;
float daya = 0;

tegangan_shunt = ina219.getShuntVoltage_mV();
tegangan_bus = ina219.getBusVoltage_V();
tegangan_load = tegangan_bus + (tegangan_shunt / 1000);
arus = ina219.getCurrent_mA();
daya = tegangan_load * arus;

String V = String (tegangan_load, 5);
String I = String (arus, 5);
String P = String (daya, 5);

if (detik != detikSebelumnya)
{
if (SD.exists(namaFile)) {
Serial.println("Tulis data...");
myFile = SD.open(namaFile, FILE_WRITE);
myFile.print(dataTanggal + " " + dataJam);
myFile.print(" ");
myFile.print(V);
myFile.print(" ");
myFile.print(I);
myFile.print(" ");
myFile.println(P);
myFile.close();
}
else {
Serial.println("File " + namaFile + " belum ada di memori.");
myFile = SD.open(namaFile, FILE_WRITE);
myFile.close();
}

detikSebelumnya = detik;
}
}

Penjelasan Program:

Ada dua bagian data yang akan disimpan ke dalam micro SD, pertama adalah bagian waktu dan kedua adalah bagian data panel surya.

Bagian waktu terdiri atas jam, menit, detik, tanggal, bulan dan tahun. Bagian data panel surya terdiri atas tegangan (V), arus (mA) dan daya (mW).

Untuk mengambil data waktu menggunakan perintah:

  • dataTanggal = now.timestamp(DateTime::TIMESTAMP_DATE);
  • dataJam     = now.timestamp(DateTime::TIMESTAMP_TIME);
Untuk mengambil data panel surya menggunakan perinth:
  •  tegangan_shunt = ina219.getShuntVoltage_mV();
  •  tegangan_bus = ina219.getBusVoltage_V();
  •  tegangan_load = tegangan_bus + (tegangan_shunt / 1000);
  •  arus = ina219.getCurrent_mA();
  •  daya = tegangan_load * arus;
Data panel surya tersebut berbentuk float atau nilai berkoma. Untuk dapat menyimpan nilai berkoma ke dalam micro SD, sebaiknya menggunakan string. Jika tidak, nilai float yang tersimpan hanya nilai float dengan dua angka di belakang koma.
 
Sedangkan jika kita konversi ke string, kita bisa menentukan seberapa panjang nilai dibelakang koma yang ingin disimpan. Semakin banyak nilai dibelakang koma, semakin akurat nilainya.
 
Adapun cara mengkonversi float to string adalah:
  • String V = String (tegangan_load, 5);
  • String I = String (arus, 5);
  • String P = String (daya, 5);
Angka 5 pada perintah diatas berfungsi untuk menyatakan 5 nilai dibelakang koma. Misalnya ada nilai = 4.54561409, ketika kita gunakan perintah :

String data = String (nilai, 5);

maka hasilnya adalah data = 4.54561

Dari program diatas, maka nilai yang tersimpan pada micro SD hasilnya adalah:

Semoga artikel monitoring panel surya arduino ini dapat membantu anda dalam membuat data logger untuk panel surya menggunakan Arduino. 

Jika ada saran dan kritikan untuk dapat membangun website ini menjadi lebih baik, silahkan beri komentar dibawah.

Jika artikel ini bermanfaat, silahkan share ke teman-teman lainnya menggunakan tombol share dibawah ini.

Pencarian yang serupa:

Posting Komentar untuk "Monitoring Panel Surya Arduino dan Data Logger Sensor INA219"