Introducción:
Los motores de dc tradicionales,
presentan un funcionamiento muy sencillo, ya que al energirzarlos comienzan a
girar y al cambiar la polaridad de sus 2 terminales, se cambia el sentido de
giro. Sin embargo, para controlar la posición, el numero de giros y la
velocidad no es posible con este tipo de motores. Una alternativa para el
control de motores eléctricos, son los motores a pasos, una alternativa para el
control de velocidad, posición y giro.
Paso 1:
En la presente práctica, se
controlará un motor a pasos empleando los siguientes componentes:
-
Tarjeta Arduino Uno
- Motor a pasos bipolar
- Drive para motores L293
-
Fuente de alimentación
externa (4 baterías AA)
El siguiente diagrama muestra la
conexión de la tarjeta Arduino con el drive L293. Para el motor a pasos, se
colocaron 4 LEDs, éstos 4 componentes corresponden a las 4 terminales del motor
a pasos bipolar.
Diagrama de conexión de la tarjeta Arduino y el motor a pasos |
Paso 2:
La siguiente tabla muestra la
secuencia de las 4 terminales del Arduino al drive del motor. Esta secuencia
permite el giro del motor antihorario.
Terminal
|
||||
A
|
B
|
C
|
D
|
|
Paso
1
|
1
|
0
|
1
|
0
|
Paso
2
|
1
|
0
|
0
|
1
|
Paso
3
|
0
|
1
|
0
|
1
|
Paso
4
|
0
|
1
|
1
|
0
|
El código de colores para el motor
bipolar es:
Cable azul => Terminal A
Cable rojo => Terminal B
Cable blanco => Terminal C
Cable naranja => Terminal D
Los pines para la activación de las
señales son del 10 al 13. A continuación se muestra el programa, el cual activa
diferentes velocidades para el giro del motor. A continuación el programa.
/****** Motor a Pasos ***** // * Escrito: AMS * */ int Informacion_Serial; int Terminal_A=10; int Terminal_B=11; int Terminal_C=12; int Terminal_D=13; void setup() { pinMode(Terminal_A, OUTPUT); pinMode(Terminal_B, OUTPUT); pinMode(Terminal_C, OUTPUT); pinMode(Terminal_D, OUTPUT); Serial.begin(9600); Serial.print("0==> Parar, 1==> Lento, 2==> Medio"); Serial.println("3==> Rapido, 4==> Muy rapido"); } // void loop() { while(true) { if(Serial.available()>0) { Informacion_Serial=Serial.read(); if (Informacion_Serial=='0') { Serial.println("Paro"); digitalWrite(Terminal_A,0); digitalWrite(Terminal_B,0); digitalWrite(Terminal_C,0); digitalWrite(Terminal_D,0); } else if (Informacion_Serial=='1') { Serial.println("Lento"); for(int vuelta = 0; vuelta <12; vuelta++) { digitalWrite(Terminal_A,1); digitalWrite(Terminal_B,0); digitalWrite(Terminal_C,1); digitalWrite(Terminal_D,0); delay(500); digitalWrite(Terminal_A,1); digitalWrite(Terminal_B,0); digitalWrite(Terminal_C,0); digitalWrite(Terminal_D,1); delay(500); digitalWrite(Terminal_A,0); digitalWrite(Terminal_B,1); digitalWrite(Terminal_C,0); digitalWrite(Terminal_D,1); delay(500); digitalWrite(Terminal_A,0); digitalWrite(Terminal_B,1); digitalWrite(Terminal_C,1); digitalWrite(Terminal_D,0); delay(500); } } else if (Informacion_Serial=='2') { Serial.println("Medio"); for(int vuelta = 0; vuelta <12; vuelta++) { digitalWrite(Terminal_A,1); digitalWrite(Terminal_B,0); digitalWrite(Terminal_C,1); digitalWrite(Terminal_D,0); delay(100); digitalWrite(Terminal_A,1); digitalWrite(Terminal_B,0); digitalWrite(Terminal_C,0); digitalWrite(Terminal_D,1); delay(100); digitalWrite(Terminal_A,0); digitalWrite(Terminal_B,1); digitalWrite(Terminal_C,0); digitalWrite(Terminal_D,1); delay(100); digitalWrite(Terminal_A,0); digitalWrite(Terminal_B,1); digitalWrite(Terminal_C,1); digitalWrite(Terminal_D,0); delay(100); } } else if (Informacion_Serial=='3') { Serial.println("Rapido"); for(int vuelta = 0; vuelta <12; vuelta++) { digitalWrite(Terminal_A,1); digitalWrite(Terminal_B,0); digitalWrite(Terminal_C,1); digitalWrite(Terminal_D,0); delay(20); digitalWrite(Terminal_A,1); digitalWrite(Terminal_B,0); digitalWrite(Terminal_C,0); digitalWrite(Terminal_D,1); delay(20); digitalWrite(Terminal_A,0); digitalWrite(Terminal_B,1); digitalWrite(Terminal_C,0); digitalWrite(Terminal_D,1); delay(20); digitalWrite(Terminal_A,0); digitalWrite(Terminal_B,1); digitalWrite(Terminal_C,1); digitalWrite(Terminal_D,0); delay(20); } } else if (Informacion_Serial=='4') { Serial.println("Muy Rapido"); for(int vuelta = 0; vuelta <12; vuelta++) { digitalWrite(Terminal_A,1); digitalWrite(Terminal_B,0); digitalWrite(Terminal_C,1); digitalWrite(Terminal_D,0); delay(8); digitalWrite(Terminal_A,1); digitalWrite(Terminal_B,0); digitalWrite(Terminal_C,0); digitalWrite(Terminal_D,1); delay(8); digitalWrite(Terminal_A,0); digitalWrite(Terminal_B,1); digitalWrite(Terminal_C,0); digitalWrite(Terminal_D,1); delay(8); digitalWrite(Terminal_A,0); digitalWrite(Terminal_B,1); digitalWrite(Terminal_C,1); digitalWrite(Terminal_D,0); delay(8); } } } } }
Paso 3:
La siguiente imagen nuestra el
circuito terminado. La transmisión de datos se realiza a través del puerto
serial para dar los comandos al motor.
Paso 4:
Ahora se realiza la prueba del
circuito en el video. La siguiente imagen muestra la comunicación a través del
puerto serial.
No hay comentarios.:
Publicar un comentario