Controle de Múltiplos Motores de Passo com Arduino Mega


#1

Olá, estou desenvolvendo um projeto composto por quatro motores de passo e um Arduíno Mega, sem utilizar nenhum CNC shield. A principio estou utilizando a biblioteca Stepper.h.

Problema:
Quando apenas um motor esta conectado a placa, funciona conforme esperado ( movimentos no sentido horário e anti-horário) .Após o segundo motor ser inserido, ambos os motores passam a girar apenas no sentido horário, mesmo com alterações no código.

Duvidas:

  • É realmente possível fazer o controle de quatro motores sem o uso do Shield?
  • O problema é devido a erros no programa ou pode ter relação com o hardware utilizado?

Segue código utilizado.

// --- Bibliotecas Auxiliares ---
#include <Stepper.h>   //biblioteca para controle de motor de passo

// --- Constantes Auxiliares ---
const int stepsPerRevolution = 500;  // change this to fit the number of steps per revolution

// --- Declaração de Objetos ---
Stepper M1(stepsPerRevolution, 8,9,10,11); 
Stepper M2(stepsPerRevolution, 0, 1,2,3);

void setup() 
{
    // set the speed at 60 rpm:
  M1.setSpeed(30);
  M2.setSpeed(30);
  

}

void loop() 
{
  
  M1.step(512);
  delay(1000);
  M2.step(-1024);
  delay(1000);
  M1.step(-512);
  delay(1000);
  M2.step(1024);
  delay(2000);
  
} 

Obrigado a todos pela ajuda.


#2

Amigo favor comentar todo seu seu código favor enviar o esquema de ligação para uma melhor análise.
Att.


#3

Código comentado:
// — Bibliotecas Auxiliares —
#include <Stepper.h> //biblioteca para controle de motor de passo

// --- Constantes Auxiliares ---
const int stepsPerRevolution = 500;  // change this to fit the number of steps per revolution

// --- Declaração de Objetos ---
Stepper M1(stepsPerRevolution, 8,9,10,11); 
Stepper M2(stepsPerRevolution, 0, 1,2,3);

void setup() 
{
// set the speed at 60 rpm:
  M1.setSpeed(30);
  M2.setSpeed(30);
  

}

void loop() 
{
  
  M1.step(512); //rotaciona motor 1 90º horario
  delay(1000); 
  M2.step(-1024);  //rotaciona motor 2 180º anti-horario
  delay(1000);
  M1.step(-512);  //rotaciona motor 1 90º anti-horario
  delay(1000);
  M2.step(1024);  //rotaciona motor 2 180º horario
  delay(2000);
  
} 

Esquema de montagem:
obs: os motores estão ligados em uma fonte independente