Discussion:Four à refusion
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