« Discussion:Four à refusion » : différence entre les versions
(Page de discussion créée automatiquement quand le premier fil de discussion a été envoyé.) |
Aucun résumé des modifications |
||
Ligne 1 : | Ligne 1 : | ||
Programme du four (arduino) v1 (sans gerer la vitesse d'avance) | |||
Historique Résumé | |||
Collapse | |||
// this example is public domain. enjoy! // www.ladyada.net/learn/sensors/thermocouple | |||
include "max6675.h" | |||
int thermoDO = 2; int thermoCS = 3; int thermoCLK = 4; int vccPin = 5; int gndPin = 6; | |||
int thermoDO1 = 9; int thermoCS1 = 10; int thermoCLK1 = 11; int vccPin1 = 12; int gndPin1 = 13; | |||
//Control relai logic boolean on = LOW; boolean off = HIGH; | |||
int relaiMoteur = 7; int relaiVentilHaut = 8; int relaiGdCer = 1; int relaiPtCer = 0; | |||
int thermGdCer = 0; int thermPtCer = 0; int tempCibleGdCer = 260; int tempCiblePtCer = 350; float thermGdCerCoeff = 0.78; float thermPtCerCoeff = 0.74; | |||
boolean tempGdCerOk = false; boolean tempPtCerOk = false; | |||
MAX6675 thermocouplePtCer(thermoCLK, thermoCS, thermoDO); MAX6675 thermocoupleGdCer(thermoCLK1, thermoCS1, thermoDO1); | |||
void setup() { | |||
Serial.begin(9600); | |||
// use Arduino pins | |||
pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH); | |||
pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW); | |||
pinMode(vccPin1, OUTPUT); digitalWrite(vccPin1, HIGH); | |||
pinMode(gndPin1, OUTPUT); digitalWrite(gndPin1, LOW); | |||
UCSR0B = 0; | |||
pinMode(relaiMoteur, OUTPUT); digitalWrite(relaiMoteur,off); | |||
pinMode(relaiVentilHaut, OUTPUT); digitalWrite(relaiVentilHaut,off); | |||
pinMode(relaiGdCer, OUTPUT); digitalWrite(relaiGdCer,off); | |||
pinMode(relaiPtCer, OUTPUT); digitalWrite(relaiPtCer,off); | |||
// wait for MAX chip to stabilize | |||
delay(500); | |||
} | |||
void loop() { | |||
// Switch on the light and top fan | |||
digitalWrite(relaiVentilHaut,on); | |||
// Lecture du thermocouple des grandes céramique et adaptation au temperature reel | |||
thermGdCer = thermocoupleReading(thermocoupleGdCer) * thermGdCerCoeff; | |||
//Lecture du thermocouple des petites céramique et adaptation au temperature reel | |||
thermPtCer = thermocoupleReading(thermocouplePtCer) * thermPtCerCoeff; | |||
// Si on a pas atteint la temperature cible on garde la grande ceramique en chauffe, sinon on éteint | |||
if (int(thermGdCer) < tempCibleGdCer) { | |||
digitalWrite(relaiGdCer,on); | |||
} else { | |||
tempGdCerOk = true; | |||
digitalWrite(relaiGdCer,off); | |||
} | |||
// Si on a pas atteint la temperature cible on garde la petite ceramique et le plateau inférieur en chauffe, sinon on éteint | |||
if (int(thermPtCer) < tempCiblePtCer) { | |||
digitalWrite(relaiPtCer,on); | |||
} else { | |||
tempPtCerOk = true; | |||
digitalWrite(relaiPtCer,off); | |||
} | |||
if(tempGdCerOk and tempPtCerOk){ | |||
digitalWrite(relaiMoteur,on); | |||
} | |||
//Ajout de ligne pour le debug | |||
Serial.println('//// DEBUG ///'); | |||
Serial.println('Lumière allumé, ventilation haute et basse démarré'); | |||
Serial.println('----'); | |||
Serial.print('Temperature cible grande ceramique ='); | |||
Serial.println(tempCibleGdCer); | |||
Serial.print('Temperature grande ceramique ='); | |||
Serial.println(thermGdCer); | |||
Serial.println('----'); | |||
Serial.print('Temperature cible petite ceramique ='); | |||
Serial.println(tempCibleGdCer); | |||
Serial.print('Temperature petite ceramique ='); | |||
Serial.println(thermPtCer); | |||
Serial.println('----'); | |||
if(tempGdCerOk and tempPtCerOk){ | |||
Serial.println('Temperature cible atteinte sur les céramiques, démarrage du moteur...'); | |||
} | |||
Serial.println('////FIN DEBUG ////'); | |||
delay(2000); | |||
} | |||
int thermocoupleReading(MAX6675 therm) { | |||
int nb_interro = 5; | |||
int result = 0; | |||
int tmpData = 0; | |||
for (int compteur=1; compteur <= nb_interro; compteur++) { | |||
tmpData = therm.readCelsius(); | |||
result = result + tmpData; | |||
delay (200); | |||
} | |||
return result/nb_interro; | |||
} | |||
Plus | |||
Pofexpray (discussion)11 mars 2015 à 13:38 | |||
Toutes les infos pour amplifier les microVolts des thermocouple | |||
Historique Résumé | |||
Collapse | |||
http://hobbybotics.com/projects/hobbybotics-max6675-thermocouple-breakout/ | |||
http://jimlaurwilliams.org/wordpress/?p=2141 | |||
Plus | |||
Pofexpray (discussion)7 octobre 2013 à 15:29 | |||
Un projet complet de création d'un four à refusion | |||
Historique Résumé | |||
Collapse | |||
http://viennot.biz/reflow_oven.pdf | |||
Pas mal de détail à adapter pour notre four |
Version actuelle datée du 6 novembre 2016 à 09:11
Programme du four (arduino) v1 (sans gerer la vitesse d'avance)
Historique Résumé
Collapse
// this example is public domain. enjoy! // www.ladyada.net/learn/sensors/thermocouple
include "max6675.h"
int thermoDO = 2; int thermoCS = 3; int thermoCLK = 4; int vccPin = 5; int gndPin = 6;
int thermoDO1 = 9; int thermoCS1 = 10; int thermoCLK1 = 11; int vccPin1 = 12; int gndPin1 = 13;
//Control relai logic boolean on = LOW; boolean off = HIGH;
int relaiMoteur = 7; int relaiVentilHaut = 8; int relaiGdCer = 1; int relaiPtCer = 0;
int thermGdCer = 0; int thermPtCer = 0; int tempCibleGdCer = 260; int tempCiblePtCer = 350; float thermGdCerCoeff = 0.78; float thermPtCerCoeff = 0.74;
boolean tempGdCerOk = false; boolean tempPtCerOk = false;
MAX6675 thermocouplePtCer(thermoCLK, thermoCS, thermoDO); MAX6675 thermocoupleGdCer(thermoCLK1, thermoCS1, thermoDO1);
void setup() {
Serial.begin(9600); // use Arduino pins pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH); pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW); pinMode(vccPin1, OUTPUT); digitalWrite(vccPin1, HIGH); pinMode(gndPin1, OUTPUT); digitalWrite(gndPin1, LOW); UCSR0B = 0; pinMode(relaiMoteur, OUTPUT); digitalWrite(relaiMoteur,off); pinMode(relaiVentilHaut, OUTPUT); digitalWrite(relaiVentilHaut,off); pinMode(relaiGdCer, OUTPUT); digitalWrite(relaiGdCer,off); pinMode(relaiPtCer, OUTPUT); digitalWrite(relaiPtCer,off); // wait for MAX chip to stabilize delay(500);
}
void loop() {
// Switch on the light and top fan digitalWrite(relaiVentilHaut,on); // Lecture du thermocouple des grandes céramique et adaptation au temperature reel thermGdCer = thermocoupleReading(thermocoupleGdCer) * thermGdCerCoeff; //Lecture du thermocouple des petites céramique et adaptation au temperature reel thermPtCer = thermocoupleReading(thermocouplePtCer) * thermPtCerCoeff; // Si on a pas atteint la temperature cible on garde la grande ceramique en chauffe, sinon on éteint if (int(thermGdCer) < tempCibleGdCer) { digitalWrite(relaiGdCer,on); } else { tempGdCerOk = true; digitalWrite(relaiGdCer,off); }
// Si on a pas atteint la temperature cible on garde la petite ceramique et le plateau inférieur en chauffe, sinon on éteint if (int(thermPtCer) < tempCiblePtCer) { digitalWrite(relaiPtCer,on); } else { tempPtCerOk = true; digitalWrite(relaiPtCer,off); } if(tempGdCerOk and tempPtCerOk){ digitalWrite(relaiMoteur,on); } //Ajout de ligne pour le debug Serial.println('//// DEBUG ///'); Serial.println('Lumière allumé, ventilation haute et basse démarré'); Serial.println('----'); Serial.print('Temperature cible grande ceramique ='); Serial.println(tempCibleGdCer); Serial.print('Temperature grande ceramique ='); Serial.println(thermGdCer); Serial.println('----'); Serial.print('Temperature cible petite ceramique ='); Serial.println(tempCibleGdCer); Serial.print('Temperature petite ceramique ='); Serial.println(thermPtCer); Serial.println('----'); if(tempGdCerOk and tempPtCerOk){ Serial.println('Temperature cible atteinte sur les céramiques, démarrage du moteur...'); } Serial.println('////FIN DEBUG ////'); delay(2000);
}
int thermocoupleReading(MAX6675 therm) {
int nb_interro = 5; int result = 0; int tmpData = 0; for (int compteur=1; compteur <= nb_interro; compteur++) { tmpData = therm.readCelsius(); result = result + tmpData; delay (200); } return result/nb_interro;
}
Plus
Pofexpray (discussion)11 mars 2015 à 13:38 Toutes les infos pour amplifier les microVolts des thermocouple
Historique Résumé
Collapse
http://hobbybotics.com/projects/hobbybotics-max6675-thermocouple-breakout/
http://jimlaurwilliams.org/wordpress/?p=2141
Plus
Pofexpray (discussion)7 octobre 2013 à 15:29 Un projet complet de création d'un four à refusion
Historique Résumé
Collapse
http://viennot.biz/reflow_oven.pdf
Pas mal de détail à adapter pour notre four