Integrando el AFC a KLIPPER
CONFIGURANDO EL AFC:
Ahora concentraremos nuestros esfuerzos en integrar el AFC a nuestra impresora 3D con Klipper, para ello, necesitamos nuestro AFC completamente ensamblado, cabe señalar que este tutorial esta hecho para integrar el AFC version maker, es decir, el AFC que no tiene circuitos electrónicos integrados y que debemos utilizar nuestra tarjeta base de la impresora, para que esto pueda ser posible es necesario que nuestra tarjeta tenga un slot extra para un driver de motor de pasos, así como puertos para conectar un sensor tipo home y un servo. (el servo al ser de alta corriente necesita su fuente de alimentación independiente).

Si no quieres batallar con todo esto, te recomiendo obtener la nueva versión del AFC STAND ALONE, que ya se conecta por USB a tu servidor de Klipper, solo hay que configurarlo y queda listo para imprimir!!
klipper

INTEGRAR CON KLIPPER

La configuración consiste en una serie de macros que vamos a agregar a nuestro archivo de configuración (normalmente llamado printer.cfg), en el cual le decimos a Klipper que ahora tiene agregado un nuevo motor de pasos, un servo y un sensor de final de carrera, debido a que hay muchos modelos de tarjetas universales desde la clasica RAMPS 1.4 hasta las Makerbase, Bigthreetech etc, seria muy extenso abordarlas todas, vamos a enfocar el tutorial a la conexión hacia los pines disponibles, ya es tarea tuya averiguar que pines disponibles tiene tu tarjeta y configurarlos en las macros que vamos a ver a continuación, no te preocupes, te explico ahora como poder identificar los pines disponibles en tu tarjeta usando como ejemplo la RAMPS 1.4.
1.- Aquí podemos ver el pinout de una RAMPS 1.4, si miras con atención verás que en la descripción de los pines se ve su equivalencia con la placa arduino mega, D2, D3, D5, A3, A4, etc, esa referencia corresponde a cada pin usado del microcontrolador.



 
2.- En la imagen anterior se observan las referencias de los pines hacia la placa arduino, en esta imagen también se muestran dichas referencias, además, otras referencias que apuntan a el nombre de cada pin del microcontrolador, (no de la placa arduino, por ejemplo: el pin D13 de la placa arduino es en realidad el pin PB7 del microcontrolador, para configurar nuestras macros, vamos a utilizar los nombres de los pines del microcontrolador.

3.- Observa esta pieza de código de una macro que configura el movimiento del eje Z de la impresora.
Esta es la manera en la que vamos a escribir las macros para configurar el AFC, observa que el pin que se usa para controlar el step del motor es el pin PL3, que en nuestra palca arduino seria el pin: D46, es posible que exista algún comando que permita aceptar las referencias de arduino en el archivo de configuración, pero como no me lo se, entonces usaremos las referencias del microcontrolador, si continuamos viendo el ejemplo de código, observaremos que en algunos casos se ven pines con el signo " ! " al inicio de la declaración, esto configura el pin con el estado inverso.      


Crear objetos y verificar configuración del extrusor:
Le digo crear objetos como en otros lenguajes de programación solo para hacer una referencia, lo que vamos a hacer es decirle a KLIPPER que nuevo hardware tendrá conectado (aún no le decimos como lo va a controlar) solo le haremos saber que ahora tiene otro motor de pasos y un servo (en este caso el motor del extrusor es el mismo y se quedará igual)
4.-  Lo primero que vamos a declarar, será el motor de pasos que moverá el husillo de la prensa (para posicionarnos en el filamento deseado) .
Ahora describiremos que es casa línea:

47: Es el nombre de la macro que vamos a crear, siempre va entre corchetes.

48: Indicamos que pin se encargará de la señal step, en este caso es PC1, pero tu puedes seleccionar el que mas te convenga de acuerdo a tu tarjeta de control.

49: Especifica el pin que va a controlar la dirección del motor. 

50: Especifica el pin que controlará la función "enable" del driver del motor.

51: Aquí se configuran los micropasos a los que el driver está ajustado, en este caso 8 micropasos, (personalmente es donde yo he encontrado mejor relación entre velocidad, precisión  y fuerza en los motores, todo lo configuro a 8 micropasos)

52: Rotation_distance configura "los pasos por milímetro" pero en Klipper no se especifica igual que en Marlin, en el website de Klipper puedes encontrar mas detalles sobre este parámetro, en este caso, como el acoplamiento del husillo es directo al eje del motor, es fácil calcular este parámetro:

rotation_distance = paso del husillo  X  numero de hilos separados


Para los husillos T8 que normalmente se usan en estas máquinas, tenemos un paso de 2mm y 4 cuerdas, entonces el valor a utilizar es 8.

53: Endstop_pin, especifica el pin a utilizar para el sensor de home del AFC, en este caso es el pin: ^PD3, el símbolo al inicio de la declaración le dice a Klipper que el pullup de la entrada debe estar activo. (si no le especificas esto no va a funcionar)

54: Position_endstop, configura la posición física del limit switch dentro del recorrido de la prensa, como en este caso está al inicio se configura en 0.

55 y 56: No les hagas caso, no se utilizan.

57: Homing_speed, es la velocidad que se utiliza para hacer el home del AFC, aunque en realidad se usa otro método para hacer el home, igual configúrala en 80 por si acaso.

 Nota: Según entiendo puedes declarar estas macros en cualquier parte del archivo de configuración, esta macro yo la declaré entre la configuración del eje Z y el Extruder.
5.- Verificar la configuración actual de tu extrusor, ésta es al configuración de extrusor que usa el AFC ajustada a los engranes de extrusión con el que se diseñó, si tu impresora tiene otra configuración de pasos por milímetro por ejemplo, debes hacer el cambio en el hardware (cambiar jumpers etc) para que funcione, ajustar rotation_distance, etc.

También deberás agregar las líneas 60 y 61, que permiten que tu extrusor de avances mas largos, esto para poder mover el filamento largas distancias.

Es recomendable que, si vas a hacer cambios en la configuración original de tu extrusor, antes que nada, realices un respaldo de tus archivos de configuración, de esa manera, siempre podrás volver al punto inicial.
6.- Crea la macro que habilita el servo de la prensa.
Igual que en las anteriores, debe tener un nombre, el inicio del nombre "servo" le dice a Klipper que estas creando una configuración para controlar un servo, lo siguiente sería el nombre del objeto, éste puede tener cualquier nombre pero te recomiendo que lo hagas exactamente como se muestra en el ejemplo, ya que otras macros van a llamar a este objeto y si no coinciden los nombres éste no va a funcionar.

 210: especifica el pin donde se generará el pulso PWM para controlar el servo, trata de que el pin seleccionado soporte PWM. 

 213: Maximum_servo_angle: Especifica el ángulo máximo que se permite mover al servo, lo vamos a configurar en 180.

216: Minimum_pulse_width: Refiere a los anchos de pulso que deberá tener la señal PWM para controlar el servo, normalmente los valores por default nos sirven, aquí pondremos 0.001.

219: Maximum_pulse_width: Refiere al ancho de pulso mas amplio permitido, lo dejaremos en 0.002.

223: Initial_angle: Es el ángulo que el servo tomará al momento de iniciar el sistema. lo vamos a configurar en 180, para que la prensa siempre esté libre de tensión.
Alt Text
7.- Una vez creados los objetos, es momento de escribir las macros que interactuarán con el código G para cambiar los colores hacer home al AFC y todo lo demás, primero, haremos macros básicas para interactuar con los objetos, luego, haremos macros mas especificas para controlar funciones.
por ejemplo, en la imagen de arriba se muestran dos macros, las encargadas de abrir y cerrar la prensa, (si no usáramos las macros tendríamos que escribir SET_SERVO.. bla bla bla, todas las veces que quisiéramos mover la prensa), es decir a nosotros no nos interesa mover un servo, nos interesa abrir o cerrar una prensa, me explico?


PRESS_DOWN: Al ejecutar esta macro el servo cierra la prensa, observa que para hacerlo le decimos a Klipper que mueva el servo a la posición 180.


PRESS_UP: Realiza la operación de mover el servo a la posición 117, (grados),  lo que trato de explicar es que: Nosotros no diremos: Klipper, mueve el servo a la posición 117, si no que solo daremos una instrucción, Klipper, abre la prensa, o Klipper, cierra la prensa, de esa forma, si hay que hacer un cambio, por ejemplo en el ángulo de apertura,  solo lo haremos en la macro principal y no en todas las macros donde se ocupe mover el servo.

Nota: G4 P500 es un retraso  de tiempo que se aplica para permitir que el servo llegue a la posición deseada antes de ejecutar el siguiente comando.

 
8.-  Función AFC_HOME
Con esta macro movemos el carro con la prensa a una posición inicial, esto es importante para luego poder posicionarnos sobre el filamento deseado.

Observa que en la línea 248 escribimos un comando: MANUAL_STEPPER.. bla bla bla, y en la siguiente línea solo escribimos PRESS_UP, es lo lindo de las macros, que ya solo tenemos que llamarlas por su nombre y ejecutan un montón de comandos por nosotros, al final, solo le diremos a Klipper instrucciones como: T1, T2, T3.. para posicionarnos en el filamento deseado, pero, para llegar a ello, hay que hacer este trabajo.. continuemos. 
                                                            
 Este sitio se mantiene gracias a tus donaciones, muchas gracias por apoyar             contenido educativo de calidad para todos!
logo-tiktok-chatgpt.png
9.-  Macros AFC
En la imagen de arriba puedes ver 5 macros que en general son iguales, solo cambia el parámetro MOVE, cada una de estas macros posiciona la prensa sobre el filamento seleccionado, ya hemos creado macros de mas alto nivel para mover el carro de la prensa, moviendo el servo para liberar la presión sobre el filamento anterior y movernos con libertad, vez como se va haciendo mas fácil.

Ahora si le decimos a Klipper AFC_2, automaticamente liberará la prensa y moverá el husillo a la posición 28 y bajará la prensa para usar el filamento 2.  

¿Necesitas imprimir las partes para este proyecto?.

10.- Funciones para cambio de herramienta: Hasta aquí ya tenemos las funciones necesarias para controlar nuestro AFC, pero: ¿Cómo le hacemos para que "se mueva" solo cuando el código requiere un cambio de filamento? Pues, simple! Vamos a crear otro juego de macros que relacionará las peticiones de cambio de herramienta con las macros que ya hicimos para mover el carro del AFC entonces, nuestras nuevas macros se van a llamar T1, T2, T3, T4 y T5 dentro de dichas macros haremos una llamada a las macros que hicimos en el paso 9 de este tutorial y listo. Dentro de las macros que realizan los cambios de filamento debemos incluir TODO lo que necesitamos que la impresora tiene que hacer para cambiar el filamento de manera satisfactoria, pre purgas, movimientos, etc, en esta guía verás que dentro de las macros en cuestión, se encuentra una llamada a otra macro llamada PRINT_LOAD, ésta macro posiciona la impresora en un sitio determinado para hacer las purgas, descarga del filamento y carga de éste con nuevo color. Obviamente si existe una macro llamada PRINT_LOAD, deberá existir otra llamada PRINT_UNLOAD, pero, la macro de descarga la mandaremos llamar desde ORCASLICER, se ejecuta cuando el filamento se termina de usar.








 
11.- Macro PRINT_LOAD:
Esta macro se encarga de posicionar el HOT END en una posición segura para la carga de filamento, la macro se utiliza al inicio de la impresión y cada que se realiza un cambio de filamento, si observas en la imagen de la izquierda, cada que se realiza un cambio de herramienta (T1,T2,T...) se llama a la macro que mueve el carro del AFC seguido de la macro PRINT_LOAD (que es ésta que estamos describiendo).

Observando el código vemos que en las líneas 293 y 294 posicionamos el hot end en una determinada coordenada, normalmente una zona no utilizada de la impresora pues ahí se harán las cargas y descargas de filamento, tu debes seleccionar la zona mas adecuada de acuerdo a la impresora que tangas. (si estas construyendo tu propia impresora, toma en cuenta esta zona, de preferencia lejos de la placa de impresión te ahorraras muchos problemas).

La Línea 295 (M106 S255) después de posicionar el hot end encendemos el ventilador de capa a máxima potencia, esto hará que el filamento se solidifique cuando hagamos una purga, lo que "en teoría" lo suelta de la boquilla, en la practica suele funcionar y a veces no, tu puedes elegir si lo ejecutas o no dependiendo el comportamiento de tu máquina.

       AQUÍ VIENE LO BUENO, PON ATENCIÓN:
Línea 296, le dice al extrusor que su posición es 0, esto para mover una determinada cantidad de filamento, recuerda que vamos a cargar filamento y hay que moverlo hasta el hot end o hasta el extrusor directo dependiendo el caso ( este tutorial se realizó en una máquina bowden) pero no creo que tengas problema para hacerlo en un direct drive.

Ahora, línea 297, mueve una grán cantidad de filamento hasta la ENTRADA del hot end y lo hace a una gran velocidad de otra forma se tardaría mucho, ahora bien, ¿ como determinamos la distancia a recorrer?, bueno hay muchas maneras, la mas fácil es:
1.- Determinar el punto de salida de tu filamento (recomiendo la entrada del splitter)
2.- Calentar el hot end para que la impresora te permita mover el filamento.
3.- Mover el filamento de manera manual (no con la mano sino desde la interfaz de klipper), avanza en pasos de 100mm o lo que tu creas conveniente, pero eso si, cada movimiento debe ser igual al anterior (pasos de 100mm por ejemplo). El objetivo es obtener la distancia que debe recorrer el filamento desde el punto de salida hasta la entrada del hot end o hasta el punto final deseado, deberás ir sumando cada distancia recorrida hasta obtener la distancia final.
4.- La distancia que resulte la vas a actualizar en la línea 297 , G1 E750 F10000, entonces digamos que tu distancia es 300, actualiza la línea con el nuevo dato:   G1 E300 F10000, obviamente esto te dará un aproximado, deberás hacer correcciones para afinar el movimiento, pero es parte de la diversión.

La línea 299, hace un movimiento del filamento más lento, esto es para introducirlo ya en el hot end hasta llegar a la boquilla, tu deberás experimentar cual distancia es la más adecuada para tu máquina, hay hot ends mas largos otros mas cortos, estos parámetros los irás afinando conforme empiece a funcionar la máquina, la observación es muy importante!







 
12.- Macro PRINT_UNLOAD: ( La puse más grande por que aquí es donde pasa la magia)
La combinación de temperatura del filamento, velocidad, y cantidad de filamento extruido son necesarias para crear buenas puntas en el filamento al momento de extraerlo del hot end, también la calidad del filamento, sin duda extraer el filamento sin tener que cortarlo es un arte, pero puede lograrse fácilmente experimentando, en éste caso, en la línea 310 el filamento se empuja 15 milímetros para realizar una pequeña salida, esto hace que el material derretido sea expulsado y nuevo material entra a la parte caliente empezando a fundirse, pero antes que eso suceda lo extraemos rápidamente, en la línea 313 observa que la velocidad es alta, esto hace que el filamento se rompa sin darle tiempo de que se estire, obviamente es un proceso no muy estable pero funciona, tu deberás experimentar que distancia de purgado te funciona mejor, si no quieres quebrarte la cabeza con este método puedes implementar un cortador de filamento, purgar todo el hot end en cada cambio de color. 
Integración con ORCASLICER
13.- Del lado de ORCASLICER podemos ver los filamentos disponibles, del lado izquierdo de cada filamento esta un número, éste numero es el tool asignado a cada filamento en este caso, el filamento negro es el 1, esto significa que el código generado lo reconocerá como T0, éste comando se envía a klipper, recuerdas las macros anteriores? bueno aquí es donde  funcionan, cuando el código envía éste comando las macros lo reciben y actúan moviendo el AFC al filamento deseado.

El color rojo tiene asignado el numero 2, entonces le corresponde el T1 y asi sucesivamente con los demás filamentos.
14.- En la configuración de cada filamento, en la pestaña de Avanzado, podemos configurar parámetros especiales para el filamento en cuestión como es una temperatura adecuada (M104 S240) en este caso, si observas, existen dos áreas para configurar, un código se ejecutará al iniciar el uso del filamento y el otro al terminar.
Nosotros podemos aprovechar esto para ejecutar código por ejemplo, al empezar el uso del filamento deseo que éste este a cierta temperatura.

Cuando este filamento se termina de usar, observa que ejecutamos el comando PRINT_UNLOAD, que es una macro que escribimos en klipper, ésto ejecuta la descarga personalizada del filamento.

Estos códigos se ejecutarán cada vez que el filamento sea cargado y descargado.
Hasta aquí terminamos este tutorial! si tienes dudas por favor mándame un mail o revisa en mi canal de tiktok actualizaciones o videos referentes al AFC
HAPPY COLOR PRINTS!

Acerca de

Image

Diseñamos y desarrollamos soluciones tecnológicas para entornos industriales y de laboratorio. Con más de 15 años de experiencia en integración de sistemas, nos especializamos en la creación de equipos de testing, monitoreo automatizado y servicios de impresión 3D profesional.

🔧 Tecnología hecha a medida
📊 Resultados confiables
📈 Soporte técnico directo

servicios

  • 🔋 Desarrollo de Testers Industriales.

  • 🧪Equipos de Prueba para Laboratorios.

  • 🚀Soluciones a medida en Testing y Monitoreo.

  • 🖨️Impresión 3D Profesional.

subscribete

Mantente al pendiente de todas nuestras notificaciones.