Llevo 7 años en esto de la impresión 3D. He visto de todo: desde impresoras que vibraban como un taladro neumático hasta prints con un ghosting tan horrible que parecían pintados por un niño con pulso de camarero en hora punta. Y sí. El ringing (o ghosting) es el enemigo número uno de la calidad superficial.
Pero hay un truco que transforma una Ender 3 temblorosa en una máquina de precisión suiza. Y no, no es un frame de aluminio de 300€. Es un sensor de aceleración de 3€: el ADXL345. En DunaTech, nos pasamos el día tamizando la arena de AliExpress para encontrar estas gemas. Y créeme, esta es de las mejores.
Hoy te voy a enseñar exactamente cómo conectar este sensor a tu placa, el código Arduino que necesitas, y cómo configurar Klipper para que tu impresora parezca otra. Sin humo, sin magia. Solo física y código.
¿Qué es el ADXL345 y por qué necesitas uno?
El ADXL345 es un acelerómetro de 3 ejes. Pequeño. Barato. Preciso. Mide aceleración estática (gravedad) y dinámica (vibraciones). En nuestro mundo, lo usamos para medir las vibraciones del hotend mientras la impresora se mueve.
¿Por qué? Porque si sabes exactamente a qué frecuencias vibra tu máquina, puedes «cancelar» esas vibraciones mediante software. Eso es el Input Shaper. Y sin el ADXL345, estás configurándolo a ciegas. Como afinar una guitarra con los oídos tapados.
Yo compré el mío por 2,87€ en AliExpress. Un chollazo. Viene en una bolsita antiestática con unos pines que parecen de juguete, pero funciona de maravilla.
¿Qué es el Input Shaper? (La teoría detrás del truco)
No te asustes con el nombre. El Input Shaper es un filtro matemático. Cuando tu impresora acelera o frena, la inercia hace que el cabezal vibre. Esas vibraciones se traducen en esas líneas onduladas en las paredes de tus prints (el famoso ringing).
El Input Shaper analiza la frecuencia de esas vibraciones y aplica una «antivibración» justo en el momento opuesto. Como cancelación de ruido activa, pero en movimiento físico. Y para que funcione, necesita saber la frecuencia exacta de resonancia de tu máquina. Ahí entra el ADXL345.
Sin este sensor, la gente usa valores genéricos (como 60 Hz para el eje X, 40 Hz para el Y). Y funciona… más o menos. Pero con el acelerómetro, obtienes valores personalizados para tu impresora, con tu peso de hotend, tus correas, tu frame. La diferencia es brutal.
Ojo: esto solo funciona con firmwares modernos como Klipper o Marlin 2.x (con soporte para input shaper). Si tienes una placa 8-bit con Marlin antiguo, olvídate. Necesitas al menos una SKR Mini E3 o similar. Pero eso ya es otro tema del que hablamos en nuestra guía de mejoras para impresoras 3D.
Materiales Necesarios: El Chollo del Desierto
Aquí no necesitas un laboratorio. Esto es lo que usé yo:
- 1x ADXL345 (el de 3.3V, que es el estándar). Lo compré en AliExpress por menos de 3€.
- 1x Arduino Nano o Uno (para la fase de pruebas y calibración). O si tu placa principal tiene pines I2C libres, puedes conectarlo directamente.
- 4 cables Dupont (hembra-hembra). Los típicos que vienen en cualquier kit de Arduino.
- Cinta adhesiva de doble cara o Blu-Tack (para pegar el sensor al hotend temporalmente).
- Un PC con Arduino IDE instalado (o PlatformIO, si eres más pro).
¿Y el firmware? Necesitas Klipper instalado en tu impresora. Si aún no lo has hecho, te recomiendo que le eches un ojo. Es un viaje, pero merece la pena.
Conexión y Cableado (Wiring) Paso a Paso
Aquí es donde la gente la lía. El ADXL345 funciona a 3.3V. Si le metes 5V, lo fríes. Fin de la historia.
La conexión es simple. Solo necesitas 4 pines:
- VCC → 3.3V del Arduino (o de la placa de la impresora)
- GND → GND (tierra común)
- SDA → A4 en Arduino Uno (o pin SDA en tu placa)
- SCL → A5 en Arduino Uno (o pin SCL en tu placa)
Y ya. Así de simple. No necesitas resistencias pull-up porque el módulo ya las trae.
Ahora, el truco: pega el sensor al hotend. No al frame. El sensor debe medir las vibraciones del cabezal, no de la estructura. Usa cinta de doble cara o Blu-Tack. Asegúrate de que quede firme, pero que puedas quitarlo después.
Yo cometí el error de pegarlo al frame la primera vez. Los valores de resonancia salían rarísimos. Perdí una tarde. No seas como yo.
El Código Arduino para Leer el ADXL345
Vale, ya tienes el sensor conectado. Ahora necesitas hablar con él. Aquí te dejo el código que uso yo. Es una versión simplificada del ejemplo de la librería Adafruit_ADXL345, pero adaptada para que solo imprima los valores que nos interesan.
Paso 1: Instala la librería
En el Arduino IDE, ve a Herramientas → Gestor de Librerías. Busca «Adafruit ADXL345» e instálala. También necesitas la «Adafruit Unified Sensor».
Paso 2: Sube este código
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_ADXL345_U.h>
Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified(12345);
void setup(void) {
Serial.begin(115200);
Serial.println("Iniciando ADXL345...");
if(!accel.begin()) {
Serial.println("Error: No se detectó el ADXL345. Revisa las conexiones.");
while(1);
}
// Rango de ±2g (más sensible para vibraciones)
accel.setRange(ADXL345_RANGE_2_G);
Serial.println("ADXL345 listo. Leyendo datos...");
}
void loop(void) {
sensors_event_t event;
accel.getEvent(&event);
// Solo imprimimos los valores en m/s²
Serial.print("X: "); Serial.print(event.acceleration.x);
Serial.print(" Y: "); Serial.print(event.acceleration.y);
Serial.print(" Z: "); Serial.println(event.acceleration.z);
delay(10); // 100 Hz de muestreo
}
Paso 3: Abre el Monitor Serie
A 115200 baudios. Si todo va bien, verás una cascada de números. Mueve el sensor con la mano. Los valores deberían cambiar. Si no ves nada, revisa las conexiones. Es el error más común.
Si ves valores estables (alrededor de 0 en X e Y, y 9.8 en Z), perfecto. El sensor está vivo.
Configuración de Klipper: El Input Shaper Real
Ahora viene lo bueno. Ya tienes los datos crudos del sensor. Pero Klipper puede hacer algo mucho más potente: ejecutar el script de resonancia automáticamente.
Para eso, no necesitas el Arduino. Conectas el ADXL345 directamente a la placa de la impresora (a los pines I2C de la Raspberry Pi o de la placa controladora).
Paso 1: Conexión directa a la Raspberry Pi
Los pines son los mismos: VCC→3.3V, GND→GND, SDA→GPIO2 (pin 3), SCL→GPIO3 (pin 5).
Paso 2: Añade esto a tu printer.cfg
[mcu]
serial: /dev/serial/by-id/tu-placa
[adxl345]
cs_pin: !PA4 # Si usas SPI, pero para I2C no necesitas esto. Déjalo comentado.
# Para I2C, solo necesitas:
i2c_address: 0x53 # Dirección por defecto del ADXL345
[resonance_tester]
accel_chip: adxl345
probe_points:
100, 100, 20 # Centro de la cama. Ajusta según tu impresora.
Paso 3: Ejecuta la prueba
En la consola de Klipper (Fluidd/Mainsail), ejecuta:
TEST_RESONANCES AXIS=X
TEST_RESONANCES AXIS=Y
Esto hará que el cabezal se mueva a diferentes frecuencias mientras el sensor registra las vibraciones. Al final, Klipper te dará un gráfico con los picos de resonancia.
Paso 4: Configura el Input Shaper
Con los valores obtenidos (por ejemplo, 45 Hz en X y 38 Hz en Y), añade esto a tu printer.cfg:
[input_shaper]
shaper_type_x = zv
shaper_freq_x = 45
shaper_type_y = zv
shaper_freq_y = 38
Y reinicia Klipper. Notarás la diferencia en el primer print. Las paredes quedarán lisas como un espejo.
Troubleshooting y Errores Comunes
Aquí es donde más tiempo he perdido yo. Y donde veo que la mayoría de la gente abandona. No lo hagas.
Error 1: «No se detecta el ADXL345»
- Causa más probable: Alimentación incorrecta. El módulo necesita 3.3V, no 5V. Si le metes 5V, el chip se calienta y deja de funcionar. Lo he visto.
- Solución: Revisa el voltaje con un multímetro. Si no tienes, cambia el cable VCC al pin de 3.3V.
- Segunda causa: Dirección I2C incorrecta. Por defecto es 0x53, pero algunos módulos usan 0x1D. Prueba ambas.
Error 2: Valores que no cambian o son siempre cero
- Causa: El sensor está en reposo y no detecta movimiento. O el SDA/SCL están intercambiados.
- Solución: Sopla el sensor o golpéalo suavemente. Si los valores no se mueven, intercambia SDA y SCL. Sí, a veces los fabricantes chinos los etiquetan al revés.
Error 3: El gráfico de resonancia muestra picos planos
- Causa: El sensor está mal fijado al hotend. Se mueve independientemente del cabezal.
- Solución: Usa más cinta de doble cara o Blu-Tack. Tiene que estar sólido. Si se cae durante la prueba, los datos sirven de poco.
Error 4: La impresora hace ruidos extraños durante la prueba
- Causa: Es normal. La prueba de resonancia hace que los motores se muevan a frecuencias que suenan a música de terror. Pero no pasa nada.
- Solución: No la detengas. Déjala terminar. Si el ruido es insoportable, reduce la amplitud en el comando:
TEST_RESONANCES AXIS=X INPUT_SHAPER=0.
Error 5: Los valores de frecuencia son muy bajos (ej. 20 Hz)
- Causa: El frame de tu impresora es muy flexible. O las correas están muy flojas.
- Solución: Aprieta las correas. Si el frame es de perfiles de aluminio de 2020, considera añadir refuerzos. Pero primero, prueba con Input Shaper tipo ZV. A veces funciona incluso con frecuencias bajas.
Preguntas Frecuentes (FAQ)
¿Puedo usar el ADXL345 sin Klipper?
Sí, pero es más complicado. Marlin 2.x tiene soporte para Input Shaper, pero requiere compilar el firmware con las opciones correctas y calcular los valores manualmente. Klipper lo hace todo automático. Si aún no has dado el salto a Klipper, esta es una buena razón para hacerlo.
¿El ADXL345 funciona con cualquier impresora?
Básicamente, sí. Mientras tengas un firmware que soporte Input Shaper (Klipper o Marlin 2.x), puedes usarlo. He visto configuraciones en Ender 3, Prusa, Voron, y hasta en alguna CR-10. El proceso es el mismo.
¿Necesito el Arduino o puedo conectar el sensor directamente a la Raspberry Pi?
Puedes conectarlo directamente a la Raspberry Pi si usas Klipper. De hecho, es lo recomendado. El Arduino solo lo usamos para la fase de pruebas y para verificar que el sensor funciona. Si te sientes seguro, conéctalo directo a la Pi y ejecuta la prueba de resonancia desde Klipper.
Hablando de cosas que mejoran la vida, si te gusta este tipo de contenido donde encontramos soluciones baratas a problemas caros, échale un ojo a nuestro análisis de tablets baratas en AliExpress. Otro chollazo.
Conclusión
El ADXL345 es, sin duda, la mejora más rentable que puedes hacer en tu impresora 3D si buscas calidad superficial. Por menos de 3€, eliminas el ghosting y el ringing de forma radical. No es magia. Es física aplicada con un sensor de 3€ y un código que cabe en una servilleta.
En DunaTech, llevamos meses probando este setup en varias impresoras. Los resultados son consistentes. Las paredes de los prints pasan de tener ondas a ser casi tan lisas como una impresión de resina. Y todo gracias a un pequeño acelerómetro que la mayoría de la gente pasa por alto.
Si tienes una impresora con Klipper y aún no has hecho la prueba de resonancia, estás perdiendo calidad. Conecta el ADXL345, ejecuta el código, configura el Input Shaper, y olvídate del ringing para siempre. Tu yo del futuro te lo agradecerá.
Y recuerda: en el desierto de AliExpress, nosotros encontramos los oasis. Este es uno de ellos.
Ver precio actual y cupones en AliExpress
