enlace a " http://arduino.cc/es/Tutorial/StepperBipolar" que publica esta nota , ver mas allí
Motor paso a paso Bipolar
En esta página se muestran dos ejemplos de como controlar un motor paso a paso bipolar. Estos motores se pueden encontrar en unidades de diskette y son fáciles de controlar. El que nosotros usaremos es uno con 5 cables de los cuales uno es alimentación y los otros cuatros son usados para controlar el motor enviando señales síncronas.
El primer ejemplo corresponde a el código básico para hacer que el motor gire en una dirección. Está orientado para aquellos que no poseen conocimientos sobre el control de motores paso a paso. El segundo ejemplo posee un código un poco más complejo que permite hacer girar el motor con diferentes velocidades, en ambas direcciones y siendo controlado mediante un potenciómetro.
En la placa de prototipado se ha añadido un potenciómetro de 10K que conectamos a una entrada analógica, y un integrado ULN2003A. Este integrado posee varios transistores en un mismo encapsulado. Permite la conexión de dispositivos y componentes que necesitan mucha más corriente de lo que nuestra placa Arduino puede ofrecer.
Foto de una protoboard con el chip ULN2003A y un potenciómetro
Ejemplo 1: Ejemplo simple
/* Paso a paso Copal
* -------------
*
* Programa para controlar un motor paso a paso que proviene de una disquetera de 5,25.
* de acuerdo con la documentación que he encontrado, este motor paso a paso: "[...]
* hecho por Copal Electronics, con 1.8 grados por paso y 96 ohmios
* por devanado, con el punto central de los devanados conectados a uno de los terminales exteriores [...]"
* [http://www.cs.uiowa.edu/~jones/step/example.html]
*
* Es un motor bipolar con 5 terminales:
*
* - rojo: conector de alimentación, lo he conectado a 5V y funciona bien.
* - naranja y negro: bobina 1
* - marrón y amarillo: bobina 2
*
* (cleft) 2005 DojoDave para K3
* http://www.0j0.org | http://arduino.berlios.de
*
* @autor: David Cuartielles
* @fecha: 20 Oct. 2005
*/
int motorPin1 = 8;
int motorPin2 = 9;
int motorPin3 = 10;
int motorPin4 = 11;
int delayTime = 500;
void setup() {
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
}
void loop() {
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
}
Ejemplo 2: Paso a paso Bipolar ejemplo Avanzado
/* Paso a paso Bipolar Avanzado
* ------------------------
*
* Programa para controlar un motor paso a paso que pertenecía a una disquetera de 5,25
* de acuerdo con la documentación encontrada este motor paso a paso"[...]
* hecho por Copal Electronics, con 1.8 grados por paso y 96 ohmios
* por devanado,con el punto central de los devanados conectados a uno de los terminales exteriores [...]"
* [http://www.cs.uiowa.edu/~jones/step/example.html]
*
* Este es un motor bipolar con 5 terminales:
*
* - rojo: alimentación, lo he conectado a 5V y funciona bien
* - naranja y negro: bobina 1
* - marrón y amarillo: bobina 2
*
* (cleft) 2005 DojoDave para K3
* http://www.0j0.org | http://arduino.berlios.de
*
* @author: David Cuartielles
* @date: 20 Oct. 2005
*/
int motorPins[] = {8, 9, 10, 11};
int count = 0;
int count2 = 0;
int delayTime = 500;
int val = 0;
void setup() {
pinMode(ledPin, OUTPUT);
for (count = 0; count < 4; count++) {
pinMode(motorPins[count], OUTPUT);
}
}
void moveForward() {
if ((count2 == 0) || (count2 == 1)) {
count2 = 16;
}
count2>>=1;
for (count = 3; count >= 0; count--) {
digitalWrite(motorPins[count], count2>>count&0x01);
}
delay(delayTime);
}
void moveBackward() {
if ((count2 == 0) || (count2 == 1)) {
count2 = 16;
}
count2>>=1;
for (count = 3; count >= 0; count--) {
digitalWrite(motorPins[3 - count], count2>>count&0x01);
}
delay(delayTime);
}
void loop() {
val = analogRead(0);
if (val > 540) {
// move faster the higher the value from the potentiometer
delayTime = 2048 - 1024 * val / 512 + 1;
moveForward();
} else if (val < 480) {
// move faster the lower the value from the potentiometer
delayTime = 1024 * val / 512 + 1;
moveBackward();
} else {
delayTime = 1024;
}
}
Referencias
Para poder realizar estos ejemplos, hemos leído mucha documentación. Los siguientes enlaces podría ser útil visitarlos para entender la teoría en la que se basan los motores paso a paso.
- información acerca del motor que hemos usado - aquí
- explicación básica sobre motores paso a paso - aquí
- buen PDF con información básica - aquí
---------------------------------------------------------------------
Y ahora podés ver este video publicado por YOUTUBE
el enlace está aqui abajo
el enlace está aqui abajo

No hay comentarios:
Publicar un comentario