Arduino pour réguler la charge de 8 batterie

Bonjour a tous
J’ai besoin de vos lumières sur mon projet car je casse des relais et sa me parait dangereux :warning:

J’ai des panneaux Solair brancher à un onduleur qui lui est brancher à 8 batterie au plomb ( je sais ce n’est pas le top mais on fait avec les moyens du bord)

J’aimerais que arduino détecte que quand la moyenne des batteries font > 55v
Couper la charge d’une rangée de batterie et charger la batterie la plus faible

Malheureusement j’ai pas mal de problème et j’aimerais que vous me disait se que vous pensai
J’ai ajouté des fusibles pour pas faire griller la maison

Voici mon code
C’est un peut une usine à gaz
J’ai juste modifié les delay pour faire des test

float tensiometre = 2500;
float aleatoir = random(2000, 3000);

#include <Wire.h> 
#include <Robojax_WCS.h>
#define MODEL 12 //NE PAS CHANGER c'est quel testeur utiliser
#define SENSOR_PIN A8 //sur quel pin est connecter AOUT - A8
#define SENSOR_VCC_PIN 8 //sur quel pin est connecter VCC - 8
#define ZERO_CURRENT_LED_PIN 2 //zero current LED pin????

#define ZERO_CURRENT_WAIT_TIME 1000 //TEMPS D ATTENTE AVENT DEMARRAGE
#define CORRECTION_VLALUE 164 //mA
#define MEASUREMENT_ITERATION 100
#define VOLTAGE_REFERENCE  5000.0 //5000mv is for 5V PEUT ETRE METRE SUR LA TENTION PANNEAUX
#define BIT_RESOLUTION 12 //12 POUR MKR 10 POUR UNO
#define DEBUT_ONCE true


Robojax_WCS sensor(
          MODEL, SENSOR_PIN, SENSOR_VCC_PIN, 
          ZERO_CURRENT_WAIT_TIME, ZERO_CURRENT_LED_PIN,
          CORRECTION_VLALUE, MEASUREMENT_ITERATION, VOLTAGE_REFERENCE,
          BIT_RESOLUTION, DEBUT_ONCE           
          );


int offset =20;

void setup() {

  Serial.begin(9600);
  
  //contacteur ranger batterie
  pinMode(11, OUTPUT);//ranger batterie 1 NORMALLEMENT FERMER !!!
  digitalWrite(11, LOW);
  pinMode(12, OUTPUT);//ranger batterie 2 Normallement fermer !!!
  digitalWrite(12, LOW);
  
  //contacteur chargeur PLUS
  pinMode(22, OUTPUT);
  digitalWrite(22, HIGH);
  pinMode(23, OUTPUT);
  digitalWrite(23, HIGH);
  pinMode(24, OUTPUT);
  digitalWrite(24, HIGH);
  pinMode(25, OUTPUT);
  digitalWrite(25, HIGH);
  pinMode(26, OUTPUT);
  digitalWrite(26, HIGH);
  pinMode(27, OUTPUT);
  digitalWrite(27, HIGH);
  pinMode(28, OUTPUT);
  digitalWrite(28, HIGH);
  pinMode(29, OUTPUT);
  digitalWrite(29, HIGH);
  
  //contacteur chargeur MOINS
  pinMode(30, OUTPUT);
  digitalWrite(30, HIGH);
  pinMode(31, OUTPUT);
  digitalWrite(31, HIGH);
  pinMode(32, OUTPUT);
  digitalWrite(32, HIGH);
  pinMode(33, OUTPUT);
  digitalWrite(33, HIGH);
  pinMode(34, OUTPUT);
  digitalWrite(34, HIGH);
  pinMode(35, OUTPUT);
  digitalWrite(35, HIGH);
  pinMode(36, OUTPUT);
  digitalWrite(36, HIGH);
  pinMode(37, OUTPUT);
  digitalWrite(37, HIGH);

  //Relai tensiometre
  pinMode(38, OUTPUT);
  digitalWrite(38, HIGH);
  pinMode(39, OUTPUT);
  digitalWrite(39, HIGH);
  pinMode(40, OUTPUT);
  digitalWrite(40, HIGH);
  pinMode(41, OUTPUT);
  digitalWrite(41, HIGH);
  pinMode(42, OUTPUT);
  digitalWrite(42, HIGH);
  pinMode(43, OUTPUT);
  digitalWrite(43, HIGH);
  pinMode(44, OUTPUT);
  digitalWrite(44, HIGH);
  pinMode(45, OUTPUT);
  digitalWrite(45, HIGH);
  pinMode(46, OUTPUT);
  digitalWrite(46, HIGH);
  pinMode(47, OUTPUT);
  digitalWrite(47, HIGH);
  pinMode(48, OUTPUT);
  digitalWrite(48, HIGH);
  pinMode(49, OUTPUT);
  digitalWrite(49, HIGH);
  pinMode(50, OUTPUT);
  digitalWrite(50, HIGH);
  pinMode(51, OUTPUT);
  digitalWrite(51, HIGH);
  pinMode(52, OUTPUT);
  digitalWrite(52, HIGH);
  pinMode(53, OUTPUT);
  digitalWrite(53, HIGH); 

  //Mode du chargeur
  pinMode(52, OUTPUT);//mode AMP
  pinMode(53, OUTPUT);//mode MODE


//reglage chargeur
/*
  Serial.println("initialisation du gargeur");
  digitalWrite(52, HIGH);
  delay(100);
  digitalWrite(52, LOW);
  delay(400);

  digitalWrite(53, HIGH);
  delay(100);
  digitalWrite(53, LOW);
  delay(400);  
  digitalWrite(53, HIGH);
  delay(100);
  digitalWrite(53, LOW);
  delay(400);  
  digitalWrite(53, HIGH);
  delay(100);
  digitalWrite(53, LOW);
  delay(400);
  Serial.println("FIN initialisation du gargeur");
*/
  
  
  sensor.start();

}

void loop() {

  float batterie_full = 00.0;

  int  contacteur_ranger_1 = 11;
  int  contacteur_ranger_2 = 12;

  int  chargeur_batterie_plus_1 = 22;
  int  chargeur_batterie_plus_2 = 23;
  int  chargeur_batterie_plus_3 = 24;
  int  chargeur_batterie_plus_4 = 25;
  int  chargeur_batterie_plus_5 = 26;
  int  chargeur_batterie_plus_6 = 27;
  int  chargeur_batterie_plus_7 = 28;
  int  chargeur_batterie_plus_8 = 29;

  int  chargeur_batterie_moins_1 = 30;
  int  chargeur_batterie_moins_2 = 31;
  int  chargeur_batterie_moins_3 = 32;
  int  chargeur_batterie_moins_4 = 33;
  int  chargeur_batterie_moins_5 = 34;
  int  chargeur_batterie_moins_6 = 35;
  int  chargeur_batterie_moins_7 = 36;
  int  chargeur_batterie_moins_8 = 37;




int relai_tension_plus_1 = 42;
int relai_tension_plus_2 = 50;
int relai_tension_plus_3 = 43;
int relai_tension_plus_4 = 51;
int relai_tension_plus_5 = 44;
int relai_tension_plus_6 = 52;
int relai_tension_plus_7 = 45;
int relai_tension_moin_8 = 38;

int relai_tension_moin_1 = 49;
int relai_tension_moin_2 = 41;
int relai_tension_moin_3 = 48;
int relai_tension_moin_4 = 40;
int relai_tension_moin_5 = 47;
int relai_tension_moin_6 = 39;
int relai_tension_moin_7 = 46;
int relai_tension_plus_8 = 53;

   
  float voltage_batterie[9];

  digitalWrite(relai_tension_plus_1, LOW);
  digitalWrite(relai_tension_moin_1, LOW);
  Serial.println("attendre 2 seconde pour la prise de mesure Batterie 1");
  delay(200);
  
  int volt1 = analogRead(A5);
  double voltage1 = map(volt1,0,1055, 0, tensiometre) + offset + random(2000, 3000);//3
  voltage1 /=100;
  Serial.print("volatage1: ");
  Serial.print(voltage1);
  Serial.println("V");

  voltage_batterie[1]=voltage1;
  delay(200);

  digitalWrite(relai_tension_plus_1, HIGH);
  digitalWrite(relai_tension_moin_1, HIGH);
  Serial.println("attendre 2 seconde pour la prise de mesure Batterie 1");
  delay(200);
  digitalWrite(relai_tension_plus_2, LOW);
  digitalWrite(relai_tension_moin_2, LOW);
  Serial.println("attendre 2 seconde pour la prise de mesure Batterie 2");
  delay(200);  
  
  int volt2 = analogRead(A5);
  double voltage2 = map(volt2,0,1055, 0, tensiometre) + offset + random(2000, 3000);//3
  voltage2 /=100;
  Serial.print("volatage2: ");
  Serial.print(voltage2);
  Serial.println("V");

  voltage_batterie[2]=voltage2;
  delay(200);

  digitalWrite(relai_tension_plus_2, HIGH);
  digitalWrite(relai_tension_moin_2, HIGH);
  Serial.println("attendre 2 seconde pour la prise de mesure Batterie 2");
  delay(200);
  digitalWrite(relai_tension_plus_3, LOW);
  digitalWrite(relai_tension_moin_3, LOW);
  Serial.println("attendre 2 seconde pour la prise de mesure Batterie 3");
  delay(200);  
  
  int volt3 = analogRead(A5);
  double voltage3 = map(volt3,0,1055, 0, tensiometre) + offset + random(2000, 3000);//3
  voltage3 /=100;
  Serial.print("volatage3: ");
  Serial.print(voltage3);
  Serial.println("V");

  voltage_batterie[3]=voltage3;
  delay(200);

  digitalWrite(relai_tension_plus_3, HIGH);
  digitalWrite(relai_tension_moin_3, HIGH);
  Serial.println("attendre 2 seconde pour la prise de mesure Batterie 3");
  delay(200);
  digitalWrite(relai_tension_plus_4, LOW);
  digitalWrite(relai_tension_moin_4, LOW);
  Serial.println("attendre 2 seconde pour la prise de mesure Batterie 4");
  delay(200);  
  
  int volt4 = analogRead(A5);
  double voltage4 = map(volt4,0,1055, 0, tensiometre) + offset + random(2000, 3000);//3
  voltage4 /=100;
  Serial.print("volatage4: ");
  Serial.print(voltage4);
  Serial.println("V");

  voltage_batterie[4]=voltage4;
  delay(200);

  digitalWrite(relai_tension_plus_4, HIGH);
  digitalWrite(relai_tension_moin_4, HIGH);
  Serial.println("attendre 2 seconde pour la prise de mesure Batterie 4");
  delay(200);
  digitalWrite(relai_tension_plus_5, LOW);
  digitalWrite(relai_tension_moin_5, LOW);
  Serial.println("attendre 2 seconde pour la prise de mesure Batterie 5");
  delay(200);  
  
  int volt5 = analogRead(A5);
  double voltage5 = map(volt5,0,1055, 0, tensiometre) + offset + random(2000, 3000);//3
  voltage5 /=100;
  Serial.print("volatage5: ");
  Serial.print(voltage5);
  Serial.println("V");

  voltage_batterie[5]=voltage5;
  delay(200);

  digitalWrite(relai_tension_plus_5, HIGH);
  digitalWrite(relai_tension_moin_5, HIGH);
  Serial.println("attendre 2 seconde pour la prise de mesure Batterie 5");
  delay(200);
  digitalWrite(relai_tension_plus_6, LOW);
  digitalWrite(relai_tension_moin_6, LOW);
  Serial.println("attendre 2 seconde pour la prise de mesure Batterie 6");
  delay(200);  
  
  int volt6 = analogRead(A5);
  double voltage6 = map(volt6,0,1055, 0, tensiometre) + offset + random(2000, 3000);//3
  voltage6 /=100;
  Serial.print("volatage6: ");
  Serial.print(voltage6);
  Serial.println("V");

  voltage_batterie[6]=voltage6;
  delay(200);

  digitalWrite(relai_tension_plus_6, HIGH);
  digitalWrite(relai_tension_moin_6, HIGH);
  Serial.println("attendre 2 seconde pour la prise de mesure Batterie 6");
  delay(200);
  digitalWrite(relai_tension_plus_7, LOW);
  digitalWrite(relai_tension_moin_7, LOW);
  Serial.println("attendre 2 seconde pour la prise de mesure Batterie 7");
  delay(200);  
  
  int volt7 = analogRead(A5);
  double voltage7 = map(volt7,0,1055, 0, tensiometre) + offset + random(2000, 3000);//3
  voltage7 /=100;
  Serial.print("volatage7: ");
  Serial.print(voltage7);
  Serial.println("V");

  voltage_batterie[7]=voltage7;
  delay(200);

  digitalWrite(relai_tension_plus_7, HIGH);
  digitalWrite(relai_tension_moin_7, HIGH);
  Serial.println("attendre 2 seconde pour la prise de mesure Batterie 7");
  delay(200);
  digitalWrite(relai_tension_plus_8, LOW);
  digitalWrite(relai_tension_moin_8, LOW);
  Serial.println("attendre 2 seconde pour la prise de mesure Batterie 8");
  delay(200);  
  
  int volt8 = analogRead(A5);
  double voltage8 = map(volt8,0,1055, 0, tensiometre) + offset + 2500;//3
  voltage8 /=100;
  Serial.print("volatage8: ");
  delay(200);
  Serial.print(voltage8);
  delay(200);
  Serial.println("V");

  voltage_batterie[8]=voltage8;
  delay(200);

  digitalWrite(relai_tension_plus_8, HIGH);
  digitalWrite(relai_tension_moin_8, HIGH);
  Serial.println("attendre 2 seconde pour la prise de mesure Batterie 8");
  delay(200);


  

  
  float  ranger_batterie_1 = voltage_batterie[1]+voltage_batterie[2]+voltage_batterie[3]+voltage_batterie[4];
  Serial.print("Voltage ranger batterie 1 : ");
  Serial.print(ranger_batterie_1);
  Serial.println(" V");
  float  ranger_batterie_2 = voltage_batterie[5]+voltage_batterie[6]+voltage_batterie[7]+voltage_batterie[8];
  Serial.print("Voltage ranger batterie 2 : ");
  Serial.print(ranger_batterie_2);
  Serial.println(" V");

if ((ranger_batterie_1+ranger_batterie_2)/2 > batterie_full){
  Serial.println("les batterie sont charger");
  if (ranger_batterie_1<ranger_batterie_2){
    Serial.println("la ranger batterie 1 est la plus faible");
    Serial.println("couper la charge de batterie 5 , 6 , 7 , 8");
    digitalWrite(chargeur_batterie_plus_5, HIGH);
    digitalWrite(chargeur_batterie_moins_5, HIGH);
    digitalWrite(chargeur_batterie_plus_6, HIGH);
    digitalWrite(chargeur_batterie_moins_6, HIGH);
    digitalWrite(chargeur_batterie_plus_7, HIGH);
    digitalWrite(chargeur_batterie_moins_7, HIGH);
    digitalWrite(chargeur_batterie_plus_8, HIGH);
    digitalWrite(chargeur_batterie_moins_8, HIGH);
    Serial.println("attendre 5 seconde");
    delay(5000);
    Serial.println("rebrancher la ranger de batterie 2 si besoin ?");
    digitalWrite(contacteur_ranger_2, LOW);
    Serial.println("attendre 5 seconde");
    delay(5000);
    Serial.println("debrancher la ranger de batterie 1");
    digitalWrite(contacteur_ranger_1, HIGH);
    Serial.println("attendre 5 seconde");
    delay(5000);

      if (voltage_batterie[1]<=voltage_batterie[2] and voltage_batterie[1]<=voltage_batterie[3] and voltage_batterie[1]<=voltage_batterie[4]){
        Serial.println("couper la charge de batterie 2 3 4 et attendre 5 seconde");
        digitalWrite(chargeur_batterie_plus_2, HIGH);
        digitalWrite(chargeur_batterie_moins_2, HIGH);
        digitalWrite(chargeur_batterie_plus_3, HIGH);
        digitalWrite(chargeur_batterie_moins_3, HIGH);
        digitalWrite(chargeur_batterie_plus_4, HIGH);
        digitalWrite(chargeur_batterie_moins_4, HIGH);
        digitalWrite(chargeur_batterie_plus_5, HIGH);
        digitalWrite(chargeur_batterie_moins_5, HIGH);
        digitalWrite(chargeur_batterie_plus_6, HIGH);
        digitalWrite(chargeur_batterie_moins_6, HIGH);
        digitalWrite(chargeur_batterie_plus_7, HIGH);
        digitalWrite(chargeur_batterie_moins_7, HIGH);
        digitalWrite(chargeur_batterie_plus_8, HIGH);
        digitalWrite(chargeur_batterie_moins_8, HIGH);
        delay(5000);
        Serial.println("charger la batterie 1");
        digitalWrite(chargeur_batterie_plus_1, LOW);
        delay(200);
        digitalWrite(chargeur_batterie_moins_1, LOW);
        delay(200);
        
      }
      if (voltage_batterie[2]<voltage_batterie[1] and voltage_batterie[2]<voltage_batterie[3] and voltage_batterie[2]<voltage_batterie[4]){
        Serial.println("couper la charge de batterie 1 3 4 et attendre 5 seconde");
        digitalWrite(chargeur_batterie_plus_1, HIGH);
        digitalWrite(chargeur_batterie_moins_1, HIGH);
        digitalWrite(chargeur_batterie_plus_3, HIGH);
        digitalWrite(chargeur_batterie_moins_3, HIGH);
        digitalWrite(chargeur_batterie_plus_4, HIGH);
        digitalWrite(chargeur_batterie_moins_4, HIGH);
        digitalWrite(chargeur_batterie_plus_5, HIGH);
        digitalWrite(chargeur_batterie_moins_5, HIGH);
        digitalWrite(chargeur_batterie_plus_6, HIGH);
        digitalWrite(chargeur_batterie_moins_6, HIGH);
        digitalWrite(chargeur_batterie_plus_7, HIGH);
        digitalWrite(chargeur_batterie_moins_7, HIGH);
        digitalWrite(chargeur_batterie_plus_8, HIGH);
        digitalWrite(chargeur_batterie_moins_8, HIGH);
        delay(5000);
        Serial.println("charger la batterie 2");
        digitalWrite(chargeur_batterie_plus_2, LOW);
        delay(200);
        digitalWrite(chargeur_batterie_moins_2, LOW);
        delay(200);
        
      }
      if (voltage_batterie[3]<voltage_batterie[1] and voltage_batterie[3]<voltage_batterie[2] and voltage_batterie[3]<voltage_batterie[4]){
        Serial.println("couper la charge de batterie 1 2 4 et attendre 5 seconde");
        digitalWrite(chargeur_batterie_plus_1, HIGH);
        digitalWrite(chargeur_batterie_moins_1, HIGH);
        digitalWrite(chargeur_batterie_plus_2, HIGH);
        digitalWrite(chargeur_batterie_moins_2, HIGH);
        digitalWrite(chargeur_batterie_plus_4, HIGH);
        digitalWrite(chargeur_batterie_moins_4, HIGH);
        digitalWrite(chargeur_batterie_plus_5, HIGH);
        digitalWrite(chargeur_batterie_moins_5, HIGH);
        digitalWrite(chargeur_batterie_plus_6, HIGH);
        digitalWrite(chargeur_batterie_moins_6, HIGH);
        digitalWrite(chargeur_batterie_plus_7, HIGH);
        digitalWrite(chargeur_batterie_moins_7, HIGH);
        digitalWrite(chargeur_batterie_plus_8, HIGH);
        digitalWrite(chargeur_batterie_moins_8, HIGH);
        delay(5000);
        Serial.println("charger la batterie 3");
        digitalWrite(chargeur_batterie_plus_3, LOW);
        delay(200);
        digitalWrite(chargeur_batterie_moins_3, LOW);
        delay(200);
        
      }
      if (voltage_batterie[4]<voltage_batterie[1] and voltage_batterie[4]<voltage_batterie[2] and voltage_batterie[4]<voltage_batterie[1]){
        Serial.println("couper la charge de batterie 1 2 3 et attendre 5 seconde");
        digitalWrite(chargeur_batterie_plus_1, HIGH);
        digitalWrite(chargeur_batterie_moins_1, HIGH);
        digitalWrite(chargeur_batterie_plus_2, HIGH);
        digitalWrite(chargeur_batterie_moins_2, HIGH);
        digitalWrite(chargeur_batterie_plus_3, HIGH);
        digitalWrite(chargeur_batterie_moins_3, HIGH);
        digitalWrite(chargeur_batterie_plus_5, HIGH);
        digitalWrite(chargeur_batterie_moins_5, HIGH);
        digitalWrite(chargeur_batterie_plus_6, HIGH);
        digitalWrite(chargeur_batterie_moins_6, HIGH);
        digitalWrite(chargeur_batterie_plus_7, HIGH);
        digitalWrite(chargeur_batterie_moins_7, HIGH);
        digitalWrite(chargeur_batterie_plus_8, HIGH);
        digitalWrite(chargeur_batterie_moins_8, HIGH);
        delay(1000);
        Serial.println("charger la batterie 4");
        digitalWrite(chargeur_batterie_plus_4, LOW);
        delay(200);
        digitalWrite(chargeur_batterie_moins_4, LOW);
        delay(200);
        
      }
      Serial.println("attendre 120 seconde");
      delay(1000);
    }
    else{
    Serial.println("la ranger batterie 2 est la plus faible");
    Serial.println("couper la charge de batterie 1 , 2 , 3 , 4");
    digitalWrite(chargeur_batterie_plus_1, HIGH);
    digitalWrite(chargeur_batterie_moins_1, HIGH);
    digitalWrite(chargeur_batterie_plus_2, HIGH);
    digitalWrite(chargeur_batterie_moins_2, HIGH);
    digitalWrite(chargeur_batterie_plus_3, HIGH);
    digitalWrite(chargeur_batterie_moins_3, HIGH);
    digitalWrite(chargeur_batterie_plus_4, HIGH);
    digitalWrite(chargeur_batterie_moins_4, HIGH);
    Serial.println("attendre 5 seconde");
    delay(5000);
    Serial.println("rebrancher la ranger de batterie 1 si besoin ?");
    digitalWrite(contacteur_ranger_1, LOW);
    Serial.println("attendre 5 seconde");
    delay(5000);
    Serial.println("debrancher la ranger de batterie 2");
    digitalWrite(contacteur_ranger_2, HIGH);
    Serial.println("attendre 5 seconde");
    delay(5000);

    if (voltage_batterie[5]<voltage_batterie[6] and voltage_batterie[5]<voltage_batterie[7] and voltage_batterie[5]<voltage_batterie[8]){
      Serial.println("couper la charge de batterie 6 7 8 et attendre 5 seconde");
      digitalWrite(chargeur_batterie_plus_1, HIGH);
      digitalWrite(chargeur_batterie_moins_1, HIGH);
      digitalWrite(chargeur_batterie_plus_2, HIGH);
      digitalWrite(chargeur_batterie_moins_2, HIGH);
      digitalWrite(chargeur_batterie_plus_3, HIGH);
      digitalWrite(chargeur_batterie_moins_3, HIGH);
      digitalWrite(chargeur_batterie_plus_4, HIGH);
      digitalWrite(chargeur_batterie_moins_4, HIGH);
      digitalWrite(chargeur_batterie_plus_6, HIGH);
      digitalWrite(chargeur_batterie_moins_6, HIGH);
      digitalWrite(chargeur_batterie_plus_7, HIGH);
      digitalWrite(chargeur_batterie_moins_7, HIGH);
      digitalWrite(chargeur_batterie_plus_8, HIGH);
      digitalWrite(chargeur_batterie_moins_8, HIGH);
      delay(5000);
      Serial.println("charger la batterie 5");
      digitalWrite(chargeur_batterie_plus_5, LOW);
      delay(200);
      digitalWrite(chargeur_batterie_moins_5, LOW);
      delay(200);
        
    }
      if (voltage_batterie[6]<voltage_batterie[5] and voltage_batterie[6]<voltage_batterie[7] and voltage_batterie[6]<voltage_batterie[8]){
    Serial.println("couper la charge de batterie 5 7 8 et attendre 5 seconde");
        digitalWrite(chargeur_batterie_plus_1, HIGH);
        digitalWrite(chargeur_batterie_moins_1, HIGH);
        digitalWrite(chargeur_batterie_plus_2, HIGH);
        digitalWrite(chargeur_batterie_moins_2, HIGH);
        digitalWrite(chargeur_batterie_plus_3, HIGH);
        digitalWrite(chargeur_batterie_moins_3, HIGH);
        digitalWrite(chargeur_batterie_plus_4, HIGH);
        digitalWrite(chargeur_batterie_plus_5, HIGH);
        digitalWrite(chargeur_batterie_moins_5, HIGH);
        digitalWrite(chargeur_batterie_plus_7, HIGH);
        digitalWrite(chargeur_batterie_moins_7, HIGH);
        digitalWrite(chargeur_batterie_plus_8, HIGH);
        digitalWrite(chargeur_batterie_moins_8, HIGH);
        delay(5000);
        Serial.println("charger la batterie 6");
        digitalWrite(chargeur_batterie_plus_6, LOW);
        delay(200);
        digitalWrite(chargeur_batterie_moins_6, LOW);
        delay(200);
        
      }
      if (voltage_batterie[7]<=voltage_batterie[5] and voltage_batterie[7]<=voltage_batterie[6] and voltage_batterie[7]<=voltage_batterie[8]){
        Serial.println("couper la charge de batterie 5 6 8 et attendre 5 seconde");
        digitalWrite(chargeur_batterie_plus_1, HIGH);
        digitalWrite(chargeur_batterie_moins_1, HIGH);
        digitalWrite(chargeur_batterie_plus_2, HIGH);
        digitalWrite(chargeur_batterie_moins_2, HIGH);
        digitalWrite(chargeur_batterie_plus_3, HIGH);
        digitalWrite(chargeur_batterie_moins_3, HIGH);
        digitalWrite(chargeur_batterie_plus_4, HIGH);
        digitalWrite(chargeur_batterie_plus_5, HIGH);
        digitalWrite(chargeur_batterie_moins_5, HIGH);
        digitalWrite(chargeur_batterie_plus_6, HIGH);
        digitalWrite(chargeur_batterie_moins_6, HIGH);
        digitalWrite(chargeur_batterie_plus_8, HIGH);
        digitalWrite(chargeur_batterie_moins_8, HIGH);
        delay(5000);
        Serial.println("charger la batterie 7");
        digitalWrite(chargeur_batterie_plus_7, LOW);
        delay(200);
        digitalWrite(chargeur_batterie_moins_7, LOW);
        delay(200);
        
      }
      if (voltage_batterie[8]<voltage_batterie[5] and voltage_batterie[8]<voltage_batterie[6] and voltage_batterie[8]<voltage_batterie[7]){
        Serial.println("couper la charge de batterie 5 6 7 et attendre 5 seconde");
        digitalWrite(chargeur_batterie_plus_1, HIGH);
        digitalWrite(chargeur_batterie_moins_1, HIGH);
        digitalWrite(chargeur_batterie_plus_2, HIGH);
        digitalWrite(chargeur_batterie_moins_2, HIGH);
        digitalWrite(chargeur_batterie_plus_3, HIGH);
        digitalWrite(chargeur_batterie_moins_3, HIGH);
        digitalWrite(chargeur_batterie_plus_4, HIGH);
        digitalWrite(chargeur_batterie_plus_5, HIGH);
        digitalWrite(chargeur_batterie_moins_5, HIGH);
        digitalWrite(chargeur_batterie_plus_6, HIGH);
        digitalWrite(chargeur_batterie_moins_6, HIGH);
        digitalWrite(chargeur_batterie_plus_7, HIGH);
        digitalWrite(chargeur_batterie_moins_7, HIGH);
        delay(5000);
        Serial.println("charger la batterie 8");
        digitalWrite(chargeur_batterie_plus_8, LOW);
        delay(200);
        digitalWrite(chargeur_batterie_moins_8, LOW);
        delay(200);
        
      }
      Serial.println("attendre 120 seconde");
      delay(10000);







    
    }
    
    
}
else{
  Serial.println("les batterie ne sont pas assez charger pour metre en marche");
  Serial.println("attendre 30 seconde et reeseyer");
  delay(1000);
}


}

Bonjour,

Merci de lire et appliquer

En particulier la mise en forme du code pour qu'il soit lisible.

Done :white_check_mark:

C'est à dire ? les contacts ne se font plus ou restent collés ?
Tu devrais décrire un peu mieux ton installation :

  • capacité des batteries
  • nombre et puissance des panneaux
  • contrôleur de charge utilisé

Et un schéma vaut mieux qu'une photo.

En première lecture il y a déjà des trucs étranges.

analogRead retourne une valeur entre 0 et 1023 donc la borne à 1055 n'a aucun sens.
Et que vient faire ici ce random(2000,3000)??

Beaucoup de répétitions qui rendent le code lourd, difficile à lire et qui peuvent être sources d'erreurs.

A vrais dire j’ai récupéré se code pour faire fonctionner le tester de batterie
Je n’est aucune idée à quoi sa correspond

Pour le random c’est moi qui l’es rajouter c’est pour faire des test sans les batteries

Ce n'est pas très réaliste. La tension d'une batterie ne varie pas toutes les secondes.

Et si tu répondais à mes questions ?

Heureux de vous présenter mon projet test fini
Je me sert de mon surplus solaire pour charger mes batteries indépendamment de l’onduleur
Pour des batteries bien usé


Pour le moment sa marche très bien juste quel réglages pour être optimisé