Stap 17: Extruder temp controle en code
Als u een bruikbare stroom van gesmolten plastic uit de extruder, moet de tempurature worden heet genoeg om de plastic smelten, maar niet zo warm dat het begint te roken en het branden. U wilt ook alleen om te rijden de voorraad materiaal, terwijl de temp binnen dit bereik is.
Arduino code (dit is enkel een eveneens versie van wat RepRap-code). Dit kunt u instellen van een temperatuurbereik en vervolgens alleen de motor van de extruder worden uitgevoerd wanneer de kachel binnen bereik.
Zoals hieronder getoond, wordt de rauwe tempurate lezing gebruikt. Werkelijke temp kan ook worden gebruikt.
Arduino Code / / /
in dit voorbeeld houdt temp boven het smeltpunt van HDPE- maar niet te warm
stepper uitgeschakeld als temp te laag [Nota: gebruik EasyDriver bord, pull inschakelen pin HIGH uitschakelen
warmte uitschakelen als het te warm
Zet de warmte weg omhoog als te koud
Schakel warmte aan medium als
webpagina http://dev.www.reprap.org/bin/view/Main/Temperature_Sensor_1_1
Thermistor opzoektabel voor RepRap Temperatuur Sensor Boards (http://make.rrrf.org/ts)
Gemaakt met 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 niveau
#define EstepPin 5 //set extruder stepper te pin12
#define EdirPin 6 //set stap richting stepper pin11
#define EenablePin 12 / /
byte lowTemp = 245; >>> als onder lowTemp vervolgens extruder is uitgeschakeld - degF
byte minTemp = 245; >>>> Instellen MIN TEMP hier >>>>>>-degF
byte maxTemp = 250; >>>> MAX TEMP hier SET >>>>>>-degF
byte maxRaw = 125;
byte minRaw = 130;
byte cool = 0; kachel uitschakelen
byte warme = 255; middellange warmte
byte hete = 255; opwarmen vrij hoog >> max 255 zou worden, maar ik wil niet te branden uit de kachel
R0: 100000
t0: 25
R1: 0
R2: 4700
Beta: 4066
Max adc: 1023
#define NUMTEMPS 20
korte 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 temperatuur uitoefenaar.");
pinMode (heatPin, OUTPUT);
pinMode (EstepPin, uitvoer);
pinMode (EdirPin, uitvoer);
pinMode (EenablePin, uitvoer);
}
void loop
{
int rawvalue = analogRead(THERMISTOR_PIN);
int celsius = read_temp();
int fahrenheit = (((celsius * 9) / 5) + 32);
Serial.Print ("huidige temperaturen:");
Serial.Print(Celsius);
Serial.Print ("C /");
Serial.Print(Fahrenheit);
Serial.println("F");
Serial.Print ("Raw waarde:");
Serial.println(rawvalue);
Serial.println("");
//
controle de extruder kachel en Stappenmotor op basis van de temperatuur
//
Als (rawvalue > = minRaw) {//if temp te laag - uitschakelen stepper
analogWrite (heatPin, hete); als temp te laag-beurt warmte tot max
digitalWrite(EenablePin,HIGH); als temp te laag - zet de stepper
//??? Stop alles als temp te laag???
}
Als ((fahrenheit > = lowTemp) & & (fahrenheit < = minTemp)) {/ / als temp onder bereik-LED langzaam knipperen
analogWrite (heatPin, hete); als temp onder bereik - schakelt extruder tot max
digitalWrite(EenablePin,LOW); Als het warm inschakelen genoeg vervolgens stepper
// }
Als ((fahrenheit > = minTemp) & & (fahrenheit < = maxTemp)) {//if temp in bereik - LED ON
analogWrite (heatPin, warme); als temp in bereik - extruder warm houden
digitalWrite(EenablePin,LOW); Als het warm inschakelen genoeg vervolgens stepper
// }
Als ((rawvalue < = minRaw)) {//if temp in bereik - LED ON
analogWrite (heatPin, warme); als temp in bereik - extruder warm houden
digitalWrite(EenablePin,LOW); Als het warm inschakelen genoeg vervolgens stepper
}
Als (rawvalue < = maxRaw) {//if temp boven bereik -LED snel knipperen
analogWrite (heatPin, cool); als temp te hoog - uitschakelen kachel
digitalWrite(EenablePin,LOW); Als het warm inschakelen genoeg vervolgens stepper
}
uitvoeren van extruder stappenmotor
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;
byte i;
voor (ik = 1; ik als (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]);
Als (realtemp > 255)
realtemp = 255;
current_celsius = realtemp;
breken;
}
}
Overloop: We net klem tot 0 graden celsius
Als (ik == NUMTEMPS)
current_celsius = 0;
Return current_celsius;
}