Pasteurisateur - Aide module relais

Bonjour,

Je souhaite réaliser un pasteurisateur à l'aide d'un cuiseur vapeur et d'un ballon d'eau chaude.
Grâce à une sonde de température (DS18B20) , j'aimerai qu'un module relais puisse arrêter le cuit vapeur à 82° et le rallumer à 74°.
Mon code pour la sonde de température fonctionne correctement mais je bloque sur celui du module relais.
Merci de votre aide.
Voici le code de la sonde :

#include "OneWire.h"
#include "DallasTemperature.h"
                     
#define WATER_TEMP_PIN A0 
OneWire oneWire(WATER_TEMP_PIN); 
DallasTemperature sensors(&oneWire);


void setup() 
{
  // On initialise la connexion série
  Serial.begin(9600);
  delay(2000);

 
}

void loop() 
{
  // On récupère la température de la sonde
  sensors.requestTemperatures();
  double dTempWater = sensors.getTempCByIndex(0);

  // On imprime la température
  Serial.print("Température de l'eau: ");
  Serial.print(dTempWater);
  Serial.println("°C");

  // On attends 5 secondes
  delay(5000);
}

Bonsoir,

Voici un exemple

Tu créé une variable booléenne commandeChauffage =1
Loop
Si LectureTemperature >= 82 alors commandeChauffage =0

Si LectureTemperature >= 74 et commandeChauffage =0 alors commandeChauffage =1

Si LectureTemperature >= 82 alors commandeChauffage =0
Si LectureTemperature >= 74 et commandeChauffage =0 alors commandeChauffage =1

La deuxième c'est:
Si LectureTemperature <= 74 alors commandeChauffage =1

Sinon quand la température atteint 82, la première passe commandeChauffage à 1 et la deuxième à 0 sans arrêt...

LectureTemperature c'est dTempWater

Le DS18B20 est t-il un choix adapteé pour cette gamme de température ?

Le composant lui même devrait pouvoir tenir mais le module sonde ?
Pour la pasteurisation il y a t-il une notion de pression ?

L'utilisation d'un composant étanche comme le type PT100, bien que plus compliiqué à mettre en oeuvre, mérite AMHA d'être au minimum regardée.

68tjs:
Le DS18B20 est t-il un choix adapteé pour cette gamme de température ?

Le composant lui même devrait pouvoir tenir mais le module sonde ?
Pour la pasteurisation il y a t-il une notion de pression ?

L'utilisation d'un composant étanche comme le type PT100, bien que plus compliiqué à mettre en oeuvre, mérite AMHA d'être au minimum regardée.

bonjour 68tjs
la notion de pression intenvient surtout pour la stérilisation
la pasteurisation vers 75° (pasteurisation haute) par exemple pour les jus de fruits (c'est la saison des poires :grin: )
la technique est simple : un serpentin tenu dans un bain d'eau chaude maintenu à la T° choisie

une version "luxueuse"" pourrait comporter qq ds18b20 pour la regulation : entree et sortie serpentin , bain

par exemple pour les jus de fruits (c'est la saison des poires :grin: )

Moi c'est poire Wiliams mais avec un alambic :grin:

Plus sérieusement je pose la question car si le DS18B20 est sous la forme classique d'un tube métal je suis réservé.
Il y a les spec du DS18B20 en boîtier TO92 et celle de l'assemblage...........qui ne sont pas disponibles.

La première "sonde" DS18B20 que j'ai eu entre les mains a été décortiquée avant même d'être branchée.
La techno est rudimentaire : le boîtier TO92 classique, 3 fils à la patte, le tout inséré dans un tube métal et noyé dans la colle. Le thermo rétractable (ou le cahoutchouc je ne sais plus) ne sert pas à l'étanchéité.

Quelques interrogations :
Quid de l'étanchéité à la colle ? On peut faire des choses pas trop mal, mais il faut un protocole rigoureux de préparation de la colle et de mise en œuvre. Entre 20 °C et 80°C il va y avoir des dilatations : il est préférable de bien choisir le coefficient de dilatation de la colle. Et cela ne sera pas étanche pendant 10 ans.
Quid de la qualité thermique de la colle ?
Cela va jouer sur le temps de réponse de la sonde, ce pas un point subalterne.

Il est toujours possible de placer la "sonde" dans de la glace fondante, de la laisser se stabiliser, puis de la plonger dans l'au bouillante et de mesurer le temps qu'il faut pour se stabiliser.

Je pinaille peut être mais il est bon de se poser des questions.

Il faut deux sondes :

Une pour le bain, qui sert à réguler la température de l'eau. A mon avis une température de 74° à 82° n'est pas assez élevée. Le pasteurisateur que j'utilise tous les ans est réglé pour sortir du jus à 80°, donc la température du bain est forcément supérieure.

Une en sortie du serpentin. Cette sonde doit être fixée sur le tube à l'aide d'un raccord en T + doigt de gant.
Elle sert simplement à l'affichage de la température. L'opérateur règle le débit dans le serpentin à l'aide d'une vanne, afin que la température de sortie soit correcte. On peut utiliser un thermomètre avec doigt de gant :

Le pasteurisateur que j'utilise tous les ans a une contenance d'environ 100 litres d'eau. Nous remplissons environ 250 bouteilles en deux heures.
Un cuiseur vapeur, à mon avis, aura une contenance trop faible pour héberger un serpentin de longueur adéquate, à moins de réduire fortement le débit. Tout dépend de la quantité à produire, et du temps que l'on s'accorde pour réaliser le remplissage.

68tjs:
Moi c'est poire Wiliams mais avec un alambic :grin:

Plus sérieusement je pose la question car si le DS18B20 est sous la forme classique d'un tube métal je suis réservé.
Il y a les spec du DS18B20 en boîtier TO92 et celle de l'assemblage...........qui ne sont pas disponibles.

La première "sonde" DS18B20 que j'ai eu entre les mains a été décortiquée avant même d'être branchée.
La techno est rudimentaire : le boîtier TO92 classique, 3 fils à la patte, le tout inséré dans un tube métal et noyé dans la colle. Le thermo rétractable (ou le cahoutchouc je ne sais plus) ne sert pas à l'étanchéité.

Pour moi ,l'alambic ce sera au printemps mais avec du jus issu de la pomme :grin: y en a
perso mes ds18b20 etanches , je fais les fait avec des pointes de fleches le TO 92 est enfoncé dans la pointe avec de la pâte thermo et fermé à l'araldite , je n'ai jamais eu de sonde hs pour cause d'etancheité

Perso les DS18B20 j'en ai utilisé complètement immergés pdt plusieurs mois , certaines dans de l'eau à 80°C (régulée).
Une Pt100 c'est bien mais ce n'est pas le même prix qu'un DS18B20 qui ne demande pas de montage particulier.
A mon avis, il faut mieux avoir un DS18B20 en stock au cas où ...

hbachetti:
Un cuiseur vapeur, à mon avis, aura une contenance trop faible pour héberger un serpentin de longueur adéquate, à moins de réduire fortement le débit. Tout dépend de la quantité à produire, et du temps que l'on s'accorde pour réaliser le remplissage.

Je pense qu'il pensait reutiliser l'element chauffant du cuit vapeur pour mette le bain en t°
mais je pense que c'est une fausse bonne idée
le moins compliqué est d'utiliser un vrai thermo plongeur plus adapaté dans un volume de bain important

Bonjour,

Dans un premier temps, je vais rester avec cette sonde.
Actuellement en Guyane, je dois faire avec ce que j'ai à disposition.

Je compte utiliser le pasteurisateur pour la culture de champignon.
La sonde sera insérée dans 1 des sacs pour avoir la température idéale à l'intérieur du substrat.

Pour revenir au code, j'ai rajouté une variable Booléenne mais ça ne fonctionne pas ...
Je galère un peu !
Voici le code :

#include "OneWire.h"
#include "DallasTemperature.h"
                     
#define WATER_TEMP_PIN A0 
#define RELAY_PIN A5 

OneWire oneWire(WATER_TEMP_PIN); 
DallasTemperature sensors(&oneWire);

const int TEMP_THRESHOLD_UPPER = 82; // upper threshold of temperature, change to your desire value
const int TEMP_THRESHOLD_LOWER = 72; // lower threshold of temperature, change to your desire value

bool allume = false; // true pour cuiseurvapeur allumé, false sinon

void setup() 
{
  pinMode (RELAY_PIN, OUTPUT);
  // On initialise la connexion série
  Serial.begin(9600);
  delay(2000);

 }

void loop() 
{
  // On récupère la température de la sonde
  sensors.requestTemperatures();
  double dTempWater = sensors.getTempCByIndex(0);

  // On imprime la température
  Serial.print("Température de l'eau: ");
  Serial.print(dTempWater);
  Serial.println("°C");

  // On attends 5 secondes
  delay(5000);

  if (isnan(dTempWater)) {
   Serial.println("Failed to read from DHT sensor!");
 } else {
   if (dTempWater > TEMP_THRESHOLD_UPPER && !allume) allume = true;
   if (dTempWater < TEMP_THRESHOLD_LOWER &&  allume) allume = false;
 }
digitalWrite(RELAY_PIN, allume);
}

Voici quelques photos du projet.

J'ai coupé le haut du ballon pour y insérer les sacs à pasteuriser.
Le bloc vapeur du cuiseur rentre parfaitement dans le joint du ballon.
Il me manque uniquement la gestion par l'Arduino et la sonde.
Si vous pouvez m'aider. Merci d'avance
Je vous remets le code. La sonde fonctionne très bien mais impossible de faire fonctionner le relais.

#include "OneWire.h"[color=#222222][/color]
#include "DallasTemperature.h"[color=#222222][/color]
                    [color=#222222][/color]
#define WATER_TEMP_PIN A0[color=#222222][/color]
#define RELAY_PIN A5[color=#222222][/color]
[color=#222222][/color]
OneWire oneWire(WATER_TEMP_PIN);[color=#222222][/color]
DallasTemperature sensors(&oneWire);[color=#222222][/color]
[color=#222222][/color]
const int TEMP_THRESHOLD_UPPER = 82; // upper threshold of temperature, change to your desire value[color=#222222][/color]
const int TEMP_THRESHOLD_LOWER = 72; // lower threshold of temperature, change to your desire value[color=#222222][/color]
[color=#222222][/color]
bool allume = false; // true pour cuiseurvapeur allumé, false sinon[color=#222222][/color]
[color=#222222][/color]
void setup()[color=#222222][/color]
{[color=#222222][/color]
  pinMode (RELAY_PIN, OUTPUT);[color=#222222][/color]
  // On initialise la connexion série[color=#222222][/color]
  Serial.begin(9600);[color=#222222][/color]
  delay(2000);[color=#222222][/color]
[color=#222222][/color]
 }[color=#222222][/color]
[color=#222222][/color]
void loop()[color=#222222][/color]
{[color=#222222][/color]
  // On récupère la température de la sonde[color=#222222][/color]
  sensors.requestTemperatures();[color=#222222][/color]
  double dTempWater = sensors.getTempCByIndex(0);[color=#222222][/color]
[color=#222222][/color]
  // On imprime la température[color=#222222][/color]
  Serial.print("Température de l'eau: ");[color=#222222][/color]
  Serial.print(dTempWater);[color=#222222][/color]
  Serial.println("°C");[color=#222222][/color]
[color=#222222][/color]
  // On attends 5 secondes[color=#222222][/color]
  delay(5000);[color=#222222][/color]
[color=#222222][/color]
  if (isnan(dTempWater)) {[color=#222222][/color]
   Serial.println("Failed to read from DHT sensor!");[color=#222222][/color]
 } else {[color=#222222][/color]
   if (dTempWater > TEMP_THRESHOLD_UPPER && !allume) allume = true;[color=#222222][/color]
   if (dTempWater < TEMP_THRESHOLD_LOWER &&  allume) allume = false;[color=#222222][/color]
 }[color=#222222][/color]
digitalWrite(RELAY_PIN, allume);[color=#222222][/color]
}

121163400_2058752034257998_3476788301528747064_n.jpg

121242953_1566015240252868_429338500100528198_n.jpg

121213474_336294130776615_7018899038076916454_n.jpg

121163400_2058752034257998_3476788301528747064_n.jpg

121242953_1566015240252868_429338500100528198_n.jpg

121213474_336294130776615_7018899038076916454_n.jpg

vileroi:
La deuxième c'est:
Si LectureTemperature <= 74 alors commandeChauffage =1

Sinon quand la température atteint 82, la première passe commandeChauffage à 1 et la deuxième à 0 sans arrêt...

LectureTemperature c'est dTempWater

Ouppss.... merci pour la correction. :slight_smile:

kiwi973:
Bonjour,

Dans un premier temps, je vais rester avec cette sonde.
Actuellement en Guyane, je dois faire avec ce que j'ai à disposition.

Je compte utiliser le pasteurisateur pour la culture de champignon.
La sonde sera insérée dans 1 des sacs pour avoir la température idéale à l'intérieur du substrat.

Pour revenir au code, j'ai rajouté une variable Booléenne mais ça ne fonctionne pas ...
Je galère un peu !
Voici le code :

#include "OneWire.h"

#include "DallasTemperature.h"
                   
#define WATER_TEMP_PIN A0
#define RELAY_PIN A5

OneWire oneWire(WATER_TEMP_PIN);
DallasTemperature sensors(&oneWire);

const int TEMP_THRESHOLD_UPPER = 82; // upper threshold of temperature, change to your desire value
const int TEMP_THRESHOLD_LOWER = 72; // lower threshold of temperature, change to your desire value

bool allume = false; // true pour cuiseurvapeur allumé, false sinon

void setup()
{
 pinMode (RELAY_PIN, OUTPUT);
 // On initialise la connexion série
 Serial.begin(9600);
 delay(2000);

}

void loop()
{
 // On récupère la température de la sonde
 sensors.requestTemperatures();
 double dTempWater = sensors.getTempCByIndex(0);

// On imprime la température
 Serial.print("Température de l'eau: ");
 Serial.print(dTempWater);
 Serial.println("°C");

// On attends 5 secondes
 delay(5000);

if (isnan(dTempWater)) {
  Serial.println("Failed to read from DHT sensor!");
} else {
  if (dTempWater > TEMP_THRESHOLD_UPPER && !allume) allume = true;
  if (dTempWater < TEMP_THRESHOLD_LOWER &&  allume) allume = false;
}
digitalWrite(RELAY_PIN, allume);
}

Perso, je trouve ton code tres compliqué a lire, et surtout a comprendre
A cause du nom de tes variables "TEMP_THRESHOLD_UPPER" , ce ne serait pas plus simple, et plus compréhensible, de nommer cette variable par exemple "températureHauteMax " ? Surtout sur tablette ou mobile et pour toi quand tu auras un code avec beaucoup de variables ou de lignes, ou que tu reprendra ton code plus tard.

Pour revenir a ton code, tu initialise ta variable "allume" a false, du coups tu ne rentre jamais dans les tests.. il faut initialiser la variable a true, en supposant que quand tu lance ton système, tu met la résistance de chauffe en marche.

Merci , ça fonctionne parfaitement !