Étape 17 : Extrudeuse contrôle temp et code
Pour obtenir un flux de données utilisable de plastique fondu hors de l’extrudeuse, le cuis doit être assez chaude pour faire fondre le plastique, mais pas si chaud qu’il commence à fumer et à brûler. Vous voulez également que le matériel roulant en voiture alors que la température se situe dans cette fourchette.
Arduino code (il s’agit d’une version de code RepRap modifed). Cela permet de définir une plage de température et ensuite ne fonctionne que le moteur de l’extrudeuse lorsque l’appareil de chauffage au sein de la gamme.
Comme indiqué ci-dessous, la lecture tempurate Raw est utilisée. Temp réel peut également être utilisé.
Arduino Code / / /
Cet exemple tient temp plus haut point de fusion du HDPE - mais pas trop chaud
s’éteint pas à pas, si temp est trop faible [NOTE: à l’aide de EasyDriver Conseil, tirez autoriser broche haute pour éteindre
Éteignez chaleur si trop chaud
transformer la façon dont la chaleur up si trop froid
baisser le feu au milieu de si
page Web http://dev.www.reprap.org/bin/view/Main/Temperature_Sensor_1_1
Table de correspondance de thermistance pour le capteur de température RepRap cartes mères (http://make.rrrf.org/ts)
Fait avec createTemperatureLookup.py (http://svn.reprap.org/trunk/reprap/firmware/Arduino/utilities/createTemperatureLookup.py)
./createTemperatureLookup.py--r0 = 100000--t0 = 25--r1 = 0--r2 = 4700--bêta = 4066--max-adc = 1023
#define THERMISTOR_PIN 0
#define heatPin 11 //heat niveau
#define EstepPin 5 //set extrudeuse pas pour pin12
#define EdirPin 6 //set étape direction pour moteur pas à pas pin11
#define EenablePin 12 / /
lowTemp octets = 245 ; >>> si dessous lowTemp, extrudeuse est ensuite désactivé - degF
minTemp octets = 245 ; >>>> La valeur MIN TEMP ici >>>>>>-degF
maxTemp octets = 250 ; >>>> SET MAX TEMP ici >>>>>>-degF
maxRaw octets = 125 ;
minRaw octets = 130 ;
cool octets = 0 ; chauffe-eau hors tension
octet chaud = 255 ; feu moyen
octet chaud = 255 ; faire chauffer assez haut >> max serait 255, mais je ne veux pas brûler le chauffage
R0 : 100000
T0 : 25
R1: 0
R2 : 4700
bêta : 4066
Max adc: 1023
#define NUMTEMPS 20
court-temptable [NUMTEMPS] [2] = {}
{1}, 841
{54, 255},
{107, 209},
{160, 184},
{213, 166},
{266, 153},
{319, 142},
{372, 132},
{425, 124},
{478, 116},
{531, 108},
{584, 101},
{637, 93},
{690, 86},
{743, 78},
{796, 70},
{849, 61},
{902, 50},
{955, 34},
{1008, 3}
};
void setup()
{
Serial.Begin(9600) ;
Serial.println ("départ température exerciseur.") ;
pinMode (heatPin, sortie) ;
pinMode (EstepPin, sortie) ;
pinMode (EdirPin, sortie) ;
pinMode (EenablePin, sortie) ;
}
void loop()
{
rawvalue int = analogRead(THERMISTOR_PIN) ;
int celsius = read_temp() ;
int fahrenheit = (((celsius * 9) / 5) + 32) ;
Serial.Print ("temp actuel:") ;
Serial.Print(Celsius) ;
Serial.Print ("C /") ;
Serial.Print(Fahrenheit) ;
Serial.println("F") ;
Serial.Print ("Raw valeur:") ;
Serial.println(RawValue) ;
Serial.println("") ;
//
contrôle du chauffage de l’extrudeuse et moteur pas à pas, basé sur la température
//
Si (rawvalue > = minRaw) {//if temp trop faible - désactiver stepper
analogWrite (heatPin, chaud) ; Si temp trop faible-tour chaleur à max
digitalWrite(EenablePin,HIGH) ; Si temp trop faible - désactiver le stepper
//??? Tout arrêter si temp trop bas???
}
Si ((fahrenheit > = lowTemp) & & (fahrenheit < = minTemp)) {/ / si temp sous gamme LED clignotement lent
analogWrite (heatPin, chaud) ; Si temp sous gamme - tourner extrudeuse jusqu'à max
digitalWrite(EenablePin,LOW) ; si chaud assez puis allumez stepper
// }
Si ((fahrenheit > = minTemp) & & (fahrenheit < = maxTemp)) {//if temp en gamme - LED ON
analogWrite (heatPin, chaud) ; Si temp se trouve dans la gamme - garder au chaud extrudeuse
digitalWrite(EenablePin,LOW) ; si chaud assez puis allumez stepper
// }
Si ((rawvalue < = minRaw)) {//if temp en gamme - LED ON
analogWrite (heatPin, chaud) ; Si temp se trouve dans la gamme - garder au chaud extrudeuse
digitalWrite(EenablePin,LOW) ; si chaud assez puis allumez stepper
}
Si (rawvalue < = maxRaw) {//if temp au-dessus de clignotement rapide de la gamme -LED
analogWrite (heatPin, cool) ; Si temp trop élevé - éteindre chauffe-eau
digitalWrite(EenablePin,LOW) ; si chaud assez puis allumez stepper
}
Exécutez extrudeuse moteur pas à pas
digitalWrite(EdirPin,LOW) ;
digitalWrite(EstepPin,HIGH) ;
delayMicroseconds(2) ;
digitalWrite(EstepPin,LOW) ;
Delay(15) ;
Delay(1000) ;
}
int read_temp()
{
int rawtemp = analogRead(THERMISTOR_PIN) ;
int current_celsius = 0 ;
octet i ;
pour (i = 1; i si (temptable [i] [0] > rawtemp)
{
realtemp int = temptable [i-1] [1] + (rawtemp - temptable[i-1][0]) * (temptable [i] [1] - temptable[i-1][1]) / (temptable [i] [0] - temptable[i-1][0]) ;
Si (realtemp > 255)
Realtemp = 255 ;
current_celsius = realtemp ;
rupture ;
}
}
Débordement : Nous avons juste fixer à 0 degrés celsius
Si (i == NUMTEMPS)
current_celsius = 0 ;
Return current_celsius ;
}