Durante estas semanas hemos estado probando los dos motores, Nema 17 y Nema 8 y hemos optado por usar el Nema 8 por su tamaño más reducido. Pero resulta que el Nema 8 no nos puede servir para la creación de nuestro robot sumo.
NEMA 8 Pruebas iniciales
Durante estas semanas hemos estado probando el motor Nema 8 y hemos estado haciendo pruebas con ese motor para ir teniendo una previa idea de lo que sería el robot definitivo, un prototipo.
Hemos conseguido hacer funcionar el motor Nema 8 con el siguiente circuito:
Y el siguiente código:
const int DIR = 12;
const int STEP = 14;
const int steps_per_rev = 200;
void setup()
{
Serial.begin(115200);
pinMode(STEP, OUTPUT);
pinMode(DIR, OUTPUT);
}
void loop()
{
digitalWrite(DIR, HIGH);
Serial.println("Spinning Clockwise...");
for(int i = 0; i<steps_per_rev; i++)
{
digitalWrite(STEP, HIGH);
delayMicroseconds(2000);
digitalWrite(STEP, LOW);
delayMicroseconds(2000);
}
delay(1000);
digitalWrite(DIR, LOW);
Serial.println("Spinning Anti-Clockwise...");
for(int i = 0; i<steps_per_rev; i++)
{
digitalWrite(STEP, HIGH);
delayMicroseconds(1000);
digitalWrite(STEP, LOW);
delayMicroseconds(1000);
}
delay(1000);
}
NEMA 8 Prototipo
Hemos estado montando una pequeña base de lo que sería el robot, con una sencilla estructura hecha a base de madera y unas ruedas provisionales hechas de cartón.
Y hemos estado también probándolos sincronizadamente con el siguiente código, sobre las pruebas hemos accidentalmente hemos quemado cuatro microcontroladores del motor. Por lo que hemos tenido cierta dificultad al avanzar en este tema.
El código que hemos usado es el anterior pero añadiendo dos entradas más para el otro motor adicional:
const int DIR1 = 12;const int STEP1 = 14;
const int DIR2 = 33;
const int STEP2 = 32;
const int steps_per_rev = 200;
void setup()
{
Serial.begin(115200);
pinMode(STEP1, OUTPUT);
pinMode(DIR1, OUTPUT);
pinMode(STEP2, OUTPUT);
pinMode(DIR2, OUTPUT);
}
void loop()
{
digitalWrite(DIR1, HIGH);
digitalWrite(DIR2, LOW);
Serial.println("Spinning Clockwise...");
for(int i = 0; i<steps_per_rev; i++)
{
digitalWrite(STEP1, HIGH);
digitalWrite(STEP2, HIGH);
delayMicroseconds(2000);
digitalWrite(STEP1, LOW);
digitalWrite(STEP2, LOW);
delayMicroseconds(2000);
}
delay(1000);
digitalWrite(DIR1, LOW);
digitalWrite(DIR2, HIGH);
Serial.println("Spinning Anti-Clockwise...");
for(int i = 0; i<steps_per_rev; i++)
{
digitalWrite(STEP1, HIGH);
digitalWrite(STEP2, HIGH);
delayMicroseconds(1000);
digitalWrite(STEP1, LOW);
digitalWrite(STEP2, LOW);
delayMicroseconds(1000);
}
delay(1000);
}
A continuación adjunto un vídeo:
Pero tras unas pruebas hemos dado que este motor no tiene la suficiente potencia como para mantener una velocidad medianamente alta con su relativo peso.
En estas semanas estaremos probando otros motores alternativos y ahora conociendo su funcionamiento.
Deja una respuesta