El manejo de motores paso a paso unipolares es bastante sencillo, sin embargo para mi que no ando metido mucho con el hardware, me costo un poco de trabajo entender esto. Como explique en un post anterior, solo hay q darle 4 pasos, y si se quiere invertir el giro, solo se tiene que invertir el orden de los pasos.

Los motores pap bipolares poseen 4 terminales y cada uno de ellos va conectado a una salida del C.I. L293B, como mostraré en la siguiente imagen que la copié de x-robotics, la única diferencia para el EM-257 es que el terminal B, va al OUT3 y el terminal C al OUT2:

Estos motores los voy a controlar mediante el puerto paralelo, el cual controla que salidas deben activarse para que el motor gire de forma horaria y anti-horaria, según se requieran. Como se menciono anteriormente un motor paso a paso posee ciertas combinaciones o pasos que determinaran el movimiento del motor, en nuestro caso, al usarse un motor paso a paso bipolar de 4 terminales, éste posee 4 pasos, los cuales se describirán a continuación:

PASO

TERMINALES

D

C

B

A

1

-V

+V

-V

+V

2

+V

-V

-V

+V

3

+V

-V

+V

-V

4

-V

+V

+V

-V

Los símbolos +V y –V, representan el voltaje de alimentación del motor y no el voltaje lógico del circuito integrado. Por ejemplo, al usar el motor EM-257, el +V = 18 V y el –V= 0 V.

El terminal A corresponde al LSB y el D al del MSB, por lo que los pasos quedarían representados de la siguiente manera:

PASO

TERMINALES

Factores de Ponderación

8

4

2

1

D

C

B

A

Valor decimal

1

0

1

0

1

5

2

1

0

0

1

9

3

1

0

1

0

10

4

0

1

1

0

6

El terminal A correspondería al pin 2 del puerto paralelo, el terminal B al pin 3, el C al pin 4, y el D al pin 5, los cuales corresponden al registro de datos del puerto paralelo.

Cada inversión en la polaridad provoca el movimiento del eje, avanzando este un paso, la dirección de giro se corresponde con la dirección de la secuencia de pasos, por ejemplo para avanzar el sentido horario la secuencia seria 1-2-3-4,1-2-3-4…. y para sentido anti-horario seria; 4-3-2-1,-4-3-2-1…

Ahora para hacerlo funcionar, yo lo hice mediante un programa en java, solo para que me facilite el manejar el motor con las teclas direccionales. El programa es simple, para cada paso le corresponde un “delay”, que en este caso lo hago usando el método sleep() de la clase Thread y nada más. Bueno para hacer que java acceda al puerto paralelo use el JNI y tuve que crear una dll con openwatcom c++, el cual pueden bajar gratis de la red.

A continuación pondré un link de donde podrán bajarse el código para manejar un motor pap bipolar. Estan los fuentes del código en C++ y del código en java, si quieren usarlo van a tener que volver a compilar el código en C++ e incluir los .h del jdk ya que sino les marcara una excepción de java, para esto subiré también unos .bat con el comando a ejecutar (ejecutar primero jni1.bat y luego jni2.bat), si les sale error solo hay que cambiar la dirección del jdk.

Bajar código AQUI.

En resumen tienen que hacer lo siguiente:

1. Compilar Puerto.java

2. Compilar ManejadorMotorPAP.java

3. Ejecutar jni1.bat

4. Ejecutar jn2.bat

5. Ejecutar ManejadorMotorPAP

Al programa le faltan muchas cosas, los pasos del motor están en un arreglo, si quieren cambiarle el sentido de giro del motor, solo inviertan el orden del arreglo. El programa así como esta, solo hará girar al motor mientras se mantenga presionada la tecla direccional derecha, cuando se suelte, este se detendrá.

Cualquier pregunta póngala de comentario aquí abajito =P.

P.D. Los diodos que usé son 1N4007.