Schritt 18: Zweite Runde der Extruder-code
Hier ist ein zweiter Durchlauf auf den Extruder-Code - wenn die erste nicht funktioniert, dann versuchen Sie Folgendes.
Arduino nur / / /
Arduino Code / / /
in diesem Beispiel hält über dem Schmelzpunkt von HDPE - temp aber nicht zu heiß
Stepper schaltet, wenn die Temperatur zu niedrig ist [Hinweis: mit EasyDriver-Board, Pull Pin HIGH schalten Sie ermöglichen
Schalten Sie Hitze aus, wenn zu heiß
Drehen Sie Wärme auf wenn zu kalt
Schalten Sie die Hitze auf Medium, wenn
Webseite http://dev.www.reprap.org/bin/view/Main/Temperature_Sensor_1_1
Thermistor-Lookup-Tabelle für RepRap-Temperatur-Sensor-Boards (http://make.rrrf.org/ts)
Gemacht mit createTemperatureLookup.py (http://svn.reprap.org/trunk/reprap/firmware/Arduino/utilities/createTemperatureLookup.py)
./createTemperatureLookup.py - r0 = 100000--t0 = 25--r1 = 0--r2 = 4700--Beta = 4066--Max-adc = 1023
#define THERMISTOR_PIN 0
#define HeatPin 11 //heat Ebene
#define EstepPin 5 //set Extruder Stepper auf pin12
#define EdirPin 6 //set Schritt Richtung Stepper pin11
#define EenablePin 12 / /
Byte überschreitet = 175; >>> ist unter überschreitet dann Extruder deaktiviert - DegF
Byte MinTemp = 180; >>>> SET MIN TEMP hier >>>>>>-DegF
Byte MaxTemp = 185; >>>> SET MAX TEMP hier >>>>>>-DegF
MaxRaw Byte = 110;
Byte MinRaw = 120;
Byte-Cool = 0; Heizung aus
Byte warm = 255; mittlerer Hitze
Byte heiß = 255; ziemlich hoch erhitzen >> max 255 wäre, aber ich will nicht die Heizung Ausbrennen
R0: 100000
t0: 25
R1: 0
R2: 4700
Beta: 4066
Max. adc: 1023
#define NUMTEMPS 20
kurze 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 ("Starting Temperatur Exerciser.");
PinMode (HeatPin, Ausgang);
PinMode (EstepPin, OUTPUT);
PinMode (EdirPin, OUTPUT);
PinMode (EenablePin, OUTPUT);
}
void loop()
{
Int Rawvalue = analogRead(THERMISTOR_PIN);
Int celsius = read_temp();
Int fahrenheit = (((celsius * 9) / 5) + 32);
Serial.Print ("aktuelle Temp:");
Serial.Print(Celsius);
Serial.Print ("C /");
Serial.Print(Fahrenheit);
Serial.println("F");
Serial.Print ("Rohwert:");
Serial.println(rawvalue);
Serial.println("");
//
Kontrolle der Extruder-Heizung und Schrittmotor basierend auf die Temperatur
//
Wenn (Rawvalue > = MinRaw) {//if Temp zu niedrig - ausschalten Stepper
AnalogWrite (HeatPin, heiß); Wenn temp zu Turn Sie niedrig-Hitze bis max
digitalWrite(EenablePin,HIGH); Wenn temp zu niedrig - Ausschalten der Stepper
//??? Alles zu stoppen, wenn temp zu niedrig???
}
Wenn ((Fahrenheit > = überschreitet) & & (fahrenheit < = MinTemp)) {/ / Wenn temp unter Angebot-LED langsam blinken
AnalogWrite (HeatPin, heiß); Wenn temp unter Bereich - drehen Extruder bis zu max
digitalWrite(EenablePin,LOW); Wenn heiß genug, dann Stepper einschalten
// }
Wenn ((Fahrenheit > = MinTemp) & & (fahrenheit < = MaxTemp)) {//if Temp im Bereich - LED an
AnalogWrite (HeatPin, warm); Wenn Temp in Bereich - halten Sie Extruder warm
digitalWrite(EenablePin,LOW); Wenn heiß genug, dann Stepper einschalten
// }
Wenn ((Rawvalue < = MinRaw)) {//if Temp im Bereich - LED an
AnalogWrite (HeatPin, warm); Wenn Temp in Bereich - halten Sie Extruder warm
digitalWrite(EenablePin,LOW); Wenn heiß genug, dann Stepper einschalten
}
Wenn (Rawvalue < = MaxRaw) {//if Temp oben Bereich -LED schnell blinkt
AnalogWrite (HeatPin, Cool); Wenn die Temperatur zu hoch - Heizung ausschalten
digitalWrite(EenablePin,LOW); Wenn heiß genug, dann Stepper einschalten
}
laufen Extruder Schrittmotor
digitalWrite(EdirPin,LOW);
digitalWrite(EstepPin,HIGH);
delayMicroseconds(2);
digitalWrite(EstepPin,LOW);
Delay(1);
Delay(1000);
}
Int read_temp()
{
Int Rawtemp = analogRead(THERMISTOR_PIN);
Int Current_celsius = 0;
Byte ich;
für (ich = 1; ich < NUMTEMPS; i ++) {}
Wenn (temptable [i] [0] > Rawtemp)
{
Int Realtemp temptable [i-1] [1] = + (Rawtemp - temptable[i-1][0]) * (temptable [i] [1] - temptable[i-1][1]) / (temptable [i] [0] - temptable[i-1][0]);
Wenn (Realtemp > 255)
RealTemp = 255;
Current_celsius = Realtemp;
zu brechen;
}
}
Überlauf: Wir spannen einfach auf 0 Grad celsius
Wenn (ich == NUMTEMPS)
Current_celsius = 0;
Rückkehr Current_celsius;
}