Uso de transistores para minimizar la cantidad de pines Arduino utilizados para este controlador de motor paso a paso

Muy bien, sé muy poco sobre lo que estoy preguntando actualmente, pero aquí está la esencia:

Quiero construir una máquina cnc con algunas unidades de disquete viejas. Compré un par de circuitos integrados de puente H dual L293D para impulsar los motores paso a paso, y quiero interactuar con grbl. El problema que parece tener al diseñar un circuito adecuado para esto es que los circuitos para impulsar motores paso a paso con el L293D involucran dos entradas, una para cada dirección, y grbl parece usar solo un pin Arduino para la dirección de cada eje.

Entonces, lo que he pensado es usar un transistor pnp y npn para actuar como una especie de interruptor de dos vías, cuando aplico voltaje, uno se enciende, el otro se apaga y viceversa, de modo que básicamente 1 y 0 controlan cuál forma en que girará el motor, y el "pulso de paso" proporcionará la potencia real del motor para moverlo en esa dirección.

Mi pregunta es: ¿funcionará esto, o lo que dije es una completa tontería? Solo entiendo que los transistores pnp y npn son algo así como un interruptor lógico "generalmente encendido" o "generalmente apagado", básicamente, así que ahí es donde se me ocurrió eso ... Un poco como funciona un puente H en el primer lugar.

Gracias por tomarte el tiempo, los diagramas que estoy viendo son:

pines grbl a Arduino: http://www.electrodragon.com/w/images/e/e7/Grbl_Pin_Layout.png

L293D manejando un motor paso a paso: http://arduino.cc/en/uploads/Reference/bipolar_stepper_two_pins2.png

Respuestas (2)

Creo que lo que realmente busca es un expansor de IO: http://www.digikey.com/product-detail/en/SX1505I087TRT/SX1505I087CT-ND/2272323

Es un dispositivo digital relativamente simple. El Arduino se comunicaría con el expansor IO a través de algún protocolo de comunicación estándar (típicamente I2C o SPI), y el expansor IO mueve los pines en nombre del controlador.

En lugar de usar 12 pines en Arduino para controlar directamente los puentes H, Arduino usa 2 pines (en el caso de I2C) para comunicarse con el expansor IO, y el expansor IO controla directamente los pines. El Arduino diría "Está bien, Sr. Expansor IO. Encienda su pin2 y apague su pin8", y el expansor IO configuraría esos pines en consecuencia.

Los motores paso a paso generalmente funcionan a 20 - 50 kHz, ¿está seguro de que estos extensores I2C IO son lo suficientemente rápidos? EDITAR: tonto, hay suficientes pines de "baja frecuencia", como dirección, habilitación, etc.
WOW, no conocía estas cosas, y me alegra saber de su existencia. Definitivamente buscaré implementarlas de alguna manera en mi diseño.
@eyashin Solo asegúrese de poder cambiar las salidas lo suficientemente rápido para su aplicación. Algunos están diseñados solo para baja velocidad (como controlar los LED en una luz de estado), pero otros tienen un poco de lógica detrás de ellos y pueden impulsar PWM sin una entrada constante del uC.

Creo que está utilizando el chip incorrecto para impulsar el motor paso a paso. El estilo de chip de controlador que debe usar ya tiene entradas de paso y dirección y se conectará directamente a la placa Arduino que ejecuta GRBL.

Aunque actualmente hay MUCHOS dispositivos de este tipo disponibles, me gusta mucho el DRV8825 de TI. Es bueno para aproximadamente 1,5 A por fase con un riel de suministro máximo de 45 V. Tiene provisión para reducir la corriente de la bobina tan bajo como sea necesario para su motor en particular.

Puede ser difícil trabajar con este chip solo debido al estrecho espacio entre los cables y la almohadilla térmica de la parte inferior. Sin embargo, ya está disponible montado en una placa de circuito impreso con todos los componentes adicionales necesarios para que funcione. Simplemente conecte la placa a su controlador, el motor paso a paso y el voltaje de suministro y estará listo para comenzar.

Uno de esos proveedores es Pololu: DRV8825 y ofrecen un paquete de 5 módulos de controlador a un precio con descuento.

Consulte también Geckodrive para obtener módulos de controlador más grandes (pero más caros).

Sí, esto parece completamente lo correcto para interactuar con GRBL, para la iteración final de este proyecto creo que usaré algunos controladores de motor paso a paso reales. ¡Gracias por señalarme en la dirección correcta!