Maintien temperature lave-vaisselle

Bonjour, suite a un post résolu mais un peu bordélique je me permet dans crée un nouveau pour un cas plus précis.

La gestion de la température.

je suis sur un projet de lave-vaisselle contrôlé via arduino, tout est bon sauf une chose, lors du lavage la température ne ce maintient pas, un membre de ce forum ma donc aidé mais sa ne fonctionne pas.

lors du lavage (washTheDishes) la température devrait être maintenu a 68°c en allumant et éteignant un relais qui contrôle la résistance de chauffe, mais cela ne fonctionne pas.

et pire le programme passer 68°c passe a la tache suivante donc la vidange puis le remplissage ... sans eteindre la pompe de cyclage ni la résistance (dans mon code avant l'ajout de la gestion de température (tempMaintien) arrivé a 68°c la tache était terminé est il éteigne tout comme il ce devait.

donc en gros je voudrait de l'aide pour que la temperature soit maintenu pendant toute la durée de la tache et enlever le fait que passer 68°c il passe a une autre tache puisque le but est de maintenir cette température

Voici mon code:

Merci a ceux qui m'aideront

En cherchant un peu sur Google, avec les mots clés (par exemple) "Arduino temperature control", on trouve pas mal de choses, avec des exemples de code.
Celui-ci me parait bien :

https://circuits4you.com/2016/06/06/arduino-temperature-controller/

lesept:
En cherchant un peu sur Google, avec les mots clés (par exemple) "Arduino temperature control", on trouve pas mal de choses, avec des exemples de code.
Celui-ci me parait bien :

https://circuits4you.com/2016/06/06/arduino-temperature-controller/

justement avant de venir j'ai regarder des projet équivalent, j'ai fait quelque tentative mais qui n'on pas fonctionné, du coup j'ai demander de l'aide que l'on ma donner je suis donc arrivée a un code qui théoriquement devrais fonctionné mais ce n'est pas le cas j’aimerait de l'aide pour comprendre l'erreur au moins être guidé Merci

hello

remplace la fonction de ctrl température par celle ci

double waterTempMaintien(float consigne) {            // cette fonction releve 25 fois la temperature et en fait la moyenne
  if (arrayIndex > 23) {
    arrayIndex = 0;                                      
  }
  else {
    arrayIndex++; // Increment array index counter
  }
  double Temp;                                           // The Thermistor2 "Simple Code"
  int RawADC = analogRead(tempSensor);
  Temp = log(((10240000 / RawADC) - 10000));             // I believe the - 10000 is because it's a 10k thermistor?
  Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp )) * Temp );
  Temp = Temp - 273.15; // Convert Kelvin to Celcius (modif 2 par rapport a neon squirt Affichage temps en °C)
  tempArray[arrayIndex] = Temp;                          // replace the reading at this index with the current reading
  Temp = 0;                                              // reset the temporary variable to 0
  for (int i = 0; i < 24; i++) {
    Temp += tempArray[i];          
  }
  Temp = Temp/ 25;
  
  if (Temp>=(consigne+2)){digitalWrite(heaterPin, HIGH);}                   //arret de la chauffe
   else{if (Temp<=(consigne-2)){digitalWrite(heaterPin, LOW);}}             //mise en marche de la chauffe
  return (Temp );                                                       // retourne la temperature moyenne sur les 25 relevées
  
}

dfgh:
hello

remplace la fonction de ctrl température par celle ci

double waterTempMaintien(float consigne) {            // cette fonction releve 25 fois la temperature et en fait la moyenne

if (arrayIndex > 23) {
    arrayIndex = 0;                                     
  }
  else {
    arrayIndex++; // Increment array index counter
  }
  double Temp;                                          // The Thermistor2 “Simple Code”
  int RawADC = analogRead(tempSensor);
  Temp = log(((10240000 / RawADC) - 10000));            // I believe the - 10000 is because it’s a 10k thermistor?
  Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp )) * Temp );
  Temp = Temp - 273.15; // Convert Kelvin to Celcius (modif 2 par rapport a neon squirt Affichage temps en °C)
  tempArray[arrayIndex] = Temp;                          // replace the reading at this index with the current reading
  Temp = 0;                                              // reset the temporary variable to 0
  for (int i = 0; i < 24; i++) {
    Temp += tempArray[i];         
  }
  Temp = Temp/ 25;
 
  if (Temp>=(consigne+2)){digitalWrite(heaterPin, HIGH);}                  //arret de la chauffe
  else{if (Temp<=(consigne-2)){digitalWrite(heaterPin, LOW);}}            //mise en marche de la chauffe
  return (Temp );                                                      // retourne la temperature moyenne sur les 25 relevées
 
}

bonjour merci encore pour votre aide :slight_smile:

lors du lavage arrivé a 68°c il ne maintient pas la temperature il passe directement a la vidange et laisse la pompe ainsi que la resistance allumer

je pense que le soucis vient de la (lire code ci-dessous) mais j’ai beau modifier et modifier je ne trouve pas la solution a mon nouveau problème, au lieu du if j’ai essayer de mettre “washTheDishesMaintien(360000, 68);” dans la boucle while mais alors la il n’allume meme plus la resistance :confused:

 void washTheDishes() {
  digitalWrite(heaterPin, LOW);
  digitalWrite(washMotor, LOW);
  delay(1500);
  //lcd.begin(20, 4);
  lcd.clear();
  while (waterTemp() < 48) {
    updateRuntimeDisplay(3);
    delay(1000);
  }
  unsigned long soapTime = millis();
  digitalWrite(soapDispensor, LOW);
  while ((millis() - soapTime) < 30000) {
    delay(500);
    updateRuntimeDisplay(3);
  }
  digitalWrite(soapDispensor, HIGH);

  
  while (waterTemp() < 68) {
    delay(1000);
    updateRuntimeDisplay(3);
  }
  if (prog_long == true) {
    washTheDishesMaintien(360000, 68);
  }
}

non, pour l'instant ne cherche pas à remplacer ou modifier, garde le prg comme il était et ne remplace que la fonction que je t'a passée au dessus .

la division de temp n'était pas faite au bon endroit.

dfgh:
non, pour l'instant ne cherche pas à remplacer ou modifier, garde le prg comme il était et ne remplace que la fonction que je t'a passée au dessus .

la division de temp n'était pas faite au bon endroit.

j'ai essayer de modifier car avec votre code arrivé a 68°c (en lavage) il passe a l'etape vidange (au lieu de continuer le lavage et de reguler la temperature) et il laisse la resistance et la pompe en marche.

ou alors j'ai changer quelque chose dans ce cas je vais ressayer avec votre code complet voir ce que çà donne

EDIT: les symptôme reste les même, au besoin je peux filmer les "reaction" de l'arduino ci ca peut aider.