Stap 18: Tweede ronde van extruder code
Hier is een tweede pass op de extruder code - als de eerste niet werkt, probeer dan dit.
Arduino alleen / / /
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 = 175; >>> als onder lowTemp vervolgens extruder is uitgeschakeld - degF
byte minTemp = 180; >>>> Instellen MIN TEMP hier >>>>>>-degF
byte maxTemp = 185; >>>> MAX TEMP hier SET >>>>>>-degF
byte maxRaw = 110;
byte minRaw = 120;
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(1);
delay(1000);
}
int read_temp()
{
int rawtemp = analogRead(THERMISTOR_PIN);
int current_celsius = 0;
byte i;
voor (ik = 1; ik < NUMTEMPS; i ++) {}
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;
}