(30-01-2017, 07:49 PM)Roque7 escribió: Podías publicar el firmware del arduino con los parámetros de la anet. Así si alguien se decide a cambiarla, lo tiene mas fácil (yo, por ejemplo). Compré copia de la anet porque me dio miedo no saber configurar el firmware para el arduino. :blush: :blush: :blush: .
En realidad para dejar el firmware operativo es necesario elegir algunas opciones en el fichero configuration.h, que es de donde parte la configuración global de todo el entorno. Para no meter la pata, copie la configuración del mismo archivo en el firmware skynet 3.2.1, el cual ya tenía instalado en la placa de la anet para hacer funcionar el autolevel, ajustando algunos valores teniendo en cuenta el hardware.
Hay varios apartados a tener en cuenta, y dependen directamente de como tengamos instalada la impresora:
-Tipo de sensor - copiado de skynet:
#define TEMP_SENSOR_0 5
#define TEMP_SENSOR_BED 5
#define TEMP_RESIDENCY_TIME 6 // 10 // (seconds)
#define TEMP_BED_RESIDENCY_TIME 6 // 10 // (seconds)
#define PID_FUNCTIONAL_RANGE 15 // 10 //
-Valores pid para el ajuste de temperatura, aquí conviene pasar el ajuste de calibración en nuestra impresora:
// ANET A8 Standard Extruder at 210 Degree Celsius and 100% Fan
//(measured after M106 S255 with M303 E0 S210 C8)
#define DEFAULT_Kp 21.0
#define DEFAULT_Ki 1.25
#define DEFAULT_Kd 86.0
Yo deje comentados los ajustes que trae el marlin puestos, basta con poner // delante de la linea
En este artículo de zonamaker se explican algunos ajustes de marlin, así como debe ajustarse el pid usando pronterface:
https://www.zonamaker.com/impresion-3d/c...are-marlin
-Configuración de los finales de carrera:
// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
#define X_MIN_ENDSTOP_INVERTING true // false // set to true to invert the logic of the endstop.
#define Y_MIN_ENDSTOP_INVERTING true // false // set to true to invert the logic of the endstop.
#define Z_MIN_ENDSTOP_INVERTING true // false // set to true to invert the logic of the endstop.
-Ajuste de los pasos del motor:
Estos valores definen cuantos micropasos debe avanzar el motor para desplazarse 1mm, el orden es motor X,Y,Z,Extrusor
Dependerá del driver que adquiramos con el kit de la ramps, si adquirimos los A4988 tienen una resolución de 16 micropasos
#define DEFAULT_AXIS_STEPS_PER_UNIT {100, 100, 400, 95} // valores de skynet ANET A8
Yo he adquirido el kit con los drivers DRV8825, que tienen 32 micropasos, por lo que hay que multiplicar por dos los valores
#define DEFAULT_AXIS_STEPS_PER_UNIT {200, 200, 800, 190} //configuracion para drivers 1/32 8825
Otros valores copiados de skynet relacionados con la aceleración:
#define DEFAULT_MAX_FEEDRATE {400, 400, 8, 50} //skynet
#define DEFAULT_MAX_ACCELERATION { 2000, 2000, 100, 10000 } //skynet
#define DEFAULT_ACCELERATION 650 // 3000 // X, Y, Z and E acceleration for printing moves
#define DEFAULT_RETRACT_ACCELERATION 1000 // 3000 // E acceleration for retracts
#define DEFAULT_TRAVEL_ACCELERATION 1000 // 3000 // X, Y, Z acceleration for travel (non printing)
-Si tenemos configurado un sensor para el autolevel, hay que indicarlo en marlin:
#define FIX_MOUNTED_PROBE //esta linea hay que descomentarla
Estos valores indican la posición del sensor respecto al nozzle, yo lo tengo instalado detrás
#define X_PROBE_OFFSET_FROM_EXTRUDER 18 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 58 // Y offset: -front +behind [the nozzle]
-Valores sobre el sentido de los ejes:
#define INVERT_X_DIR false
#define INVERT_Y_DIR false
#define INVERT_Z_DIR true
También influye la conexión del cable de los motores, si un eje os funciona en sentido contrario, basta con apagar y girar el cable del motor afectado
-posiciones minima y maxima de cada eje:
#define X_MAX_POS 220 //valores grabados desde skynet
#define X_MIN_POS -33
#define Y_MAX_POS 220
#define Y_MIN_POS -10
#define Z_MAX_POS 240
#define Z_MIN_POS 0
-mas valores relacionados con el autolevel:
#define AUTO_BED_LEVELING_LINEAR //descomentar esta linea
-Estos son los valores de referencia minimo y maximo de cada eje para realizar el autolevel
#define LEFT_PROBE_BED_POSITION 15
#define RIGHT_PROBE_BED_POSITION 206
#define FRONT_PROBE_BED_POSITION 48
#define BACK_PROBE_BED_POSITION 197
Hay que descomentar la siguiente linea para que el homing lo haga en el centro de la cama, cuando tenemos sensor
#define Z_SAFE_HOMING
#define HOMING_FEEDRATE_Z (6*60) //valor cambiado en skynet
- para poder usar la eeprom de arduino para guardar los valores que cambiemos:
#define EEPROM_SETTINGS //descomentar la linea
- valores relacionados con las temperaturas de precalentamiento del pla y el abs:
#define PREHEAT_1_TEMP_HOTEND 190
#define PREHEAT_1_TEMP_BED 55
#define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255
#define PREHEAT_2_TEMP_HOTEND 240
#define PREHEAT_2_TEMP_BED 90
#define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255
- y ahora quedaría definir el tipo de pantalla que vamos a usar, y si tiene lector de tarjetas:
#define SDSUPPORT //descomentar la línea si tenemos lector de tarjetas
En mi caso he adquirido una pantalla full graphics smart controller, por lo tanto hay que descomentar la siguiente línea:
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
- otro apartado que he modificado es el que controla los pasos del encoder (la ruedecita), porque en lugar de ir de uno en uno al modificar un valor, saltaba 2 o 3 valores cada vez:
#define ENCODER_PULSES_PER_STEP 3
#define ENCODER_STEPS_PER_MENU_ITEM 2
#define REVERSE_ENCODER_DIRECTION
Otro punto importante tiene relación con la protección térmica que incluye marlin, porque si detecta que en un tiempo no se alcanza la temperatura requerida, se para dando un error por pantalla. Imprimiendo una pieza se me paro con el error "thermal runaway" y no queda otra que resetear la impresora.
El fichero a modificar es configuration_adv.h, y los valores los copié del skynet:
#if ENABLED(THERMAL_PROTECTION_HOTENDS)
#define THERMAL_PROTECTION_PERIOD 60 // Seconds
#define THERMAL_PROTECTION_HYSTERESIS 10 // Degrees Celsius
#if ENABLED(THERMAL_PROTECTION_BED)
#define THERMAL_PROTECTION_BED_PERIOD 60 // Seconds
#define THERMAL_PROTECTION_BED_HYSTERESIS 5 // Degrees Celsius
#define WATCH_BED_TEMP_PERIOD 180
Bueno, creo que no me dejo nada; espero que os sea útil ;)
Dejo un link para descargar los dos ficheros de configuración modificados, pero recordad que hay que adaptarlos a cada caso:
https://www.dropbox.com/sh/ikffys5d3m48j...JUBpa?dl=0