Bigtreetech Manta + EBB Toolhead
Con el uso de Klipper cada vez más extendido, los fabricantes están invirtiendo en soluciones centradas en él.
Un ejemplo claro es Bigtreetech con su serie Manta donde tenemos una electrónica de primer nivel al que podemos integrar un módulo CM4 para poder instalar Klipper en él y gestionar nuestra electrónica.
Otra funcionalidad que en ocasiones nos puede simplificar el cableado de nuestra máquina o expandir esta es CANbus.
Esto es un comentario a nivel personal:
El uso de CANbus se ha extendido pero aún así y aún con las mejoras implementadas por Klipper suele ser un proceso que puede ser complejo y añade más puntos de fallo.
Personalmente, y siempre que es posible, utilizamos los módulos EBB o similares mediante una conexión USB en lugar de CANbus, obviamente utilizando un cable USB de calidad hecho en silicona para que la flexibilidad y soporte a altas temaperatura no lo dañen, además de dos de alimentación.
De esta forma tratamos nuestro EBB como cualquier otra electrónica por USB sin tener que entrar en configuraciones de Klipper y el sistema operativo que compliquen aún más nuestra instalación, algo que vemos constantemente en los usuarios que intentan implementar CANbus ya sea en la puesta en marcha, la gestión o fallos que suceden al tenerlo.
El uso de USB en lugar de CANbus tiene otros beneficios os aconsejamos leer el siguiente post de RatOS que es más que interesante y que en lineas generales estamos totalmente de acuerdo con lo que comentan.
En esta guía os mostraremos el proceso para tener nuestra Manta (M8P v1.1 o superior) con un módulo CM1 (compatible con esta electrónica y el zócalo CM4 de esta) con Klipper y posteriormente usar un módulo EBB SB2240 conectada directamente a nuestra M8P.
La siguiente guía debería de ser similar para otras electrónicas de la serie Manta y otros toolheads CAN realizando en cada caso los ajustes aconsejados por el fabricante.
Es importante recordar que NO todas las electrónicas de la serie Manta tienen las conexiones CAN disponisbles para ser usadas:
Manta M8P v1.0 no dispone de estas mientras que la v1.1 y v2.0 si.
Conexiones
Sugerencias sobre el cableado CAN:
La impedancia de los cables CAN debe ser de unos 120 ohms (+- 10%), para facilitar esto el cable utilizado tiene que tener una baja resistencia para mantener el umbral requerido por los receptores junto con los terminadores resistivos del bus
La sección del cable debería de ser >= 0.22mm2
Es aconsejable que el par de cables usados para la comunicación CAN sean trenzados o incluso en según que condiciones que estos tengan protección con un mallado extra en el cable
Es importante encontrar la combinación adecuada entre el bitrate y la longitud del cable, al final de la guía tenéis más información al respecto
Dado que el cableado va a estar en unas condiciones de temperatura y movimientos especiles en una impresora 3D se aconseja usar un cableado que sea relativamente flexible y aguante temperatura... cables PTFE suelen ser aconsejables
Comenzaremos por cablear nuestra M8P y nuestro EBB usando la interfaz CAN que tenemos en nuestra M8P:
En el caso de la M8P, y dado que durante el proceso alimentaremos la electrónica mediante USB, colocaremos el jumper V_USB tal como puedes ver en la siguiente imagen. Es aconsejable el uso de una alimentación
En nuestro módulo EBB SB2240, si dispones de otro toolhead mira las características del fabricante
Conectaremos mediante USB nuestra EBB con la M8P
Finalmente, conectaremos cables CAN en el orden correcto
Solamente tenemos que conectar los dos cables del CanBus dejando los dos de alimentación sin conectar y correctamente protegidos para que no hagan contacto entre si ni con ninguna parte metálica.
Instalando el firmware Klipper en nuestro módulo CB1
A continuación procederemos a instalar el sistema Klipper en nuestro módulo CB1, tenemos dos opciones:
Usar la distribución genérica de Bigtreetech
Utilizando RatOS que tiene algunas ventajas, y desventajas dependiendo de tu nivel de conocimientos en Klipper, como la pre-instalación de varios componentes, compatibilidad con varias electrónicas e impresoras con pre configurados y macros por defecto.
Una vez descargada la distribución de Klipper que más nos guste, emplearemos Raspberry Pi Imager o balenaEtcher para transferir la imagen de Klipper a nuestra tarjeta SD. Es aconsejable una tarjeta de al menos 16-32Gb. Para esta guía usaremos RatOS que es la distribución de Klipper que solemos usar normalmente.
Una vez finalizado el proceso y desde el explorador de nuestro ordenador accederemos a nuestra SD donde tendremos una partición llamada BOOT. En esta encontraremos un fichero system.cfg
Abriremos nuestro system.cfg con un editor de textos, importante usar uno específico para programación como Notepad++, Visual Studio Code, Sublime... Y ajustaremos las configuraciones de nuestra WiFi. Básicamente, cambiaremos Your SSID por el nombre de nuestra red WiFi y cambiaremos Your Password por la contraseña que utilicemos en nuestra WiFi.
Arrancando nuestra M8p+CB1 y accediendo a Klipper
Ahora que ya tenemos nuestra SD lista con nuestra distribución de Klipper y nuestros datos WiFi configurados es el momento de insertar la SD en nuestra M8P.
Es importante instalar la SD en el zócalo SOC-CARD
Encenderemos nuestra M8P empleando el cable USB, es aconsejable el uso de un cargador con cierta potencia en A, y esperaremos unos minutos para que el sistema arranque y se conecte a nuestra WiFi.
Para poder encontrar la IP de nuestra M8P podemos usar Fing que es una aplicación multiplataforma que nos escaneará y listará todos los dispositivos de nuestra red. Debería aparecer con el nombre de host BTT-CB1 (en el caso de utilizar la imagen CB1) o ratos (si utilizamos la imagen CB1 de RatOS).
En el caso que no encontremos la IP conectaremos la SD de nuevo a nuestro ordenador y revisaremos el fichero system.cfg en busca de cualquier fallo al añadir nuestros datos WiFi.
Una vez identificada nuestra IP iremos a nuestro navegador y la usaremos para acceder a la interfaz web de Klipper... os aconsejamos que lo primero a hacer sea una actualización de todos los componentes de Klipper:
Creando nuestro firmware Klipper para nuestras electrónicas y ajustando CAN
Una vez que ya tenemos nuestro sistema Klipper actualizado toca empezar con los ajustes de Klipper.
Para ello vamos a necesitar conectarnos al terminal SSH de nuestro Klipper mediante nuestra IP, os sugerimos usar Terminus o PuttY para conectarnos mediante SSH.
Ajustes comunicación CAN
Vamos a iniciar el proceso ajustando nuestra configuración del interfaz de comunicación CAN para nuestro host Klipper. Para ello y desde el terminal SSH lanzaremos el siguiente comando:
Nano es un editor de textos en línea de comandos y deberemos añadir/actualizar el contenido de la configuración de nuestro can0 de la siguiente manera:
Usando CTRL+X y Y y ENTER guardaremos los cambios
Una vez realizado el cambio reiniciaremos nuestra CB1:
Preparando nuestra M8P
Para crear nuestro firmware Klipper para nuestra M8P realizaremos los siguientes pasos.
De nuevo desde el terminal SSH lanzaremos el configurador de firmware Klipper:
Ajustaremos las opciones tal como vemos en la siguiente imagen pulsando la tecla Q y guardaremos los ajustes:
Este ejemplo es para una M8P v1.0/1.1, si tienes otro modelo de elctrónica revisa las configuraciones específicas de tu electrónica.
lanzamos la build del firmware con el siguiente comando:
si todo ha ido bien nos habrá quedado un fichero out/klipper.bin que será nuestro firmware para nuestra M8P
Aplicando el firmware Klipper a nuestra M8P mediante DFU
Ahora que ya tenemos nuestro firmware Klipper generado para nuestra M8P y configurado para usar comunicación CAN mediante Bridge USB (la electrónica hace de transceiver CAN para Klipper en lugar de usar uno externo USB conectado al host como el UTOC (Mellow) o U2C (Bigtreetech)).
El siguiente paso será aplicar el firmware a la electrónica. Para ello utilizaremos el modo DFU de estas electrónicas para hacerlo sin salir de nuestro entorno SSH.
Primero pondremos nuestra M8P en modo DFU pulsando el botón BOOT0 y RESET a la vez
desde el terminal SSH lanzaremos el siguiente comando que nos listará todos los dispositivos USB conectados:
del listado escogeremos el ID de nuestra M8P, normalmente 0483:df11
con el ID anterior lanzaremos el siguiente comando, donde debemos ajustar el ID en FLASH_DEVICE, aplicaremos nuestro firmware a la M8P
Aunque veamos algunos errores lo importante es que el proceso marcado en el recuadro verde esté correcto.
Una vez aplicado el firmware pulsaremos el botón RESET de nuestra M8P
si todo ha ido bien ya podremos obtener el UUID CAN de nuestra M8P, para ello volveremos a conectarnos por terminal SSH y lanzaremos el siguiente comando y anotaremos nuestro UUID:
Es aconsejable revisar que nuestro interfaz CAN se encuentre levantando.
Podemos verificar el interfaz can0 manualmente ejecutando:
Si diera error podemos intentar levantar el interfaz con:
En el caso que no se levante nuestro interfaz de forma automática
revisaremos el contenido del fichero de configuración, con el editor nano por ejemplo,
/etc/network/interfaces
este debería de contener algo parecido a lo siguiente si queremos que cargue nuestras configuraciones anteriores:## Include files from /etc/network/interfaces.d:
source /etc/network/interfaces.d/*
En caso que lo anterior este correcto, incluyendo temas de cableado y firmware, pero aún así no se levante correctamente nuestro interfaz os aconsejamos revisar el log de sistema y dmesg. Es importante revisar el orden de arranque de los dispositivos y de la interfaz, en ocasiones se hace la carga de la interfaz y a posteriori los drivers o soporte de los dispositivos relacionados haciendo que no sea posible levantar el interfaz de forma correcta. En estos casos y dado que controlar el orden de arranque de dispositivos y opciones de sistema suele ser relativamente complicado podemos crear un simple script en el arranque que lance los comandos indicados anteriormente para levantar el interfaz de forma manual.
Preparando nuestra EBB
Le llega el turno a nuestro módulo EBB, antes de comenzar con el proceso tenemos que asegurarnos que tenemos el jumper USB_5V y conectamos nuestra M8P con la EBB usando un cable USB.
Para una gestión más sencilla de los componentes CAN vamos a usar CANboot.
instalaremos los componentes CANboot, desde el terminal SSH ejecutaremos:
al igual que hicimos con la M8P ajustaremos las opciones para nuestra EBB siguiendo como ejemplo la siguiente captura... una vez teminado pulsaremos Q y salvaremos la configuración:
Este ejemplo es para una EBB SB2240, si tienes otro modelo de elctrónica revisa las configuraciones específicas de tu electrónica.
compilaremos el firmware lanzando el siguiente comando desde nuestro terminal SSH:
buscaremos el ID de nuestro EBB y nos lo anotaremos, debería de ser 0483:df11
pondremos nuestra EBB en modo DFU presionando el botón BOOT y lanzaremos el siguiente comando para aplicar nuestro bootloader CANboot... asegúrate que pones el ID correcto
ahora prepararemos el firmware Klipper para nuestro EBB, para ello desde el terminal lanzaremos los siguientes comandos... ajustaremos las opciones como la imagen adjunta y presionamos Q para guardar los ajustes:
Este ejemplo es para una EBB SB2240, si tienes otro modelo de elctrónica revisa las configuraciones específicas de tu electrónica.
ejecutaremos la compilación del firmware con el comando:
ya tenemos todo listo para aplicar el firmware Klipper en nuestra EBB, pondremos esta en modo DFU (presionando RST) y ejecutaremos lsusb para encontrar su ID
aplicaremos el firmware, recuerda asegurarte que usas el ID correcto:
Ahora procederemos a verificar nuestra comunicación CAN
verificando CANboot, pulsando dos veces en el botón RST (el led rojo debería parpadear) lanzaremos el siguiente comando donde deberíamos ver que ambos dispositivos tienen CANboot
verificando Klipper, pulsaremos el botón RST (el led rojo no debería de parpadear) y lanzaremos el siguiente comando para comprobar nuestros dispositivos tienen Klipper:
Ya podemos ajustar nuestro printer.cfg para añadir nuestras MCU utilizando su UUID, en nuestro ejemplo 4b94c57be78e (M8P) y 2f0b1ce14660 (EBB).
Recuerda quitar los jumpers V_USB (M8P) y USB_5V (EBB).
El jumper 120R lo deberemos mantener.
Actualizar Klipper usando CANboot
Ahora que ya tenemos todo montado y teniendo en cuenta futuras actualizaciones del firmware Klipper es cuando podremos ver las ventajas de CANboot.
En algunas actualizaciones de Klipper vamos a necesitar actualizar el firmware en nuestras MCU así que sería un poco engorroso tener que conectar el cable USB a nuestro EBB y realizar todo el proceso... aquí es donde CANboot nos va a solucionar la papeleta permitiendo actualizar el firmware Klipper desde el propio bus CAN.
Los pasos serán similares a los que hicimos en la configuración inicial.
ahora prepararemos el firmware Klipper para nuestro EBB, para ello desde el terminal lanzaremos los siguientes comandos... ajustaremos las opciones como la imagen adjunta y presionamos Q para guardar los ajustes:
Este ejemplo es para una EBB SB2240, si tienes otro modelo de elctrónica revisa las configuraciones específicas de tu electrónica.
ejecutaremos la compilación del firmware con el comando:
ya tenemos todo listo para aplicar el firmware Klipper en nuestra EBB, pondremos esta en modo BOOT (presionando RST dos veces)
lanzaremos el siguiente comando desde SSH para actualizar el firmware usando CANboot, recuerda poner el UUID de tu EBB en tu caso (en el ejemplo 110a62ed1c3c)
Y ya tendremos nuestra EBB actualizada!!!
Este mismo proceso podemos utilizar en nuestra M8P por CANbus ajustando en cada paso a las configuraciones de nuestra electrónica.
Resolución de problemas
Aunque poner en funcionamiento no es excesivamente complejo si que depende de diferentes factores para que funcione de forma correcta. Os vamos a sugerir algunos puntos a tener en cuenta cuando montemos nuestro CANbus:
Bitrate CANbus... un aspecto importante en un canal de comunicación es el ancho de banda disponible en este, su latencia y porcentaje de errores de comunicación. Teniendo en cuenta esto no todos los dispositivos CAN para 3D se comportan de igual forma y siempre deberemos configurar el bitrate de nuestro CANbus a la velocidad del dispositivo que soporte menos bitrate. Es importante que a un menos bitrate tendremos un menor ancho de banda para el flujo de datos y por lo tanto en determinadas situaciones (como gestión de acelerómetor, leds neopixel, etc...) podemos tener un cuello de botella y aumentar la latencia. Por otro lado un alto bitrate nos va a permitir no tener problemas de latencia pero por otro lado y en dispositivos con características limitadas o calidad pueden ocasionar errores de comunicación que también afectarán. Podremos obtener información de la comunicación CANbus desde SSH con este comando:
Cableado, aunque el cableado de CANbus es simple hay que prestar especial atención a el.
Es aconsejable usar el cableado correcto tanto en soporte a temperatura, flexibilidad y diámetro necesario para el dispositivo CAN y los componentes que "cuelguen" de el.
Comprobar que el crimpado y la continuidad en los cables es la correcta
Terminadores en ambos finales del bus, midiendo la resistencia entre el cable H y L deberíamos de tener 60ohms.
Aunque el protocolo CAN no suele afectarse demasiado por interferencias en el cableado no está de mas en trenzar los cables H y L para evitarlas.
Firmware, es importante que todos nuestros dispositivos tengan instalado el firmware Klipper tanto en configuración de MCU, pines CAN de comunicaciones y bitrate
Testeando nuestra instalación, para poder asegurarnos que nuestro bitrate y cableado funcionan de forma óptima, podemos utilizar can-utils que nos permitirá al simular una carga de datos darnos información ver si tenemos pérdida de paquetes.
Normalmente las acciones que suelen cargar más la comunicación son aquellas relacionadas con Input Shaper (si nuestro CAN dispone de acelerómetro) o gestión de tiras leds neopixel... por eso es aconsejable lanzar una de estas acciones para ver si tenemos pérdidas de paquetes.
También es aconsejable realizar por ejemplo un test de velocidad, ya que en este caso simularemos movimiento para ver si este afecta a la comunicación, normalmente por un problema de cableado.
También podremos ver desde Mainsail como explicamos en el punto anterior un resumen de las métricas de nuestro interfaz CAN.
Capturando el tráfico de nuestro CANbus, Siguiendo con las herramientas can-utils podemos encontrar candump que nos va a permitir capturar el tráfico de nuestro CANbus:
candump -tz -Ddex can0,#FFFFFFFF > mycanlog
El comando anterior nos va a permitir capturar el tráfico en nuestra interfaz can0 cobre un fichero mycanlog. Una vez finalizada la captura podemos utilizar la herramienta de Klipper parsecandump.py para parsear esos mensajes:./scripts/parsecandump.py mycanlog 108 ./out/klipper.dict
Última actualización