Paso 18: Segunda ronda de código de extrusora
Aquí le damos un segundo paso en el código de la extrusora - si la primera no funciona, intenta esto.
Arduino solo / / /
Código de Arduino / / /
Este ejemplo mantiene la temperatura por encima del punto de fusión de polietileno de alta densidad - pero no demasiado caliente
paso a paso se apaga si la temperatura es demasiado baja [Nota: uso de EasyDriver, tire activar pin alto para apagar
apaga el fuego si es demasiado caliente
Ponga calor arriba si demasiado frío
Gire el calor al medio si
Página Web http://dev.www.reprap.org/bin/view/Main/Temperature_Sensor_1_1
Tabla de búsqueda de termistor para las placas de Sensor de temperatura de RepRap (http://make.rrrf.org/ts)
Hecho con 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 nivel
#define EstepPin 5 pasos de estirador de //set al pin12
#define EdirPin 6 //set paso hacia pin11 paso a paso
#define EenablePin 12 / /
byte lowTemp = 175; >>> Si a continuación lowTemp luego extrusora está deshabilitado - degF
minTemp bytes = 180; >>>> SET MIN TEMP aquí >>>>>>-degF
maxTemp bytes = 185; >>>> SET MAX TEMP aquí >>>>>>-degF
byte maxRaw = 110;
byte minRaw = 120;
fresco de byte = 0; calentador apagado
caliente de byte = 255; fuego medio
hot byte = 255; calentar bastante alto >> max sería 255, pero no quiero quemar el calentador
R0: 100000
T0: 25
R1: 0
R2: 4700
beta: 4066
máximo adc: 1023
#define NUMTEMPS 20
corta temptable [NUMTEMPS] [2] = {}
841 {1},
255 {54},
209 {107},
184 {160},
{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 ("salida temperatura exercizer.");
pinMode (heatPin, salida);
pinMode (EstepPin, salida);
pinMode (EdirPin, salida);
pinMode (EenablePin, salida);
}
void loop()
{
int rawvalue = analogRead(THERMISTOR_PIN);
int grados celsius = read_temp();
int fahrenheit = (((celsius * 9) / 5) + 32);
Serial.Print ("temperatura actual:");
Serial.Print(Celsius);
Serial.Print ("C /");
Serial.Print(Fahrenheit);
Serial.println("F");
Serial.Print ("valor bruto:");
Serial.println(RawValue);
Serial.println("");
//
control de la calefacción del estirador y motor paso a paso en función de la temperatura
//
Si (rawvalue > = minRaw) {//if temp demasiado baja - desactivar paso a paso
analogWrite (heatPin, caliente); Si temp demasiado baja-a su vez calor al máximo
digitalWrite(EenablePin,HIGH); Si temp demasiado baja - apague el paso a paso
//??? Dejar todo si temp demasiado baja???
}
Si ((f > = lowTemp) & & (fahrenheit < = minTemp)) {/ / si la temperatura por debajo de la gama LED parpadea lentamente
analogWrite (heatPin, caliente); Si la temperatura por debajo del rango - gire a la extrusora hasta máximo
digitalWrite(EenablePin,LOW); Si caliente suficiente girar en paso a paso
// }
Si ((f > = minTemp) & & (fahrenheit < = maxTemp)) {//if temp en gama - LED encendido
analogWrite (heatPin, caliente); Si la temperatura está en gama - calentarse la extrusora
digitalWrite(EenablePin,LOW); Si caliente suficiente girar en paso a paso
// }
Si ((rawvalue < = minRaw)) {//if temp en gama - LED encendido
analogWrite (heatPin, caliente); Si la temperatura está en gama - calentarse la extrusora
digitalWrite(EenablePin,LOW); Si caliente suficiente girar en paso a paso
}
Si (rawvalue < = maxRaw) {temp //if encima de parpadeo rápido de gama -LED
analogWrite (heatPin, frío); Si temp demasiado alta - apague la calefacción
digitalWrite(EenablePin,LOW); Si caliente suficiente girar en paso a paso
}
ejecutar extrusora motor paso a paso
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 me;
para (i = 1; i < NUMTEMPS; i ++) {}
Si (temptable [i] [0] > rawtemp)
{
realtemp int = temptable [i-1] [1] + (rawtemp - temptable[i-1][0]) * (temptable [i] [1] - temptable[i-1][1]) / (temptable [i] [0] - temptable[i-1][0]);
Si (realtemp > 255)
realtemp = 255;
current_celsius = realtemp;
rotura;
}
}
Desbordamiento: Nos sólo fije a 0 grados celsius
Si (i == NUMTEMPS)
current_celsius = 0;
volver current_celsius;
}