Page cover

Bigtreetech Manta + EBB Toolhead

- English

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.

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.

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

    • También pondremos los jumpers USB_5V y el 120R

      • Finalmente, conectaremos cables CAN en el orden correcto

Foto provisional de https://mpx.wiki/

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

Not found
  • 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.

Not found
  • 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

Foto provisional de https://mpx.wiki/
  • 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.

Foto provisional de https://mpx.wiki/

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.

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).

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:

sudo nano /etc/network/interfaces.d/can0

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:

/etc/network/interfaces.d/can0
allow-hotplug can0
iface can0 can static
    bitrate 1000000
    up ifconfig $IFACE txqueuelen 1024

Usando CTRL+X y Y y ENTER guardaremos los cambios

Una vez realizado el cambio reiniciaremos nuestra CB1:

reboot

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:

cd ~/klipper
make menuconfig
  • Ajustaremos las opciones tal como vemos en la siguiente imagen pulsando la tecla Q y guardaremos los ajustes:

Foto provisional de https://mpx.wiki/
  • lanzamos la build del firmware con el siguiente comando:

make
  • 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:

lsusb
  • 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

make flash FLASH_DEVICE=0483:df11

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:

python3 lib/canboot/flash_can.py -q

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:

cd ~
git clone https://github.com/Arksine/CanBoot
cd CanBoot
make menuconfig
  • 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:

  • compilaremos el firmware lanzando el siguiente comando desde nuestro terminal SSH:

make
  • buscaremos el ID de nuestro EBB y nos lo anotaremos, debería de ser 0483:df11

lsusb
  • 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

dfu-util -a 0 -d 0483:df11 --dfuse-address 0x08000000 -D ~/CanBoot/out/canboot.bin
  • 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:

cd ~/klipper
make menuconfig
  • ejecutaremos la compilación del firmware con el comando:

make
  • 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:

dfu-util -a 0 -d 0483:df11 --dfuse-address 0x08002000 -D out/klipper.bin

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

cd ~/klipper
python3 lib/canboot/flash_can.py -q
  • 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:

cd ~/klipper
python3 lib/canboot/flash_can.py -q

Ya podemos ajustar nuestro printer.cfg para añadir nuestras MCU utilizando su UUID, en nuestro ejemplo 4b94c57be78e (M8P) y 2f0b1ce14660 (EBB).

printer.cfg o include
[mcu]
canbus_uuid: 4b94c57be78e
[mcu EBBCan]
canbus_uuid: 2f0b1ce14660

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:

cd ~/klipper
make menuconfig
  • ejecutaremos la compilación del firmware con el comando:

make
  • 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)

python3 lib/canboot/flash_can.py -i can0 -f ./out/klipper.bin -u 110a62ed1c3c

Y ya tendremos nuestra EBB actualizada!!!

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:

    ip -details -statistics link show can0

    Desde Mainsail podemos acceder a estas estadísticas desde la sección MACHINE haciendo click en nuestra MCU CAN.

  • 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.

// install can-utils to our system
sudo apt install can-utils
// testing our can0 network at 250k bitrate
canbusload can0@250000 -c -b

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

¿Te fue útil?