Controlador para Bobinadora de Filamento
Sobre este proyecto
Este proyecto freelance consistió en el diseño de una PCB y el desarrollo de un firmware a medida para automatizar una bobinadora de filamento de cobre. El sistema debía sincronizar con precisión el giro del carrete y el desplazamiento de un vástago guía, además de medir la longitud del filamento.
La principal complejidad residió en el software: programé desde cero un algoritmo de control de movimiento con perfil trapezoidal para los motores paso a paso, asegurando arranques y paradas suaves. Adicionalmente, desarrollé una librería no bloqueante para el display TM1637, ya que las soluciones existentes interferían con el control en tiempo real de los motores.
Características Clave
- Control de Movimiento Trapezoidal: Implementación de un algoritmo para motores paso a paso con rampas de aceleración y desaceleración, programado desde cero usando los timers del STM32 para un movimiento preciso y sincronizado.
- Librería de Display No Bloqueante: Desarrollo de una librería de comunicación a medida para el integrado TM1637, utilizando interrupciones para evitar el bloqueo del bucle principal y garantizar el rendimiento en tiempo real.
- Metodología de Desarrollo Remoto: Todo el firmware fue desarrollado y depurado sin acceso físico al hardware final, utilizando un entorno de pruebas con un analizador lógico y una estructura de proyectos "gemelos" en WSL para compilar el mismo código para dos microcontroladores diferentes.



Desafíos
El mayor reto fue desarrollar y depurar el firmware completamente a ciegas, sin acceso a la máquina. Esto exigió crear un entorno de simulación y validación de señales con un analizador lógico, además de una estructura de compilación dual para asegurar la compatibilidad del código entre mi plataforma de pruebas y la del cliente.
Aprendizajes
Este proyecto consolidó mis habilidades en programación de bajo nivel con STM32 HAL y me enseñó a crear soluciones robustas bajo restricciones extremas. La necesidad de un desarrollo remoto me impulsó a diseñar un flujo de trabajo de software altamente estructurado y verificable.