> For the complete documentation index, see [llms.txt](https://marlin.3dwork.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://marlin.3dwork.io/marlin/configuracion-marlin/ajuste-de-limites-de-impresion.md).

# Ajuste de límites de impresión

En ocasiones, ya sea por montar algún mod en nuestra máquina o simplemente porque queremos poner un Marlin cocinado por nosotros para sustituir al de fábrica de nuestra máquina que tiene limitado la superficie de impresión, nos interesa ajustar nuestra configuración para aprovechar al máxima el área de impresión útil de nuestra máquina.

En un mundo ideal, como la siguiente imagen, nuestra configuración de Marlin, o el ajuste físico de los finales de carrera, nos van a permitir que nuestro nozzle se mueva libremente y sin problemas por toda la superficie de impresión:

<figure><img src="/files/YhbrE4SICwLYIUkIAOl4" alt=""><figcaption></figcaption></figure>

Esta sería su configuración en Marlin:

```cpp
// @section geometry

// The size of the printable area
#define X_BED_SIZE 235
#define Y_BED_SIZE 235

// Travel limits (linear=mm, rotational=°) after homing, corresponding to endstop positions.
#define X_MIN_POS 0
#define Y_MIN_POS 0
#define Z_MIN_POS 0
#define X_MAX_POS X_BED_SIZE
#define Y_MAX_POS Y_BED_SIZE
#define Z_MAX_POS 250
```

Por otro lado, y comentábamos al inicio, nos podemos encontrar con que nuestra máquina no pueda llegar correctamente a todo el área de impresión y que ajustando físicamente nuestros finales de carrera no podamos ajustarlos:

![](/files/SBeRQ6Wx5zxzdZeoJkb0) ![](/files/0h6byDCqRX7zr8NWV6kT)

## Ajustes en el área de impresión

Con respecto a este segundo caso os vamos a intentar ayudar a ajustar correctamente el área útil de impresión en vuestro firmware.

{% hint style="info" %}
Para realizar los ajustes explicados a continuación es necesario disponer:

* Una pantalla LCD en modo emulación Marlin, los menús nativos de Marlin vamos
* Una conexión mediante un terminal serial como Pronterface, Octoprint o algunas pantallas TFT táctiles que disponen de esta opción
* Nuestras fuentes de Marlin para compilar nuestra configuración
  {% endhint %}

{% tabs %}
{% tab title="Homing en MIN" %}
Hacer homing en MIN, normalmente la esquina inferior izquierda de nuestra cama, suele ser lo más común.

**Homing XY el nozzle queda fuera de la cama**

Imaginando el caso anterior en el que nuestro nozzle **al hacer homing el nozzle queda fuera del área de impresión** y que no podemos ajustar mecánicamente los finales de carrera para compensarlo.

<figure><img src="/files/SBeRQ6Wx5zxzdZeoJkb0" alt=""><figcaption></figcaption></figure>

* Es importante asegurarnos que en nuestro firmware actual nuestro `X_MIN_POS` e `Y_MIN_POS` están a 0... podremos mirar esto lanzando un comando M503 que nos devuelve la configuración de nuestra máquina o ajustando mediante M206 los offsets de X e Y a 0 `M206 X0 Y0`
* También hemos de asegurarnos que tenemos nuestro `X_BED_SIZE` e `Y_BED_SIZE` con el tamaño correcto de nuestra cama, en este caso no es posible ajustarlo mediante pantalla o gcode con lo que solamente podemos hacerlo en las fuentes de nuestro Marlin, compilar y subirlo a nuestra electrónica

Ejemplo:

```cpp
// @section geometry

// The size of the printable area
#define X_BED_SIZE 235
#define Y_BED_SIZE 235

// Travel limits (linear=mm, rotational=°) after homing, corresponding to endstop positions.
#define X_MIN_POS 0
#define Y_MIN_POS 0
#define Z_MIN_POS 0
#define X_MAX_POS X_BED_SIZE
#define Y_MAX_POS Y_BED_SIZE
#define Z_MAX_POS 250
```

* Desde nuestro cliente terminal, Pronterface por ejemplo, lanzaremos el comando `G28 X Y` para que haga el homing de nuestros ejes X e Y solamente... una vez finalizado en nuestra pantalla de la impresora o Pronterface debería marcar las coordenadas X0Y0
* Dado que, para este caso, nuestro nozzle ha quedado fuera de nuestra área de impresión utilizaremos los controles de movimiento por pantalla de la impresora o de nuestro Pronterface para ir moviendo los ejes X e Y hasta que veamos que la punta de este queda perfectamente alineada con el inicio de nuestra cama.\
  Nos anotaremos los valores de coordenadas para ese punto, en nuestro ejemplo X5 Y5
* Ahora que ya sabemos cuales son los offsets de nuestro homing procederemos a configurarlos, disponemos de dos formas:
  * Ajustando `X_MIN_POS` e `Y_MIN_POS` en nuestras fuentes de Marlin, compilar y subir a nuestra electrónica

    ```cpp
    // @section geometry

    // The size of the printable area
    #define X_BED_SIZE 235
    #define Y_BED_SIZE 235

    // Travel limits (linear=mm, rotational=°) after homing, corresponding to endstop positions.
    #define X_MIN_POS -5
    #define Y_MIN_POS -5
    #define Z_MIN_POS 0
    #define X_MAX_POS X_BED_SIZE
    #define Y_MAX_POS Y_BED_SIZE
    #define Z_MAX_POS 250
    ```
  * Mediante el comando M206 enviando los valores y guardando en EEPROM (M500) para no perderlos al reiniciar.\
    Os aconsejamos esta forma solamente de forma temporal ya que lo ideal es hacer el paso anterior.
* Una vez aplicados los cambios volveremos a hacer un `G28 X Y` y en nuestras coordenadas al finalizar el proceso veremos X-5 Y-5.\
  Si movemos manualmente por pantalla/Pronterface nuestros ejes a X0 Y0 debería de quedar nuestro nozzle alineado con el inicio de nuestra cama.

**Homing XY el nozzle queda dentro de la cama**

Imaginando el caso anterior en el que nuestro nozzle **al hacer homing el nozzle queda dentro del área de impresión** y que no podemos ajustar mecánicamente los finales de carrera para compensarlo.

<figure><img src="/files/0h6byDCqRX7zr8NWV6kT" alt=""><figcaption></figcaption></figure>

Desafortunadamente en este caso solamente podemos seguir al siguiente punto para encontrar nuestro nuevo tamaño de cama ajustando `X_BED_SIZE` e `Y_BED_SIZE`

**Encontrando nuestros valores MAX**

Por último nos tocará encontrar el valor MAX, `X_BED_SIZE` e `Y_BED_SIZE`, en cada uno de los casos anteriores. Para ello:

* Desde nuestro cliente terminal, Pronterface por ejemplo, lanzaremos el comando `G28 X Y` para que haga el homing de nuestros ejes X e Y solamente... una vez finalizado en nuestra pantalla de la impresora o Pronterface debería marcar las coordenadas X0Y0
* Para poder movernos libremente sin restricciones desde nuestro cliente terminal lanzaremos el comando `M211 S0` que desactiva los SOFTWARE ENDSTOPS\ <mark style="color:orange;">**Proceder con precaución!!! al no tener límites podemos hacer que nuestra máquina pueda chocar contra los límites físicos de su cinemática y tener daños.**</mark>
* Utilizaremos los controles de movimiento por pantalla de la impresora o de nuestro Pronterface para ir moviendo los ejes X e Y hasta que veamos que la punta de este queda perfectamente alineada con el final de nuestra cama.\
  Nos anotaremos los valores de coordenadas para ese punto:
  * En el ejemplo primero, donde nuestro homing quedaba fuera de la cama, y dado que no hemos tenido limitacion a llegar al final de nuestra área de impresión X235 Y235
  * Para el segundo ejemplo, donde nuestro homing quedaba dentro de la cama de 260x260 (XY), y dado que tampoco hemos tenido limitacion a llegar al final del área de impresión X255 Y255
  * Se puede dar un tercer caso y es que, por limitaciones en nuestra cinemática, no podemos llegar al área máxima de nuestra cama por lo que anotaremos el valor más alto que podamos llegar de forma segura sin chocar nuestros ejes.
* Con esos valores ajustaremos nuestro `X_BED_SIZE` e `Y_BED_SIZE` en nuestras fuentes de Marlin, compilaremos y subiremos el firmware a nuestra electrónica.\
  El siguiente código sería para el ejemplo en el que nuestro nozzle queda dentro de nuestra cama:

```cpp
// @section geometry

// The size of the printable area
#define X_BED_SIZE 255
#define Y_BED_SIZE 255

// Travel limits (linear=mm, rotational=°) after homing, corresponding to endstop positions.
#define X_MIN_POS 0
#define Y_MIN_POS 0
#define Z_MIN_POS 0
#define X_MAX_POS X_BED_SIZE
#define Y_MAX_POS Y_BED_SIZE
#define Z_MAX_POS 250
```

{% endtab %}

{% tab title="Homing en MAX" %}

{% endtab %}
{% endtabs %}

## Centrado del área de impresión

En ocasiones, cuando tenemos que hacer los ajustes antes comentados, lo más normal es que nuestras impresiones no queden totalmente en la superficie de la cama porque hemos podido perder área de impresión.

En ese caso has de decidir si priorizar entre área de impresión útil o perder parte de esta para que tus impresiones queden centradas.

Normalmente en este último caso deberemos de jugar con `X_BED_SIZE` e `Y_BED_SIZE` o `X_MIN_POS` e `Y_MIN_POS` para compensar las desviaciones de nuestra máquina.

## Ajustes laminador

Dado que probablemente, en el caso de que nuestra área de impresión cambie, deberemos ajustar correctamente nuestro perfil del laminador al nuevo tamaño para evitar sustos.

## Uso de clips o fijadores de superficies de cama

Aunque ya no suele ser tan normal, es posible que contemos con clips para sujetar un cristal utilizado como superficie de impresión.

En esta guía se ha pensado para calcular el área de impresión máxima, dado que es la forma más versátil para poder si es necesario usar cristal (con clips), flejes o cualquier otra superficie.

En el caso de que usemos clips hemos de tener en cuenta en nuestro laminador el configurar un área o margen de seguridad en sus correspondientes opciones, todos los laminadores actualmente cuentan con ello.

Crearemos varios perfiles de máquina con más o menos márgenes de seguridad dependiendo de la superficie de impresión que empleemos. De esta forma no tendremos que tocar configuración de firmware.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://marlin.3dwork.io/marlin/configuracion-marlin/ajuste-de-limites-de-impresion.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
