Báscula Inteligente de Filamento.

Noviembre 2026 - Juan G

Fusion 360 Impresión 3D ESP32 Arduiono ID

¿Cuántas veces nos quedamos sin filamento a mitad de una impresión por no saber el peso real de la bobina? Es una de las frustraciones más comunes en la impresión 3D: calcular "a ojo" si esos últimos metros serán suficientes para esa pieza, solo para regresar al día siguiente y encontrar la impresora trabajando en el aire o pausada. La incertidumbre de no conocer los gramos exactos de material disponible nos lleva a desperdiciar tiempo, energía y plástico.

La solución es un carretero inteligente con ESP32 que resta el peso del carrete vacío (tara) y te muestra el filamento restante con una interfaz animada que cambia de humor según la cantidad de material. Al combinar una celda de carga con el módulo HX711 y una pantalla circular TFT GC9A01, el monitor deja de ser una simple báscula para convertirse en un asistente interactivo. El sistema integra un menú controlado por un botón físico para seleccionar la marca del filamento y descontar automáticamente su peso base (como los 147g de Sunlu o los 220g de eSUN) guardando la preferencia en la memoria flash. A medida que el extrusor consume el plástico, la interfaz cobra vida: el rostro en pantalla pasa de la felicidad al 100%, a expresiones de molestia, preocupación y tristeza conforme los gramos descienden, hasta llegar a una cara de "desmayo" en los 0g. Si el sistema no detecta actividad en 3 minutos, entra en un modo "dormido" con una animación de suspensión geométrica para proteger la pantalla.

En esta sección le daremos vida al módulo de escritorio. Aprenderemos a conectar el ESP32, la pantalla redonda GC9A01 y el módulo HX711, y configuraremos el firmware para que el Guardián Digital cobre vida y reaccione al peso de tus filamentos. Si aún no has ensamblado las piezas impresas en 3D, te recomiendo visitar primero la página de Ensamble principal donde también encontrarás los archivos STL para descargar.

Conexión Celda De Carga – Modulo HX711

Diagrama de conexión

Como se observa en el diagrama, los cables de la celda de carga se soldaran al módulo HX711 siguiendo este orden:

  • Cable Rojo ➔ E+.
  • Cable Negro ➔ E-.
  • Cable Blnaco ➔ A-.
  • Cable Verde ➔ A+.

Antes de soldar, es fundamental pasar los cables por el orificio más grande y extraerlos por el orificio pequeño de la derecha del soporte, tal como se indica en la página principal de ensamble.

imagen de conexión

Conexión del Módulo de Escritorio (ESP32, Pantalla, Switch y HX711)

Diagrama de conexión

Aquí es donde la cosa se pone interesante. Como se observa en el diagrama general, debemos realizar las conexiones entre los componentes. Para ello, requeriremos 9 cables DuPont hembra-hembra. Primero, realiza las conexiones directas:

  • GPIO 4 del ESP32 ➔ RES (RST) de la pantalla GC9A01.
  • GPIO 15 del ESP32 ➔ CS de la pantalla GC9A01.
  • GPIO 2 del ESP32 ➔ DC de la pantalla GC9A01.
  • GPIO 23 del ESP32 ➔ SDA (MOSI) de la pantalla GC9A01.
  • GPIO 18 del ESP32 ➔ SCL (SCK) de la pantalla GC9A01.
  • GPIO 32 del ESP32 ➔ A un pin del Switch Cherry MX.
  • GND del ESP32 ➔ Al segundo pin del Switch Cherry MX.

Cableado Especial (El conector modular)

Para conectar el módulo HX711 que viene desde la báscula, crearemos un arnés personalizado:

  • Toma cuatro cables DuPont hembra-hembra y pásalos desde la parte trasera de la pieza 02_CUERPO.stl hacia el interior a través del orificio más grande. Puede que cueste un poco, por lo que se recomienda pasarlos uno a uno; notarás que quedan bastante ajustados.

Cables de Datos (Sin cortar): Toma dos de estos cables y conéctalos directamente al ESP32:

  • Uno al GPIO 21 del ESP32 (Este será el DT del HX711).
  • El otro al GPIO 22 del ESP32 (Este será el SCK del HX711).

Empalmes de Alimentación en "Y": A los 2 cables restantes (GND y VCC), córtales el conector de un solo extremo lo más al ras posible.

  • Para el GND: Suelda ese extremo cortado junto a otros dos cables DuPont (con conector hembra) creando un empalme en forma de "Y". Como se muestra en el diagrama (Primera imagen), una punta irá al GND del ESP32, otra al GND de la pantalla, y la base será el GND para el HX711.
  • Para el VCC: Repite el mismo proceso. Una punta de la "Y" irá al VCC de la pantalla, la otra al pin de 3.3v del ESP32, y la base será el VCC para el HX711.
Conexión - Detalle 1 Conexión - Detalle 2 Conexión - Detalle 3 Conexión - Detalle 4 Conexión - Detalle 5

Para tener una mejor referencia visual, la galería superior muestra el proceso a detalle: la segunda imagen es una fotografía de las conexiones físicas reales dentro de la carcasa. La tercera es una vista de sección (corte transversal) que ilustra cómo se estructura internamente el conector modular. En la cuarta imagen se aprecia cómo deben quedar alojadas las terminales hembra dentro del orificio de la pieza impresa, y finalmente, la quinta imagen muestra el detalle de las terminales macho ya agrupadas y listas para enchufarse

Una vez realizada las conexiones desliza la placa ESP32 (de 38 pines) dentro del 02_CUERPO.stl con los pines apuntando hacia arriba y el puerto Micro-USB asomando por la ventana trasera.

Preparación del Entorno

Para programar el ESP32, usaremos el Arduino IDE si es tu primera vez utilizándolo, recomiendo ver el siguiente video: Conecta tu ESP 32 a Arduino IDE (sin volverte loco) de ControlDavid, Una vez configurado y antes de cargar cualquier código, necesitamos instalar dos librerías esenciales:


#include "HX711.h"
#include "TFT_eSPI.h"
                
  • HX711 Arduino Library(de Bogdan Necula): Para leer los datos de la celda de carga.
  • TFT_eSPI(de Bodmer): Esta librería es vital para manejar los gráficos del Guardián Digital de forma fluida. Nos permite usar "Sprites", para evitar los molestos parpadeos en la pantalla al actualizar las imágenes.

La instalación es muy sencilla en las versiones recientes de Arduino IDE. Al abrir el programa, busca la barra lateral que contiene varios iconos y selecciona el que tiene forma de libros para abrir el Gestor de librerías (Library Manager). En la barra de búsqueda, escribe HX711 Arduino Library. Normalmente aparecerá como el primer resultado, pero asegúrate de que el autor sea "by Bogdan Necula". Haz clic en instalar y repite este mismo proceso para la librería TFT_eSPI ("by Bodmer").

⚠️ Paso Crítico: Configurar User_Setup.h

Una vez instaladas las librerías, es indispensable configurar TFT_eSPI. Si se omite este paso, es posible que la pantalla se quede en negro. La librería necesita instrucciones exactas sobre qué modelo de pantalla usas (en este caso, GC9A01) y a qué pines está conectada.

Para solucionarlo, debes reemplazar el archivo "User_Setup.h" original de la librería por el archivo preconfigurado.

  • Descarga el archivo User_Setup.h desde mi repositorio En GitHub
  • 🗂️ Repositorio en GitHub
  • Ve a la carpeta de librerías de Arduino, usualmente en:
  • 
    Documentos/Arduino/libraries/TFT_eSPI
                        
  • Reemplaza el archivo "User_Setup.h" existente por el que acabas de descargar. (elimínalo y pega el nuevo archivo)

Como referencia, la imagen muestra la ruta exacta del explorador de archivos y señala el archivo específico que debe ser reemplazado para que la compilación funcione correctamente

imagen de la ruta

Calibración de la Celda de Carga

Antes de que la báscula funcione, necesitamos calibrarla. ¿Por qué es obligatorio calibrar? O por qué no existe un "número mágico"

Es tentador saltarse este paso y copiar el factor de calibración del código de otra persona, pero hay dos razones físicas por las que debes calibrar tu propia báscula una vez que esté completamente armada:

  • Tolerancias de fábrica: Cada celda de carga de aluminio es única. Las pequeñas variaciones de manufactura en las galgas extensiométricas (los cables microscópicos pegados al metal) hacen que dos sensores idénticos del mismo lote lean la flexión de forma ligeramente distinta.
  • Tu estructura impresa en 3D: El sensor no trabaja solo. El material con el que imprimas el porta carretes (la flexibilidad del PETG frente a la rigidez del PLA), el porcentaje de relleno, y hasta qué tan fuerte aprietes los tornillos de montaje, cambian drásticamente la forma en que la pieza absorbe y transfiere el peso hacia el sensor.

En resumen: no estás calibrando solo un componente electrónico, estás calibrando el comportamiento mecánico de todo tu ensamblaje único. Por eso, el factor de calibración de mi TARA-BOT será diferente al tuyo.

Para calibrar, necesitarás un objeto con un peso conocido (por ejemplo, una bolsa de arroz de 1kg o 900g que indique su peso exacto en la etiqueta)

Para calibrar tu báscula TARA-BOT y asegurar que la lectura del peso del filamento sea precisa, necesitarás un objeto con un peso conocido. Por ejemplo, una bolsa de arroz de 900g, como se muestra en la primera imagen, que indique su peso exacto en la etiqueta

A continuación, detallo los pasos para realizar la calibración:

  • Descarga el código: Primero, descarga el Código de Calibración "Calibracion.ino" desde el repositorio de GitHub.
  • 🗂️ Repositorio en GitHub
  • Sube el código: Carga este código de calibración a tu placa ESP32. Si es la primera vez que programas este microcontrolador, no olvides mantener presionado el botón "BOOT" en la placa durante el proceso de subida hasta que el IDE de Arduino indique que está conectando.
  • Conexión: Conecta el módulo de la Interfaz de Escritorio (donde está la pantalla y el ESP32) al Soporte Porta-Carretes utilizando el cable de conexión, tal como se aprecia en la segunda imagen
  • Energiza el sistema: Conecta un cable micro USB al ESP32 para proveer energía al sistema.
  • Inicialización: En la pantalla observarás el texto "Iniciando...".
  • Paso 1 - Vacia la báscula: Posteriormente, la pantalla mostrará el mensaje "1. Vacia la bascula", indicando que no debe haber nada sobre el porta-carretes, como se ilustra en la tercera imagen.
  • Paso 2 - Pon un peso conocido: Tras una breve pausa de 3 segundos, la pantalla cambiará al mensaje "2. Pon un peso conocido", como se ve en la cuarta imagen. Es en este momento exacto cuando debes colocar tu objeto de peso conocido (como la bolsa de arroz) sobre el porta-carretes.
  • Obtén el Valor Crudo: Finalmente, la pantalla mostrará el texto "Valor crudo:" seguido de un número en color verde "000000". Este número fluctúa ligeramente, anota un valor promedio.

Conexión - Detalle 1 Conexión - Detalle 2 Conexión - Detalle 3 Conexión - Detalle 4 Conexión - Detalle 5
Para obtener el Factor de Calibración que ingresarás en el código principal, utiliza la siguiente fórmula


Factor de Calibración = Valor Crudo / Peso Real del Objeto (en gramos)
                    

Por ejemplo, mi valor crudo fue 387275 y use la bolsa de arroz de 900g, mi factor de calibración sería:


387275 / 900 = 430.3
                    

Integración de Grami (El Código Principal)

Ahora sí, vamos a darle vida a Grami, el guardián digital de esta báscula.

Descarga el código "Principal.ino" con todas las funciones de dibujo geométrico aquí:

🗂️ Repositorio en GitHub

Antes de compilar y subir el código, debes hacer dos modificaciones clave:

  • Modificación 1: Tu Factor de Calibración Busca la siguiente línea en el código (cerca de la línea 303) y reemplaza el número de ejemplo por el Factor de Calibración que obtuviste en el paso anterior.
  • 
    // Dentro del setup()
    .
    .
      scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
      scale.set_scale(430.3);  <--- CAMBIA EL 430.3 POR TU FACTOR DE CALIBRACIÓN
                        
  • Modificación 2: Personalizar tus Taras (Pesos de Carretes Vacíos) Grami puede restar automáticamente el peso del carrete vacío para mostrarte solo el peso del filamento restante. Busca este arreglo en el código (cerca de la línea 27) y modifícalo con los pesos reales (en gramos) de las marcas de filamentos que suelas usar.
  • 
    MarcaFilamento taras[] = {
      {"Sin Tara", 0},
      {"Sunlu", 147},    // <--- Modifica el nombre y peso del carrete vacío en gramos
      {"Creality", 150},
      {"eSUN", 220},     // <--- A partir de aquí puedes agregar más marcas, siguiendo esta estructura {"Marca", Peso(g)},
      {"Generico", 200}
    };
                        
  • Este ajuste es un proceso iterativo donde puedes primero subir el código, seleccionar la tara en cero, pesar tus carretes vacíos y anotar el peso. Una vez obtenidos los pesos de tus carretes, regresa al código para actualizar la marca y el peso exacto de cada carreteo, o bien pon un rollo nuevo en la bascula y restarle los 1000g, de esta manera obtendrás la tara. Ten en cuenta que los valores de fábrica incluidos en el código son totalmente arbitrarios y solo sirven como un ejemplo demostrativo para visualizar la resta de la tara.

Una vez realizados estos cambios, es hora de subir el código. Conecta el Módulo de la Interfaz de Escritorio al Soporte Porta-Carretes mediante el conector modular y energiza el sistema conectando el cable micro USB al ESP32. Verás a Grami cobrando vida en la pantalla.

¿Cómo Funciona?

Guardián: La carita en la pantalla reaccionará al peso. Estará feliz con un rollo lleno, se preocupará conforme se acabe, y se "desmayará" (ojos en X) cuando llegue a cero. Si no hay cambios de peso en un rato, se echará una siesta

Para navegar en el menú de taras o reiniciar la tara usaremos el Botón Cherry MX, de la siguiente forma:

  • Acceder al Menú: Presiona el botón por más de 3 segundos para abrir la lista de "Taras" (pesos de diferentes carretes vacíos).
  • Navegar: Da toques cortos al botón para avanzar entre las opciones de la lista.
  • Confirmar: Una vez sobre la tara deseada, simplemente suelta el botón y espera 3 segundos. La tara se establecerá automáticamente.
  • Corregir: Si te equivocas de tara o quieres cancelarla, vuelve a mantener presionado el botón por 3 segundos para regresar al menú principal.

Llegar hasta aquí significa que ya tienes mucho más que una simple báscula: has construido un asistente interactivo que le dará muchísima personalidad a tu espacio de impresión 3D, además de salvarte de esos frustrantes cortes de filamento a mitad de un proyecto

Todo el desarrollo de este sistema está pensado para aportar valor a la comunidad maker. Si este tutorial te ha sido útil y lograste armar tu propia báscula, me ayudarías muchísimo con estas tres acciones rápidas:

  • Dale una estrella al código: Entra al repositorio de GitHub y regálale una estrellita (Star) en la parte superior derecha. Esto ayuda a que el algoritmo recomiende el código a más personas.
  • Comparte tu impresión en Creality Cloud: Ahí es donde está alojado el modelo 3D del chasis. Si descargas los archivos, dejar un comentario positivo o, mejor aún, subir la foto de tu pieza terminada en la publicación original me ayuda un montón a seguir posicionando los diseños.
  • Presume tu TARA-BOT Me encantaría ver qué colores elegiste y cómo luce tu báscula funcionando junto a tu impresora. Sube una foto o un video a tus historias de Instagram, etiquétame como @TriaxisPoint y con gusto lo compartiré

No olvides seguirme en Instagram y suscribirte al canal de YouTube de Triaxis Point para no perderte los siguientes proyectos de impresión 3d e integraciones tecnológicas ¡Felices impresiones y nos vemos en el próximo proyecto!