Programme avec arduino pour piloter le rechargement de batteries
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Programme avec arduino pour piloter le rechargement de batteries



  1. #1
    zak333

    Programme avec arduino pour piloter le rechargement de batteries


    ------

    Bonjour ! J'ai récemment eu l'idée de crée un chargeur de batterie avec un arduino pour le commander. Une fois la carte crée, il ne manquait plus que le code a faire. Ce que j'ai fais. Durant les phases test tout marché pour le mieux. Cependant une fois arriver a l'étape final et bien c'est la que j'ai commencé a rencontré des soucis. Mon programme est censé gérer la rechargement de 3 batteries qui sont initialement branché, borne + en commun et la leur masse branché a un transistor Nmos pour chaque une des batteries. Je souhaité commander la grille des Nmos avec digitalWrite pour pouvoir les recharger une a une chaque une son tour. J'ai utiliser des pins en plus pour meublé tout ça avec des leds qui s'allume en fonction de l'état de charge de chaque batteries, en charge et chargé. Le plus gros problème que j'ai rencontré c'est lorsque une batterie par exemple la batterie 0 a atteint les 14.70volts a savoir la tension de seuil de basculement de la pin ici D2 reste a l'état haut alors qu'elle devrait passer a l'état bas. J'ai pu constater ce soucis sur les 3 pins qui gère les Nmos. Les leds associés aux Nmos ici par exemple D4 associé a D2 s'éteint bien lorsque la tension de seuil est franchie. Voila je me remet donc a vous pour pouvoir m'aider a trouver quelle est le problème dans mon code. Je vous remercie en avance pour votre aide !
    Code:
    float Ah0,Ah00,b0; // Ah0 valeur image de la tension batterie 0
    float Ah1,Ah11,b1; // Ah1 valeur image de la tension batterie 1
    float Ah2,Ah22,b2; // Ah2 valeur image de la tension batterie 2
    int b; // Variable qui permet d'arrêter la boucle
    
    void setup()
    {
    
    
    pinMode(2,OUTPUT); // Initialisation sortie batterie 0
    pinMode(3,OUTPUT); // batterie 0 , chargé
    pinMode(4,OUTPUT); // batterie 0 , en chage
    
    pinMode(5,OUTPUT); // Initialisation sortie batterie 1
    pinMode(6,OUTPUT); // batterie 1 , chargé
    pinMode(7,OUTPUT); // batterie 1 , en chage
    
    pinMode(13,OUTPUT); // Initialisation sortie batterie 2
    pinMode(8,OUTPUT); // batterie 2 , chargé
    pinMode(9,OUTPUT); // batterie 2 , en chage
    
    
    digitalWrite(2,HIGH); // Nmos batterie 0
    digitalWrite(3,LOW);  // Led témoin batterie 0 chargé
    digitalWrite(4,LOW);  // Led témoin batterie 0 en charge
    
    digitalWrite(5,LOW);  // Nmos batterie 1
    digitalWrite(6,LOW);  // Led témoin batterie 1 chargé
    digitalWrite(7,LOW);  // Led témoin batterie 1 en charge
    
    digitalWrite(13,LOW); // Nmos batterie 2
    digitalWrite(8,LOW);  // Led témoin batterie 2 chargé
    digitalWrite(9,LOW);  // Led témoin batterie 2 en charge
    
    
    b=0; // Variable qui permet d'arrêter la boucle
    b0=0; // Variable qui permet de dire que batterie0 est chargé
    b1=0; // Variable qui permet de dire que batterie1 est chargé
    b2=0; // Variable qui permet de dire que batterie2 est chargé
      
        do {  // Execute au moins une fois 
              
          Ah0 = analogRead(A0); // Lecture du port A0
          Ah1 = analogRead(A1); // Lecture du port A1
          Ah2 = analogRead(A2); // Lecture du port A2
          
          Ah00 = (Ah0*26.35/1024.0); // Conversion en volts 
          Ah11 = (Ah1*26.18/1024.0); // Conversion en volts 
          Ah22 = (Ah2*26.10/1024.0); // Conversion en volts 
          
    
          if (b0==1) {} // si batterie0 est chargé sauter cette etape
    
          else {        // sinon 
          if ( (Ah00>6) && (Ah00<13.25) ) // si la tension batterie 0 > 6v et < 13.25v alors 
             {
              
        do {        
    
           Ah0 = analogRead(A0);      // Lecture du port A0
           Ah00 = (Ah0*26.35/1024.0); // Conversion en volts 
           digitalWrite(2,HIGH);      // Nmos ferme le circuit batterie 0
           digitalWrite(4,HIGH);      // Led batterie 0 en charge allumé
           digitalWrite(3,LOW);       // Led batterie 0 chargé éteinte  
           } 
            while(Ah00<14.70);        // Tant que tension batterie 0 < 14.70v
              
           digitalWrite(2,LOW);       // Nmos ouvre le circuit batterie 0
           digitalWrite(4,LOW);       // Led batterie 0 en charge éteinte
           digitalWrite(3,HIGH);      // Led batterie 0 chargé allumé
           digitalWrite(5,HIGH);      // Permet la fermeture du circuit de la batterie 1
           b0=1;                      // Indication que la charge batterie 0 effectué
              } 
      
       else {                         // Dans le cas ou b0=1
              digitalWrite(2,LOW);    // Laisse le Nmos a l'état bas de la batterie 0 
              digitalWrite(5,HIGH);   // Ferme le circuit batterie 1
            }
                }
     
     if (b1==1) {}  // si batterie1 est chargé sauter cette etape
    
     else {         // sinon
     if ( (Ah11>6) && (Ah11<13.25) ) // si la tension batterie 1 > 6v et < 13.25v alors 
        {
            do {
    
           Ah1 = analogRead(A1);        // Lecture du port A0 
           Ah11 = (Ah1*26.18/1024.0);   // Conversion en volts 
           digitalWrite(5,HIGH);        // Nmos ferme le circuit batterie 1
           digitalWrite(7,HIGH);        // Led batterie 1 en charge allumé
           digitalWrite(6,LOW);         // Led batterie 1 chargé éteinte
    
               } 
            while(Ah11<14.70);          //  Tant que tension batterie 1 < 14.70v
              
           digitalWrite(5,LOW);         // Nmos ouvre le circuit batterie 1
           digitalWrite(7,LOW);         // Led batterie 1 en charge éteinte
           digitalWrite(6,HIGH);        // Led batterie 1 chargé allumé
           digitalWrite(13,HIGH);       // Permet la fermeture du circuit de la batterie 2
           b1=1;                        // Indication que la charge batterie 1 effectué
        }
          
            else {                      // Dans le cas ou b1=1
          
              digitalWrite(5,LOW);      // Laisse le Nmos a l'état bas de la batterie 1
              digitalWrite(13,HIGH);    // Ferme le circuit batterie 2
            
                 }
           }
    if (b2==1) {}                       // si batterie2 est chargé sauter cette etape
          else {                              // sinon
          
          if ( (Ah22>6) && (Ah22<13.25) ) // si la tension batterie 1 > 6v et < 13.25v alors 
         {
            do {
    
           Ah22 = (Ah2*26.10/1024.0);     // Lecture du port A0
           Ah2 = analogRead(A2);          // Conversion en volts 
           digitalWrite(13,HIGH);         // Nmos ferme le circuit batterie 2
           digitalWrite(9,HIGH);          // Led batterie 2 en charge allumé
           digitalWrite(8,LOW);           // Led batterie 2 chargé éteinte
      
               } 
            while(Ah22<14.70);            //  Tant que tension batterie 2 < 14.70v
              
           digitalWrite(13,LOW);          // Nmos ouvre le circuit batterie 2
           digitalWrite(9,LOW);           // Led batterie 2 en charge éteinte
           digitalWrite(8,HIGH);          // Led batterie 2 chargé allumé
           digitalWrite(2,HIGH);          // Permet la fermeture du circuit de la batterie 0
           b2=1;                          // Indication que la charge batterie 2 effectué
         }
                }
          
            else {                        // Dans le cas ou b2=1
                  digitalWrite(13,LOW);       // Laisse le Nmos a l'état bas de la batterie 2 
                 }
                 
          
          if (2<b0+b1+b2)  {b=1;}               // si la somme de b0+b1+b2 est supérieur a 2 , alors b vaut 1
                                    
          }
          while(b!=1);                          // En sort de la boucle , sinon on répete la procédure
    }
    
    void loop()
    {}

    -----
    Dernière modification par Jack ; 22/12/2019 à 23h40. Motif: Ajout balises code

  2. #2
    Jack
    Modérateur

    Re : Programme avec arduino pour piloter le rechargement de batteries

    ​Merci d'ajouter tout seul les balises code la prochaine fois.

  3. #3
    Jack
    Modérateur

    Re : Programme avec arduino pour piloter le rechargement de batteries

    C'est bizarre que tout ton code soit dans la fonction setup et qu'il n'y ait rien dans loop.

    Dès que b sera égal à 1, ton programme ne fera plus rien.

  4. #4
    zak333

    Re : Programme avec arduino pour piloter le rechargement de batteries

    Merci beaucoup Jack pour tes réponses. C'est exactement le but recherché une fois que le programme s'est exécuté je veux qu'il s'arrete.

  5. A voir en vidéo sur Futura
  6. #5
    zak333

    Re : Programme avec arduino pour piloter le rechargement de batteries

    Nom : 20191223_094650.jpg
Affichages : 764
Taille : 64,9 Ko
    ..........
    Dernière modification par Antoane ; 23/12/2019 à 17h45. Motif: Suppression PJ en double

Discussions similaires

  1. [Energie] Système de Rechargement batteries pour drone
    Par Gr202k18 dans le forum Électronique
    Réponses: 8
    Dernier message: 13/05/2018, 08h34
  2. [Programmation] Piloter un moteur AC avec une arduino
    Par pierre57570 dans le forum Électronique
    Réponses: 12
    Dernier message: 25/03/2016, 10h27
  3. Réponses: 7
    Dernier message: 31/05/2015, 15h43
  4. [PROJET SI] Aide pour programme Arduino avec Bluetooth
    Par Soyalorea dans le forum TPE / TIPE et autres travaux
    Réponses: 1
    Dernier message: 04/03/2014, 08h37
  5. Relais pour piloter alimentation avec arduino
    Par seb-65 dans le forum Électronique
    Réponses: 13
    Dernier message: 22/05/2013, 14h10