Paso 19: Tercera ronda de extrusora código!
Este poco de conrol de la extrusora está trabajando bien con ácido poliláctico (PLA).
Usted puede por algunos aquí si usted está interesado: https://ultimachine.com/
Código de Arduino / / /
//
/ * CONTROL DE EXTRUSIÓN
LO QUE HACE:
-REGULAR LA TEMPERATURA MEDIANTE PWM
-EJECUTAR EL MOTOR DE PASOS DE ESTIRADOR DE PELLIZCO RUEDA CUANDO ESTÁ DENTRO DE RANGO DE TEMPERATURA ADECUADA
-EJECUCIÓN PASO A PASO EASYDRIVER TABLERO
*/
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
ESTO SE BASA EN CÓDIGO Y DISEÑOS DE
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 / /
#define LED 13
byte lowTemp = 95; >>> Si a continuación lowTemp luego extrusora está deshabilitado - degF
minTemp bytes = 100; >>>> SET MIN TEMP aquí >>>>>>-degF
maxTemp bytes = 105; >>>> SET MAX TEMP aquí >>>>>>-degF
byte maxRaw = 690;
byte minRaw = 700;
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 (celsius < = minTemp) {//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
digitalWrite(LED,HIGH);
//??? Dejar todo si temp demasiado baja???
}
Si ((c > = lowTemp) & & (celsius < = minTemp)) {/ / si 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 ((c > = minTemp) & & (celsius < = 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
}
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 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;
}