[SOLUCIONADO]...Instruccion libreria stepper de apagado de bobinas

Hola a todos:
Podríais facilitarme la instrucción con la que se apagan todas las bobinas en un motor paso a paso.

La he buscado en el web-sitio oficial y no la he encontrado.

Como siempre muchas gracias .!!!! :cocktail:

Yo tampoco, así que me hice una simple función:

void apagar () {
  digitalWrite (in1, LOW);
  digitalWrite (in2, LOW);
  digitalWrite (in3, LOW);
  digitalWrite (in4, LOW);
}
1 Like

Tomado de un colega del foro

https://forum.arduino.cc/t/desactivar-bobinas-tras-parada-motor-pap-bipolar-con-l298n-y-stepper-h/462855

1 Like

Hola gonpezzi

Gracias por la respuesta, esa función que indicas la utilizo conjuntamente en otros códigos, en los que también uso funciones similares para activar las bobinas .

Mi pregunta surgio, porque creo recordar que existe una instrucción, tal vez, en librerías Steeper que con una sola palabra desactivava las bobinas.

Maldita memoria !!!! :crazy_face:

Hola Adrian_E

Gracias por contestar.
Como le he comentado a @gonpezzi :
Mi pregunta surge, porque creo recordar que existe una instrucción, tal vez, en librería Steeper que con una sola palabra desactivava todas las bobinas del motor paso-a-paso unipolar.
A ver si lo encuentro o alguien mas versado del foro lo sabe.

Saludos y suerte !!!... :cocktail:

Mira no soy gran conocedo, pero qcreo que la libreria steper no tiene esa funcion

1 Like

La librería Stepper no tiene una función que desactive las bobinas.

1 Like

Teneis toda la razón @MaximoEsfuerzo y @Adrian_E

Al fin rebuscando por las librerías he encontrado la
AccelStepper que SI tiene la instrucción de apagado de bobinas del motor paso-paso: stepper.disableOutputs();

He escrito el siguiente codigo para probarla.
Cuando accionas el pulsador, funciona el motor, soltándolo, actua el stepper.disableOutputs()

Gracias a todos @gonpezzi , ... @Adrian_E ..@MaximoEsfuerzo por la colaboración !!!.... :cocktail: :cocktail:

..

  /*
   * 
   * MOTOR P-A-P con apagado bobinados.
   * 
   */
  //************************ ENGRAL  30/1/2024. *******************  
  
  #include <AccelStepper.h>
  
  #define IN_1  8    // IN1 del controlador ULN2003
  #define IN_2  9    // IN2 del controlador ULN2003
  #define IN_3  10   // IN3 del controlador ULN2003
  #define IN_4  11   // IN4 del controlador ULN2003
  #define Puls  2    // Pulsador
  
  const int VELOCIDAD = 200; // Determina la velocidad del motor
                                              //Motor a DOBLEPASO
  AccelStepper stepper = AccelStepper(AccelStepper::FULL4WIRE, IN_1, IN_3, IN_2, IN_4);
  
  void setup()
  {
    Serial.begin(9600);
    stepper.setMaxSpeed(500); //  1000 //Configura los máximos pasos (steps) p/seg
    stepper.setAcceleration(200); //200 Configura la máxima aceleración en pasos p/seg^2
  
    Serial.println("MOTOR P-A-P ");
  }
  void loop()
  {
    if (digitalRead (Puls) == HIGH)  // Pone en marcha
  {
    stepper.setSpeed(VELOCIDAD);
    stepper.runSpeed();      // Hace que el motor se mueva
  }
    else
  {
    stepper.stop(); //Para el motor.
    stepper.disableOutputs();// Corta la alimentación de las bobinas  
  }
  }
  //  ********************  FIN  ***********************
1 Like

Hola a todos :

Continuando con el tema:
He encontrado esta pagina:
http://www.airspayce.com/mikem/arduino/AccelStepper/index.html

Muy interesante para el mando de motores paso-paso, con múltiples códigos de ejemplo.
Si lo consideran interesante los moderadores la pasare a Documentacion.

Un saludo !!! .. :cocktail: :cocktail:

Hola a todos

Siguiendo el tema anterior(del apagado) y post primero #1:

Por si, a algun colega le interesa, independientemente de lo comentado en el post anterior #9, adjunto un código que ESTE SI funciona con la librería Stepper.
Haciéndole caso al amigo @gonpezzi , incluyo la función apagado().
Gracias @gonpezzi !!!!! :cocktail: :cocktail: :champagne:

.


// Gira continuamente.!!!

//  Cambiando el signo en "step( + PasosUnaRevolucion)",sentido adelante o atras.
//  Una revolucion :582 pasos con MOTOR MITSUMI 42SP -  5Polos.
  
  #include <Stepper.h>
  
  const int PUR = 48 ;          // PasosUnaRevolucion 
  const int PASOSd = + 582 ;     // Pasos a dar en la secuencia a derecha.
  const int PASOSi = - 582 ;     // Pasos a dar en la secuencia a izquierda.(NEGATIVO)
  const int RPM = 200 ;           // VELOCIDAD en R.P.M - 200 
  
  Stepper MOTORPAP( PUR , 8, 10, 9, 11);// PasosUnaRevolucion, PINES cambiados: 9 y 10. !!!

  void apagado()  // Apaga bobinados del motor
{
  digitalWrite (8, LOW);
  digitalWrite (9, LOW);
  digitalWrite (10, LOW);
  digitalWrite (11, LOW);
}
  void setup()
{
  MOTORPAP.setSpeed(RPM);   // VELOCIDAD en R.P.M - 200 buena!

  Serial.begin(9600);
  Serial.println("");
  Serial.println("========  TITULO: A_A_MOTOR_PAP_LIBRERIA__Stepper.h============= \n");

}
  void loop()
{
  Serial.println("DERECHA");
  MOTORPAP.step(PASOSd); // step(pasos) a realizar por MOTORPAP en esta orden.
  apagado();
  delay(2000);

  Serial.println("IZQUIERDA");
  MOTORPAP.step(PASOSi);// step(pasos) NEGATIVOS a realizar por MOTORPAP en esta orden.
  apagado();
  delay(2000);

} //  LL-LOOP

// ===================================   FIN    ========================================

El único detalle a tener en cuenta es que al desenergizar las bobinas el motor no genera torque, o sea, queda liberado y no conserva la posición de lo que le cargues.
No te olvides de eso al usar tu nueva función.

1 Like

.

Hola @MaximoEsfuerzo

Gracias por la respuesta, ya tenia conocimiento de ello.

Yo utilizo el apagado de bobinas, en casos en el que deba quedar el motor mucho tiempo sin actividad, calentándose inútilmente y que no tenga que soportar una fuerza en sentido contrario.

Es de agradecer tu puntualización, ya que muchos de los que consultaran esta pagina, tal vez no lo sepan.

Un saludo !!! Hasta la proxima !!!:cocktail: :cocktail:

.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.