Solución de problemas de plasma CNC
Mar 06, 2023Corte por plasma robótico en un mundo 3D
Mar 08, 2023Convertir una soldadora MIG en una impresora 3D de metal
Mar 10, 2023Fume algunas malezas: los láseres podrían hacer obsoletos los herbicidas
Mar 12, 2023Portable ESP32 RGB Lasershow tiene todos los adornos
Mar 14, 2023Derek Schulte: planificación de rutas para impresoras 3D
[Derek Schulte] diseñó y vende una impresora 3D de consumo, y eso le da mucha información sobre lo que las motiva. Su impresora, New Matter MOD-t, es diferente de la impresora 3D que está usando ahora en algunas formas diferentes. Lo más interesante es que utiliza retroalimentación de circuito cerrado y motores de CC en lugar de motores paso a paso, y utiliza un procesador ARM de 32 bits bastante robusto en lugar del glorificado Arduino Uno que ejecuta muchas impresoras.
La primera de estas opciones significó que [Derek] tuvo que escribir su propio software de control de motores y planificación de rutas, y la segunda significa que tiene el procesamiento para respaldarlo. En su charla, entra en detalles reales sobre cómo terminaron con el sistema de planificación de rutas que hicieron y cómo funciona exactamente. Si alguna vez ha pensado mucho en cómo un cabezal de impresión físico, con impulso, hace las esquinas infinitamente nítidas que se le indica en el código G, esta charla es para usted. (Spoiler: no rompe las leyes de la física, y navegar a través de la curva involucra matemáticas).
La planificación de la ruta continúa dentro de la propia impresora 3D. Es lo que hace el firmware de la impresora 3D con el código G recibido lo que lo convierte en el movimiento físico de los motores a lo largo de los ejes X, Y y Z, así como la extrusora. Si bien el código G es universal, tampoco es realista: especifica una serie de puntos en el espacio 4D (el extrusor, ¿recuerdas?) y las velocidades que se necesitan para llegar allí. La planificación de ruta combina el conocimiento de las capacidades de control de movimiento de la impresora física y trata de hacer que el resultado final coincida con el código G tanto como sea razonablemente posible, sin demorar una eternidad. Al ser la interfaz entre el código G idealizado y una impresora real, el firmware de planificación debe tener en cuenta el diseño de la propia impresora, con todas sus limitaciones físicas.
Puede hacer su propia impresora 3D única con unobtainium, escamas de dragón y el trabajo no facturado de los fines de semana de un año. Pero si desea fabricar un producto para venderlo al público en general a un precio razonable, debe construirse utilizando piezas básicas y funcionar de manera sólida. Esto es lo que llevó a [Derek] a usar un motor de CC con un codificador en lugar de los omnipresentes, pesados y relativamente costosos motores paso a paso que usan la mayoría de las demás impresoras 3D. Conducir motores de CC en retroalimentación de circuito abierto significaba que ninguno de los firmwares de impresora "estándar" iba a funcionar; necesitaba rodar el suyo. Y así es como tenemos esta charla, acerca de llegar de A a C, a la vuelta de la esquina en B, de la manera más rápida y precisa posible.
Hay algunas formas de convertir un fragmento de código G que dice "ir hacia el norte a 50 mm/seg y luego hacia el oeste a 50 mm/seg" en movimiento de máquina. Una es ir hacia el norte a toda velocidad, detenerse de golpe y luego salir hacia el oeste a toda velocidad. Esto es lo que hicieron las primeras versiones del firmware de la impresora DIY 3D, y el resultado fue ruido, vibración del cabezal de impresión y degradación de la calidad de impresión. Eran tiempos feos.
[Derek], y el planificador de rutas en grbl, eligieron la siguiente solución más complicada: moverse a una aceleración constante para cada segmento de la ruta, lo que resultó en perfiles de velocidad trapezoidales. Esto resulta que funciona bastante bien en la práctica y es fácil de calcular. [Derek] agregó el redondeo de esquinas a la rutina: donde el código G decía que hiciera una esquina afilada, el firmware tomaría una esquina curva lo suficientemente cerca como para que no se viera mal, pero tampoco requiere que la boquilla disminuya la velocidad a una parada Combinar los dos es básicamente la solución más simple que puede funcionar bien.
Conectar algunos segmentos juntos es el siguiente paso, pero permite que la impresora finalmente se detenga, ya sea al final de la ruta o porque un usuario presionó el botón de pausa.
La mayoría de las impresoras 3D impulsadas por pasos funcionan en modo de control de bucle abierto. El firmware le dice al controlador del motor paso a paso que avance diez pasos y espera lo mejor. Cuando una impresora pierde pasos, las capas se desalinean unas de otras, y si esto le ha sucedido de manera catastrófica en medio de una impresión, sabe por qué esto puede apestar.
La impresora de [Derek] funciona en modo de circuito cerrado, lo que significa que si el cabezal de impresión está demasiado al sur de donde debería estar, el firmware puede decir que este es el caso y aplicar más potencia a un motor para que vuelva a funcionar correctamente. Nuevamente, [Derek] eligió uno de los métodos más simples que podrían funcionar: el control PID con feedforward. Por supuesto, esto significa calibrar el algoritmo para la máquina, pero un algoritmo PID bien ajustado es un placer de ver.
Y el lazo de control cerrado proporciona beneficios adicionales. Donde los motores paso a paso deben especificarse en exceso para evitar los temidos pasos perdidos, los motores de CC de circuito cerrado pueden funcionar con pares más bajos. Sin embargo, el mejor truco que [Derek] juega con la retroalimentación es usar la capacidad de detectar la parada del motor para ubicar la impresora. No hay finales de carrera en los tres ejes físicos. En cambio, cuando el motor llega al final de su capacidad de movimiento, el firmware detecta el bloqueo y lo usa para poner a cero los ejes de coordenadas. Esto reduce las piezas y simplifica el dispositivo. Todos estamos para eso.
[Derek] diseñó sus rutinas de planificación de movimiento con las mismas herramientas que todos usamos, y utilizó básicamente los algoritmos más simples posibles que funcionarían bien, evitando complicaciones "académicas" por su propio bien. Al final, esto le permitió optimizar la velocidad, mirar quince pasos adelante, incluir algunos ajustes especiales necesarios como la lógica para tratar con segmentos muy cortos y sacar el producto a un precio razonable. La planificación y el control del movimiento en un sistema de circuito cerrado nunca es simple, pero "aplicar el principio KISS en la medida de lo posible y luego ajustar el rendimiento más tarde" es algo que todos los piratas informáticos podríamos soportar para tatuarnos en una parte adecuadamente larga de nuestro cuerpos. Mejor aún, ¡agradezcamos a [Derek] por el recordatorio y la ejemplificación!