Solar charging control with Arduino Schakelen zonnepaneel regulator
Solar charging control
Enlish version of the page below in pdf. This project describes the controlled bridging of a solar panel controller with a relay, controlled by an Arduino Uno microprocessor. This enables better charging during poor charging conditions. (3 pages)
Schakelen zonnepaneel regulator 2023 02 16
Doel en werking
Het overbruggen van een zonnepaneelregulator tijdens slechte laadcondities, zodat er tijdens het verbruiken van stroom minder verlies optreed en een hoger rendement uit de zonnepanelen gehaald wordt. Het systeem kent twee fases:
1. De FLOAT fase waarin de accu's geladen worden via een stabilisator, afgesteld op 13.8 V
2. Een BULK fase waarin de stabilisator wordt overbrugd en het zonnepaneel direct aan de accu's en/of gebruikers kan leveren.
Bij een spanning van minder dan 13.5 V start de BULK fase. Boven 15.0 V start de FLOAT fase.
Noot: Het laden door het zonnepaneel en het meten/ regeling vinden plaats nabij de voltmeters. De werkelijke spanning op de accu's ligt lager. Bij dit project moeten de waarden ingesteld moeten worden naar gelang de specifieke situatie aan boord.
Voor de regeling gebruik ik een programmeerbare Arduino Uno type microprocessor die een relais schakelt waarmee de 13.8V stabilisator overbrugd wordt.
De maximale en minimale spanning van de BULK fase zijn hierdoor eenvoudig in het programma aan te passen.
Ook de vertragingstijd tussen het bereiken van het ingestelde voltage en het schakelen van het relais is eenvoudig aan te passen. Deze delay staat nu op 5000 ms (5 seconden)
Omdat het meetbereik van de Arduino tussen de 0 en 5 volt ligt is een zenerdiode in lijn gezet waarmee de te meten spanning eerst met 11.82 V verminderd wordt.
Het programma
// _210513_Solar_Charging ! Disconnect D1 while uploading program
// Remark: float is a data type: floating point
// FLOAT is a charging stage
const int messurePin = A0; // yellow from zener - monitors the voltage
const int bulkPin = 1; // white to IN relais
const int BULK_LED = 2; // yellow LED on in BULK fase
const int FLOAT_LED = 3; // green LED on in FLOAT fase
float volt_Min = 13.5; // starting voltage for bulk mode
float volt_Max = 15.0; // top voltage for bulk mode
float volt_Messured = 0.0;
bool bulkEnabled = true; // always start in bulk mode
void setup()
{
pinMode(bulkPin,OUTPUT);
pinMode(BULK_LED,OUTPUT);
pinMode(FLOAT_LED,OUTPUT);
digitalWrite(bulkPin,HIGH); // start in bulk mode
digitalWrite(BULK_LED,HIGH);
}
void loop()
{
// Get the current voltage (11.82 is zener+diode value)
volt_Messured = 11.82 + 5.0 * analogRead(messurePin) / 1024.0;
delay(250);
// Set conditions for charging
if(volt_Messured > (volt_Max )) // too high > switch off
{
bulkEnabled = LOW;
delay(5000); //5 seconds
}
if(volt_Messured <= volt_Min) // too low > switch on
{
bulkEnabled = HIGH;
delay(5000);
}
if(bulkEnabled == true) // charge direct if conditions are met
{
digitalWrite(bulkPin,HIGH); // 5 V to relais
digitalWrite(BULK_LED,HIGH);
digitalWrite(FLOAT_LED,LOW);
}
else if (bulkEnabled == false)
{
digitalWrite(bulkPin,LOW); // 0 V to relais
digitalWrite(BULK_LED,LOW);
digitalWrite(FLOAT_LED,HIGH);
}
}
Het schema van de stabilisator en connectie met de Arduino Uno:
De plaatsing van het regelsysteem in het 12V circuit:
Met de keuzeschakelaar na de “SolArduino” kan er een keuze gemaakt worden welke accugroep wordt geladen met het zonnepaneel
1. Startaccu 2. Domestic 3. Boegschroef
foto: Groene LED aan:
FLOAT mode via de spanningsregulator
Jeroen Droogh
bootprojecten@gmail.com