Discussion:Four à refusion

De Kernel Fablab Lannion

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