Steppers motors a acelerar e desacelerar em direcções opostas

test_ULN2003_lib_accelstepper_basic1

Usando a biblioteca AccelStepper library podemos acelerar e desacelerar a velocidade do motor de passos.

A biblioteca AccelStepper pode ser instalada usando os menus do Arduino IDE.

Menu: Rascunho > Incluir Biblioteca > Gerir bibliotecas
Procurar por: AccelStepper, e instalar

O exemplo controla dois motores 28BYJ-48  a acelerar e desacelerar a velocidade simultaneamente em direcções opostas.

#include <AccelStepper.h>

#define FULLSTEP 4
#define HALFSTEP 8

#define motorPin1 4 // Blue - 28BYJ48 pin 1
#define motorPin2 5 // Pink - 28BYJ48 pin 2
#define motorPin3 6 // Yellow - 28BYJ48 pin 3
#define motorPin4 7 // Orange - 28BYJ48 pin 4
// Red - 28BYJ48 pin 5 (VCC)

#define motorPin5 8 // Blue - 28BYJ48 pin 1
#define motorPin6 9 // Pink - 28BYJ48 pin 2
#define motorPin7 10 // Yellow - 28BYJ48 pin 3
#define motorPin8 11 // Orange - 28BYJ48 pin 4
// Red - 28BYJ48 pin 5 (VCC)

// NOTE: The sequence 1-3-2-4 is required for proper sequencing of 28BYJ48
AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);
AccelStepper stepper2(HALFSTEP, motorPin5, motorPin7, motorPin6, motorPin8);

void setup()
{
stepper1.setMaxSpeed(1000.0);
stepper1.setAcceleration(50.0);
stepper1.setSpeed(200);
stepper1.moveTo(2048); // 1 revolution

stepper2.setMaxSpeed(1000.0);
stepper2.setAcceleration(50.0);
stepper2.setSpeed(200);
stepper2.moveTo(-2048); // 1 revolution 
}


void loop()
{
//Change direction at the limits
if (stepper1.distanceToGo() == 0) 
stepper1.moveTo(-stepper1.currentPosition());
if (stepper2.distanceToGo() == 0) 
stepper2.moveTo(-stepper2.currentPosition());

stepper1.run();
stepper2.run();
}