En este proyecto abordaré el tema de los motores paso paso y su control desde arduino. En un paso final gobernaré dicho motor desde XBEE y LABVIEW con un panel frontal muy chulo.
El Motor paso a paso que voy a cotrolar es bipolar y consta de 4 hilos. Cada par de ellos gobierna una bobina. En la foto vemos dicho motor:
Especificationes:
- Tamaño: 35x36 mm (sin contar el eje)
- Peso: 180 gramos
- Diámetro del eje: 5 mm
- Corriente: 1000 mA por fase
- Voltaje: 2.7 V
- Longitud del eje: 15 mm (diámetro: 4mm)
- Resistencia: 2.7 Ohm por bobinado
- Torque: 1400 g-cm (2.5 oz-in)
- Pasos por vuelta: 200
En esta estupenda página disponemos de un tutorial my clarito que explica la teoría de dichos motores:
Nosotros en canbiio vamos a controlar el motor mediante una librería muy sencilla disponible para arduino y para la tarjeta de control de dicho motor llamada: Arduino Motor Shield Rev3.
Esta shield tiene dos canales separados, denominados A y B, que cada usa 4 de los pines de Arduino para conducir y sensar el motor. En total hay 8 pines en su uso . Se puede utilizar cada canal por separado para conducir dos motores DC o combinarlos para conducir un motor paso a paso. Las Cables de la figura deben conectarse bien a la placa según el par de bobinas o según los colores que se indican. Bobina 1 (cables azul y rojo).Bobina 2 (Cables negro y azul).Mirar las caracterisiticas de tu motor si los colores son diferentes.
Los Pins de la shield, dividido por el canal se muestran en la siguiente tabla:
Function | pins per Ch. A | pins per Ch. B |
Direction | D12 | D13 |
PWM | D3 | D11 |
Brake | D9 | D8 |
Current Sensing | A0 | A1 |
Además tiene dos pines de alimentación exterior para el motor a los cuales conectaremos una pila de 9 Voltios. Los Pines de "Brake" y "Current Sensing" nos los utilizaremos.
Si no hacemos uso de la librería el programa bajo Arduino que haría girar el motor en un sólo sentido con la secuencia apropiada aplicada a las dos bobinas sería el siguiente:
// Programa simple de giro continuo del motor bipolar (sólo para pruebas)
int motorPin1 = 13; // pines del Motor
int motorPin2 = 12;
int motorPin3 = 3;
int motorPin4 = 11;
int delayTime = 100; // Delay que determina la velocidad de giro
void setup() {
pinMode(motorPin1, OUTPUT); // Configuración de los PINes como salida digital
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
}
void loop() {
digitalWrite(motorPin1, HIGH); // Los pines se activan en secuencia
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
int motorPin1 = 13; // pines del Motor
int motorPin2 = 12;
int motorPin3 = 3;
int motorPin4 = 11;
int delayTime = 100; // Delay que determina la velocidad de giro
void setup() {
pinMode(motorPin1, OUTPUT); // Configuración de los PINes como salida digital
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
}
void loop() {
digitalWrite(motorPin1, HIGH); // Los pines se activan en secuencia
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, HIGH);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
}
}
Este programa lo podriamos probar para las pruebas del funcionamiento del motor porque,en realidad, vamos a utilizar,como se dijo antes, una librería muy simple.
El video de muestra el funcionamiento del motor:
como prendo pines + y - del cuadro a o b al mismo tiempo?????
ResponderEliminar