0% menganggap dokumen ini bermanfaat (0 suara)
14 tayangan4 halaman

Sistem Manajemen Baterai Arduino

Dokumen tersebut merupakan kode program Arduino untuk sistem manajemen baterai yang dapat memantau tegangan baterai dari 5 modul sensor tegangan yang dihubungkan secara seri, mengestimasi tingkat pengisian daya (state of charge/SOC) berdasarkan tegangan total, dan menampilkan grafik SOC serta data tegangan pada LCD. Kode tersebut meliputi pendefinisian pin input-output, rumus estimasi SOC, dan loop utama untuk membaca nilai sensor, menghitung

Diunggah oleh

Puji Nofiyanto
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
14 tayangan4 halaman

Sistem Manajemen Baterai Arduino

Dokumen tersebut merupakan kode program Arduino untuk sistem manajemen baterai yang dapat memantau tegangan baterai dari 5 modul sensor tegangan yang dihubungkan secara seri, mengestimasi tingkat pengisian daya (state of charge/SOC) berdasarkan tegangan total, dan menampilkan grafik SOC serta data tegangan pada LCD. Kode tersebut meliputi pendefinisian pin input-output, rumus estimasi SOC, dan loop utama untuk membaca nilai sensor, menghitung

Diunggah oleh

Puji Nofiyanto
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd

//BATTERY MANAGEMENT SYSTEM_ARDUINO UNO

//MONITORING TEGANGAN, ESTIMASI SOC, GRAFIK

#include <Wire.h>;
#include <OneWire.h>;
#include <LiquidCrystal_I2C.h> // Memanggil library LCD I2C
LiquidCrystal_I2C lcd (0x27,16,2); // Mengatur LCD 16x2
#include<LcdBarGraphRobojax.h>; // Memanggil library LCD Bar Grafik
LcdBarGraphRobojax lbg(&lcd,16,0,0);// Mengatur LCD Bar Grafik Pada Baris ke 1,
Kolom Ke 1-16

#define soc_max 100 // Nilai maksimal SOC = 100%


#define analogPin_1 A1 // Pin S modul sensor tegangan 1 dihubungkan pada pin A1
arduino
#define analogPin_2 A2 // Pin S modul sensor tegangan 2 dihubungkan pada pin A2
arduino
#define analogPin_3 A3 // Pin S modul sensor tegangan 3 dihubungkan pada pin A3
arduino
#define analogPin_4 A4 // Pin S modul sensor tegangan 4 dihubungkan pada pin A4
arduino
#define analogPin_5 A5 // Pin S modul sensor tegangan 5 dihubungkan pada pin A5
arduino
int relay = 3; // Pin Input relay dihubungkan pada pin 3 arduino

float R1 = 20000.0; // Tahanan Resistor 1 = 20.000 ohm


float R2 = 1500.0; // Tahanan Resistor 2 = 1575 ohm

float Vmodul1 = 0.0;


float Vmodul2 = 0.0;
float Vmodul3 = 0.0;
float Vmodul4 = 0.0;
float Vmodul5 = 0.0;

float hasil1 = 0.0;


float hasil2 = 0.0;
float hasil3 = 0.0;
float hasil4 = 0.0;
float hasil5 = 0.0;
float vtot = 0.0;
int soc = 0;
int value1 = 0;
int value2 = 0;
int value3 = 0;
int value4 = 0;
int value5 = 0;

void setup()
{
[Link](9600);
[Link] (">> WELCOME TO <<"); // Menampilkan Kata "WELCOME TO" pada saat
awal bekerja
[Link] (" MONBAT PROJECT "); // Menampilkan Kata "MONBAT PROJECT" pada
saat awal bekerja

pinMode(analogPin_1, INPUT); // Pin S pada sensor 1 digunakan sebagai


input
pinMode(analogPin_2, INPUT); // Pin S pada sensor 2 digunakan sebagai
input
pinMode(analogPin_3, INPUT); // Pin S pada sensor 3 digunakan sebagai
input
pinMode(analogPin_4, INPUT); // Pin S pada sensor 4 digunakan sebagai
input
pinMode(analogPin_5, INPUT); // Pin S pada sensor 5 digunakan sebagai
input
pinMode(relay, OUTPUT);

[Link](); // Inisialisasi LCD 16x2 I2C


[Link](); // Mengatur backlight LCD
[Link](); // Membersihkan LCD pada saat awal bekerja
}

void loop()
{
//SENSOR 5
value5 = analogRead(analogPin_5);
Vmodul5 = ((value5 * 5.0) / 1024.0);
hasil5 = (Vmodul5 / (R2/(R1+R2)));

//SENSOR 4
value4 = analogRead(analogPin_4);
Vmodul4 = (((value4 * 5.0) / 1024.0))-Vmodul5;
hasil4 = (Vmodul4 / (R2/(R1+R2)));

//SENSOR 3
value3 = analogRead(analogPin_3);
Vmodul3 = (((value3 * 5.0) / 1024.0))-Vmodul5-Vmodul4;
hasil3 = (Vmodul3 / (R2/(R1+R2)));

//SENSOR 2
value2 = analogRead(analogPin_2);
Vmodul2 = (((value2 * 5.0) / 1024.0))-Vmodul5-Vmodul4-Vmodul3;
hasil2 = (Vmodul2 / (R2/(R1+R2)));

//SENSOR 1
value1 = analogRead(analogPin_1);
Vmodul1 = (((value1 * 5.0) / 1024.0))-Vmodul5-Vmodul4-Vmodul3-Vmodul2;
hasil1 = (Vmodul1 / (R2/(R1+R2)));
//TEGANGAN TOTAL&SOC
vtot = hasil1+hasil2+hasil3+hasil4+hasil5; // Jumlah dari tegangan baterai 1-5
yang dirangkai seri
soc = (((vtot-59)/6.9)*100); // Rumus didapatkan dari batas bawah tegangan 59
Volt dan batas atas 65,9 Volt
if (soc >= 100){
digitalWrite(relay,LOW); // Saat SOC >= 100% relay LOW (OFF)
[Link]("Relay : OFF");
}else{
digitalWrite(relay,HIGH); // Saat SOC < 100% relay HIGH (ON)
[Link]("Relay : ON");
}

//SERIAL MONITOR
[Link]("Tegangan 1 = "); // Menampilkan Tegangan Baterai 1
[Link](hasil1,2);
[Link](" Volt");
[Link]("Tegangan 2 = "); // Menampilkan Tegangan Baterai 2
[Link](hasil2,2);
[Link](" Volt");
[Link]("Tegangan 3 = "); // Menampilkan Tegangan Baterai 3
[Link](hasil3,2);
[Link](" Volt");
[Link]("Tegangan 4 = "); // Menampilkan Tegangan Baterai 4
[Link](hasil4,2);
[Link](" Volt");
[Link]("Tegangan 5 = "); // Menampilkan Tegangan Baterai 5
[Link](hasil5,2);
[Link](" Volt");
[Link]("Vtot = "); // Menampilkan Tegangan Total
[Link](vtot);
[Link](" V");
[Link]("SOC = "); // Menampilkan SOC
[Link](soc);
[Link](" %");

{if (soc >= 0){


[Link](1);
[Link](soc,soc_max); // Menampilkan Bar Grafik SOC
[Link](3,1);
[Link](soc); // Menampilkan Nilai SOC
[Link]("%");
[Link](8,1);
[Link](vtot); // Menampilkan Tegangan Total
[Link]("V");
}
else{
[Link](3,0);
[Link]("PLEASE WAIT");
[Link](3,1);
[Link]("...........");
}
}
delay(1200);
}

Anda mungkin juga menyukai