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;
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 ?)
× 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.
Retrouvez moi sur mon blog et ma chaine Youtube !