17-07-2019, 10:13 AM
(Última modificación: 17-07-2019, 10:16 AM por Simemart.)
Hola, la respuesta a tu pregunta es sí, pero creo que tienes un poco confuso el tema del pinout y Marlin.
Primero decir que los pines son de la MCU (en el caso de Arduino Mega es una ATMega2560), son de propósito general y se pueden utilizar para lo que se quiera.
Por otra parte, está la placa que integra esa MCU y que fija las conexiones de esos pines.
Esta puede ser muy simple, como Arduino Mega, que lo único que hace es unirlos a unos conectores apropiados para la conexión de cables.
Pero también puede ser una placa más compleja (para el control de una impresora 3D, por ejemplo).
Esta asigna de una forma predeterminada que pines de la MCU controlan los distintos dispositivos y funciones, fijando una asignación de pines concreta al unir conectores y zócalos con ellos.
Y por último está el software que va a controlar todo esto (por ejemplo, Marlin).
Es aquí donde se realiza la configuración de esa asignación que fija la placa, para que el software pueda realizar lo que se le ordena, en su caso mediante comandos gcode que se le envían por algún medio (con Pronterface, por ejemplo).
Es decir, en concreto para el Arduino Mega, no hay unas salidas específicas que controlen los drivers, sino unas configuraciones de pines en función del hardware que se use (en este caso RAMPS), que se le indican con la configuración del modelo de placa y que lleva esas asignaciones en el archivo de pins correspondiente.
En concreto, para una RAMPS (que va sobre el Arduino Mega) la configuración de pines es: Xstep: D54=A0, Xdir: D55=A1, Xenable=D38. Pero para una GT-2560 Rev. A (que tambien lleva un ATMega2560), es; Xstep: D25, Xdir: D23, Xenable=D27. La D quiere decir digital y la A analógico y el número es el de pin lógico, no el de la patilla del chip (pin físico. ATMega2560 tiene 100). Como decía, depende de la placa.
Resumiendo: puedes utilizar perfectamente Marlin para controlar esos drivers directamente conectados al Arduino Mega. Solo tienes que configurar las funciones de forma correcta a los pines que utilices para controlar el driver.
Puedes configurar como placa RAMPS (aunque no esté físicamente presente) y la asignación por defecto que trae (conectando los drivers en esos pines) o cambiar de pines y modificar la asignación en el archivo pins_RAMPS.h.
Cuando solo se van a controlar motores, se suele utilizar Arduino Uno y GRBL (es lo que se hace en CNC cuando se utiliza Arduino como controlador). Quizá te convenga pasarte por el foro de CNC, donde seguramente encontrarás información valiosa sobre estos temas.
Sobre el problema que indicas, haber conectado el driver con la polaridad al revés seguro que no le ha sentado nada bien, a no ser que vengan protegidos contra esa eventualidad (cosa que desconozco).
Quizá no le haya pasado nada o puede que el problema que tienes venga de ahí.
¿Has comprobado el voltaje que tienes en DIR? Porque tiene que ser entre 4V y 5V para HIGH (giro en un sentido) y entre 0V y 0,5V para LOW (giro en el otro sentido).
17-07-2019, 09:37 PM
(Última modificación: 17-07-2019, 09:45 PM por PauFerlo.)
Igual digo una burrada, si es así no me lo tengas en cuenta, jeje
No tendrás conectada la salida de dir al enable de los drivers y al intentar invertir el giro lo que haces es deshabilitarlos?
Tambien puedes activar el pin Dir con un pulsador, para descartar otro tipo de problemas, enviando un movimiento con el pulsador en reposo, y a continuación el mismo movimiento con el pulsador activado.
Yo uso esos drivers, en versión chino-clon y la verdad estoy muy contento con ellos.
Saludos y suerte