Partage
  • Partager sur Facebook
  • Partager sur Twitter

Grafset sur arduino

Sujet résolu
    12 mars 2014 à 12:48:28

    Bonjour,

    J'effectue un projet pour mon entreprise qui consiste à faire une mesure de consommation de courant ainsi que d’interpréter celle ci afin d'améliorer un chlorateur. je débute sur arduino et j'ai commencé à utiliser la fonction "grafcet" de celui-ci. Malheureusement le programme que j'ai fais ne fonctionne pas et j'aurai voulu avoir une aide quelconque car le programme lui ne me semble pas trop compliqué à élaborer

    je répondrai au questions sur le procédé au fur et à mesure si il y a des incompréhensions...

    Merci d'avance


       #include <EEPROM.h>;
     const int sensorPin = A0;  // on informe sur le point de connexion du capteur de courant
     const float baselineCurrent= 0.5; // on donne une valeur d'amperage a  comparer (ici 0.5A)
     int switchState = 0; // on informe la connexion du bouton poussoir
    float it=0;
     int b=0;
     float consommation=0;
     int Ncycle=0;
     int cycle=0;
    void setup(){
     
      Serial.begin(9600);// on active la fenetre d'observation des mesures de courant
      pinMode(3,OUTPUT); // on definit la sortie digitale pour la LED.
      pinMode(2,INPUT); // on definit le bouton poussoir de reset.
      pinMode(5,OUTPUT); //on definit la commande PWM du pont en H
      pinMode(4,OUTPUT); // on definit la commande INA
      pinMode(6,OUTPUT); // on definit la commande INB
      pinMode(8,OUTPUT); // LED de test
      pinMode(9,OUTPUT); // LED de test
    }
    void loop(){
         float sensorVal= analogRead(sensorPin); // Lecture de la tension emise par le capteur de courant
         float voltage = (sensorVal*5.0)/1023.0; //Conversion de la lecture du capteur
         float current = (voltage-2.545)*9.59692898; //Conversion de la lecture en courant
      static char etat = 0; //le mot-clé static permet de garder la variable intact entre les appels
      switch(etat){
       
        case(0):
        digitalWrite(8,HIGH);// j'allume une led pour le départ ou signaler que 5 cycle ont ete effectue.
         digitalWrite(3,LOW); // on éteint la LED de fin de cycle
         digitalWrite(5,HIGH); // on aliment l'inverseur de polarite
         digitalWrite(4,HIGH); // on selectionnne un sens de courant
          if (current>=baselineCurrent)  // si l'on pousse sur le bouton poussoir
          etat = 1;
        break;
       
        case(1):
        digitalWrite(8,LOW);// j'éteint la led du départ ou signaler que 5 cycle ont ete effectue.
         it=EEPROM.read(consommation); // lecture de la valeur de consommation
         it = it + current; // calcul de la concomation de courant
         EEPROM.write(consommation,it);// on ecrit la valeur totale de consommation
         Serial.print ("Signal: ");// Ecriture dans le moniteur serie
         Serial.print (voltage) ;// Ecriture dans le moniteur serie
         Serial.print ("Current: ");// Ecriture dans le moniteur serie
         Serial.print (current); // Ecriture dans le moniteur serie
         Serial.print ("it: "); // Ecriture dans le moniteur serie
         Serial.println (it); // Ecriture dans le moniteur serie
         delay(1000); // On temporise pour etaler les mesures a  chaque seconde
          if (it >=20); //Si la consommation est suffisante ( le chlore est prêt)
          etat=2;
          break;
         
          case(2):
         
           it=0; // on remet à 0 le compteur de consommation
          EEPROM.write(consommation,it);// on ecrit la valeur de 0 dans
          digitalWrite(3,HIGH); // on allume la LED pour signaler la fin du cycle
           switchState = digitalRead(2);// on dit ou effectuer la lecture du niveau du bouton poussoir
          if (switchState=HIGH) // si le BP est enclenché
          etat=3;
          break;
         
          case(3):
         
           cycle=EEPROM.read(Ncycle); // on lit le nombre de cycle déjà effectué.
           cycle=cycle+1; // on ajoute un cycle au nombre déjà effectué
           EEPROM.write(Ncycle,cycle); // on enregistre le nombre de cycle total
            if (cycle>5);// Si le nombre de cycle est inférieur à 5
            etat=1;
             if (cycle=5)// Si le nombre de cycle est inférieur à 5
            etat=0;
            break;

           
      }

    }

    -
    Edité par Petrus036 12 mars 2014 à 13:02:20

    • Partager sur Facebook
    • Partager sur Twitter
      12 mars 2014 à 20:29:48

      Commence par éditer ton message en placant le code dans la balise du même nom (symbole </>) et en précisant ce qui ne marche pas (compilation ? déroulement ?)

      • Partager sur Facebook
      • Partager sur Twitter

      Retrouvez moi sur mon blog et ma chaine Youtube !

      Grafset sur arduino

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown