Arduino Motor Shield para motor paso a paso de 12v

3

Estoy haciendo una plataforma básica para fotografía de timelapse usando arduino. Es un sistema de panorámica para una cámara DSLR, así que opté por el escudo del motor de Arduino con el chip L298 y un motor paso a paso de 12V y 1.7A. Antes de poder alimentar el protector del motor externamente, noté que el motor funcionaba bien con el USB de 5 V suministrado a la placa Arduino. Fue capaz de mover completamente la cámara réflex digital a diferentes velocidades y mantenerla en su lugar.

El problema surgió cuando se le pidió que hiciera un solo paso a la vez (supongo que la configuración de cualquier velocidad aquí será suficiente). Noté que no todos los pasos son iguales. A veces, habría 2 pasos pequeños seguidos por un paso más grande o incluso al revés. Según tengo entendido, los motores paso a paso tienen un tamaño de paso fijo, y o bien lo hará completamente (con suficiente potencia), o fallará, ¿es correcto? Pensé que superaría completamente la inercia, y no se atascaría a la mitad, y luego funcionaría bien otras veces.

Entonces, ¿está el motor / 5v de potencia o mi código está fallando aquí? Proporcionar energía externa requeriría que hiciera un rastro en el escudo, así que me aferro a eso hasta que esté seguro. (¡También sería bueno tener una sola fuente de alimentación!)

Aquí está el código genérico que estoy usando:

#include <Stepper.h>

 const int stepsPerRevolution = 1024;
 Stepper myStepper(stepsPerRevolution, 12,13);     

// give the motor control pins names:
 const int pwmA = 3;
 const int pwmB = 11;
 const int brakeA = 9;
 const int brakeB = 8;
 const int dirA = 12;
 const int dirB = 13;

 int times = 120;//420
void setup() {
 Serial.begin(9600);
 // set the PWM and brake pins so that the direction pins  // can be used to control the motor:
pinMode(pwmA, OUTPUT);
pinMode(pwmB, OUTPUT);
pinMode(brakeA, OUTPUT);
pinMode(brakeB, OUTPUT);
digitalWrite(pwmA, HIGH);
digitalWrite(pwmB, HIGH);
digitalWrite(brakeA, LOW);
digitalWrite(brakeB, LOW);

// initialize the serial port:
Serial.begin(9600);
// set the motor speed (for multiple steps only):
myStepper.setSpeed(2);
}

void loop() {
  while(times>0){
    myStepper.step(1);
    Serial.println(times);
    times--;
    delay(12000);
   }

  }
    
pregunta Tauseef Latif

2 respuestas

2

Si el motor está clasificado para 12V y 1.7A, entonces aliméntelo. El USB puede suministrar 5V a un máximo de 500 mA, por lo que en lugar de un máximo de 12V * 1.7A = 20.4W, tiene un máximo de 5V * 500mA = 2.5W. Esa es la gran diferencia.
Mi conjetura es que debido a la inercia de la DSLR y la débil unidad de la bobina paso a paso, se desliza ocasionalmente (o algo similar)
Además, de una pregunta anterior, recuerdo que el protector del motor Arduino no es el mejor diseño: el L298 cae a dos o dos voltios a través de los transistores de fuente y disipador, por lo que terminará con menos energía disponible, tal vez alrededor de un vatio (consulte el voltaje de saturación de fuente / sumidero en la tabla de especificaciones de la hoja de datos)

El código básico se ve bien, pero es imposible decirlo con certeza ya que toda la funcionalidad real está escondida en la biblioteca de pasos. Supondré que esto probablemente esté bien si se trata de una biblioteca de uso común que ha existido durante algún tiempo.

Entonces, sí, alimente el motor con 12V y al menos 1.7A. Si tiene que cortar el trazado, haga esto, es fácil volver a soldarlo más tarde si lo necesita (asegúrese de que no haya un puente en la placa del motor, sin embargo, tengo la sensación de que recuerdo un puente con el propósito de un dispositivo externo). Suministro en uno de estos escudos)

    
respondido por el Oli Glaser
1

¿Ha intentado variar los valores de PWM? Además, recomiendo el Robust Motor Shield . Estoy usando un motor paso a paso para girar un eje para probar los sensores de posición del acelerador y se ha notado un comportamiento como el suyo cuando al final del recorrido del TPS ... o cuando el PWM es demasiado bajo y el escalonador no puede dar ese paso, rebota un poco.

El protector del motor resistente permite el suministro externo al protector, por lo que el Arduino y el protector pueden ser alimentados por separado. En todo caso, ir a ese sitio podría ayudarte a comprender mejor cómo jugar con los steppers.

Para mi situación, encontré que para que Arduino midiera la tensión del sensor en A2 (o cualquier pin), el eje de entrada del TPS no podía estar en movimiento, por lo que mi bosquejo mueve el eje un paso, toma medidas, repite . Para mi situación, mi stepper tiene pasos de 7.5 ° y un engranaje de 18 dientes. Utilicé la impresora 3D para hacer una marcha de 54T, así que obtengo una reducción de 3: 1, lo que hace que mi motor paso a paso tenga más potencia y precisión.

    
respondido por el Chris K

Lea otras preguntas en las etiquetas