II Le programme avec la régulation de la température et la gestion buzzer.
La régulation de température est fait tout ou rien à cause des relais qui sont utilisés pour commander les résistances du four.
Le schéma de modélisation sous Simulink Matlab est le suivant :
Attention le correcteur tout ou rien a une hystérésis de -3°C à +3°C passe d’une puissance nulle à une puissance de 2500W. Cette hystérésis provoque une commutation du relay toutes des 30secondes environ.
Le fichier Simulink de simulation peut être téléchargeable sur ce lien :
L’évolution de la température et de la puissance peuvent être observée sur la figure suivante avec une échelle 1/10 pour la puissance. On peut observer qu’il faut 300secondes pour passer de la température ambiante à la température de 200°C ce qui correspond au temps de préchauffage. Puis, autour de 200°C, il y a la régulation autour des 6°C de l’hystérésis.
Avec une résistance PT1000 qui vaut 1000ohms pour 0°C, l’évolution de la température est une fonction affine qui ne passe pas par 0.
Pour la rendre linéaire, il faudrait utiliser un pont de Wheatstone et un AOP soustracteur ce qui n’est pas notre cas.
Le modele mathématique de la résistance PT1000 s’écrit :
R(T)=R0*(1+a*T) avec T=Température (°C) et Ro(0°C)=1000ohms
R(T)= R0+DR avec DR variation de la résistance en fonction de la température
Sachant que R(100°C)=1385 ohms la valeur du coefficient "a" est de 0.385%
Une résistance de pull up de 1000Ω est utilisée pour avoir la meilleure sensibilité du capteur.
La tension AN0 en fonction et correspond à l’equation suivante :
VAN0=5*( R0+DR)/(2R0+DR)=>5( 0.5+(DR/2R0))
Avec une linéarisation entre 0°C et 300°C, l’équation précédente à la valeur suivante.
VAN0=2.5+0.003Température (°C)
Avec la conversation analogique => numérique en 10 bits donne l’equation suivante
AN0=512+0.625T(°C) (equ 1)
Par conséquent, la valeur de la température sera déterminée par l’équation suivante
T(°C)=AN016/10-819 (equ 2)
Mais en fonction du placement du capteur thermique, il y a des différences entre la théorie et la pratique. Donc, il faut faire quelques points de mesures pour avoir correctement l’équation de l’équation 1 et en déduire l’équation 2.
algorithme :
incrementer ou decrementer de la consigne
cuisson si start=1 par BP4
regulation et actionnement
decremetation du temps de cuisson et arret lorsque celui –ci est à 0.
Gestion de la lumiere, du refroidisseur exterieur, catalyseur
voici la partie decremetation du temps et la regulation de la temperature
//gestion de l'heure avec routine d'interruption timer 0.001 seconde
if (temps>=1000) { //1000 pour etre à la seconde
temps=0;
if (seconde>=1) {seconde--;} //decomptage du temps
if (minute>0) {if (seconde==0) {minute--; seconde=60; }}
if (minute==0) {if (heure>0) {heure--;minute=60;} }
lcd.setCursor(0,1); //colonne, ligne,
if (heure<10) {lcd.print(" "); } //decalage
lcd.print(heure);
lcd.print("h");
if (minute<10) {lcd.print(" "); }
lcd.print(minute);
lcd.print("m");
if (seconde<10) {lcd.print(" "); }
lcd.print(seconde);
lcd.print("s");
// arret du chauffage+ bruit
if (seconde==0 && minute==0 && heure==0 && start1==1)
{start1=0;nbrbeep=4;}
temperature=analogRead(A0); //mesure temperature
lcd.setCursor(6,0); // colonne, ligne,
temperature=((temperature*16)/10)-819; //conversion de la valeur numerique en temperature
lcd.print("T=");
lcd.print(temperature);
lcd.print(" ");
if (start1==1)
{
erreur=(consigne-temperature); //plus facile de faire des superieur mais c'est pour coller à la modelisation
if (erreur>3) {
digitalWrite(relay1,0); //relay actif chauffage
digitalWrite(relay2,0);
lcd.setCursor(12,0);
lcd.print("P"); //indique qu'il y a la puissance
}
if (erreur<-3) {
digitalWrite(relay1,1); //relay inactif
digitalWrite(relay2,1);
lcd.setCursor(12,0);
lcd.print("N"); //indique qu'il n'y a pas de puissance
}
}//fin start1>1
//le catalyseur et le ventillateur exterieur doit rester en fontion si la temperature >50°C
if (temperature>50) { digitalWrite(relay4,0); digitalWrite(relay6,0); }
else {digitalWrite(relay4,1); digitalWrite(relay6,1); }
//ligt
if (start1==1 || (digitalRead(door)==1) ) { digitalWrite(relay5,0);}
else {digitalWrite(relay5,1);}
Le programme de la regulation est telechargeable sur ce lien suivant ou dans le fichier attaché suivant
L’afficheur 20 caracteres*4 lignes est peu utilisé par ce programme pour l’instant.
III Premiere Conclusion :
Le plus dur est de modifier la carcasse mécanique pour insérer la carte afficheur, pour que ce soit propre de l'exterieur. Par ma part, il faut placer la carte Arduino et l’afficheur dans le flux de la ventilation extérieure pour que celle-ci ne soit pas impacter pas la chaleur du four.
Il faut faire un peu de math pour avoir une linéarisation par partie du capteur.
Puis, des tests doivent etre effectué avec un capteur optique thermique pour connaitre la différence entre la température interne et la température mesurée. Ces tests demandent un peu de temps.
En effet, en fonction du positionnement des capteurs des températures, il y a une différence entre les valeurs théoriques et pratique. Donc il faut corriger l’équation 1 et l’équation 2.
Avec le terminal qui reçoit lorsqu’il y a le relais de puissance sont actionnées et la température mesurée qui sont enregistrées en fichier texte. Puis, lu dans Excel, il est très facile de modéliser le système Afin d’optimiser la commande donc d’affiner la valeur de l’hystérésis
Avec seulement des fonctions condition (if else), le programme précèdent a pu être effectué mais avec les menus du four, la fonction (switch(var) case()) va être primordiale ce qui va alourdir le programme et sa compréhension.
Perspectives :
Maintenant, il reste à faire le programme des menus pour faire les fonctions suivantes (gestion du temps de chauffage, chaleur tournante, grille, pyrolyse….) ainsi que la gestion sécuritaire avec 2 capteurs.
De plus par sécurité, un capteur de fumé serait intéressant au-dessus du catalyseur pour éviter une erreur de programmation du four.
Une notification par Bluetooth pourrait être effectuée sur smartphone pour dire que le préchauffage est fini ou pour indiquer que le temps de cuisson est fini.
Avoir une horloge synchronisée sur le secteur http://f5mna.free.fr/hor_mere_Secteur.htm
En esperant que ce sujet inspire du monde.
Remarque:
la programmation pour un four micro-onde est relativement similaire à celui d’un four encastrable, sauf qu’l n’y a pas de gestion de température donc de la puissance qui est fait par un commutation sur le magnétron.
mais est ce que cela existe des appareil electromenagers vendu dans le commerce avec des cartes Arduino et des programmes Open source ?
rien trouvé en francais ni en anglais.....que des projets jamais aboutis
sketch_four_regulation.ino (6.31 KB)