Stap 19: Derde ronde van de Extruder Code!
Dit stukje extruder conrol werkt goed met polylactic acid (PLA).
U kunt door sommigen hier als u geïnteresseerd bent: https://ultimachine.com/
Arduino Code / / /
//
/ * EXTRUDER CONTROLE
WAT HET DOET:
-REGELEN VAN TEMP VIA PWM
-RONDJE STAPPENMOTOR VAN PINCH WIEL EXTRUDER WANNEER HET JUISTE TEMP GASGROEP
-LOPENDE STEPPER VAN EASYDRIVER BORD
*/
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
DIT IS GEBASEERD OP CODE EN ONTWERPEN UIT
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 / /
#define LED 13
byte lowTemp = 95; >>> als onder lowTemp vervolgens extruder is uitgeschakeld - degF
byte minTemp = 100; >>>> Instellen MIN TEMP hier >>>>>>-degF
byte maxTemp = 105; >>>> MAX TEMP hier SET >>>>>>-degF
byte maxRaw = 690;
byte minRaw = 700;
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 (celsius < = minTemp) {//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
digitalWrite(LED,HIGH);
//??? Stop alles als temp te laag???
}
Als ((celsius > = lowTemp) & & (celsius < = 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 ((celsius > = minTemp) & & (celsius < = 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
}
uitvoeren van extruder stappenmotor
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 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;
}