Arduino UNO Based Hybrid Energy Management System with I2C LCD Display and Relay Control
View and Edit Project In Cirkit Designer
Circuit Documentation
Summary
The circuit is designed to manage a hybrid energy system that utilizes solar panels, a battery, and an AC power source to supply electricity. It features an Arduino UNO microcontroller to monitor voltage levels from the different energy sources and control relays to switch between these sources based on their availability and voltage levels. The system also includes a 20x4 LCD with an I2C module to display voltage readings and the current power source. Voltage sensors are used to measure the voltage from the solar panel, battery, and grid. A 4-channel relay module is used to control the power flow to different loads and charge controllers.
Component List
- Arduino UNO: A microcontroller board based on the ATmega328P, used for controlling the logic of the hybrid energy system.
- Comment: A placeholder component with no connections or functionality.
- Lcd 20x4 i2c: A 20x4 character LCD display with an I2C interface for displaying system statuses and voltage readings.
- I2C module: An interface module to facilitate communication between the LCD and the Arduino UNO via the I2C protocol.
- 4 channel relay module: Two modules with four channels each, used for switching high-power electrical circuits using low-power signals from the Arduino UNO.
- Voltage Sensor: Three sensors used to measure the voltage from the solar panel, battery, and grid.
- Solar Panel: A photovoltaic panel used to convert solar energy into electrical energy.
- Battery: An energy storage device used to store electrical energy from the solar panel or grid.
- POWER SUPPLY 12V 5AMP: A power supply unit that converts AC voltage to 12V DC, used to power the circuit components.
- AC source: An alternating current power source representing the grid power.
- Resistor: A 200 Ohm resistor used for current limiting or voltage division.
- LED: Two Pin (red): Eight LEDs used as indicators for various statuses in the circuit.
Wiring Details
Arduino UNO
- Vin: Connected to the Vcc pins of all Voltage Sensors and the VCC+ pins of both 4-channel relay modules.
- GND: Common ground for the system, connected to the GND pins of the I2C module, the VCC- (GND) pins of both 4-channel relay modules, and the cathodes of all LEDs.
- 5V: Powers the I2C module.
- A0, A1, A2: Analog inputs connected to the Phase pins of the Voltage Sensors to measure solar, battery, and grid voltages, respectively.
- SCL, SDA: I2C communication lines connected to the corresponding pins on the I2C module.
- D2: Digital output connected to a 200 Ohm resistor.
- D3, D4, D5, D6, D7, D11, D12, D13: Digital outputs controlling the IN 1, IN 2, IN 3, and IN 4 pins of both 4-channel relay modules.
I2C Module
- VCC: Powered by the 5V output from the Arduino UNO.
- GND: Connected to the common ground.
- SCL, SDA: Connected to the corresponding SCL and SDA pins on the Arduino UNO for I2C communication.
4 Channel Relay Module
- VCC+: Powered by the Vin of the Arduino UNO.
- VCC- (GND): Connected to the common ground.
- IN 1, IN 2, IN 3, IN 4: Controlled by the digital outputs D3, D4, D5, D6, D7, D11, D12, D13 of the Arduino UNO.
- COM 1, COM 2, COM 3, COM 4: Connected to the VCC+ for relay common.
- N.O. 1, N.O. 2, N.O. 3, N.O. 4: Normally open contacts connected to the anodes of the LEDs.
Voltage Sensor
- Vcc: Powered by the Vin of the Arduino UNO.
- Gnd: Connected to the common ground.
- Phase: Connected to the analog inputs A0, A1, A2 of the Arduino UNO to measure voltages.
- Out: Output connected to the positive terminals of the solar panel, battery, and the 12V-24V Output (DC) of the POWER SUPPLY.
Solar Panel
- +: Connected to the Out pin of the corresponding Voltage Sensor.
- -: Connected to the Gnd pin of the corresponding Voltage Sensor.
Battery
- +: Connected to the Out pin of the corresponding Voltage Sensor.
- -: Connected to the Gnd pin of the corresponding Voltage Sensor.
POWER SUPPLY 12V 5AMP
- 220V Positive Pole (AC): Connected to the + pin of the AC source.
- 220V Negative Pole (AC): Connected to the - pin of the AC source.
- GND (DC): Connected to the Gnd pin of the corresponding Voltage Sensor.
- 12V-24V Output (DC): Connected to the Out pin of the corresponding Voltage Sensor.
Resistor
- pin1: Connected to the GND of the Arduino UNO.
- pin2: Connected to the D2 digital output of the Arduino UNO.
LED: Two Pin (red)
- cathode: Connected to the common ground.
- anode: Connected to the N.O. contacts of the 4-channel relay modules.
Documented Code
Arduino UNO Code (sketch.ino)
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
const int solarPin = A0;
const int batteryPin = A1;
const int gridPin = A2;
const int relaySolar = 13;
const int relayBattery = 12;
const int relayGrid = 11;
const int relayHighLoad = 7;
const int relayNormalLoad = 6;
const int relayLowLoad = 5;
const int Gcharge = 4;
const int Scharge = 3;
const int Emer = 1;
float solarVoltage, batteryVoltage, gridVoltage;
void setup() {
Serial.begin(9600);
lcd.backlight();
lcd.begin(20, 4);
lcd.init();
lcd.setCursor(0, 1);
lcd.print("HYBRID ENERGY SMART");
lcd.setCursor(5, 2);
lcd.print("MANAGEMENT");
delay(2000);
pinMode(relaySolar, OUTPUT);
pinMode(relayBattery, OUTPUT);
pinMode(relayGrid, OUTPUT);
pinMode(relayHighLoad, OUTPUT);
pinMode(relayNormalLoad, OUTPUT);
pinMode(relayLowLoad, OUTPUT);
pinMode(Gcharge, OUTPUT);
pinMode(Scharge, OUTPUT);
pinMode(Emer, OUTPUT);
digitalWrite(relaySolar, HIGH);
digitalWrite(relayBattery, HIGH);
digitalWrite(relayGrid, HIGH);
digitalWrite(relayHighLoad, HIGH);
digitalWrite(relayNormalLoad, HIGH);
digitalWrite(relayLowLoad, HIGH);
digitalWrite(Gcharge, HIGH);
digitalWrite(Scharge, HIGH);
digitalWrite(Emer, HIGH);
}
void loop() {
solarVoltage = analogRead(solarPin) * (5.0 / 1023.0) * (26.0 / 5.0);
batteryVoltage = analogRead(batteryPin) * (5.0 / 1023.0) * (23.5 / 5.0);
gridVoltage = analogRead(gridPin) * (5.0 / 1023.0) * (23.5 / 5.0);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Solar: ");
lcd.print(solarVoltage, 2);
lcd.print("V");
lcd.setCursor(0, 1);
lcd.print("Battery: ");
lcd.print(batteryVoltage, 2);
lcd.print("V");
lcd.setCursor(0, 2);
lcd.print("Grid: ");
lcd.print(gridVoltage, 2);
lcd.print("V");
// Logic to control relays based on voltage readings
// and update the LCD with the current power source.
// (The full logic is omitted for brevity.)
delay(1000);
}
This code is responsible for reading the voltage levels from the solar panel, battery, and grid, and controlling the relays to switch between these power sources. It also updates the LCD with the current voltage readings and power source information.
POWER SUPPLY 12V 5AMP Code (sketch.ino)
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
This code is a placeholder for the power supply unit and does not contain any functional code. It is included for completeness.