17-02-2014, 11:24 PM
Bueno voy intentar "construir" mi primer tutorial, ya que el compañero nexocomun me metió presión :zpistolas: para compartir estas piezas de mi propio sistema de autolevel que estoy ultimando para Jonas+E3D, es decir, para las máquinas de la compra conjunta jiji y de paso, me he animado a escribir el paso por paso del sistema, debido a las instrucciones algo caóticas que encontré para el sistema.
PRINCIPIO DEL TUTORIAL
PASO 0: MATERIALES
-servo de rc comprado en ebay
SERVO 9g TOWER PRO SG90
-pieza impresas, en mi caso las he diseñado yo sobre la marcha:
soporte para extrusor 3DE (e3d de 3despana) NUEVA VERSION V2!!
con ventilador de 40mm + huecos calentador (recomendadoderecha) + soporte para servo + atornillar en base jonas
brazo servo NUEVA VERSION V2!!
para endstop normal + bridas
los 2 aqui:
http://www.thingiverse.com/thing:252255
///novedad : endstop EJE X adaptado para servo
http://www.thingiverse.com/thing:260485
-bajar ESTE marlin
https://github.com/ErikZalm/Marlin
ESTE NO
https://github.com/alexborro/Marlin-BedAutoLev
ya que el segundo, que es el de las guias, no hace SAFE HOMING ( y hace el homing del eje Z con el servo FUERA de la cama, POR LO QUE CHOCARÍA LA PUNTA CON EL CRISTAL) y el primero se puede configurar que mida en 9 puntos, el segundo solo en 3
///// EDITO : PARA LOS QUE TIENEN ALGUN PROBLEMA CON EL PRIMER MARLIN, SUBO EL MIO QUE FUNCIONA PERFECTAMENTE
https://drive.google.com/file/d/0B1JDKyO...sp=sharing
////////////////////////////////////////
//ADEMAS, HE EDITADO EL FICHERO MARLIN_MAIN.CPP para evitar los problemas de choques con la cama entre pruebas
https://drive.google.com/file/d/0B1JDKyO...sp=sharing
SI USAS ESTE FICHERO MODIFICADO, SI EL VALOR FINAL DEL EJE Z TE DA POR EJEMPLO -3.80, SUMALE 1 Y QUEDARIA EN -4.80,, YA QUE LO HE MODIFICADO PARA QUE LEVANTE 1MM EN CADA MOVIMIENTO Y DEBEMOS COMPENSARLO
EMPEZAMOS
1º) MONTAJE
Con la impresora funcionando normalmente, imprimimos las 2 piezas diseñadas.
Colocamos la pieza y conectamos el ventilador. De momento ni montamos el servo ni el brazo, pero SI lo conectamos.
para conectarlo, el servo se conecta en el siguiente esquema, en los 3 pines que estan marcados como D11 y tenemos que puentear el pin marcado como 5v con vcc con un jumper, para dar corriente al servo (cable negro o marron va abajo en los servos).
NI QUE DECIR TIENE, QUE TODO ESTO, CON LA CORRIENTE DESCONECTADA
2º) COPIA DE SEGURIDAD Y PRIMERA MODIFICACIONES EN MARLIN
Hacemos una copia ENTERA en otra carpeta de nuestro firmware "por si acaso"
abrimos el firmware descargado, y vamos pasando a el todos nuestros valores de configuracion que tendremos en el fichero configuration.h (algunos estaran en otras posiciones y otros ya no estan, como los valores DELTA)
Descomentar (quitando las //) las líneaS:
#define ENABLE_AUTO_BED_LEVELING
y
#define NUM_SERVOS 3
#define SERVO_ENDSTOPS {-1, -1, 0}
#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, xxx1,xxx2}
estas ultimas las modificamos así:
#define NUM_SERVOS 1
#define SERVO_ENDSTOPS {-1, -1, 0}
#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 0,40}
la primera siginifica cuantos servos tenemos, 1
la segunda, -1 es desactivado y 0 activado, dejamos 0 en el eje z
en la tercera, el xxx1 es el servo en posicion BAJADA y xxx2 cuando SUBE (se pueden poner valores negativos)
3º) PRECARGA PRELIMINAR DEL CÓDIGO.
Cargamos el marlin.
De momento usamos el endstop que tengamos originalmente de eje Z.
Todavia NO ponemos el brazo en el servo. Abrimos un programa como REPITIER y nos conectamos a la maquina. Esto hará que el servo se encienda, y se ponga en posición 0.
Por si acaso, desde repitier, mandamos el comando
M280 P0 S0
para poner el servo en posicion 0 grados
En este momento, lo atornillamos a la máquina a la pieza (solo tiene una posición) y ponemos el brazo calculando que debe estar en posición levantada.
Una vez hecho, desde repitier, mandamos el comando
M280 P0 S40 y vemos como nos queda
Necesitamos que el brazo quede recto a la cama, asi que si no nos quedara, vamos aumentando esos grados. Ejemplo 43º:
M280 P0 S43
hasta que demos con el grado correcto. Cuando lo encontremos, lo anotamos en el firmware, sustituyendo al valor xxx2
#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 0,43}
no hace falta volver a cargar el arduino
Continuamos, levantamos el servo con el gcode
M402
4º)AJUSTES DEL SERVO
Hacemos homing, y movemos el eje x e y al centro de la cama.
Yo por ejemplo, como tengo unas distancias máximas asignadas de 180x180, mi centro es x90 y90
Hacemos con un rotulador una marca en el centro de la plataforma a donde apunte la punta del extrusor.
Ahora, todas las guias dicen que pongamos a 0 la posicion de la máquina con el comando G92, pero no es correcto, ya que si necesitamos mover en sentido negativo el eje Y o el X, no nos dejaría al ya estar en 0, asi que como lo habitual es solo mover positivamente el X , uso este código
G92 X0 Y20 Z0
Levantamos el eje Z unos 10mm.
Bajo el servo con el comando
M280 P0 S43
(43 son los grados que pusimos anteriormente)
movemos las posiciones X e Y hasta que veamos que la punta del endstop, la que se va a doblar, está encima de la marcar de la cama
En ese momento, vamos bajando poco a poco (de 1 en 1, y cuando estemos cerca de 0,1 en 0,1, hasta que oigamos que el endstop se activa (tenemos que oir el clic)
En ese momento, ejecutamos el GCODE M114
nos daría algo similar a esto:
X:24.3 Y:11.4 Z:5.1;
pues bien, como partiamos de 20, el código "de verdad" sería
X:24.3 Y:-8.6 Z:5.1; (le restamos 20)
y lo tenemos que transformar multiplicando todo x -1, con lo que quedaria
X:-24.3 Y:8.6 Z:-5.1;
anotamos el codigo
5º) CARGAMOS LOS NUEVOS VALORES EN ARDUINO
Desconectamos de repitier. Volvemos al arduino y localiza y pon con tus valores estas opciones:
#define X_PROBE_OFFSET_FROM_EXTRUDER -24.3
#define Y_PROBE_OFFSET_FROM_EXTRUDER 8.6
#define Z_PROBE_OFFSET_FROM_EXTRUDER -5.1
luego busca
#define LEFT_PROBE_BED_POSITION 30
#define RIGHT_PROBE_BED_POSITION 140
#define BACK_PROBE_BED_POSITION 140
#define FRONT_PROBE_BED_POSITION 30
que es para decirle donde mide la máquina, de momento estos valores son conservadores, luego cuando todo vaya bien se puede ir más al borde, por ejemplo:
#define LEFT_PROBE_BED_POSITION 10
#define RIGHT_PROBE_BED_POSITION 170
#define BACK_PROBE_BED_POSITION 170
#define FRONT_PROBE_BED_POSITION 10
busca y modifica
#define XY_TRAVEL_SPEED 6000
es la velocidad a la que hace las pruebas
#define Z_RAISE_BEFORE_PROBING 6
#define Z_RAISE_BETWEEN_PROBINGS 6
lo que tiene que levantar cada vez que haga una prueba
y luego que no se dice en guias
#define PROBE_SERVO_DEACTIVATION_DELAY 300
para que se apague el servo al terminar
#define Z_SAFE_HOMING
todo activado y descomentado, para que haga el z en el centro de la cama y no fuera
#define ACCURATE_BED_LEVELING
lo mismo
#define ACCURATE_BED_LEVELING_POINTS 3
para que haga 9 puntos de prueba, mas es tonteria.
6º) ÚLTIMA MODIFICACIÓN PARA IMPRIMIR : GCODE
listo! carga el marlin, conecta con repitier y manda los codigos:
M401 para bajar
M402 para subir
ASI COMPROBAMOS QUE TODO FUNCIONA CORRECTAMENTE
para imprimir usando los servos, es necesario añadir este gcode sustituyendo al principio del gcode cuando se manda el codigo g28
G28 ; home con safehoming
G29 ; realizar prueba 9 puntos
G1 Z5 F5000 ; llevantar nozzle
///EDITO: SI POR ALGUNA RAZÓN QUEREIS SUBIR O BAJAR LA ALTURA AL CRISTAL DESPUES DE CALIBRAR TODO,
#define Z_PROBE_OFFSET_FROM_EXTRUDER -5.1
si descendemos el valor (-5) , la altura al cristal aumenta,, y si lo aumentamos (-5.2) disminuye
/////
y a imprimir!!!
PRINCIPIO DEL TUTORIAL
PASO 0: MATERIALES
-servo de rc comprado en ebay
SERVO 9g TOWER PRO SG90
-pieza impresas, en mi caso las he diseñado yo sobre la marcha:
soporte para extrusor 3DE (e3d de 3despana) NUEVA VERSION V2!!
con ventilador de 40mm + huecos calentador (recomendadoderecha) + soporte para servo + atornillar en base jonas
brazo servo NUEVA VERSION V2!!
para endstop normal + bridas
los 2 aqui:
http://www.thingiverse.com/thing:252255
///novedad : endstop EJE X adaptado para servo
http://www.thingiverse.com/thing:260485
-bajar ESTE marlin
https://github.com/ErikZalm/Marlin
ESTE NO
https://github.com/alexborro/Marlin-BedAutoLev
ya que el segundo, que es el de las guias, no hace SAFE HOMING ( y hace el homing del eje Z con el servo FUERA de la cama, POR LO QUE CHOCARÍA LA PUNTA CON EL CRISTAL) y el primero se puede configurar que mida en 9 puntos, el segundo solo en 3
///// EDITO : PARA LOS QUE TIENEN ALGUN PROBLEMA CON EL PRIMER MARLIN, SUBO EL MIO QUE FUNCIONA PERFECTAMENTE
https://drive.google.com/file/d/0B1JDKyO...sp=sharing
////////////////////////////////////////
//ADEMAS, HE EDITADO EL FICHERO MARLIN_MAIN.CPP para evitar los problemas de choques con la cama entre pruebas
https://drive.google.com/file/d/0B1JDKyO...sp=sharing
SI USAS ESTE FICHERO MODIFICADO, SI EL VALOR FINAL DEL EJE Z TE DA POR EJEMPLO -3.80, SUMALE 1 Y QUEDARIA EN -4.80,, YA QUE LO HE MODIFICADO PARA QUE LEVANTE 1MM EN CADA MOVIMIENTO Y DEBEMOS COMPENSARLO
EMPEZAMOS
1º) MONTAJE
Con la impresora funcionando normalmente, imprimimos las 2 piezas diseñadas.
Colocamos la pieza y conectamos el ventilador. De momento ni montamos el servo ni el brazo, pero SI lo conectamos.
para conectarlo, el servo se conecta en el siguiente esquema, en los 3 pines que estan marcados como D11 y tenemos que puentear el pin marcado como 5v con vcc con un jumper, para dar corriente al servo (cable negro o marron va abajo en los servos).
NI QUE DECIR TIENE, QUE TODO ESTO, CON LA CORRIENTE DESCONECTADA
2º) COPIA DE SEGURIDAD Y PRIMERA MODIFICACIONES EN MARLIN
Hacemos una copia ENTERA en otra carpeta de nuestro firmware "por si acaso"
abrimos el firmware descargado, y vamos pasando a el todos nuestros valores de configuracion que tendremos en el fichero configuration.h (algunos estaran en otras posiciones y otros ya no estan, como los valores DELTA)
Descomentar (quitando las //) las líneaS:
#define ENABLE_AUTO_BED_LEVELING
y
#define NUM_SERVOS 3
#define SERVO_ENDSTOPS {-1, -1, 0}
#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, xxx1,xxx2}
estas ultimas las modificamos así:
#define NUM_SERVOS 1
#define SERVO_ENDSTOPS {-1, -1, 0}
#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 0,40}
la primera siginifica cuantos servos tenemos, 1
la segunda, -1 es desactivado y 0 activado, dejamos 0 en el eje z
en la tercera, el xxx1 es el servo en posicion BAJADA y xxx2 cuando SUBE (se pueden poner valores negativos)
3º) PRECARGA PRELIMINAR DEL CÓDIGO.
Cargamos el marlin.
De momento usamos el endstop que tengamos originalmente de eje Z.
Todavia NO ponemos el brazo en el servo. Abrimos un programa como REPITIER y nos conectamos a la maquina. Esto hará que el servo se encienda, y se ponga en posición 0.
Por si acaso, desde repitier, mandamos el comando
M280 P0 S0
para poner el servo en posicion 0 grados
En este momento, lo atornillamos a la máquina a la pieza (solo tiene una posición) y ponemos el brazo calculando que debe estar en posición levantada.
Una vez hecho, desde repitier, mandamos el comando
M280 P0 S40 y vemos como nos queda
Necesitamos que el brazo quede recto a la cama, asi que si no nos quedara, vamos aumentando esos grados. Ejemplo 43º:
M280 P0 S43
hasta que demos con el grado correcto. Cuando lo encontremos, lo anotamos en el firmware, sustituyendo al valor xxx2
#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 0,43}
no hace falta volver a cargar el arduino
Continuamos, levantamos el servo con el gcode
M402
4º)AJUSTES DEL SERVO
Hacemos homing, y movemos el eje x e y al centro de la cama.
Yo por ejemplo, como tengo unas distancias máximas asignadas de 180x180, mi centro es x90 y90
Hacemos con un rotulador una marca en el centro de la plataforma a donde apunte la punta del extrusor.
Ahora, todas las guias dicen que pongamos a 0 la posicion de la máquina con el comando G92, pero no es correcto, ya que si necesitamos mover en sentido negativo el eje Y o el X, no nos dejaría al ya estar en 0, asi que como lo habitual es solo mover positivamente el X , uso este código
G92 X0 Y20 Z0
Levantamos el eje Z unos 10mm.
Bajo el servo con el comando
M280 P0 S43
(43 son los grados que pusimos anteriormente)
movemos las posiciones X e Y hasta que veamos que la punta del endstop, la que se va a doblar, está encima de la marcar de la cama
En ese momento, vamos bajando poco a poco (de 1 en 1, y cuando estemos cerca de 0,1 en 0,1, hasta que oigamos que el endstop se activa (tenemos que oir el clic)
En ese momento, ejecutamos el GCODE M114
nos daría algo similar a esto:
X:24.3 Y:11.4 Z:5.1;
pues bien, como partiamos de 20, el código "de verdad" sería
X:24.3 Y:-8.6 Z:5.1; (le restamos 20)
y lo tenemos que transformar multiplicando todo x -1, con lo que quedaria
X:-24.3 Y:8.6 Z:-5.1;
anotamos el codigo
5º) CARGAMOS LOS NUEVOS VALORES EN ARDUINO
Desconectamos de repitier. Volvemos al arduino y localiza y pon con tus valores estas opciones:
#define X_PROBE_OFFSET_FROM_EXTRUDER -24.3
#define Y_PROBE_OFFSET_FROM_EXTRUDER 8.6
#define Z_PROBE_OFFSET_FROM_EXTRUDER -5.1
luego busca
#define LEFT_PROBE_BED_POSITION 30
#define RIGHT_PROBE_BED_POSITION 140
#define BACK_PROBE_BED_POSITION 140
#define FRONT_PROBE_BED_POSITION 30
que es para decirle donde mide la máquina, de momento estos valores son conservadores, luego cuando todo vaya bien se puede ir más al borde, por ejemplo:
#define LEFT_PROBE_BED_POSITION 10
#define RIGHT_PROBE_BED_POSITION 170
#define BACK_PROBE_BED_POSITION 170
#define FRONT_PROBE_BED_POSITION 10
busca y modifica
#define XY_TRAVEL_SPEED 6000
es la velocidad a la que hace las pruebas
#define Z_RAISE_BEFORE_PROBING 6
#define Z_RAISE_BETWEEN_PROBINGS 6
lo que tiene que levantar cada vez que haga una prueba
y luego que no se dice en guias
#define PROBE_SERVO_DEACTIVATION_DELAY 300
para que se apague el servo al terminar
#define Z_SAFE_HOMING
todo activado y descomentado, para que haga el z en el centro de la cama y no fuera
#define ACCURATE_BED_LEVELING
lo mismo
#define ACCURATE_BED_LEVELING_POINTS 3
para que haga 9 puntos de prueba, mas es tonteria.
6º) ÚLTIMA MODIFICACIÓN PARA IMPRIMIR : GCODE
listo! carga el marlin, conecta con repitier y manda los codigos:
M401 para bajar
M402 para subir
ASI COMPROBAMOS QUE TODO FUNCIONA CORRECTAMENTE
para imprimir usando los servos, es necesario añadir este gcode sustituyendo al principio del gcode cuando se manda el codigo g28
G28 ; home con safehoming
G29 ; realizar prueba 9 puntos
G1 Z5 F5000 ; llevantar nozzle
///EDITO: SI POR ALGUNA RAZÓN QUEREIS SUBIR O BAJAR LA ALTURA AL CRISTAL DESPUES DE CALIBRAR TODO,
#define Z_PROBE_OFFSET_FROM_EXTRUDER -5.1
si descendemos el valor (-5) , la altura al cristal aumenta,, y si lo aumentamos (-5.2) disminuye
/////
y a imprimir!!!
Canal de Youtube:
https://www.youtube.com/c/JuanCarlos_3design
Patreon:
https://www.patreon.com/jc3design
https://www.youtube.com/c/JuanCarlos_3design
Patreon:
https://www.patreon.com/jc3design