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