Bigtreetech Eddy
El BTT Eddy es un sensor de nivelación por escaneo de la superficie basado en corrientes de Eddy (inductivo). Este tipo de sensores pueden escanear tu cama en unos pocos segundos con una alta precisión, sin contacto físico y sin pin de toque.

Entre sus ventajas destacan:
Nivelación de alta velocidad: completa un nivelado en unos 20 segundos para una cama de tamaño medio, y menos con la cama pequeña.
Alta precisión: lecturas con resolución de 0.0005 mm.
Tamaño compacto y bajo peso: 6 g, integrable en casi cualquier cabezal sin afectar a inercias ni vibraciones.
Compensación de temperatura: integra la función de compensación térmica de Klipper para mantener la precisión cuando la cama calienta.
Escaneo continuo: con
METHOD=rapid_scanel cabezal no se detiene en cada punto, el sondeo se hace en movimiento. Es especialmente rápido con el BTT Eddy.
Limitación importante
Por el principio de funcionamiento, el BTT Eddy solo es compatible con superficies metálicas conductivas y con campo magnético uniforme.
Puede dar problemas con camas que tengan zonas de nivelación aisladas, imanes para fijar el fleje o PEI, o superficies no conductoras.
Klipper oficial, no el fork de BTT
Desde hace tiempo ya no es necesario usar el fork de Klipper de Bigtreetech. Esta guía está escrita para Klipper oficial. Si usas el fork de BTT, migra a la versión oficial — lo más fácil es reinstalar desde KIAUH.
Versiones del BTT Eddy
Existen tres versiones del sensor con diferencias importantes según el setup:

BTT Eddy
USB
Sí
La opción habitual y recomendada. Se gestiona como una MCU independiente en Klipper.
BTT Eddy Coil
I2C (EBB36/42)
No
Para toolheads tipo EBB36/EBB42. Simplifica el cableado pero pierde la compensación de temperatura.
BTT Eddy CAN
CANbus
Sí
Para setups con bus CAN directo al host, electrónica o toolhead.





Instalación del sensor
Algunos consejos antes de montar el sensor:
Montarlo en el cabezal con 2-3 mm entre la superficie de medición del Eddy y la punta del nozzle (2.5 mm es el valor óptimo).
En la versión USB, evitar que el cable pase junto a cables de motores u otras fuentes de ruido eléctrico. Usa un cable de calidad, apantallado y flexible.
Mantener la parte electrónica del sensor alejada de fuentes de calor como el hotend.
Compilación del firmware
El BTT Eddy solo es compatible con instalaciones de Klipper que usen Python 3. Si ves errores del tipo Internal error during connect: split() takes no keyword arguments, tu Klipper está en Python 2 — reinstala desde KIAUH.
Desde SSH:
Selecciona estos valores en el menú:

Pulsa Q y Yes para guardar, luego:
Con el sensor desconectado, mantén pulsado el botón BOOT y conecta el cable USB al host. Suelta BOOT una vez conectado.
Verifica que aparece en el sistema:
Deberías ver algo como:

Flashea el firmware (ajusta el ID al que veas en lsusb):
Una vez finalizado, obtén el serial ID del sensor:
Anota el ID — lo usarás en la sección [mcu eddy] del printer.cfg.
La versión BTT Eddy Coil se conecta al toolhead o host mediante I2C. Hay que aplicar el firmware al host EBB al que se conecta y configurarlo específicamente para I2C. Consulta la documentación oficial de BTT para los pasos específicos de tu toolhead.
Configuración Klipper
Elige el fichero de ejemplo según tu setup:
BTT Eddy como probe + z-endstop separado → sample-bigtreetech-eddy.cfg
BTT Eddy como probe y z-endstop (lo más habitual) → sample-bigtreetech-eddy-homing.cfg
BTT Eddy como probe, z-endstop y con z-offset dinámico → sample-bigtreetech-eddy-zoffbeta.cfg
Recomendación: usar include
Lo más limpio es copiar la configuración de ejemplo en un fichero eddy.cfg y añadirlo como include en tu printer.cfg:
Ponlo siempre encima de la línea #*# <--- SAVE_CONFIG --->. Si tienes un KNOMI, pon el include del Eddy debajo del KNOMI para que las macros se carguen en el orden correcto.
Si usas el BTT Eddy como z-endstop (recomendado)
En la sección [stepper_z] de tu printer.cfg:
Si tienes un BTT KNOMI, algunas macros entrarán en conflicto. Comenta en el cfg del KNOMI las macros que se solapen con las del Eddy.
Ajustes a personalizar en el cfg del Eddy
Una vez copiado el fichero de ejemplo, personaliza:
Serial del BTT Eddy (versión USB): el ID que obtuviste con
ls /dev/serial/by-id/*.Offsets XY del sensor: la distancia en X e Y desde el nozzle al punto de medición del Eddy.
Cómo medir los offsets XY
El punto de medición del sensor está marcado en la PCB:

Método manual: mide con una regla la distancia desde el nozzle al punto de medición del sensor en X e Y.
Método preciso (requiere la máquina funcional con homing en XY):
Haz home en XY:
G28 XYColoca el cabezal en el centro de la cama
Lanza
PROBEdesde la consola (pega un trozo de cinta en la cama para marcar el punto de sondeo)Lanza
GET_POSITIONy anota la posiciónMueve el nozzle encima del punto marcado con los controles manuales
Lanza
GET_POSITIONde nuevo y calcula la diferencia — esos son los offsets
Aplica los valores en tu cfg y haz RESTART.
mesh_minymesh_max: los límites del área de mallado. Consulta la guía de sensores de nivelación para calcularlos correctamente según el offset de tu sensor.home_xy_position: la posición XY donde el Eddy hará el homing Z. Explicado en la guía de sensores → safe_z_home.
Calibración BTT Eddy
1. Calibración DRIVE_CURRENT
Controla la intensidad del campo magnético que genera el sensor. Hay que calibrarla una vez (o cada vez que cambies la altura de montaje del sensor).
Haz home en XY:
G28 XYMueve el cabezal al centro de la cama a 20 mm de altura
Si usas el Eddy como z-endstop y no puedes hacer un home completo aún, usa SET_KINEMATIC_POSITION Z=0 para forzar la posición y poder mover el eje Z:
Lanza la calibración:
Guarda el resultado:
2. Calibración de mapeo de lecturas (correlación sensor → altura Z)
Este proceso establece la relación entre las lecturas del sensor y la posición real del nozzle. Hay que repetirlo si cambias la altura de montaje del sensor.
Dos comandos disponibles
PROBE_EDDY_CURRENT_CALIBRATE_AUTO CHIP=btt_eddy— variante histórica usada por la guía oficial de BTT, hace el proceso completo en automático.PROBE_EDDY_CURRENT_CALIBRATE CHIP=btt_eddy— el comando estándar de Klipper. Hace exactamente lo mismo: tras el test del papel, mueve el cabezal y ejecuta una serie de movimientos para correlacionar las lecturas del sensor con posiciones Z.
Cualquiera de los dos vale. En esta guía usamos el segundo, que es el documentado oficialmente en Klipper.
Lanza:
Aparecerá el asistente para bajar el nozzle con un papel hasta tocar la cama (el procedimiento clásico del papel).
Acepta con
ACCEPTcuando el papel haga la resistencia justa.El proceso continúa automáticamente y tarda aproximadamente dos minutos. Klipper publicará en consola las medidas de ruido y la frecuencia leída a cada altura Z.
Al terminar, guarda:
Calibra y sondea siempre a la misma temperatura
La frecuencia que mide la bobina del Eddy depende ligeramente de la temperatura del propio sensor y de la cama. Si calibras en frío y luego sondeas con la cama a 60 °C, las lecturas se desplazan unas micras. Por eso el siguiente paso (compensación de temperatura) es muy recomendable en cualquier impresora donde no calibres siempre a la misma temperatura.
Habilitar el rapid scan (proving)
PROBE_EDDY_CURRENT_CALIBRATE solo calibra la relación lectura-altura para el sondeo estándar. Para usar METHOD=rapid_scan con precisión, Klipper hace una calibración adicional —llamada coloquialmente "proving"— que se ejecuta la primera vez que lanzas un mallado con escaneo rápido:
Si la cama no está suficientemente paralela a los raíles XY, el modo rapid scan puede no ser fiable y Klipper lo avisará por consola. En ese caso usa primero METHOD=scan o haz un Z-tilt / QGL más fino.
3. Calibración de malla
Con el sensor ya calibrado, haz el mallado de cama:
Parámetros avanzados de escaneo
BED_MESH_CALIBRATE con el BTT Eddy soporta opciones adicionales:
METHOD=rapid_scan— escaneo continuo sin parar en cada punto (el más rápido, recomendado para uso diario)METHOD=scan— escaneo con pausa en cada punto para múltiples lecturas (más lento, más preciso)SCAN_MODE=detailedoSCAN_MODE=rapid— submode del métodoscanSCAN_SPEED=[velocidad]— velocidad durante el escaneo continuoADAPTIVE=1— mallado adaptativo nativo de Klipper: sondea solo el área que ocupa la pieza actual. No necesitas KAMP para esto.
Ejemplo de uso con mallado adaptativo:
Añade esto a tu macro de inicio para sondear solo el área necesaria en cada impresión.
4. Compensación de temperatura (solo versión USB)
La compensación de temperatura solo está disponible en la versión USB, que incluye sensor de temperatura integrado en la bobina.
Este proceso crea un perfil de corrección para compensar la deriva térmica del sensor conforme calienta la cama y el propio cabezal. Sin él, las lecturas del Eddy varían con la temperatura y la primera capa se desplaza unas centésimas entre impresiones en frío y en caliente.
Sección [temperature_probe] en printer.cfg
[temperature_probe] en printer.cfgA partir de Klipper 0.13 el procedimiento se ha estandarizado a través del módulo [temperature_probe], que se vincula automáticamente con la sección [probe_eddy_current] si comparten el mismo nombre.
¿Por qué los parámetros calibration_*?
calibration_bed_temp: tras la primera muestra Klipper enciende la cama y va tomando muestras conforme sube la temperatura. Al terminar, la apaga.calibration_extruder_temp: si está definido, Klipper calienta primero el hotend hasta esa temperatura para que el nozzle ya esté dilatado durante el primer sondeo manual. Evita errores de varias centésimas por la dilatación del filamento entre frío y caliente.extruder_heating_z: Z al que se sitúa el cabezal mientras calienta el hotend, lo suficientemente lejos de la cama para no calentar la bobina del Eddy con el calor radiado del nozzle.max_validation_temp: temperatura máxima usada al final del proceso para validar la curva de compensación. En impresoras cerradas tipo Voron / Bambu hay que subirla a 100-120, ya que el aire interno alcanza temperaturas más altas.
Procedimiento
Con la sección [temperature_probe] añadida, reinicia Klipper y lanza:
TARGET es la temperatura máxima de la bobina del Eddy a la que quieres llegar — no la temperatura de cama. En la práctica con cama a 90-100 °C la bobina del Eddy estabiliza alrededor de 50-70 °C.
Klipper irá tomando muestras cada 2 °C de subida (configurable con STEP=4 en el propio comando para muestrear cada 4 °C y acelerar el proceso). En cada muestra pide hacer el test del papel; acepta con ACCEPT. Cuidado de no quemarte durante el proceso.
Comandos auxiliares durante la calibración:
TEMPERATURE_PROBE_NEXT— forzar el siguiente paso antes de llegar a la temperatura objetivo.TEMPERATURE_PROBE_COMPLETE— finalizar el proceso antes de llegar a TARGET con los datos recogidos hasta ahora.ABORT— cancelar sin guardar nada.
Al terminar, guarda con SAVE_CONFIG. Klipper escribirá los coeficientes de la curva de compensación al final del printer.cfg dentro del bloque #*# <--- SAVE_CONFIG --->.
Cómo verificar que ha quedado bien
Tras SAVE_CONFIG puedes comprobar que la compensación funciona con la cama fría y luego con la cama caliente: lanza PROBE y mira el valor reportado. Sin compensación, la diferencia frío-caliente suele rondar 50-100 µm; con compensación, debería estar por debajo de 20 µm.
5. Ajuste del Z-Offset
Este paso solo aplica si usas el BTT Eddy como z-endstop.
El z-offset del Eddy funciona diferente al de un sensor tradicional
En un sensor clásico (BLTouch, inductivo...), el z-offset es la distancia entre el punto de activación del sensor y la punta del nozzle — es fijo y depende del montaje.
En el Eddy no hay "punto de activación" — el sensor envía telemetría continua que Klipper traduce a distancias. Durante la calibración le dices al sistema que, para las lecturas obtenidas con el nozzle tocando la cama (test del papel), eso es z=0.
Por eso el parámetro z_offset en la config del Eddy no indica la distancia sensor-nozzle, sino la altura de sondeo por encima de la cama (normalmente 2.5 mm). Ajustar la primera capa se hace con PROBE_CALIBRATE como en cualquier otro sensor.
Para ajustar z=0 con el Eddy como z-endstop:
Sigue el asistente para ajustar el nozzle con el papel. Al finalizar, SAVE_CONFIG.
Video Tutorial
Troubleshooting
Error during homing probe: Eddy current sensor error
Error during homing probe: Eddy current sensor errorIndica lecturas fuera de rango del sensor. Causas habituales:
El sensor no está a la altura correcta (debe estar 2-3 mm sobre el nozzle, óptimo 2.5 mm).
Siempre que cambies la altura de montaje, borra toda la calibración y repítela desde el principio.
Si persiste, prueba a poner
reg_drive_current: 16manualmente en la sección del Eddy.
Probe Triggered Before Movement
Probe Triggered Before MovementSucede cuando lanzas PROBE dos veces seguidas sin subir el cabezal entre medidas. Sube Z unos milímetros entre comandos PROBE.
Pausas o saltos durante el mallado
Causas posibles:
Macro
BED_MESH_CALIBRATEmal configurada — asegúrate de usarMETHOD=rapid_scanKAMP instalado y en conflicto — ver sección KAMP más abajo
gcode command <XX> already registered
gcode command <XX> already registeredUna macro del Eddy está siendo sobreescrita por otra configuración (KAMP, KNOMI, u otro include). Revisa el orden de los includes en tu printer.cfg y elimina macros duplicadas.
Problemas de z-offset
Lee este documento de BTT sobre cómo funciona el z-offset en el Eddy. El comportamiento es diferente al de un sensor tradicional — entenderlo evita muchas confusiones.
KNOMI — conflicto de macros
Si tienes KNOMI, comenta en su cfg las macros que entren en conflicto con el Eddy. Además, en el cfg de ejemplo del Eddy descomenta las macros específicas para KNOMI.
KAMP — ya no es necesario
KAMP (Klipper-Adaptive-Meshing-Purging) fue muy útil antes de que Klipper integrara el mallado adaptativo nativo. Hoy en día:
Klipper 0.12+ tiene mallado adaptativo nativo (
ADAPTIVE=1enBED_MESH_CALIBRATE)El escaneo con BTT Eddy es tan rápido que sondear toda la cama tampoco penaliza mucho
Las macros de KAMP pueden entrar en conflicto con las del Eddy
Recomendación: elimina KAMP o al menos comenta la línea [include ./KAMP/adaptive_meshing.cfg] en KAMP_SETTINGS.cfg y usa ADAPTIVE=1 directamente.
Última actualización