SKR Octopus
El nuevo buque insignia de Bigreetech
Si bien es verdad que Bigtreetech ha lanzado otras placas avanzadas como la GTR o PRO tenemos que deciros que esta es nuestra preferida!!!
Este monstruo de placa con 8 drivers reemplazables, 6 ventiladores PWM que podremos usar diferentes voltajes gracias a sus DCDC integrados o el conector ethernet con soporte CAN bus para poder ampliar aún más sus increibles características, o su compatibilidad con diferentes firmwares la hacen simplemente una solución perfecta para los makers más exigentes.
Además para todos aquellos usuario de una máquina "CoreXY" consideramos que es la placa ideal, es más está especialmente aconsejada para Voron 2.4 una BLV o VCore3 siendo a día de hoy las mejores máquinas en este formato.
Comecemos!!!
Introducción
Antes de continuar con el artículo me gustaría recordarte como siempre que disponemos de una gran comunidad en nuestro canal de Telegram. Allí solemos compartir todas nuestras dudas y experiencias. Si deseas formar parte de él, no tengas reparo alguno en unirte a nosotros.
También puedes encontrar mucha ayuda o recursos directamente en el grupo de Telegram de SKR, así como otras guías de ayuda en nuestro Bot de Telegram @ThreeDWorkHelpBot
¿Donde puedo comprar la BigTreeTech SKR Octopus?
Aqui tienes un link a Markets.sx con los mejores precios en diferentes sitios (Amazon, Aliexpress, Gearbest,etc.).
Diagramas BigTreeTech Octopus
Antes de comenzar con los diferentes diagramas de la placa es importante comentar que tenemos diferentes versiones de la Octopus.
¿Que diferencias tenemos entre la v1.0 y la v1.1?
Fundamentalmente el cambio más importante sería una corrección en la polaridad de la salida de los ventiladores. Después la v1.1 soluciona un problema con el led de la SD. Finalmente el regulador de la MCU y los endstops ha sido sustituído por otro modelo.
En cualquier caso ninguno de estos casos afecta a su funcionamiento o rendimiento.
A continuación podéis encontrar los diferentes esquemas de cableado, pineado y medidas de esta placa:
También podéis acceder al manual de la SKR Octopus que facilita el fabricante en su Github junto con otra información interesante sobre esta impresionante placa.
Principales características
Os listamos algunas de las carácterísticas más importantes de esta Octopus que te van a dejar con la boca abierta!!!
MCU de 32b ARM Cortex-M4 STM32F446ZET6 con una frecuencia de reloj de 180MHz
Soporte para firmware Klipper y Marlin
Interface para Raspberry Pi tanto por USB como UART por GPIO
Hasta 4 hotends
Alimentación independiente para motores, cama caliente y electrónica
DCDC integrados para proveer alimentación a 12V (4A), 5V (8A) y 3.3V (1A) ideal para no necesitar de comonentes externos
Hasta 6 ventiladores controlables y 2 sin control con la posibilidad de selecciión del voltaje de trabajo entre Vin, 12V y 5V.
Protección ante cortos en las tomas de ventiladores, importante por una mala manipulación o fallo de estos componentes ya que es uno de los problemas más comunes con las placas de nuestras máquinas
Conector USB-C que permite la emulación serie para poder imprimir mediante USB
Compatibilidad con casi cualquier pantalla aunque aconsejable siempre usar las estupendas pantallas duales de SKR
MOSFETs de alto rendimiento que mejoran la eficiencia y velocidad de calentado de los calentadores
Fusibles de protección reemplazables de forma sencilla
Doble salida de motor para el eje Z
Mejoras en el bootloader soportando la actualización por USB (aconsejable) y DFU (usuarios avanzados)
EEPROM de 32K (AT24C32)
Conectores para leds RGB y Neopixel
Conector para interfaz WiFi (ESP8266)
PT100 interface (requiere de amplificador INA826AIDR soldado a la placa en el zocalo destinado para esta ampliación)
Protección ante corto en los conectores de termistores, otra gran mejora también aplicada a los ventiladores. Permite reusar estos pines para otras tareas con un pin que hace bypass de estas protecciones
Soporte de BlTouch y similares con un conector destinado para ellos y usable por otros sistemas ABL. El puerto del PROBE se añadió protección extra con un octoacoplador para no necesitar usar un diodo BAT85
CAN BUS mediante conector 6P6C RJ11 para futuros módulos de expansión
SPI BUS puerto de expansión para módulos SPI como el MAX31865
I2C BUS puerto de expansión para módulos I2C
Soporte para módulos Relé y UPS
Conexiones SKR Octopus
Conectores de alimentación
La SKR Octopus, como no podía ser menos en una electrónica PRO, cuenta con tres entradas de alimentación independientes: alimentación para la eléctronica (conectores 3-4), alimentación independiente para motores (conectores 1-2) y alimentación para la cama caliente (conectores 5-6).
Si bien en determinadas máquinas todas irán conectadas a la misma fuente de alimentación en máquinas que requieran configuraciones especiales podremos usar fuentes de alimentación independientes para estos componentes.
La SKR Octopus cuenta con un jumper para la selección de alimentación para la electrónica usando el puerto USB-C, con este pin conectado mediante un jumper la placa se alimentará por el puerto USB-C para realizar tareas de actualización de firmware o tests básicos.
Es importante no tener puesto el jumper en un uso normal conectado a la fuente de alimentación de la impresora.
Salidas alimentación para hotend y cama
Como no podía ser de otra forma tal como vimos en las características de esta Octopus contamos con 4 salidas para hotend y una cama caliente.
Termistores
Al podeer contar con 4 salidas de hotend disponemos de 5 conectores para termistores , 4 para hotends (T0, T1, T3 y T3) y 1 para la cama caliente (TB). Os recordamos que la orientación de los cables de los termistores normalmente no es importante ya que estos no suelen tener polaridad.
Todos ellos con protección ante cortocircuitos algo de agradecer ante fallos en la manipulación por nuestra parte o simplemente por un fallo de estos componentes.
Drivers
La SKR Octopus cuenta con 8 zócalos para drivers haciendola una electrónica perfecta para máquinas exigentes como pueden ser las impresoras CoreXY o similares.
Importante resaltar que el driver normalmente asignado al eje Z (MOTOR 2) dispone de 2 conectores de motor en paralelo en el caso, que a nosotros personalmente nos gusta mucho, de no usar doble eje Z independiente y autonivelado.
El soporte para casi cualquier tipo de driver y diferentes modos de los mismos nos da muchas posibilidades a la hora de confeccionar nuestra máquina. A día de hoy y bajo nuestro punto de vista lo más aconsejable es siempre habilitar nuestros drivers en modo "inteligente" (UART/SPI) siempre que estos los soporten, la SKR Octopus también dispone de opción para usar drivers en modo standalone (Step/DIR).
A día de hoy lo más común o aconsejable es el uso de drivers TMC como los TMC2208, TMC2209 o TMC2226 los cuales se gestionan de forma inteligente usando UART.
Para configurar la placa en modo UART tan solo tendremos que usar el siguiente jumper tal como se puede ver en la siguiente fotografía:
Doble eje Z
Tal como hemos comentado ya esta Octopus esta destinada a ser el corazón de máquinas potentes en las que el disponer doble, o incluso más, ejes Zs suele ser un requerimiento.
En este caso y para Marlin el zócalo destinado para esta función por defecto es el MOTOR3 dejando para el primer extrusor el MOTOR4.
Sensorless
Otra función cada vez más extendida para simplificar el cableado y componentes de nuestra impresora es la de usar la función Sensorless que utilizan algunos drivers TMC. Esta función básicamente usa los motores como finales de carrera detectando picos de consumo de corriente durante el proceso de homing para simularlos.
Para habilitar esta función en un eje, recordad que hay una parte que se tiene que realizar en nuestro firmware para lo cual os aconsejamos revisar nuestra guía Sensorless, es tan sencillo como colocar un jumper en los conectores Sensorless.
Es importante recordar que el uso de Sensorless es aconsejable únicamente para los ejes X e Y ya que por su precisión y funcionamiento no se aconseja en ejes Z.
Ventiladores
La SKR Octopus cuenta con 6 ventiladores controlables y dos conectores para ventiladores siempre alimentados.
Una de las novedades, y que sinceramente nos ha enamorado de esta placa, es la de poder escoger el voltaje de estos ventiladores mediante un jumper entre 5v, 12v o 24v... se acabaron los conversores DCDC externos para silenciar nuestra impresora!!!
Sensores de nivelación
Como no podía ser de otra forma en esta excepcional electrónica se incluye un conector dedicado a sensores de nivelación.
A continuación podéis ver dos ejemplos de conexión a los más comunes actualmente:
Desde 3Dwork opinamos que este tipo de sensor es... por precisión y por poder usarse prácticamente en cualquier impresora y superficie de impresión... nuestro preferido.
Por otro lado suelen ser por su funcionamiento un poco más delicados y siempre es aconsejable adquirir un sensor original de Antclabs.
Os recordamos revisar nuestra guía de configuración Marlin para este tipo de sensor.
Sensor Filamentos
Dentro del arsenal de conectores disponibles en la Octopus encontramos 4 conectores preparados por defecto para el uso de sensores de filamentos.
Definiciones por defecto en Marlin de la asignación de pines para uso de sensores de filamentos:
Puertos Expansion
Otra excelente mejora introducida en la SKR Octopus ha sido la inclusión de un puerto de conectividad CAN BUS usando un conector ethernet. Esta conexión CAN nos permitirá ampliar nuestra placa con otras de expansion a modo de más drivers, etc...
A parte de este nuevo CAN bus disponemos de otros puertos de expansión para el uso de otros componentes como módulos relé, UPS, Neopixel, etc...
El módulo relé de BTT nos aporta el control del apagado de nuestra impresora de forma controlada, como por ejemplo apagar esta una vez finaliza la impresion.
Configuración del firmware
Bigtreetech de nuevo ha prestado especial atención para que sus electrónicas cuenten con la mayor compatibilidad y soporte con los firmwares más populares del mercado.
En el caso de la SKR Octopues nos aseguran un soporte óptimo para firmwares Marlin, Klipper o RRF incluso ponen disponibles configuraciones para la Voron 2.4.
Marlin
Os aconsejamos seguir nuestra guía para «cocinar» vuestro propio Marlin que tenemos en la sección /Marlin de nuestro bot de ayuda en Telegram @ThreeDWorkHelpBot
Podéis encontrar las fuentes del firmware oficial aquí.
Modificando "platformio.ini"
En este fichero indicaremos nuestro chipset/electrónica buscando al inicio del fichero el valor env_default y cambiarlo por:
Modificando "configuration.h"
Primero de todo y como siempre hacemos os aconsejamos añador un comentario a cualquier linea de configuración que modifiquemos, ya que después nos será mucho más sencillo encontrar nuestras modificaciones para futuros cambios/consultas. Para ello podemos añadir:
Comenzaremos por configurar correctamente los SERIAL y BAUDRATE, algo muy importante para el correcto funcionamiento de componentes como una pantalla TFT, WiFi o un dispositivo conectado por USB-C.
A continuación definiremos nuestro MOTHERBOARD, que como en el archivo platformio.ini nos indica que tipo de placa se tiene que usar a nivel de pines:
El siguiente paso será definir el número de extrusores y diámetro de filamento que usa nuestra impresora. Normalmente la mayoría de impresoras usan filamento de 1.75 mm, aunque otra medida menos común (pero también estándar) es 3 mm. Recuerda que la SKR Octopus puede manejar hasta 4 extrusores dependiendo de la configuración de máquina.
Termistores, en el siguiente bloque de configuration.h a modificar definiremos el número y tipo de termistores que tenemos instalados. En el caso que no sepas cual es el tuyo exactamente te aconsejamos usar de tipo 1, que suele ser el más estándar. Es muy importante indicar el tipo de termistor correcto para que las medidas que Marlin recibe sean las correctas evitando así problemas de extrusión y/o fallos en las lecturas.
En el supuesto, y extraño, caso que queramos desactivar la cama caliente comentaremos o pondremos a 0 el valor de TEMP_SENSOR_BED.
PID, el PID nos permite ajustar los parámetros que usa Marlin para el control de la temperatura de nuestros calentadores sin tener fluctuaciones que puedan comprometer la calidad de nuestra impresión. Habilitaremos el PID de nuestros hotend o cama caliente en las siguientes lineas.
Podéis obtener más información detallada en la sección /Calibracion/Calibracion Inicial de nuestro bot de ayuda en Telegram @ThreeDWorkHelpBot o en nuestra guía de calibración.
ENDSTOPS o finales de carrera, es importante verificar cuando realizamos un cambio de electrónica y encendemos por primera vez que la lógica de los finales de carrera es la correcta usando el comando M119 desde un terminal como Pronterface… esto es OPEN en estado normal y TRIGGERED cuando están pulsados. Podremos invertir esta lógica cambiando:
Por otro lado y aunque lo normal es que las máquinas realicen el home en MIN (esquina inferior izquierda) en lugar de MAX (esquina superior derecha), usando HOME_DIR para este cambio -1(MIN) 1(MAX), debemos recordar que en el caso de cambiar la lógica habilitar los finales de carrera correspondientes:
Recordad que si disponéis de drivers TMC en modo UART podéis utilizar, si el driver lo soporta, el uso de SensorLess que permitirá prescindir de los finales de carrera físicos liberando de componentes y cables.
Podéis encontrar información de como activar SensorLess en nuestra guía para Marlin.
Drivers, como ya hemos comentado esta placa cuenta con 8 zócalos para drivers soportando diferente tipos de drivers y sus configuraciones.
En nuestro ejemplo utilizaremos unos TMC2209 en modo UART (inteligente), con doble Z independiente y un solo extrusor:
STEPS o pasos de motor, indicaremos a Marlin los pasos de motor para realizar movimientos. En este ejemplo usaremos los que una impresora Ender lleva por defecto.
En todo caso de nuevo os remitimos a la sección /Calibracion/Calibracion Inicial de nuestro bot de ayuda en Telegram @ThreeDWorkHelpBot o aquí para el proceso calibrar estos pasos para nuestro extrusor y ejes de movimiento.
S_CURVE_ACCELERATION, esta funcionalidad ofrece una gran mejora en la calidad de impresión ya que suaviza la aceleración o deceleración cuando el cabezal de impresión está en movimiento.
Nota importante!!! Dependiendo de nuestra versión de Marlin, Linear Advance puede no ser compatible. En la sección /Calibracion/Calibracion Inicial de nuestro bot de ayuda en Telegram @ThreeDWorkHelpBot o en nuestra guía de calibración podrás encontrar más información al respecto.
PROBE o sensor de nivelación, como hemos comentado en numerosas ocasiones, disponemos de una guía detallada para instalar un sensor BLTouch. Algo muy aconsejable a tener en cuenta para asegurarnos que nuestras impresiones siempre tienen una primera capa lo más perfecta posible.
Tal como hemos comentado anteriormente y dependiendo del tipo se sensor tendremos varias opciones para conectarlo ya sea en el conector para Bltouch, conector PROBE (inductivo/capacitativo) o al Z-.
Comenzaremos por indicar donde está conectado nuestro sensor de nivelación. En este caso lo conectaremos en el conector final de carrera de Z-.
También deberemos indicar el tipo de sensor que hemos instalado:
Offsets del sensor, es muy importante decirle a Marlin donde se encuentra exactamente instalado nuestro sensor de nivelación… esto lo haremos definiendo los PROBE OFFSET.
El Offset es la distancia entre la punta del nozzle y la punta del sensor de nivelación que dependiendo de donde esté deberán ser valores positivos o negativos, puedes usar el siguiente gráfico como ejemplo de que valor poner en cada caso.
En nuestro caso y como ejemplo nuestro sensor está desplazado hacia la izquierda del nozzle en X 30mm y 10mm en Y ya que está esa distancia hacia el fondo de la impresora.
PROBING_MARGIN (en versiones anteriores MIN_PROBE_EDGE), es muy normal que tengamos en nuestras impresoras un cristal como base de impresión aunque personalmente nos gustan más las láminas PEI magnéticas.
Suelen ser un poco más susceptibles de marcarse con golpes, tienen una excelente adherencia, no te limitan el tamaño de la cama y retirar las piezas es extremadamente sencillo y rápido.
En cualquier caso ya tengamos cristal u otra superficie es aconsejable que el sensor este alejado de cualquier objeto que pueda molestarle durante el proceso de nivelación, ya sean grapas para fijar el cristal o el propio desajuste del inicio y final de cama que haga que el sensor nopueda medir.
Para esto usaremos este PROBING_MARGIN, al cual le indicaremos cuantos milímetros se tiene que alejar de los bordes de la cama.
En nuestro caso usando un BLTouch y una plataforma PEI lo dejamos por defecto.
Dirección de motores, otro problema muy común a la hora de poner en marcha una impresora es que el cableado de las bobinas de nuestros motores no coincidan y se pueden dar dos casos:
Que estén mezclados los conectores de nuestras bobinas, es muy fácil de identificar ya que el motor no girará correctamente e irá a trompicones. Para solucionarlo es aconsejable revisar el pinout de la antigua placa y/o del motor y compararlo con el de nuestra nueva placa para asegurarnos que coinciden
Que el motor gire en la dirección incorrecta. En este caso de nuevo tenemos dos opciones… la primera y aconsejable es la de modificar en Marlin el giro del motor y la segunda es la de invertir el cableado de una de las bobinas del motor
En nuestro caso optamos por la primera modificando las siguientes líneas en Marlin cambiando el valor actual por el contrario… en este caso invertimos el eje Z.
Tamaño de impresión, si hemos usado un Marlin genérico es importante verificar que las dimensiones de impresión son las correctas para nuestra máquina.
Para el tamaño de cama en el ejemplo usamos una Ender 3 a su máximo tamaño, es aconsejable verificar que puedes llegar físicamente a estas medidas y ajustarlo de ser necesario:
Sensor de filamentos, te aconsejamos revisar en la sección /Mejoras/Sensor de filamentos de nuestro bot de ayuda en Telegram @ThreeDWorkHelpBot o en nuestra guía podréis encontrar más información detallada acerca de como instalar y configurar un sensor de filamentos.
Al igual que con los finales de carrera es aconsejable revisar con un M119 el estado del sensor de filamentos el cual tiene que aparecer TRIGGERED con filamento y OPEN sin. En el caso que parezca invertido deberemos de jugar con el valor de (LOW/HIGH):
También podemos indicar la distancia de filamento que queremos desde que el sensor detecta el fallo el sensor en:
En el caso que nuestro sensor de filamento funcione por detección de flujo de filamento (como el sensor de BigTreeTech Smart Filament Sensor) deberemos habilitar lo siguiente y tener muy en cuenta el punto anterior para ajustar falsos positivos:
Autonivelación, tal como os comentábamos anteriormente en la sección /Nivelación de nuestro bot @ThreeDWorkHelpBot tenéis más información detallada de como activar autonivelación UBL (la más avanzada y aconsejable para camas de cierto tamaño o con problemas) y MESH que permite tener una malla sin sensor haciendo el proceso manualmente.
En todo caso para este ejemplo habilitaremos BILINEAR.
Es importante decirle a Marlin que habilite la autonivelación (G29) después de un homing (G28), aunque en versiones actuales ya no es necesario pero aconsejamos habilitarlo.
En el caso de BILINEAR especificaremos el número de puntos a realizar por malla en la siguiente parte de Marlin (por defecto lleva 3 puntos por eje, 3×3=9 puntos de comprobación).
Otra función que por seguridad debemos de habilitar es la de que realice un homing en el centro de la cama, esto nos ayuda a dos cosas… la primera a asegurar que el sensor tiene una superficie donde detectar el final de carrera y el segundo verificar visualmente que nuestros Offsets están de forma correcta ya que el sensor de nivelación tiene que quedar perfectamente posicionado en el centro de nuestra cama.
EEPROM, en la EEPROM Marlin guarda los valores de configuración de diferentes funciones para que estas puedan usarse por el sistema y ser cambiadas por el usuario sin necesidad de tener que modificar ficheros fuentes de Marlin, compilar y subir en cada cambio el firmware.
Es muy aconsejable activarla y con nuestra SKR Octopus no tendremos problemas de memoria.
Nozzle Park, en el ejemplo que estamos explicando hemos añadido un sensor de filamentos. Para que este funcione deberemos activar NOZZLE_PARK_FEATURE que básicamente nos permite «aparcar» el cabezal de impresión en una zona segura para realizar este cambio de filamentos.
Aunque si no tenemos sensor de filamentos es muy aconsejable tenerlo activo ya que nos permite mejorar las funciones de pausado.
SD Card, si queremos que nuestro querido Marlin pueda leer de nuestra SD, ya sea el de la placa o en una pantalla que sea compatible (ojo que las Touch no lo son), deberemos activar el soporte de SD Card.
Menu Homing Avanzado, no es necesario pero si muy aconsejable en el caso de realizar tests habilitar esta función que nos permite poder realizar un homing por separado de cada eje.
Modificando "configuration_adv.h"
Ya hemos finalizado la primera parte y ahora tendremos que pasar a la configuración de las opciones avanzadas.
Scroll y nombres ficheros largos, es interesante activar esta función para poder mostrar el nombre completo de los ficheros a imprimir.
Al igual que el anterior y para que funcione correctamente tenemos que activar la siguiente opción.
Conexión SD, en configuration.h habilitamos el soporte para SD y en configuration_adv.h definiremos de donde Marlin intentará usar esa SD. Tal como comentamos previamente no todas las pantallas que dispongan de SD van a funcionar correctamente.
Disponemos de tres opciones:
LCD donde usaremos la de la pantalla Marlin.
ONBOARD donde usaremos la de la placa.
CUSTOM_CABLE donde indicaremos que usamos un lector externo conectado a la placa.
Ventiladores, como ya comentamos contamos con 6 ventiladores gestionables. Antes de sugerir como usarlos os remitimos a la definición de pins en Marlin 2.0.9.1:
Para nuestra instalación de ejemplo para un solo extrusor realizariamos la siguiente configuración de ventiladores.
FAN0, en este caso no vamos a realizar ningún cambio en su rol ya que es el ventilador de capa y este lo gestiona el propio slicer/fileteador para enfriar el filamento.
FAN1, en nuestro ejemplo lo vamos a asignar al hotend para que de forma dinámica solamente se active cuando el hotend este en funcionamiento evitando desgastes del ventilador y ruido innecesario:
FAN2, para aprovechar este arsenal de ventiladores gestionables (podemos disponer de más reutilizando pines de otras funciones como RGB por ejemplo) para asignar FAN2 como ventilador de la electrónica dinámico para que este se active cuando los drivers estén en uso minimizando de nuevo desgaste y ruido por parte del ventilador:
Babystepping, una función casi imprescindible tener es baby stepping. Babystepping nos permite ajustar la altura de Z durante una impresión para «afinar» de forma manual esta misma altura a nuestro gusto.
En nuestro ejemplo habilitaremos que se pueda activar con un doble click en el botón/encoder, que siempre esté disponible y nos muestre mejoras gráficas en el ajuste para entender la dirección del ajuste desde la pantalla.
Reintentos en caso de fallo en la nivelación, otra función muy útil es la de poder reintentar el proceso de homing en caso de fallo. En ocasiones nuestro sensor de nivelación puede tener un fallo puntual y mediante esta función nos permitirá volver a intentarlo un número finito de veces.
En caso de usar nivelación UBL esta opción no es compatible.
Soporte ARC, una mejora sustancial en la calidad de nuestras impresiones y también cuando imprimimos a través de dispositivos serial como TFT, Octoprint, etc… Permite simplificar los comandos gcodes minimizando el numero de movimientos y haciendolos más fluidos evitando también un gran número de retracciones.
Para usarlo debemos de configurar nuestro fileteador/slicer para que aplique estos cambios o en el caso de Octoprint podemos usar un plugin. En cuanto a los cambios en en Marlin:
Es importante recalcar que en el caso de habilitar ARC para su uso es aconsejable, en el caso que también lo tengamos habilitado, la compatibilidad con S_CURVE. Tenéis más información en la guía de calibración.
Pausado avanzado, tal como comentamos anteriormente en este ejemplo usamos un sensor de filamentos. Para que funcione correctamente tenemos que habilitar ADVANCED_PAUSE_FEATURE que habilita el comando gcode M600 para el cambio de filamentos.
Esto puedes hacerlo con o sin sensor de nivelación y requiere NOZZLE PARK para su correcto funcionamiento.
No entraremos en la configuración detallada ya que la tienes dentro de /Mejoras/Sensor Filamentos dentro de nuestro bot o directamente en la guía.
Configuración drivers UART/SPI, con nuestros drivers en UART/SPI tenemos que configurar correctamente los parametros avanzados que encontraremos en la sección HAS_TRINAMIC_CONFIG.
Micropasos, aunque podemos configurar desde 16 a 256 micropasos no os aconsejamos para nada usar otro valor diferente al de 16.
Con esos micropasos la definición que podríamos alcanzar mecánicamente es prácticamente imposible de alcanzar con impresoras normales además de que los drivers TMC ya realizan ellos mismo la interpolación de estos para siempre ofrecer la máxima fiabilidad y precisión.
La fiabilidad es otro aspecto importante a la hora de los micropasos. Los motores de pasos que llevan nuestras impresoras pierden torque (y pasos) a altas revoluciones así que aumentar esta definición de pasos aumentará exponencialmente el porcentaje de fiabilidad y por lo tanto que nuestras piezas no salgan correctamente.
En el ejemplo siguiente podremos ver cómo tenemos 16 micropasos para nuestro eje X.
Otro valor importante de los valores anteriores es el de CURRENT donde ajustaremos la corriente de nuestros motores. También puedes ajustarlos desde el LCD desde Configuración/Avanzado/TMC junto con otras opciones que explicaremos a continuación.
STEALTHCHOP, es importante habilitarlo si queremos que nuestros motores sean «silenciosos» ya que si no estará funcionando en modo SpreadCycle que es el modo potencia.
Aunque es raro algunos extrusores pueden trabajar mejor con el modo StealthChop deshabilitado. Si es nuestro caso comentaremos la siguiente linea.
CHOPPER TIMING, es usado por StealthChop para la sincronización de señales a los motores. Este tiene que coincidir con el voltaje usado en nuestra impresora, en el caso de Ender 3 y normalmente en todas las impresoras a 24v.
Monitor Status, esta función nos permite que Marlin pueda controlar en detalle todos los parámetros de los drives para poder ajustar por ejemplo la temperatura de los mismos para evitar problemas más graves.
Hybrid Threshold, otra interesante función es Hybrid Threshold que nos permite que Marlin cambie entre StealthChop (silencio) o SpreadCycle (potencia) dinámicamente en base a la velocidad de movimientos.
En nuestro caso usamos los valores indicados para una Ender que son 100mm/s para X Y y de 15 para Z aunque lo podemos ajustar a nuestras necesidades.
TMC Debug, en este caso es un requerimiento de MONITOR_DRIVER_STATUS que deberemos de habilitar y nos permitirá tener accesible el comando M122 muy útil para obtener información avanzada del estado y configuración de nuestros drivers.
Fichero pins SKR Octopus
A continuación os dejo por aquí las rutas de los ficheros pins que contienen las referencias para esta placa, y que podéis localizar dentro de los sources del firmware Marlin:
SKR Octopus v1: .../Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_0.h
SKR Octopus v1.1: .../Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_1.h
SKR Octopus común: .../Marlin/src/pins/stm32f4/pins_BTT_OCTOPUS_V1_common.h
Actualizar firmware Marlin en SKR Octopus
En este caso es muy sencillo y tan solo tenemos que copiar nuestro firmware.bin en la raíz de la SD formateada en FAT32, insertar la SD en la ranura del módulo y esperar unos 30seg a que finalice el proceso.
Una vez finalizado el fichero firmware.bin debe quedar renombrado a firmware.CUR el cual podemos guardar a modo de copia de seguridad (recordar que un firmware compilado no se puede modificar, ese proceso solamente se puede hacer con los ficheros fuentes de vuestro firmware y vuelto a compilar).
Una interesante alternativa, solo para makers avanzados, es la posibilidad de actualizar mediante DFU el cual explicaremos más adelante.
Klipper
Klipper es un firmware open-source para nuestras impresoras 3D que usa la potencia de una Raspberry Pi, normalmente aunque se puede montar en muchos más dispositivos, para el control de la electrónica de tu impresora. Haciendo esto podemos hacer funcionar de una forma más veloz y con más precisión dependiendo del sistema y hardware que tengamos.
Algo que si que nos va a permitir Klipper en cualquier caso es el poder tener un control a más bajo nivel de nuestra máquina, que también requerirá de un extra de conocimientos/esfuerzos, mayor velocidad a la hora de aplicar cualquier cambio además de un control remoto de la máquina de primera clase.
Es importante recalcar que si venimos de otros sistemas Klipper puede tener algunas restricciones en cuanto a compatibilidad con componentes o con determinadas funciones que ahora tengamos en nuestra impresora.
Por otro lado contamos con funciones muy interesantes de control de nuestra impresora como Pressure Advance (similar a Linear Advance de Marlin) y Input Shaper los cuales van a mejorar enormemente la velocidad y calidad.
Conexión Raspberry Pi a nuestra Octopus
Como ya hemos comentado el corazón de Klipper corre en una Raspberry Pi normalmente, ya hemos comentado diferentes formas de conectar esta a nuestra Octopus pero para nuestro ejemplo usaremos la más común/sencilla que es usando un cable USB-C.
Generación firmware Klipper
Para que Klipper pueda controlar nuestra Octopus esta debe contener un firmware el cual podemos obtener de diferentes formas:
Usando los firmwares precompilados que podemos encontrar en el github de Bigtreetech
firmware-USB.bin en el caso que usemos la conexión entre nuestro Klipper y Octopus mediante USB-C
firmware-USART2.bin en este otro caso usaremos la conexión USART2 para comunicar ambos componentes
Compilando nuestro firmware
Podemos seguir la documentación oficial de Klipper para instalarlo también aconsejamos usar Kiauh, Fluidd Pi dispone de una imagen que facilita mucho el proceso de instalación de todos los componentes necesarios.
Siguiendo la documentación anterior iremos a la opción de Building the micro-controller usando esta configuración:
[*] Enable extra low-level configuration options
Micro-controller Architecture = STMicroelectronics STM32
Processor model = STM32F446
Bootloader offset = 32KiB bootloader
Clock Reference = 12 MHz crystal
Si usamos USB-C
Communication interface = USB (on PA11/PA12)
Si usamos USART2
Communication interface = Serial (on USART2 PD6/PD5)
El firmware klipper.bin se generará en la carpeta home/pi/klipper/out el cual si Klipper no es capaz de copiarlo directamente en la SD de nuestra Octopus copiar manualmente en la SD usando WinSCP o el comando pscp en el CMD.
Actualizando nuestra Octopus a firmware Klipper bastará con renombrar el creado/descargado firmware-USB.bin, firmware-USART2.bin o klipper.bin a firmware.bin que es el nombre por defecto que usa el bootloader de nuestra Octupus para hacer el proceso de actualización.
Configuración básica de Klipper
Usando como referencia documentación oficial de Klipper para instalarlo para configurar Klipper usaremos la configuración Octopus klipper.cfg como base para nuestro printer.cfg que incluye las definiciones correctas a nivel de pineado para nuestra Octopus.
Puedes usar la documentación de configuración de Klipper para habilitar las funciones que más nos interesen.
Si vamos a usar USB-C para comunicar Klipper con Octopus ejecutaremos el siguiente comando desde Klipper ls /dev/serial/by-id/*, desde Kiauh disponemos desde su menú de una forma rápida y sencilla para ejecutar esta acción, para identificar el ID correcto de nuestra Octopus y añadirlo a nuestro printer.cfg
Si usamos USART2 para comunicar necesitaremos modificar algunas configuraciones en nuestra Raspberry Pi directamente en la SD desde el ordenador o. de la forma más cómoda y aconsejable que es mediante SSH
Eliminar o comentar la linea console=serial0,115200 en /boot/cmdline.txt
Añadir dtoverlay=pi3-miniuart-bt al final de /boot/config.txt
Modificar la configuración de [mcu] en printer.cfg a serial: /dev/ttyAMA0 y habilitar restart_method: command
Configuración de UI Klipper para LCD/TFT
Para habilitar la UI de Klipper para pantallas LCD/TFT tenemos los siguientes ejemplos:
Una de las pantallas LCD más extendidas tambien conocidas como RepRapDiscount Full Graphic Smart Controller. Para habilitarlas configuraremos la sección [display] en printer.cfg de la siguiente forma:
Firmware RepRap
La versatilidad de la SKR Octopus es total, ya hemos hablado en detalle de Marlin, Klipper y ahora toca el turno de RepRap el cual dada su complejidad os remitimos a su repositorio donde encontraréis las versiones preparadas para nuestra Octopus.
Actualización mediante DFU
Nuestra Octopus nos permite su actualización mediante DFU que nos permitirá poder subir firmware o bootloader en caso que el proceso normal no funcione usando el cable USB-C.
Dado que es un proceso no recomendable para usaurios no experimentados os dejamos el enlace al documento de Bigtreetech donde explica el proceso.
Notas finales
Ahora solamente queda compilar, ajustar cualquier error que nos reporte el compilado y meterlo en nuestra placa. Como siempre, os aconsejamos verificar inicialmente la impresora de la siguiente manera:
Revisar finales de carrera usando un terminal (Pronterface por ejemplo) con el comando M119.
Revisar individualmente Homing de cada uno de los ejes de movimiento en orden (X Y Z E) e invertir giro del motor en caso necesario.
Revisar que nuestros termistores reportan correctamente la temperatura.
Revisar que nuestros calentadores de cama y de hotend funcionan correctamente.
Realizar la guía de Calibración Inicial que podéis encontrar en nuestro bot en el apartado /Calibración.
Como siempre, esperamos que el artículo os haya sido de utilidad para la configuración de estas nuevas electrónicas BigTreeTech SKR Octopus. Podéis dejar vuestros comentarios o dudas al final del mismo.