Styra en RepStrap bearbetning (19 / 25 steg)
Steg 19: Tredje omgången av Extruder koden!
Denna bit av extruder conrol arbetar bra med polymjölksyra (PLA).
Du kan med några här om du är intresserad: https://ultimachine.com/
Arduino kod / / /
//
/ * EXTRUDER KONTROLL
VAD DET GÖR:
-REGLERA TEMP VIA PWM
-KÖR STEPPER MOTOR AV NYPA HJULET EXTRUDER NÄR DET ÄR RÄTT TEMP UTBREDNINGSOMRÅDEN
-KÖR STEPPER FRÅN EASYDRIVER OMBORD
*/
Inaktiverar stepper om temp är för lågt [OBS: använder EasyDriver styrelse, pull aktiverar pin HIGH att stänga av
stänga av värmen om för varmt
vända värmen vägen upp om för kallt
slå värmen till medium om
DETTA ÄR BASERAT PÅ KOD OCH DESIGN FRÅN
webbsida http://dev.www.reprap.org/bin/view/Main/Temperature_Sensor_1_1
Termistor uppslagstabell för RepRap temperatur Sensor brädor (http://make.rrrf.org/ts)
Med 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 nivå
#define EstepPin 5 //set extruder stepper till pin12
#define EdirPin 6 //set steg riktningen till stepper pin11
#define EenablePin 12 / /
#define LED 13
byte lowTemp = 95. >>> om under lowTemp sedan inaktiveras extruder - degF
byte minTemp = 100; >>>> Ställa in MIN TEMP här >>>>>>-degF
byte maxTemp = 105; >>>> Ange MAX TEMP här >>>>>>-degF
byte maxRaw = 690;
byte minRaw = 700;
byte cool = 0; värmare off
byte varm = 255; medelhög värme
byte heta = 255; värma upp ganska högt >> max skulle vara 255, men jag vill inte bränna ut värmaren
R0: 100000
t0: 25
R1: 0
R2: 4700
Beta: 4066
Max adc: 1023
#define NUMTEMPS 20
korta 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 ("Start temperatur exerciser.");
pinMode (heatPin, produktionen);
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 ("aktuell temp:");
Serial.Print(Celsius);
Serial.Print ("C /");
Serial.Print(Fahrenheit);
Serial.println("F");
Serial.Print ("Raw värde:");
Serial.println(RawValue);
Serial.println("");
//
kontroll extruder värmaren och stepper motor baserat på temperaturen
//
om (celsius < = minTemp) {//if temp för låg - inaktivera stepper
analogWrite (heatPin, heta); om temp alltför låg-turn värmen till max
digitalWrite(EenablePin,HIGH); om temp alltför låg - Stäng av genom
digitalWrite(LED,HIGH);
//??? Stoppa allt om temp för låg???
}
om ((celsius > = lowTemp) & & (celsius < = minTemp)) {/ / om temp under sortiment-LED långsam blink
analogWrite (heatPin, heta); om temp under intervall - vända extruder upp till max
digitalWrite(EenablePin,LOW); om varma aktivera nog sedan stepper
}
om ((celsius > = minTemp) & & (celsius < = maxTemp)) {//if temp i intervallet - LED på
analogWrite (heatPin, varma); om temp i intervallet - värma extrudern
digitalWrite(EenablePin,LOW); om varma aktivera nog sedan stepper
}
köra extruder stegmotor
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.
för (jag = 1; jag om (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]);
om (realtemp > 255)
Realtemp = 255;
current_celsius = realtemp;
bryta;
}
}
Overflow: Vi bara klämma till 0 grader celsius
om (jag == NUMTEMPS)
current_celsius = 0;
återvända current_celsius;
}