Eu vi isso.
Recomendo o uso de um Driver maior.
Modulo driver TBS 6600 (ou similar).
http://labdegaragem.com/main/search/search?q=tbs6600
Não use TBS 6560 (muitos problemas reportados)
lo ou Bipolar série. Use a ligação Bipolar comum.
E ajuste a corrente para 1,5A somente !!!
Mais indicado para o seu motor de passo :
https://jgamblog.wordpress.com/2016/09/24/tutorial-arduino-drv8825-motor-de-passo/
…
N-5A)// http://labdegaragem.com/forum/topics/driver-para-motor-de-passo-nema-34-torque-100-00-kgf-cm-corrente
// Motor Minebea NEMA 32 Bipolar / Modulo HY-DIV268N-5A / Arduino Nano / IDE 1.6.7
// OBS: Motor Bipolar 8 fios configurado como Bipolar série ou paralelo
// Ajuste os DIP SWITCHES antes de fazer os testes (fonte desligada)
// Gustavo Murta 14/jun/2016
// Definições das Portas Digitais do Arduino
int ENA = 7; // Porta digital D07 - ativa (enable)
int DIR = 3; // Porta digital D03 - direção (direction)
int PUL = 2; // Porta digital D02 - passo(step)
int atraso = 0; // Atraso no pulso em microsegundos
float FREQ = 200; // Frequências dos pulsos por segundos
boolean sentido = true; // Variavel de sentido
int CONTADOR = 200; // Número de pulsos (passos por volta)
// FULL = 200 passos / HALF = 400 passos / P1_4 = 800 passos / P1_8 = 1600 passos / P1_16 = 3200 passos
void setup()
{
Serial.begin(9600);
DDRD = DDRD | B11111100; // Configura Portas D02 até D07 como saída
digitalWrite(ENA, LOW); // Desativa o driver TSB6600
delay (50); // Atraso de 50 milisegundo
digitalWrite(ENA, HIGH); // Ativa o driver TSB6600
FREQUENCIA(); // Calcula o período do sinal STEP
//Serial.println(atraso) ; // Imprime na Console, o tempo em microseguindos
}
void HOR() // Configura o sentido de rotação do Motor
{
digitalWrite(DIR, HIGH); // Configura o sentido HORÁRIO
}
void AHR() // Configura o sentido de rotação do Motor
{
digitalWrite(DIR, LOW); // Configura o sentido ANTI-HORÁRIO
}
void PASSO() // Pulso do passo do Motor
{
digitalWrite(PUL, LOW); // Pulso nível baixo
delayMicroseconds (atraso); // Atraso de X microsegundos
digitalWrite(PUL, HIGH); // Pilso nível alto
delayMicroseconds (atraso); // Atraso de X microsegundos
}
void FREQUENCIA() // Configura quantos pulsos por segundo (Hz)
{
atraso = 1000000 / (2*FREQ); // calculo do tempo de atraso (1/2 periodo) em us
}
void TesteMotor()
{
HOR();
for(int i=0; i <= CONTADOR; i++) // Incrementa o Contador
{
PASSO(); // Avança um passo no Motor
}
delay (500) ; // Atraso de 500 mseg
AHR();
for(int i=0; i <= CONTADOR; i++) // Incrementa o Contador
{
PASSO(); // Avança um passo no Motor
}
delay (500) ; // Atraso de 500 mseg
}
void loop()
{
FREQ = 200;
FREQUENCIA();
CONTADOR = 200;
Serial.print(atraso);
Serial.println(" us Full, 200 passos, 200 PPS");
Serial.println();
TesteMotor();
FREQ = 600;
FREQUENCIA();
CONTADOR = 200;
Serial.print(atraso);
Serial.println(" us Full, 200 passos, 600 PPS");
Serial.println();
TesteMotor();
}
"…