1 votos

Controlar un motor paso a paso con un motordriver y Arduino

Estoy intentando controlar un stepper Nema 34 con un motrordriver(EM-314) y Arduino Uno.

He conseguido que el motor gire (lentamente) poniendo el pin 5 del Arduino en alto. El pin 5 está conectado al preset 4 del motordriver. Me gustaría que se acelere, pero no estoy seguro de cómo hacerlo.

¿Alguno de vosotros sabe cómo puedo acelerar la velocidad?

Ficha técnica del motordriver: http://media.oem.se/Archive/FilesArchive/102826.pdf

Actualmente estoy usando un powerslupply en 0-48V 10A.

Se agradecen todas las respuestas.

Editar:

El pin 7 del arduino está conectado a STEP IN El pin 6 está conectado a DIR/STOP/RESET Y estoy usando un potenciómetro para controlar la velocidad.

Este es el código que estoy usando en Arduino.

int sensorPin = A0;
int sensorValue = 0;

void setup() {
  //Serial.begin(9600);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);

  }

void loop() {

 sensorValue = analogRead(sensorPin);
 sensorValue = map(sensorValue, 0, 1023, 3600, 1);
 //Serial.print(sensorValue);
 //Serial.print("\n");
  if(sensorValue > 3000){
    digitalWrite(7, LOW);
   }
 if (sensorValue < 3000){
 digitalWrite(7, HIGH);
 delayMicroseconds (sensorValue);
 digitalWrite(7, LOW);
 delayMicroseconds(sensorValue);
 }
 }

0voto

user52501 Puntos 1

Me gustaría que se acelerara, pero no estoy seguro de cómo hacerlo.

Respuesta corta:
De la hoja de datos:

STEP IN es la entrada para los pulsos de paso. Un paso se realiza con el borde positivo del pulso de entrada.

La entrada DIR/STOP/RESET se utiliza normalmente para elegir el de rotación.

Eso es todo. En realidad no necesitas más señales de control.
La velocidad del motor depende del modo de paso y de la frecuencia de su señal STEP, que podría ser una señal PWM de su Arduino.
Con la señal DIR se puede cambiar el sentido de giro. Tenga en cuenta que no debe exceder la velocidad de arranque/parada/máxima especificada del motor, ya que de lo contrario se producirán pérdidas de velocidad.

0voto

transistor Puntos 2074

La velocidad de un motor paso a paso se controla mediante la frecuencia de los impulsos de paso. Parece por su código que usted está usando un "sensor", pero más bien un potenciómetro para controlar la velocidad.

void loop() {
    sensorValue = analogRead(sensorPin);               // returns 0 to 1023
    sensorValue = map(sensorValue, 0, 1023, 3600, 1);  // returns 3600 to 1
    if(sensorValue > 3000){
        digitalWrite(7, LOW);
    }
    if (sensorValue < 3000){
        digitalWrite(7, HIGH);
        delayMicroseconds (sensorValue);     // delay depends on sensor
        digitalWrite(7, LOW);
        delayMicroseconds(sensorValue);      // delay depends on sensor
    }
 }  
  • Si la tensión de control del "sensor" es baja, la función map() establece el retardo de paso al valor más largo de 3,6 ms.
  • A medida que la tensión de control aumenta hacia el máximo, el retardo disminuye hasta un mínimo de 1 µs.

Sospecho que tu potenciómetro no está bien conectado. Habilita de nuevo la función de impresión en serie para comprobarlo. (Esto desordenará completamente la sincronización del resto del programa y ralentizará la secuencia de pasos).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X