Styra en RepStrap bearbetning (18 / 25 steg)
Steg 18: Andra omgången av extruder kod
Här är ett andra pass på extruder koden - om först inte fungerar, så prova det här.
Arduino endast / / /
Arduino kod / / /
Detta exempel håller temp ovanför smältningen pekar av HDPE- men inte för varmt
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
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 / /
byte lowTemp = 175; >>> om under lowTemp sedan inaktiveras extruder - degF
byte minTemp = 180; >>>> Ställa in MIN TEMP här >>>>>>-degF
byte maxTemp = 185; >>>> Ange MAX TEMP här >>>>>>-degF
byte maxRaw = 110.
byte minRaw = 120;
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 (rawvalue > = minRaw) {//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
//??? Stoppa allt om temp för låg???
}
om ((fahrenheit > = lowTemp) & & (fahrenheit < = 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 ((fahrenheit > = minTemp) & & (fahrenheit < = 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
// }
om ((rawvalue < = minRaw)) {//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
}
om (rawvalue < = maxRaw) {//if temp ovanför rad -LED snabb blinkning
analogWrite (heatPin, cool); om temp för hög - inaktivera värmare
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 < NUMTEMPS; i ++) {
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;
}