He estado trabajando en este diseño TB6600 (se muestra el esquema aquí). Q1 asegura que el motor permanezca dentro de los límites de corriente. El TB6600 controla el pin ALERTA bajo cuando se excede el límite de corriente. Q2 y Q3 son para el control de par. Si hay un paso de pulsos continuos, el pin TQ se mantiene alto y, por lo tanto, mantiene el par al 100%. Las resistencias de detección de corriente son 5 x 1R 1W resistencias. VCC es de 24 V y la resolución paso a paso se establece en 1/16.
Sin embargo, esto no parece estar funcionando. El motor se mueve un poco y se detiene.
Aquí está el código que estoy usando para probar el motor (un motor paso a paso NEMA 23 clasificado en 2.8A). Se supone que el código debe conducir el motor a través de 200 pasos y, por lo tanto, hacer un círculo completo. Sin embargo, eso no funciona. También intenté conducir esto con grbl pero obtengo los mismos resultados. ¿Qué me estoy perdiendo?
// defines pins numbers
const byte dirPinX = 5;
const byte stepPinX = 2;
const byte enablePin = 8;
void setup() {
// Sets the two pins as Outputs
pinMode(dirPinX, OUTPUT);
pinMode(stepPinX, OUTPUT);
pinMode(enablePin, OUTPUT);
digitalWrite(enablePin, LOW);
}
void loop() {
digitalWrite(enablePin, HIGH);
digitalWrite(dirPinX, HIGH); // Enables the motor to move in clockwise direction
for(int x = 0; x < 200; x++) {
digitalWrite(stepPinX, HIGH);
delayMicroseconds(500);
digitalWrite(stepPinX, LOW);
delayMicroseconds(500);
}
delay(1000); // One second delay
digitalWrite(dirPinX, LOW); // Enables the motor to move in anti-clockwise direction
for(int x = 0; x < 200; x++) {
digitalWrite(stepPinX, HIGH);
delayMicroseconds(500);
digitalWrite(stepPinX, LOW);
delayMicroseconds(500);
}
delay(1000); // One second delay
}