Problema con el motor paso a paso no aterrizando en el mismo lugar

0

Tuve una pregunta rápida con respecto a un motor paso a paso con el que estoy trabajando. Estoy ejecutando el motor de 5 pines y 5 V a través de una placa Arduino y utilizando los bocetos que se proporcionan. Estoy tratando de hacer que el motor gire en círculos completos divididos en pequeños segmentos y, aunque está funcionando (actualmente tengo 7 'paradas'), parece que no puedo hacer las paradas donde el motor se detiene para superponerse. Siempre hay un ligero cambio que lo tira todo. ¿Alguna idea?

/* 
Stepper Motor Control - one revolution

This program drives a unipolar or bipolar stepper motor. 
The motor is attached to digital pins 8 - 11 of the Arduino.

The motor should revolve one revolution in one direction, then
one revolution in the other direction.  


Created 11 Mar. 2007
Modified 30 Nov. 2009
by Tom Igoe

*/

#include <Stepper.h> 

const int stepsPerRevolution = 200;  // change this to fit the number of steps per                                 revolution
                                 // for your motor

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8,9,10,11);    
int stepCount = 0;  // number of steps the motor has taken

void setup() {
// set the speed at 60 rpm:
myStepper.setSpeed(60);
// initialize the serial port:
Serial.begin(9600);
}

void loop() {
// read the sensor value:
int sensorReading = analogRead(A0);
// map it to a range from 0 to 100:
int motorSpeed = map(sensorReading, 0, 1023, 0, 100);
// set the motor speed:
if (motorSpeed > 0) {
myStepper.setSpeed(motorSpeed);
// step 1/100 of a revolution:
myStepper.step(stepsPerRevolution/100);
} 
// step one revolution  in one direction:
Serial.println("clockwise");
myStepper.step(stepsPerRevolution);
delay(500);

// step one revolution in the other direction:
Serial.println("counterclockwise");
myStepper.step(-stepsPerRevolution);
delay(500); 
}
    
pregunta kari

3 respuestas

4

Reduzca la velocidad del sistema. Si la inercia es un problema, entonces el sistema probablemente buscará correctamente. Si el problema persiste, es más probable que el problema esté en el software.

    
respondido por el russ_hensel
3

Si el código lo hace todo bien (no soy un experto en eso), existe la posibilidad de que su motor "pierda" los pasos. Hay varias razones por las que esto puede ocurrir: Acelere o pare demasiado rápido (¡deje pasar un tiempo para tener en cuenta la inercia mecánica!), Use un par de torsión muy pequeño (proporcional a la corriente del motor), o haga que el motor gire a la velocidad a la que está resuena.

Puede comparar el rotor de un paso a paso con un péndulo mecánico que se mantiene en su lugar mediante resortes, el equivalente a los resortes es la fuerza magnética que mantiene el rotor en su lugar.

Tal sistema de masa-resorte tiene una frecuencia de resonancia. Para un paso a paso, por lo general es bastante bajo y la reconciliación se produce a bajas velocidades. Por lo tanto, al acelerar o detener un paso a paso, desea superar la velocidad de la resonancia bastante rápido y no permanecer allí durante un tiempo prolongado. Por supuesto, cualquier carga (incluida la marcha) conectada al motor alterará la frecuencia de resonancia.

    
respondido por el zebonaut
1

Además de la publicación de Zebonaut, también hemos visto más comportamientos esotéricos que impulsan a los steppers:

  • Fichas de controlador paso a paso (Allegro A4983) que faltan microsteps (básicamente lo admitieron en la hoja de datos de A4988)
  • pines del temporizador del microprocesador que no se alternan de forma confiable, o que rebotan ... terminamos leyendo manualmente el estado del pin para confirmar
  • Los errores matemáticos o de programación / conteo al cambiar de dirección o al calcular el número de pasos entre dos puntos, es muy fácil salir con 1 paso (o microstep) cuando se detiene, comienza o cambia de dirección.
  • Los motores pierden la posición (microstep) al poner el IC del controlador en modo de bajo consumo cuando está parado.
respondido por el John U

Lea otras preguntas en las etiquetas