Enciendes la impresora, mandas el primer print del día y la primera capa se abre en líneas paralelas que nunca llegan a fundirse entre sí. Cancelas, vuelves a lanzar el mismo archivo sin tocar nada, y el segundo sale impecable. Ese patrón. el primero malo, el segundo bueno. no es que la máquina necesite "entrar en calor": es una corrección de altura que la pantalla del Neptune 4 simplemente no envía al arrancar. Al terminar esta guía vas a saber medir el valor real de tu máquina, fijarlo en el slicer para que no dependa nunca más de la pantalla, y comprobar en la consola si está actuando o no.

El síntoma que no cuadra

El cuadro clásico es este: filamento seco, cama limpia, PETG bien perfilado, y aun así la primera capa se raja a lo largo del sentido de impresión. Las líneas quedan una al lado de la otra en vez de fundirse, las puntas se levantan, y en la segunda capa la boquilla va arando el material que quedó parado.

Lo que despista es que el diagnóstico obvio no calza. El filamento húmedo se delata crepitando al extruir y dejando burbujas en la superficie, no con cordones limpios y abiertos. La subextrusión se notaría también en las capas de arriba. Si lo único que falla es la primera capa, el sospechoso número uno es la distancia entre boquilla y cama.

Y el detalle que cierra el caso es el patrón de encendido: si el problema fuera mecánico o de material, fallaría siempre, no solo en el primer trabajo después de prender la máquina.

Por qué la boquilla queda demasiado alta

El Neptune 4 no palpa la cama con la boquilla: usa un sensor de proximidad inductivo montado al lado del hotend. En la printer.cfg eso se ve en los desplazamientos:

Ini
[probe]
pin:^THR:PB12
x_offset: -24.25
y_offset: 20.45
#z_offset: 0.0
speed: 10.0
samples: 2

Los valores de X e Y solo dicen que el sensor vive un par de centímetros al costado de la boquilla. Lo determinante es su tecnología. Un sensor inductivo genera un campo magnético alterno en una bobina; cuando se acerca metal, se inducen corrientes de Foucault que amortiguan esa oscilación, y el sensor dispara cuando la amortiguación cruza un umbral. Nunca toca nada. Por eso conmuta estando todavía bastante arriba: en la máquina de referencia, a unos 1,8 mm de la superficie.

Esto también explica algo que el manual del fabricante no dice: la distancia de disparo depende de lo que haya encima de la placa metálica. Una lámina PEI gruesa, un adhesivo magnético o un vidrio te alejan el metal del sensor y te cambian el valor. Si mañana cambias de superficie de impresión, este número hay que volver a medirlo. No es una constante de la máquina, es una constante de tu configuración actual.

Esa diferencia de ~1,8 mm tiene que compensarse en algún lado. Si no, después del homing la impresora cree que la boquilla está en Z=0 mientras en realidad flota casi dos milímetros más arriba. Para dimensionarlo: una primera capa típica de 0,2 mm se imprime aplastando el cordón contra la cama. Un error de 1,8 mm es nueve veces la altura completa de esa capa. No hay ajuste de flujo ni de temperatura que compense eso.

Fíjate en el numeral delante de z_offset: esa línea viene comentada de fábrica. El valor que realmente rige está al final del archivo, en el bloque autogenerado por SAVE_CONFIG — ahí escriben tanto PROBE_CALIBRATE como la pantalla. Si lo buscas arriba en el bloque [probe] y no encuentras nada, estás mirando el lugar equivocado.

El error real: en el primer print falta la corrección

Con eso, el patrón que no tenía sentido se desarma solo. Comparando la consola de dos arranques consecutivos en la misma máquina y con el mismo archivo:

Enviado al iniciar el print 1.º print (falla) 2.º print (sale bien)
BED_MESH_CLEAR
BED_MESH_PROFILE load=6
SET_GCODE_OFFSET Z=-1.79 falta

Esa es la única diferencia entre un print arruinado y uno limpio. En el primer trabajo después de encender, la pantalla no manda el Z-offset que tiene guardado. La boquilla queda alta exactamente por ese monto. Cancelas, relanzas, y ahora sí lo envía: de ahí sale la impresión de que la máquina "necesita calentarse".

La confusión está tan extendida que el propio autocompletado de Google la registra: neptune 4 z offset not saving y neptune 4 z offset keeps changing son sugerencias de búsqueda por derecho propio.

Por qué tocar z_offset no lo soluciona

El lugar natural para la compensación es z_offset dentro del bloque [probe]. En un Klipper estándar, efectivamente ahí va. En esta máquina, con la firmware de fábrica, no tuvo ningún efecto sobre el punto cero.

Se demuestra en tres líneas. Lo importante es palpar desde una altura suficiente: Klipper retrocede cinco milímetros al medir y vuelve a bajar (homing_retract_dist: 5). Si palpas desde dos milímetros justo después del homing, mides ese retroceso en vez de la cama.

Gcode
G28
G1 X165 Y165 Z12 F3000
PROBE
>> probe at 165.000,165.000 is z=0.035000

Con z_offset = 1.830 cargado y confirmado por la firmware, el sensor disparó en una posición de eje de 0,035. Ahí está la prueba, porque esa es justamente la función del parámetro: define qué coordenada Z se le asigna al punto de disparo. Si estuviera actuando, la posición reportada tendría que ser 1,83.

Se repitió la medición con 3.60 en el mismo campo: salió z=0.120000. Dos valores muy distintos, dos disparos prácticamente en cero, y el contacto con papel en ambos casos alrededor de -1,75. Ningún cambio en z_offset movió la boquilla ni una vez.

Lo que sí funciona en esta máquina es el G-code offset, vía SET_GCODE_OFFSET. Es además el camino que usa la propia impresora: el Z-offset que ajustas en la pantalla no es otra cosa que un G-code offset. Puedes verlo en vivo en la consola de Fluidd cuando entras al menú de leveling. aparece una línea como SET_GCODE_OFFSET Z=-1.790000 MOVE=1. La pantalla administra el valor correctamente y lo aplica. Solo que no siempre.

El arreglo, en cuatro movimientos

La idea de fondo es dejar de confiar en la pantalla: si el valor va escrito en el Start G-code del slicer, se aplica en todos los prints, incluido el primero después de encender.

Antes de empezar: ¿tu cama está mecánicamente nivelada? Todo lo que sigue lo da por hecho. El Z-offset desplaza la boquilla de forma pareja sobre toda la cama, no puede corregir una placa torcida. Y el bed mesh está pensado para la ondulación, no para una esquina caída: mientras más tenga que compensar, más sube y baja el eje Z durante la primera capa y más disparejo queda el resultado. Nivela primero con la nivelación auxiliar (menú Level → botón Auxiliary): la máquina va recorriendo las esquinas y tú ajustas las perillas hasta que una hoja de papel pase con la misma resistencia leve en todas.

Una advertencia si ya tienes el problema de este artículo: la nivelación auxiliar lleva la boquilla a Z0 y tú ajustas por tacto. Si la boquilla está dos milímetros demasiado arriba, nunca vas a sentir contacto y vas a girar las perillas al vacío. Si te pasa, haz primero los movimientos 1 y 2, carga el valor medido en la pantalla, y recién entonces nivela: ahí el tacto del papel vuelve a ser confiable.

Si nunca le has mandado un comando a la impresora: el Neptune 4 trae de fábrica una interfaz web llamada Fluidd. Entras desde el navegador a http://<IP-de-la-impresora> — la IP está en la pantalla, bajo Advance Settings. No hay nada que instalar, ya está corriendo en la máquina. Ahí tienes una sección Console: escribes una línea, das Enter, y la impresora la ejecuta al tiro. Esas líneas son G-code. En los bloques de abajo va una instrucción por línea; escríbelas una tras otra con Enter entremedio. Todo lo que va después de un punto y coma es un comentario para ti y no hace falta escribirlo.

Calcula una media hora larga, de la cual la mayor parte es esperar.

1. Dejar el offset de la pantalla en cero

Esto va antes de medir, si no mides cualquier cosa. La pantalla guarda una corrección de altura y se la manda a la impresora; mientras siga activa, la boquilla ya está corregida y estarías midiendo solo el resto que falta, no la distancia real.

En la pantalla: menú Leveling, campo Z-offset a 0.000, guardar. En algunas versiones de firmware la máquina se reinicia después; es normal.

Menú de Z-offset en la pantalla del Elegoo Neptune 4 Plus con el valor puesto en cero

Por seguridad, manda además este comando por la consola. Pone la corrección en cero con independencia de la pantalla:

Gcode
SET_GCODE_OFFSET Z=0 MOVE=0

La comprobación confiable es un solo comando:

Gcode
GET_POSITION
>> // gcode base: X:0.000000 Y:0.000000 Z:0.000000 E:0.000000

Salida del comando GET_POSITION en la consola del Neptune 4 Plus mostrando el G-code offset

La línea gcode base muestra el G-code offset que está rigiendo ahora. Si detrás de Z: hay un cero, no hay corrección activa y puedes medir. Si aparece otra cosa. por ejemplo Z:-1.780000 — la pantalla todavía mantiene su valor y la medición no serviría de nada.

Guardado no es lo mismo que vigente. gcode base muestra lo que rige, no lo que la pantalla tiene almacenado. El valor guardado recién se vuelve efectivo cuando la pantalla lo envía, y eso es exactamente lo que no hace en el primer print. Lo que está guardado solo lo ves en la pantalla misma, en el campo Z-offset. Por eso las dos cosas: dejar el campo en 0.000 y verificar con GET_POSITION antes de medir.

Un detalle que confunde al leer la consola: al entrar al menú de leveling, la pantalla a veces manda su valor guardado, y cuando es cero escribe SET_GCODE_OFFSET Z=+-0.000000 MOVE=1. Klipper no sabe leer +-0. y responde unable to parse. Es inofensivo. simplemente no se fija ningún offset, que es lo que queremos aquí. Eso sí, no sirve como método de verificación: ese mensaje aparece solo al entrar al menú, no cada vez que guardas.

2. Medir el valor de corrección con papel

El metal se dilata al calentarse. Un valor medido en frío ya no sirve al imprimir, así que se mide en condiciones de impresión. Las temperaturas salen de tu perfil de filamento en el slicer: con PETG suelen ser 75 °C de cama y 240 °C de boquilla; con PLA más bien 60 y 210. Descarga el filamento antes, si no gotea y estorba.

Manda estas tres líneas por la consola con tus propias temperaturas. M140 calienta la cama, M104 la boquilla, G4 hace esperar a la máquina un tiempo fijo. aquí 600 segundos, o sea diez minutos:

Gcode
M140 S75      ; cama a tu temperatura de impresion
M104 S240     ; boquilla a tu temperatura de impresion
G4 S600       ; diez minutos de calentamiento

Comandos de calentamiento enviados desde la consola del Neptune 4 Plus

Los diez minutos no son un margen de seguridad por si acaso. La cama reporta su temperatura objetivo a los dos o tres minutos, pero el marco y el eje Z tardan bastante más. y son ellos los que terminan de definir dónde queda la boquilla.

Después van cuatro líneas que llevan la boquilla a un punto definido:

Gcode
BED_MESH_CLEAR          ; desactiva la correccion de cama guardada
G28                     ; referencia todos los ejes (homing)
G1 X165 Y165 Z5 F3000   ; al centro de la cama, 5 mm de altura
G1 Z0 F300              ; baja a altura cero

BED_MESH_CLEAR apaga la corrección guardada para que no distorsione la medición. G28 manda todos los ejes a sus finales de carrera. G1 es un movimiento: X e Y son la posición sobre la cama, Z la altura, F la velocidad. X165 Y165 es el centro de la cama en el Neptune 4 Plus; en el Neptune 4 o 4 Pro usa la mitad de las medidas de tu cama.

La impresora ahora cree que la boquilla está tocando. Mete una hoja de papel debajo: con alta probabilidad hay aire de sobra. Eso es exactamente el error del que trata este artículo.

Ahora bajas a tientas. La meta es la misma que en un nivelado normal: que una hoja pase entre boquilla y cama y se pueda mover con resistencia perceptible, sin que se ondule. Es importante dar alturas absolutas y no ir bajando "un poquito más" cada vez, para saber en todo momento en qué valor está el cabezal. Los valores negativos están permitidos y son intencionales: la boquilla tiene que bajar por debajo del cero que la máquina considera correcto.

⚠️ Ve con cuidado y no repitas estos números a ciegas. Ante la duda, baja en pasos de 0,1 mm y 0,01 mm; mirar la boquilla de reojo ayuda a estimar cuánto falta.

Gcode
G1 Z-0.5 F120
G1 Z-1.0 F120
G1 Z-1.5 F60
G1 Z-1.75 F60    ; desde aqui en pasos chicos

Proceso de nivelación por G-code en el Neptune 4 Plus con la boquilla bajando sobre la cama

Tira del papel después de cada línea. Al principio corre suelto, después sientes resistencia, después raspa de forma audible. Avanza de a 0,05 mm apenas notes la primera resistencia, y detente cuando el papel ya casi no se mueva. Si sigues bajando, entierras la boquilla en la cama.

El valor de Z en ese punto es tu valor de corrección: en la máquina de referencia, -1,78. Anótalo.

Sube la boquilla para que no quede parada sobre la cama caliente:

Gcode
G1 Z10 F300

3. Escribir el valor en el Start G-code

Todo slicer antepone a cada trabajo un bloque fijo de comandos: el Start G-code. Ahí se define qué pasa antes de la primera capa. calentar, referenciar, limpiar la boquilla. Ese bloque se edita una sola vez y después corre solo en cada print.

Ahí va el valor medido. En vez de esperar que la pantalla mande el offset a tiempo, lo fijas tú, en cada trabajo, justo después del homing.

En el ElegooSlicer está en Printer SettingsMachine G-codeMachine start G-code. El ElegooSlicer es un fork de Orca, así que en OrcaSlicer se ve idéntico. Reemplaza el contenido completo por este:

Gcode
M400                                           ; espera a que se vacie el buffer
M220 S100                                      ; velocidad al 100%
M221 S100                                      ; flujo al 100%
M140 S[bed_temperature_initial_layer_single]   ; fija la cama, sin esperar
M104 S140                                      ; boquilla tibia pero sin fluir - evita goteo
G28                                            ; homing en frio, solo para desbloquear el movimiento
G1 Z50 F600
G1 X5 Y325 F6000                               ; estaciona atras a la izquierda, fuera del area de impresion
M190 S[bed_temperature_initial_layer_single]   ; ahora si espera la cama
G4 S300                                        ; calienta cama y marco, boquilla en reposo a 140
M109 S[nozzle_temperature_initial_layer]       ; recien ahora sube a temperatura de impresion
G4 S30                                         ; deja que la zona del sensor se estabilice
G90
G28                                            ; homing en caliente - mismo estado termico que al imprimir
SET_GCODE_OFFSET Z=-1.78 MOVE=0                ; AQUI va TU valor medido
BED_MESH_PROFILE LOAD=11                       ; AQUI va el nombre de TU perfil - ver mas abajo
G1 Z10 F300
G1 X112.5 Y-1.5 F6000                          ; linea de purga sobre el borde saliente del PEI
G1 Z0.4 F300
G92 E0
G1 X212.5 E30 F400                             ; dibuja la primera linea
G1 Z0.6 F120.0
G1 X209.5 F3000
G92 E0
;LAYER_COUNT:[total_layer_count]
;LAYER:0

Campo Machine start G-code en el ElegooSlicer con el bloque de inicio cargado

Hay dos líneas que debes ajustar, el resto puede quedar tal cual:

  • SET_GCODE_OFFSET Z=-1.78 — aquí va tu medición del movimiento 2, con signo menos.
  • BED_MESH_PROFILE LOAD=11 — aquí va el nombre de tu perfil de mesh. Cuál es, lo aclara el movimiento 4.

Los corchetes tipo [bed_temperature_initial_layer_single] no son errores de tipeo ni campos que tengas que rellenar. El slicer los reemplaza automáticamente al laminar con las temperaturas de tu perfil de filamento. Déjalos exactamente así.

Un detalle de la línea de purga está cambiado a propósito: de fábrica queda en Y0.5, es decir medio milímetro adentro del borde de la cama. Es muy justo. un brim llega fácil hasta Y1.0, y ahí se superponen y la boquilla ara su propia línea de purga al partir. Y-1.5 la deja sobre el borde saliente de la placa PEI, donde no puede chocar con nada.

Qué hace el resto, en corto: el primer G28 existe solo para poder moverse, porque antes del homing los ejes no están referenciados. M104 S140 mantiene la boquilla tibia pero bajo el punto de fluidez. el PETG si no chorrea durante la espera. La posición de estacionamiento X5 Y325 queda fuera del área de impresión para que las gotas no caigan en la cama (en un Neptune 4 o 4 Pro, con cama más chica, hay que ajustar ese valor). G4 S300 calienta cama y marco cinco minutos. Recién después la boquilla sube a temperatura con M109, seguido de 30 segundos para igualar. así se hace homing en el mismo estado térmico en que se imprime. El segundo G28 es el que importa: justo después viene el offset, para que ya nada pueda sobrescribirlo.

No reemplaces la línea de purga por una purga multi tramo: el grumo de material termina arrastrado de un lado a otro de la cama.

Al guardar, el ElegooSlicer avisa que los perfiles de sistema de Elegoo no se pueden sobrescribir y ofrece hacer una copia. Acéptala, si no pierdes el cambio en la próxima actualización.

4. Levantar un mesh fino

La impresora palpa la cama en varios puntos antes de imprimir y arma un mapa de alturas, el bed mesh, con el que compensa que ninguna placa es perfectamente plana. De fábrica son 6 × 6 puntos, o sea 36 mediciones.

Menú Level del Neptune 4 en modo estándar, con malla de 6x6 puntos y Z-offset en 0,000

Sobre una superficie medida de 275 × 275 mm, esos 36 puntos son unos 55 mm de separación entre mediciones. entre medio la impresora solo interpola desde los vecinos. En la cama de referencia el mapa tenía una dispersión de 0,26 mm, o sea más que una altura de capa completa. Si tu primera capa pega en algunas zonas y en otras no, el problema es ese y no el offset: más presión solo aplastaría las zonas que ya estaban bien.

El Neptune 4 puede hacerlo más fino, pero lo esconde bien. En el menú Level, arriba a la derecha, hay un pequeño ícono de conmutación con dos opciones: Standard mode y Professional mode. El modo profesional palpa 11 × 11 puntos, o sea 121 en vez de 36.

Selector de modo de nivelación del Neptune 4 con las opciones Standard mode y Professional mode

El procedimiento desde la pantalla, sin consola: abre Level, cambia arriba a la derecha a Professional mode, guarda. De vuelta en Level, lanza Automatic y déjalo correr. demora bastante más que el barrido grueso. La calibración de Z que ofrece después puedes confirmarla, pero sin modificar el valor de Z: escribe un parámetro que en esta máquina no hace nada. Finalmente presiona el ícono de diskette arriba a la derecha; la impresora se reinicia y la medición queda en su configuración.

Una trampa: justo después de cambiar de modo, el modo profesional muestra una malla llena de ceros. Eso no es un resultado, es una malla vacía. Si imprimes ahí, te quedaste sin ninguna corrección de cama. así que corre Automatic sí o sí.

Menú Level del Neptune 4 en modo profesional con la malla de 11x11 todavía en ceros

Pantalla de guardado del mesh de auto nivelación en el Neptune 4

La pantalla nombra el perfil según la cantidad de puntos por eje: 6 en modo estándar, 11 en modo profesional. Ese nombre es el que va en BED_MESH_PROFILE LOAD=. Qué perfiles existen en tu máquina lo ves en Fluidd, en TuneBed Mesh. Si pones un nombre que no existe, el print aborta con Unknown profile; si pones uno antiguo, sigues imprimiendo en silencio con la malla gruesa.

La pantalla mide siempre con la cama a 60 °C, independiente de lo que hayas configurado antes. Si prefieres medir a tu temperatura real de impresión, hazlo por consola. SAVE_CONFIG fija el resultado y reinicia la máquina:

Gcode
M140 S75
G4 S600
BED_MESH_CALIBRATE PROFILE=11 mesh_min=20,25 mesh_max=295,300 probe_count=11 algorithm=bicubic
SAVE_CONFIG

Los límites mesh_min y mesh_max vienen de la configuración del Plus con su cama de 320 mm. En un Neptune 4 o 4 Pro son más chicos: sácalos de tu propia printer.cfg en vez de copiar estos.

Hay un detalle de arquitectura que vale la pena conocer: en la printer.cfg del Neptune 4 Plus no hay ningún comando que cargue un mesh guardado, ni en el macro PRINT_START ni en el Start G-code del slicer. El nivelado desde pantalla ejecuta tras bambalinas este macro:

Ini
[gcode_macro G29]
gcode:
      M400
      BED_MESH_CLEAR
      G28
      BED_MESH_CALIBRATE profile=6 mesh_min=20,25 mesh_max=295,300 probe_count=6 algorithm=bicubic

La medición se guarda como perfil llamado 6. Klipper por su cuenta solo carga al arrancar un perfil llamado default — que aquí no existe. El hueco lo tapa la interfaz de Elegoo, que en cada inicio de print manda BED_MESH_CLEAR y BED_MESH_PROFILE load=6, por fuera de la configuración de Klipper. El mesh queda activo aunque en la configuración no haya rastro de él. No es algo en lo que convenga confiar, porque el comando viene de una capa que no ves ni versionas. La línea en el Start G-code no cuesta nada y te independiza.

Cómo comprobar que quedó bien

Apaga y enciende la impresora, y manda ese primer print que antes fallaba siempre. Mientras corre la primera capa. no antes. verifica en la consola:

Gcode
GET_POSITION

En gcode base, detrás de Z:, tiene que estar tu valor del Start G-code. Si no está, el offset no se aplicó, y ese es precisamente el error que vinimos a corregir.

Para el mesh, también durante la primera capa:

Gcode
BED_MESH_OUTPUT

Si vuelve una matriz de puntos, hay un mesh activo. Bed has not been probed significa que no se cargó ninguno.

Tres verificaciones que no prueban nada

Vale la pena conocer los callejones sin salida, porque los tres parecen confirmaciones y son razonamientos circulares: calculan hacia atrás desde el mismo valor que deberían estar verificando.

  1. PROBE después del homing reporta z=0.0… Parece "le achuntó justo a la cama", pero por sí solo no dice nada. La cifra recién significa algo cuando la contrastas con el z_offset cargado. y cuando palpas desde altura suficiente. Medido justo después del homing desde dos o tres milímetros, el test solo mide el retroceso del sensor.
  2. "La distancia de boquilla es 0,25 mm." Ese número es la indicación del slicer menos los offsets fijados, no una distancia medida.
  3. El valor está en el archivo. Prueba que se escribió, no que actúa. Lo único válido es el papel bajo la boquilla.

Lo que no ayuda

Cuatro medidas obvias que no aportaron nada y sí cuestan tiempo o datos:

  • Ajustar z_offset: inefectivo en esta máquina, según se mostró arriba. Fue el callejón más caro.
  • Factory reset: no cambió nada, pero borró el bed mesh y los valores de PID. Un PID de extrusor calibrado casi se pierde en el proceso.
  • Reinstalar la firmware: no era necesario. La configuración coincidía con la de fábrica salvo diferencias de hardware.
  • Secar el filamento: estaba seco; el síntoma era mecánico.

También quedó descartada la explicación más intuitiva para el patrón "primero malo, segundo bueno": la deriva térmica. El sensor inductivo está al lado del hotend, y el Start G-code de fábrica hace homing con la boquilla a 140 °C mientras se imprime entre 240 y 260 °C. Suena convincente, y el propio wiki de Elegoo menciona la deriva térmica como causa de disparos desviados. Pero no se pudo demostrar aquí: un print con diez minutos de heat soak antes del homing falló igual que uno sin él. El heat soak del Start G-code de arriba es prevención, no la solución.

¿Y por qué no PROBE_CALIBRATE? Klipper trae esa herramienta justo para esta medición, y normalmente es el camino correcto. Aquí entregó un valor que no calzaba con el resultado: con un offset cargado de 1.83 reportó 1.770, y con 3.60 reportó 1.73 — prácticamente lo mismo, pese a que el punto de partida cambió en 1,77 entre una y otra. Como valor absoluto no sirve. Quien lo adopte igual queda unos 1,8 mm demasiado arriba. La medición con papel y posición de eje leída evita el problema porque no deriva un valor desde otro valor.

Relacionado: después de cada auto nivelado, la pantalla ofrece "revisar los ajustes de Z". Detrás hay un PROBE_CALIBRATE que escribe probe.z_offset, o sea justo el parámetro que aquí no hace nada. Puedes saltarte el paso; el guardado del mesh funciona igual.

Lo mismo en otras impresoras

El mecanismo. sensor que dispara antes de tocar, corrección que hay que fijar en algún lado. es común a casi toda impresora con probe. Lo que cambia es dónde se fija y con qué comando. Esta tabla te ahorra traducir la guía a mano:

Máquina / firmware Sensor típico Comando que fija el offset Dónde persiste Rango habitual
Elegoo Neptune 4 / Pro / Plus / Max (Klipper de fábrica) Inductivo al lado del hotend SET_GCODE_OFFSET Z=… en el Start G-code No persiste solo: va en el slicer -1,5 a -2,2 mm
Klipper genérico (Voron, RatRig, Pi + MCU) BLTouch / CR Touch / sonda inductiva PROBE_CALIBRATE + SAVE_CONFIG printer.cfg, bloque SAVE_CONFIG -0,5 a -3 mm
Creality Ender 3 con CR Touch (Marlin) CR Touch bajo el carro M851 Z-… y luego M500 EEPROM de la placa -1,5 a -2,5 mm
Anycubic Kobra / Kobra 2 (Marlin) LeviQ, sonda de presión M851 Z-… y luego M500, o el asistente de pantalla EEPROM -0,5 a -1,5 mm
Ender 3 sin probe (endstop mecánico) Final de carrera Z regulable No hay comando: se sube o baja el tornillo del endstop Mecánico .

En Marlin, el equivalente exacto de todo este artículo son dos líneas:

Gcode
M851 Z-1.78
M500

M851 fija el offset de la sonda y M500 lo guarda en la EEPROM para que sobreviva al apagado. La diferencia conceptual con el Neptune 4 es justamente esa: en Marlin el valor persiste en la máquina, por eso ahí el problema del "primer print" no existe. Cuando la persistencia depende de una pantalla que puede olvidarse de enviarlo, la única solución robusta es moverlo al slicer.

Dos advertencias antes de que copies valores de esta tabla: los rangos son referenciales para saber si tu medición es plausible, no valores para cargar. Y el método de medición con papel es idéntico en todas. cambia solo el comando final.

Variantes y mejoras

Con la calibración resuelta, hay tres extensiones que valen la pena y que no están en el material original:

1. Un macro PRINT_START propio en vez de un Start G-code largo. Todo ese bloque puede vivir en la printer.cfg como macro, y el slicer solo llama PRINT_START BED=[bed_temperature_initial_layer_single] EXTRUDER=[nozzle_temperature_initial_layer]. La ventaja práctica: cuando cambies el offset, lo editas en un solo lugar y no en cada perfil de impresora del slicer. Si además versionas tu printer.cfg en un repositorio, tienes historial de cada cambio de calibración.

2. Un sensor de filamento en el runout. Un módulo de fin de filamento por microswitch conectado a un pin libre de la placa y declarado como [filament_switch_sensor] pausa el print cuando se acaba el rollo. En prints de PETG de diez horas. que es donde más duele perder una pieza. se paga solo la primera vez que actúa.

3. Verificación automática del offset en cada print. Agregando GET_POSITION al final del Start G-code, cada trabajo deja registrado en la consola el offset con el que partió. Si alguna vez vuelve el síntoma, tienes el historial para confirmar en un segundo si el offset estaba o no. Es la versión automatizada del diagnóstico de este artículo.

Un cuarto camino, si haces cambios frecuentes de superficie de impresión: guarda un perfil de mesh por superficie (PROFILE=pei, PROFILE=vidrio) y cambia solo la línea BED_MESH_PROFILE LOAD= en el slicer. Recuerda que el valor de Z-offset también cambia al cambiar de placa, así que conviene tener un perfil de impresora completo por superficie.

Personalización para Chile

Esta guía no exige comprar hardware nuevo: es calibración pura sobre una máquina que ya tienes. Lo que sí vas a gastar es filamento en las pruebas, y conviene tener a mano lo básico.

Lo que necesitas para seguir el procedimiento:

  • Filamento PETG 1,75 mm. es el material donde el problema se manifiesta más fuerte, porque el PETG se contrae bastante más que el PLA al enfriarse. Un cordón recién depositado se encoge mientras solidifica: si quedó bien aplastado contra la cama, la superficie de adherencia aguanta esa contracción; si quedó redondo encima porque la boquilla estaba alta, se raja a lo largo y las puntas se enrollan hacia arriba. Valor referencial: alrededor de $12.000, $18.000 CLP el kilo.
  • Filamento PLA 1,75 mm. más tolerante, útil para las primeras pruebas de calibración antes de pasar al PETG. Referencial: $10.000, $15.000 CLP el kilo.
  • Hoja de papel de 80 g. la herramienta de medición de todo el procedimiento. Cualquier hoja de impresora sirve; lo importante es usar siempre la misma.
  • Impresora 3D FDM con probe (Elegoo Neptune 4 en el caso base, o cualquiera de la tabla de arriba).

En MechatronicStore encuentras filamento PLA y PETG en 1,75 mm y repuestos de impresión 3D en la sección correspondiente del catálogo. Los precios de arriba son referenciales y de mercado chileno a la fecha de esta publicación: revisa el valor y el stock vigente en la ficha de cada producto antes de comprar.

Equivalencias útiles si vienes del tutorial original: donde se menciona el ElegooSlicer, OrcaSlicer funciona idéntico (el primero es un fork del segundo) y es gratuito; donde se habla de PETG "Elegoo PETG Pro", cualquier PETG de marca con perfil conocido sirve, solo verifica las temperaturas del fabricante antes de medir. Y si tu máquina no es un Neptune 4, la tabla de equivalencias por firmware de más arriba te dice exactamente qué comando reemplaza a SET_GCODE_OFFSET.

Recursos

Versión chilena inspirada en el trabajo original, con la medición generalizada a otras impresoras y componentes en stock local en MechatronicStore.

Todos los valores numéricos de esta guía provienen de un Neptune 4 Plus, configuración V1.6 del 24-06-2024, con firmware de fábrica de Elegoo. Son específicos de esa máquina. sobre todo el valor de corrección. Quien los use sin medir, entierra la boquilla en la cama.