Aceleración y desaceleración diferentes en un motor a pasos

Hola, estoy buscando la forma de acelerar y desacelerar un motor a pasos con diferentes valores, tengo un Motor a pasos acoplado a una polea la cual sube una carga de 1Kg en el momento de elevación debe tener una rampa más larga y en el momento de desacelerar una rampa corta,
Probé con la librería accelstepper pero solo se puede configurar un solo valor para los dos , ¿alguien sabe cómo solucionar esto?, en internet me aparece que hay una versión de la librería accelstepper que cuenta con deceleration, pero no la encuentro.

#include <AccelStepper.h>

// Define los pines de los drivers de motor
#define DIR_PIN 2
#define STEP_PIN 3

// Crea un objeto AccelStepper
AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN, DIR_PIN);

void setup() {
  stepper.setMaxSpeed(1000); // Velocidad máxima del motor
  stepper.setAcceleration(1000); // Tasa de aceleración (por ej. 1000 pasos/s^2)
  stepper.setDeceleration(500); // Tasa de desaceleración (por ej. 500 pasos/s^2)
}

void loop() {
  // Mueve el motor a una posición deseada con aceleración y desaceleración diferentes
  stepper.moveTo(10000); // Mueve a la posición 10000
  stepper.runToPosition(); // Espera a que el motor llegue a la posición

  stepper.moveTo(0); // Mueve a la posición 0
  stepper.runToPosition(); // Espera a que el motor llegue a la posición
}

Su publicacion se MUEVE a su ubicacion actual ya que es mas adecuada.

Moderador:
Por favor, lee las Normas del foro y publica/edita tu código/error usando etiquetas de código.
Ve a edición, luego selecciona todo el código que has publicado/editado, lo cortas y click en (<CODE/>)




Si posteas en español, usa este foro, si lo haces en el foro en inglés todo comentario en ese idioma o terminarás aca si o si.

Porque dices que solo un motor?
El ejemplo AccelStepper/examples/AFMotor_MultiStepper/AFMotor_MultiStepper.pde at master · waspinator/AccelStepper · GitHub
Controla dos steppers.
Y he visto códigos de brazos robos con 6 grados de libertad controlados con esta librería, es decir 6 motores.

NOTA: Por si acaso no te queda claro, no respondas sin antes editar tu código.

No tengo problema para mover varios motores, mi problema es con la aceleración y desaceleración, necesito acelerar lento y desacelerar rápido.
Leí que existía una versión de accelstepper que aceptaba valores de;

void setup() {
  stepper.setMaxSpeed(1000); // Velocidad máxima del motor
  stepper.setAcceleration(1000); // Tasa de aceleración (por ej. 1000 pasos/s^2)
  stepper.setDeceleration(500); // Tasa de desaceleración (por ej. 500 pasos/s^2)
}

De donde sacaste setDeceleration() no puedo encontrar un ejemplo.

En este ejemplo el stepper acelera a 1000 psasos/s^2 y desacelera del mismo modo.

#include <AccelStepper.h>

#define DIR_PIN 2
#define STEP_PIN 3

// Crea un objeto AccelStepper
AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN, DIR_PIN);

void setup() {
  stepper.setMaxSpeed(1000);      // Velocidad máxima [pasos/seg]
  stepper.setAcceleration(300);   // Tasa de aceleración y desaceleración [pasos/seg^2]
}

void loop() {
  // Ir a 2000 pasos adelante
  stepper.moveTo(2000);
  while (stepper.distanceToGo() != 0) {
    stepper.run();       // Aca acelera y frena automáticamente
  }

  delay(1000);

  // Volver a la posición 0 (acá debería desacelerar )
  stepper.moveTo(0);
  while (stepper.distanceToGo() != 0) {
    stepper.run();
  }

  delay(1000);
}

Creo que solo te falta esto

 while (stepper.distanceToGo() != 0) {
    stepper.run();
  }

Para darle tiempo a que llegue a cada paso indicado.