# Nivelación manual de cama

Para ello usaremos las funciones **BED\_SCREWS\_ADJUST** o **SCREWS\_TILT\_CALCULATE** de Klipper dependiendo de si contamos o no con sensor de nivelación.

Podéis encontrar la documentación oficial de Klipper:

{% embed url="<https://www.klipper3d.org/Manual_Level.html>" %}

## Definición de puntos de ajuste

Para poder realizar una nivelación manual con los tornillos de ajuste de nuestra base de impresión, lo primero que deberemos hacer es definir los puntos donde emplazar nuestro hotend o sensor coincidiendo con nuestros puntos de anclaje para nuestra cama.

<figure><img src="/files/rpPEdjYwYp58nPNuPmAf" alt=""><figcaption><p>Mediremos, con una regla por ejemplo, las distancias entre nuestro punto X0Y0 a los puntos de anclaje de nuestra cama para añadirlos a nuestra configuración. En el caso de que usemos sensor es este el que idealmente y siempre que sea posible ha de quedar en las coordenadas de los puntos de anclaje.</p></figcaption></figure>

Procederemos este ajuste creando una **nueva sección en nuestro pinter.cfg** (o en alguno de sus includes si nuestra configuración es modular) **\[bed\_screws] o \[screws\_tilt\_adjust] dependiendo del sistema elegido**.

{% tabs %}
{% tab title="Ejemplo" %}
**Nivelación manual BED\_SCREWS\_ADJUST**, <mark style="color:red;">importante calcular las coordenada para que el nozzle esté en la posición más cercana al punto de anclaje</mark>:

```django
[bed_screws]
screw1: 70,47
screw1_name: Front left screw
screw2: 70,213
screw2_name: Rear left screw
screw3: 235,47
screw3_name: Front right screw
screw4: 235,213
screw4_name: Rear right screw
```

Podeis encontrar un asistente para poder generar la configuración \[bed\_screws] de una forma sencilla con la [**siguiente calculadora**](https://3dwork.io/tools/#bedleveling):\
![](/files/b1dwfzOJA9lPV4W681nM)

Es una herramienta muy visual pero en cualquier caso podemos optar por importar nuestro printer.cfg desde donde obtendremos valores de referencia o añadirlos manualmente (dimensiones de la cama, offsets de la sonda si procede, coordenadas de los tornillos de ajuste manual en la cama y el tipo de rosca que usan... con esto daremos a Calcular y obtendremos la configuración sugerida para incluir en nuestro printer.cfg ya sea utilizando bed\_screws (nivelacion manual con papel) o screws\_tilt\_adjust (nivelación manual asistida con sensor si disponemos en nuestra máquina):

\
![](/files/gPtXCRRHqJeKlz50QN9S)

**Nivelación asistida por sensor SCREWS\_TILT\_CALCULATE**, <mark style="color:red;">importante calcular las coordenada para que el sensor esté en la posición más cercana al punto de anclaje:</mark>

```django
# Ejemplo Ender 3
[screws_tilt_adjust]
screw1: 117,117
screw1_name: Central screw
screw2: 50,50
screw2_name: Front left screw
screw3: 50,215
screw3_name: Rear left screw
screw4: 215,50
screw4_name: Front right screw
screw5: 215,215
screw5_name: Rear right screw
horizontal_move_z: 10
speed: 150
screw_thread: CW-M3
```

{% hint style="success" %}
En el caso de usar **SCREWS\_*****TILT\_*****CALCULATE es importante:**

* **Definir como screw1 un punto central de nuestra cama al tomar este asistente de nivelación este como el punto de referencia**, de esta forma podremos obtener una nivelación óptima siempre y cuando nuestra cama no se encuentre combada.
* **horizontal\_move\_z será la altura a la que nuestro eje Z se coloque al realizar los traslados** de un punto a otro de sondeo
* **speed** la velocidad en los movimientos de traslado
* **screw\_thread**, quizás el más importante, donde **indicaremos la dirección CW o CCW para indicar la reducción de distancia entre nuestra cama y nozzle** por defecto CW pero si nuestro sistema funciona a la inversa deberemos ajustarlo... **y la métrica de nuestro tornillo** de ajuste siendo M3, M4 o M5 los valores aceptados.\
  Opciones posibles: CW-M3, CCW-M3, CW-M4, CCW-M4, CW-M5, CCW-M5
  {% endhint %}
  {% endtab %}

{% tab title="Definición \[bed\_screws]" %}
A continuación podéis ver todas las opciones de esta sección, podéis ver la [**versión actualizada desde la documentación de Klipper**](https://www.klipper3d.org/Config_Reference.html#bed_screws):

```
[bed_screws]
#screw1:
#   The X, Y coordinate of the first bed leveling screw. This is a
#   position to command the nozzle to that is directly above the bed
#   screw (or as close as possible while still being above the bed).
#   This parameter must be provided.
#screw1_name:
#   An arbitrary name for the given screw. This name is displayed when
#   the helper script runs. The default is to use a name based upon
#   the screw XY location.
#screw1_fine_adjust:
#   An X, Y coordinate to command the nozzle to so that one can fine
#   tune the bed leveling screw. The default is to not perform fine
#   adjustments on the bed screw.
#screw2:
#screw2_name:
#screw2_fine_adjust:
#...
#   Additional bed leveling screws. At least three screws must be
#   defined.
#horizontal_move_z: 5
#   The height (in mm) that the head should be commanded to move to
#   when moving from one screw location to the next. The default is 5.
#probe_height: 0
#   The height of the probe (in mm) after adjusting for the thermal
#   expansion of bed and nozzle. The default is zero.
#speed: 50
#   The speed (in mm/s) of non-probing moves during the calibration.
#   The default is 50.
#probe_speed: 5
#   The speed (in mm/s) when moving from a horizontal_move_z position
#   to a probe_height position. The default is 5.
```

{% endtab %}

{% tab title="Definición \[screws\_tilt\_adjust]" %}
A continuación podéis ver todas las opciones de esta sección, podéis ver la [**versión actualizada desde la documentación de Klipper**](https://www.klipper3d.org/Config_Reference.html#screws_tilt_adjust):

```django
[screws_tilt_adjust]
#screw1:
#   The (X, Y) coordinate of the first bed leveling screw. This is a
#   position to command the nozzle to so that the probe is directly
#   above the bed screw (or as close as possible while still being
#   above the bed). This is the base screw used in calculations. This
#   parameter must be provided.
#screw1_name:
#   An arbitrary name for the given screw. This name is displayed when
#   the helper script runs. The default is to use a name based upon
#   the screw XY location.
#screw2:
#screw2_name:
#...
#   Additional bed leveling screws. At least two screws must be
#   defined.
#speed: 50
#   The speed (in mm/s) of non-probing moves during the calibration.
#   The default is 50.
#horizontal_move_z: 5
#   The height (in mm) that the head should be commanded to move to
#   just prior to starting a probe operation. The default is 5.
#screw_thread: CW-M3
#   The type of screw used for bed level, M3, M4 or M5 and the
#   direction of the knob used to level the bed, clockwise decrease
#   counter-clockwise decrease.
#   Accepted values: CW-M3, CCW-M3, CW-M4, CCW-M4, CW-M5, CCW-M5.
#   Default value is CW-M3, most printers use an M3 screw and
#   turning the knob clockwise decrease distance.
```

{% endtab %}
{% endtabs %}

{% hint style="warning" %}
**Deberemos definir estos puntos dependiendo de nuestra máquina, la ubicación de los tornillos de ajuste de nuestra cama y el tamaño de nuestro hotend asegurando que mecánicamente es viable la ubicación del punto de sondeo.**
{% endhint %}

## Nivelación Manual

Una vez realizado el cambio en nuestra configuración y validada que no de problemas, comenzaremos con el proceso que podemos hacer desde la ventana terminal/consola:

```
# Hacemos un home de todos los ejes
G28
# Lanzamos el asistente de nivelación de cama
BED_SCREWS_ADJUST
```

* La máquina moverá el cabezal de impresión al primer punto de sondeo y con el típico papel ajustaremos el tornillo/rueda a nuestro gusto.
* Si **hemos tenido que ajustar el tornillo más de 1/8 de giro de tornillo** usaremos en el terminal/consola el **comando ADJUSTED y si no hemos necesitado apenas ajuste ACCEPT**.
* **Cuando terminemos el asistente o ciclo de nivelación finalizaremos con ABORT…** ¡Y ya podremos continuar con los siguientes pasos en nuestra calibración!!!

Una vez hayamos efectuado ambos procesos ejecutaremos Z\_ENDSTOP\_CALIBRATE que llevara nuestro nozzle a la posición Z =0 correcta.

## Nivelación manual cama con sensor

En el caso de que dispongamos un sensor de nivelación, podemos utilizarlo para simplificar y hacer más fiable la nivelación manual de nuestra cama.

**Klipper** nos facilita dos macros que nos van a ayudar en la nivelación asistida de nuestra cama, os aconsejamos emplear **SCREWS\_*****TILT\_*****CALCULATE**

### **SCREWS\_*****TILT\_*****CALCULATE**

```
# Hacemos un home de todos los ejes
G28
# Lanzamos el asistente de nivelación de cama con sensor de nivelacion
SCREWS_TILT_CALCULATE
```

* <mark style="color:red;">**Lanzaremos un comando G28 para hacer un home!!!**</mark>
* **Lanzaremos el comando SCREWS\_*****TILT\_*****CALCULATE** desde nuestra consola que efectúa un sondeo con el sensor de los puntos de lecturas definidos en la sección *\[screws\_tilt\_adjust]* de nuestro printer.cfg que ya definimos al inicio de la guía.

{% hint style="success" %}
Es aconsejable realizar este proceso con la cama a temperatura de impresión. En el caso del nozzle entre 140-170 grados **si contamos con un sensor inductivo o similar que normalmente se ven afectados por la temperatura**.
{% endhint %}

{% hint style="info" %}
El comando **SCREWS\_*****TILT\_*****CALCULATE** dispone de un parámetro llamado DIRECTION, con este parámetro podemos indicar si nuestro sistema de ajuste no puede o esta en su máximo en una de nuestras direcciones haciendo imposible el ajuste sugerido.

Por ejemplo si nuestro sistema de ajuste está al máximo en CW en algún punto lanzaremos el comando indicando que nuestra dirección de ajuste sea CCW:

**SCREWS\_*****TILT\_*****CALCULATE** **DIRECTION=CCW**
{% endhint %}

* Una vez **hechas las lecturas en esos puntos nos recomendará el ajuste manual en los tornillos de ajuste de nuestra cama**.\
  Las **correcciones nos las propone usando el sistema de agujas del reloj**, indicando las **horas:minutos a efectuar en el giro**... además del **sentido de este, siendo CW en el sentido de las agujas del reloj y CCW en contra**.

<figure><img src="/files/xzG9SeoPDs1HSLMtlRog" alt=""><figcaption><p>Captura de SCREWS_TILT_ADJUST una forma sencilla de ajuste manual asistida por el sensor si disponemos.</p></figcaption></figure>

* Es recomendable lanzar el comando **SCREWS\_*****TILT\_*****CALCULATE varias veces hasta que el ajuste a realizar sea mínimo o inexistente**


---

# Agent Instructions: 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://klipper.3dwork.io/klipper/empezamos/nivelacion-cama-manual.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.
