Control de giro de motores paso a paso con drivers TMC-2208/2209

Voy a utilizar el montaje del set grbl para esta prueba pero con el código mas abajo mostrado. Los pines involucrados son el 2 como STEP,el 5 como DIR y el 8 como ENABLE que lo pondremos a nivel bajo para activar el motor,

En esta tabla muestro los tres tipos de motores que sirven de muestra para entender como vamos a controlar el giro y la velocidad en rpm.

Al utilizar este driver TMC-2208 o TMC-2209, cada paso se va a dividir en 16 micropasos. Asi obtenemos el numero de pasos por cada revolución o vuelta completa segun la característica de cada motor.

Otro dato importante son los “pasos por grado” obtenido a partir del cociente pasos-rev/360 . Por ejemplo en un motor Nema 17, si queremos que gire 50 grados ,en la función for, count< 8.88*50=444-

Finalmente el periodo de cada paso o pulso que aplicaremos a la entrada STEP y que será el valor “delay” que expresaremos en el sketch, siempre referido a 1 rpm. Será el valor que exprese la velocidad. Para su obtención calcularemos la inversa de dividir el numero de pasos entre 60 y nos dará la frecuencia para que gire a 1 rpm.

STEPPER MOTORPASOS/REV PASOS/GRADOPERIODO DEL PULSO
(referido a 1 rpm)
FreqV
28BYJ-4832768911.83 mseg546.13Hz1 rpm
NEMA 17 (17HS13-0404S)32008.8818,75 mseg53.33Hz1 rpm
NEMA 17 -(17hd4800-22B)32008.8818,75 mesg 53.33Hz 1 rpm

SKETCH: motor nema 17, girando 50 grados cada 5 segundos a 100




#include <Stepper.h>
#define STEP 2
#define DIR 5
#define ENA 8

void setup() {
  pinMode(STEP, OUTPUT);
  pinMode(ENA, OUTPUT);
  pinMode(DIR, OUTPUT);
  digitalWrite(ENA, HIGH);
  digitalWrite(DIR, HIGH);

}

void loop() {
  digitalWrite(ENA, LOW);
  digitalWrite(DIR, HIGH);
  for (int count = 0; count < 444; count++) {
    digitalWrite(STEP, HIGH);
       digitalWrite(STEP, LOW);
    delayMicroseconds(187,5);//
  }
  digitalWrite(ENA, HIGH);
  delay(5000);
}






Con este sketch podremos rellenar las tablas correspondientes para estudiar el comportamiento de cada motor en función de su velocidad en rpm y su consumo.

Tablas de comportamiento de cada motor:

Como dato fijo dejaremos el valor “for (int count = 0; count < 32767; count++)” para 28BYJ-48, y ” for (int count = 0; count < 3200; count++)” para los Nema 17.

Tengamos en cuenta que el valor maximo de count es 2 Bytes (32767), que justamente coincide con el valor pasos / rev de los motores 28BYJ-48.

Para variar la velocidad del motor solo tendremos que ir dividiendo el valor “delay”, referido a 1 rpm incrementando la freq del pulso step, bajando el peiodo delpulso del cual partimos a 1 rpm.

#include <Stepper.h>
#define STEP 2
#define DIR 5
#define ENA 8

void setup() {
  pinMode(STEP, OUTPUT);
  pinMode(ENA, OUTPUT);
  pinMode(DIR, OUTPUT);
  digitalWrite(ENA, HIGH);
  digitalWrite(DIR, HIGH);

}

void loop() {
  digitalWrite(ENA, LOW);
  digitalWrite(DIR, HIGH);//CCW DIRECTION
  for (int count = 0; count < 3200; count++) {
    digitalWrite(STEP, HIGH);
       digitalWrite(STEP, LOW);
    delay(18.75/velocidad);//Variaremos la velocidad en función del periodo/freq
  }//max count 2 bytes
  digitalWrite(ENA, HIGH);
  delay(5000);
}

He añadido un delay de 5 segundos para apreciar el paro del motor antes de empezar una nueva revolución.

28BYJ-8/ (5v,,55mA)

delay FREQV rpmVref=1 V, no influye
1.8 mseg546 Hz1180mA/6,5v
900 microseg1.111 khz2180mA/6,6
450 microseg2.222 kHz4160mA/6,6
180 microseg5.555 kHz10150mA/6,6
90 microseg11,1 khz20140mA con 8.5v
………

Aunque las medidas de consumo no son muy exactas,nos ayudan a ver como la potencia del motor,proporcional a su consumo va decayendo al aumentar la velocidad, aunque en este no es muy acusado, La alimentación al set se estableció en 6,5v teniendo en cuenta que se trata de un motor de 5v y sus 55 mA de consumo nominal se triplicó.

Se puede llegara las 20 rpm subiendo a 8,5v la alimentación.

No olvidemos que este motor tiene una reducción de 1/64 con un angulo de paso de 5,625 grados, y son unipolares pero lo utilizaremos como bipolares omitiendo el hilo comun de color rojo, entonces pasaremos de 4 medias bobinas a dos bobinados completos, importante de tener en cuenta porque la reducción ahora equivaldrá a 1/32, entonces el calculo de los pasos / vuelta será:

360/5,625*32=2048 y al utilizar 1/16 micropasos del driver sería finalmente 2048×16=32768 pasos/vuelta

NEMA 17 (17HS13-0404S), 12V,,0.4A

delay FREQrpmVref=1 a 2 v
18,75 mseg53,3 Hz1350mA
1.875 mseg533 Hz10340mA
937microseg10666 Hz20320mA
187 microseg5.33 KHz100180mA
93.75 microseg10,66 khz200100mA
…….

Ahora podremos llegar a las 200 rpm con una alimentación recomendada de 11,5V a causa del arduíno.

El ajuste en el TMC2208/09 no es significativo y ronda sobre 1V sin que notemos incremento en elconsumopuesto que este motor tiene una corriente nominal de 400 mA.

NEMA 17 -(17hd4800-22B)(3.06V ,,1.7A en vacio

delay (mseg)FREQrpmmaxVref=2v
18,7553,3 hZ11500mA con 6,6v
1.875533 Hz101400mA con 6,6v
937microseg10666 Hz201200mA con 6,6v
187 microseg5.33 KHz100800mA con 6,6v
93.75 microseg10,66 khz200510mA con 6,6v

Con el nema 17HD4800 y sus 1,7A de referencia, podremos sobrepasar el amperio sobradamente ajustanto el trimmer hasta los 2 V usando el driver TMC2209, ademas de la ventaja de poder utilizar tensiones entre 5,5 y 6,5V. Con este motor si podremos obtener un buen ajuste de la potencia segun conveniencia.

.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Translate »