Вы находитесь на странице: 1из 4

/* Motor paso a paso

* ---------------------------
*
* Programa para manejar un motor paso a paso unipolar extraido de
una
* unidad de disquette de 5'25. De acuerdo a la documentacin que
* he encontrado, este: "[...] motor paso a paso fabricado por
* Copal Electronics, con 1,8 grados por paso y 96 ohmios por cada
* vuelta (de la bobina), con una etapa central conectada a diferentes
* cables [...]"
* [http://www.cs.uiowa.edu/~jones/step/example.html]
*
* Es un motor paso a paso unipolar con cinco cables:
*
* El color de los cables puede ser diferente
* - rojo: conector de alimentacin, lo tengo a 5V y funciona bien
* - naranja y negro: bobina 1
* - marrn y amarillo: bobina 2
*
* (cleft) 2005 DojoDave for K3
* http://www.0j0.org | http://arduino.berlios.de
*
* @author: David Cuartielles
* @date: 20 Oct. 2005
*/

int motorPin1 = 8; // PIN-es del Motor


int motorPin2 = 9;
int motorPin3 = 10;
int motorPin4 = 11;
int delayTime = 500; // Delay que determina la velocidad de giro

void setup() {

pinMode(motorPin1, OUTPUT); // Configuracin de los PIN-es como


salida digital
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);

}
void loop() {

// Los pines se activan en secuencia


digitalWrite(motorPin1, HIGH); // Primer paso
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW); // Segundo paso
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW); // Tercer paso
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW); // Cuarto paso
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime);

2do programa

/* Stepper Unipolar Advanced


* -------------------------
*
* Program to drive a stepper motor coming from a 5'25 disk drive
* according to the documentation I found, this stepper: "[...]
*
* Se trata de un motor paso a paso unipolar con cinco cables:
* It is a unipolar stepper motor with 5 wires:
*
* Los colores de los cables puede variar
* - red: power connector, I have it at 5V and works fine
* - orange and black: coil 1
* - brown and yellow: coil 2
*
* (cleft) 2005 DojoDave for K3
* http://www.0j0.org | http://arduino.berlios.de
*
* @author: David Cuartielles
* @date: 20 Oct. 2005
*/

int motorPins[] = {8, 9, 10, 11}; // declara matriz pines


int count = 0;
int count2 = 0;
int delayTime = 500;
int val = 0;

void setup() {
pinMode(7, OUTPUT);
for (count = 0; count < 4; count++) { // declara matriz 4 pines de salida
pinMode(motorPins[count], OUTPUT);
}
}

void moveForward() { // giro de avance


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() { // giro de retroceso


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() {
digitalWrite(7, HIGH);
val = analogRead(0); // pin analogico 0, al pot.
if (val > 540) {
// se mueve ms rpido cuanto mayor sea el valor del potencimetro
delayTime = 2048 - 1024 * val / 512 + 1;
moveForward();
} else if (val < 480) {
// se mueve ms rpido cuanto menor sea el valor del potencimetro
delayTime = 1024 * val / 512 + 1;
moveBackward();
} else {
delayTime = 1024;
}
}

http://diymakers.es/mover-motores-paso-paso-con-arduino/

Вам также может понравиться