Montaje CNC, calibrar ejes configuración y software

Pikitui:
@FM Quería saber que diferencias, en cuanto a código, existen entre el modo STEP/DIR y el de control directo de los transistores como se usa en TXAPU. Me gustaría entender como se hace la conversión de un modo de funcionamiento en otro o saber si se podría adaptar tu código para usarlo en el modo de polarización directa de los transistores.

Sé que teóricamente el funcionamiento es el mismo, ya que el DRV8818 es un driver con dos puentes H, por lo tanto hasta ahí sería igual. Pero este incorpora un pre-driver que le permite cambiar de señales STEP/DIR a control directo de los GATES de los MOSFETS.

La gran diferencia es la forma de controlar el driver (es decir el puente H) y la electrónica adicional.
Cuando se controlan directamente los transistores lo que hay que hacer es generar una serie de pulsos para secuenciar correctamente como circula la corriente por las bobinas del motor. Esto lo consigues controlando la base o la puerta de los transistores del puente H como puedes ver en la imagen que te adjunto. Digamos que el SW es el encargado de generar esos pulsos para dar un paso. Para dar un paso en sentido contrario, es simplemente invertir el orden.

En el caso de un driver, la secuenciación de esos pulsos se encarga un bloque de control del chip que se llama el indexador cuya función es sintetizar esos pulsos por ti.

A nivel de SW es trivial cambiarlo en mi código. Simplemente tendrás que cambiar el código de stepper.cpp y stepper.h para hacerlo funcionar controlando los transistores directamente. El método clave es: step, donde por cada pulso tendrás que controlar los transistores del puente H para generar la forma de onda de la image que adjunto.

Es que es más sencillo y más rápido programar la dirección y luego simplemente dar un pulso para que de el paso. Del resto ya se encarga la electrónica. Además, te mantiene la posición sin necesidad de seguir generando pulsos.

Pero, la diferencia más importante es que el driver tiene integrado un limitador de corriente (quitando la forma de recircular la corriente). El driver, cuando detecta que está fluyendo más corriente de la necesaria por la bobina la corta durante un periodo de tiempo pequeño y luego la vuelve a activar. De esta forma, controla perfectamente la cantidad de corriente que circula por cada bobina. Sin esto, lo que consigues es que se caliente el motor porque circula más corriente de la debida. Si miras las especificaciones de los motores verás que todos tienen una tensión máxima muy inferior a los 12V o 24V. Cómo es posible que funcionen? Por el limitador de corriente.

Se puede hacer con operacionales y con registros de desplazamiento. Claro que sí, pero es más costoso tanto en tiempo como en dinero que usar un driver. Además el driver ocupa menos :wink: Esta bien como ejercicio académico, pero como solución práctica deja mucho que desear.