viernes, 14 de diciembre de 2007

CONTROL DE MOTOR PASO A PASO



CONTROL DE UN MOTOR PASO A PASO

MEDIANTE LA PC


En este laboratorio se pidió implementar un circuito para controlar un motor paso a paso mediante el puerto paralelo de la PC.

Se nos fue entregado un circuito como guía, pero este circuito tenía dos inconvenientes:

- El circuito estaba elaborado para controlar un motor paso a paso bipolar (cuatro terminales) con un controlador L297 y pero no para controlar un motor unipolar.
- Para variar la velocidad del motor, se variaba manualmente (mediante un potenciómetro) la frecuencia de un Reloj elaborado con un temporizador 555, y lo que queremos es que el motor se controle desde la PC.

Lo que se pudo aprovechar del circuito fue la Etapa de fuerza que empleaba un “Puente H” para controlar el motor: el L298. Este es un driver muy conveniente ya que puede soportar corrientes de hasta 4 Amperios y es difícil que se caliente ya que tiene un disipador de calor y se le coloca resistencias de protección.

Para solucionar los dos “obstáculos” mencionados anteriormente, pensamos que era necesario encontrar una forma de variar la frecuencia de manera digital y una manera de emplear el L297 para controlar un motor unipolar.

Cuando pensábamos como lograr eso, nos dimos cuenta de que podríamos reducir circuitería y asegurar el funcionamiento empleando un microcontrolador.

Podemos programar un microcontrolador para que se comporte como un L297 y que al mismo tiempo se pueda variar la velocidad mediante entradas digitales.

Usamos el mismo microcontrolador que nos ayudó en laboratorios anteriores: el PIC16F877A de Microchip.

Lo primero que necesitábamos era saber que secuencia de voltajes se le debía aplicar al motor paso a paso para que gire en un sentido (con el L297 no era necesario saberlo ya que generaba la secuencia automáticamente) y encontramos que había tres posibles secuencias:

Secuencia Normal (Paso completo)

Aquí el torque no es muy fuerte ya que se emplea sólo una bobina: ç

Secuencia tipo wave drive (Paso completo con mayor torque)

Aquí el torque es más fuerte ya que se emplean las dos bobinas


Secuencia Medio Paso

Esta secuencia es una mezcla de las dos anteriores, y dos pasos en esta secuencia equivalen a un paso de las secuencias anteriores (es decir que cada paso recorre la mitad del ángulo de los pasos de las secuencias anteriores).




Para invertir el sentido de giro del motor sólo debemos aplicar la secuencia en sentido inverso, es decir del paso 4 al paso 1( o del paso 8 al paso 1 ,dependiendo de con que secuencia trabajemos).
Ya tenemos la secuencia pero ahora debemos reconocer los terminales A, B, C y D en el motor paso a paso.
La técnica para identificar los terminales es bastante sencilla:

El motor paso a paso unipolar tiene 6 cables, le ponemos nombre a cada uno de ellos. Con el multímetro en modo ohmetro medimos resistencias por todos los cables y para mayor sorpresa solo se obtienen tres valores distintos y que se repiten varias veces...

. No marca nada
. 47 ohm
. 100 ohm

Analizando los resultados obtenidos:
100 Ohm es el mayor valor por lo tanto corresponde a los extremos de las bobinas, es decir A-B o bien C-D.
47 Ohm es aproximadamente la mitad de 100, por tanto esa debe ser la resistencia entre el terminal común y ambos extremos de una bobina, por ejemplo entre A-Com1 o B-Com1, o bien en la otra bobina, C-Com2 o D-Com2.
Lo que queda pendiente es cuando no marca nada: es porque en ese momento se midieron los cables de bobinas distintas.
Ahora suponte que unes los terminales Com1 y Com2, entonces nos quedamos con un motor de 5 cables.


Aquí la resistencia entre cualquier terminal y el común es la misma y aproximadamente la mitad de la resistencia entre los extremos de las bobinas.
Eso fue para identificar el cable común, luego vamos por los otros.
Como unimos los cables comunes de cada bobina los cuatro cables restantes serán A, B, C y D, luego, conectamos el terminal común al positivo de la fuente de alimentación, tomamos uno de los 4 cables que nos quedaron, lo bautizamos como A y lo mandamos a GND, el motor quedará enclavado en una sola posición, observamos atentamente y sostenemos otro de los tres que nos quedaron, prestamos mucha atención en esta oportunidad ya que cuando lo conectamos a GND el motor dará un primer paso.Aquí pueden ocurrir 3 cosas:

. Que el motor gire a derecha, lo bautizamos como B
. Que gire a izquierda, lo nombramos D
. Si no pasa nada es C

Si este último cable era B entonces lo desconectas y manteniendo A Conectado buscas D, es decir que gire a izquierda y bueno, C es el que quedó libre. Ahora sí ya estamos listos para comenzar.
Sabiendo la secuencia, el elaborar el programa en el Microcontrolador iba a ser relativamente sencillo. Sin embargo, nos preocupaba ahora un detalle: ¿Cómo se usa el puerto paralelo de la PC para enviar información hacia un dispositivo?

Ninguno de nosotros había empleado el puerto paralelo (en realidad ningún puerto) para manejar información a un dispositivo creado de forma casera (las impresoras traen un driver) por lo que debíamos investigar cómo manear el puerto.

Nos encontramos con la noticia que temíamos: debíamos manejar algún lenguaje de programación.

Encontramos varios ejemplos hechos en Internet(sobre todo en Visual Basic y Visual C++) de donde nos podíamos guiar pero demandaba mucho tiempo entender el lenguaje y, sobre todo, crear un entorno que sea atractivo y cómodo (botones, barras, etc).

Luego, nos enteramos que existía un programa mucho más fácil de entender y manejar, ya que la programación era mediante gráficos por lo que no había que aprender toda una nueva sintaxis: el LabView de National Instruments.

Lo revisamos y fue fácil entenderlo (al menos para esta aplicación en particular).

Antes de empezar la programación revisaremos algunas características del puerto paralelo.

Este puerto dispone de tres registros de 8 bits cada uno.

Cada uno de estos registros se denominan puertos o PORT., y cada uno de sus bits, representa un pin determinado del puerto. Los pines que van del 18 al 25 (ambos inclusive): Son para tierra, y sirven para conectar las descargas de los circuitos.Veamos ahora los tres registros.

Puerto de datos (Pin 2 al 9): Es el PORT 888 y es de solo escritura, por este registro enviaremos los datos al exterior de la PC, cuidado...!!!, no debemos enviar señales eléctricas al ordenador por estos pines.

Puerto de estado (Pin 15, 13, 12, 10 y 11): Es el PORT 889 y es de solo lectura, por aquí enviaremos señales eléctricas al ordenador, de este registro solo se utilizan los cinco bits de más peso, que son el bit 7, 6, 5, 4 y 3 teniendo en cuenta que el bit 7 funciona en modo invertido.

Puerto de control (Pin 1, 14, 16 y 17): Es el correspondiente al PORT 890, y es de lectura/escritura, es decir, podremos enviar o recibir señales eléctricas, según nuestras necesidades. De los 8 bits de este registro solo se utilizan los cuatro de menor peso o sea el 0, 1, 2 y 3, con un pequeño detalle, los bits 0, 1, y 3 están invertidos.En esta imagen se pueden ver los tres registros, sus bits y los pines asignados a cada uno de ellos. La imagen corresponde a un conector DB-25 (Hembra).


Algo más: La tensión de trabajo del puerto es de 5 V, lo cual nos favorece, ya que el Microcontrolador también trabaja a esa tensión.
Se recomienda emplear drivers para no exigirle mucha corriente al puerto, pero como el microcontrolador no exige mucha corriente eso no fue necesario.

Como lo que queremos es enviar información de la PC al circuito, emplearemos el PORT 888.

Ahora, como sólo se puede emplear 8 bits, la distribución que se hizo fue la siguiente:

1 bit de Marcha / Parada
1 bit de Medio Paso / Paso completo
1 bit de Horario / Antihorario
5 bits de Velocidad

Los tres primeros bits mencionados se manejaran mediante interruptores y los otros 5 mediante un dial, todos ellos creados en el entorno de LabView.

El dial nos entregará un número entero de 5 bits(lo que nos da un total de 32 velocidades) que serán leídos por el microcontrolador junto con los bits de los interruptores.

El entorno construido en LabView es el siguiente:


Su diagrama de bloques (programación) es el siguiente:


Omitiremos la programación del microcontrolador porque creemos que es profundizar demasiado y además porque corresponde a otro curso (Diseño digital).

A continuación se muestra el circuito que se implementó para este laboratorio:


Gráfico Esquemático:




































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































No hay comentarios: