Hola a todos, un amigo me pidió ayuda para arreglar una máquina cortadora de poliéster/plástico.
En resumen, tiene dos motores paso a paso conectados a un puente H, accionados por pulsos para el paso a paso y otras dos entradas para la dirección. Necesito crear varias rutinas donde la rutina principal leerá tres parámetros: un valor X, uno Y y un valor TIME. Con base en estos valores, las subrutinas generarán dos pulsos dentro de TIME (reloj), uno llamado X (que activará el motor para que se mueva en el eje X) y el otro llamado Y.

No sé cuál es la mejor manera de implementar esto. Pensé en usar un reloj equidistante (que sería un reloj diferente, "creado" por la imagen), que debería ser al menos el tiempo de activación de los transistores FET en el puente. Luego tengo dos variables: crtx y crty. Inicialmente se establecen en 0 y se decrementan una vez por ciclo de reloj (solo me referiré al reloj creado en la imagen, no al reloj real creado con un cristal. La razón por la que necesito esto es porque esta porción de tiempo debe ser modificable). Cuando se desbordan (¿existe esa palabra? :P), los restablezco a los valores predeterminados (por ejemplo, cada 3 pulsos para x, cada 97 pulsos para y), que se tomarían de otro conjunto de variables x/y y establecerían sus respectivos pines en alto para un ciclo de reloj.

Ya hice algo similar antes, generando PWM (en un 12F675) que podía variar la intensidad de tres LED sin multitarea, pero comparando sus valores "actuales" con los umbrales. Creo que es algo similar, pero no estoy seguro.

¿Qué opinas? ¿Cuál es el mejor enfoque que debería usar?