Hola, en el mensaje privado que me envió no me había dicho que es un motor a pasos, imaginé que era uno de directa.
Con un bipolar va a ocupar unas cuantas cosas más de material, y el relay no le va a servir.
En este link
http://www.todorobot.com.ar/información/tutorial stepper/stepper-tutorial.htm
Explican como hacerlo.
Bipolar: Estos tiene generalmente cuatro cables de salida (ver figura 1). Necesitan ciertos trucos para ser controlados, debido a que requieren del cambio de dirección del flujo de corriente a través de las bobinas en la secuencia apropiada para realizar un movimiento. En figura 3 podemos apreciar un ejemplo de control de estos motores mediante el uso de un puente en H (H-Bridge). Como se aprecia, será necesario un H-Bridge por cada bobina del motor, es decir que para controlar un motor Paso a Paso de 4 cables (dos bobinas), necesitaremos usar dos H-Bridges iguales al de la figura 3 . El circuito de la figura 3 es a modo ilustrativo y no corresponde con exactitud a un H-Bridge. En general es recomendable el uso de H-Bridge integrados como son los casos del L293 (ver figura 3 bis).
Existen tres secuencias posibles para este tipo de motores, las cuales se detallan a continuación. Todas las secuencias comienzan nuevamente por el paso 1 una vez alcanzado el paso final (4 u 8). Para revertir el sentido de giro, simplemente se deben ejecutar las secuencias en modo inverso.
Secuencia Normal: Esta es la secuencia más usada y la que generalmente recomienda el fabricante. Con esta secuencia el motor avanza un paso por vez y debido a que siempre hay al menos dos bobinas activadas, se obtiene un alto torque de paso y de retención.
I. 1100
II. 0110
III. 0011
IV. 1001
En esa misma página explican como identificar los cables.
La secuencia más simple es:
CICLO sentido1
{
0001
0010
0100
1000
}
CICLO SENTIDO 2
{
1000
0100
0010
0001
}
en código para C sería
Código:
if(sentido==0)
{
if(bit==16)
bit=1;
outportb(para,bit);
delay(velocidad);
bit=bit*2;
}
else
{
if(bit==16)
bit=8;
if(bit==1/2)
bit=8;
outportb(para,bit);
delay(velocidad);
bit=bit/2;
}
Lo más complicado de su trabajo es el circuito y no tanto la programación.
Adjunto le dejo uno que yo hice para controlar un motor, puede variar la velocidad, sentido de giro y arranque y paro.
Saludos