motor paso a paso
-
Upload
hector-noguez-cruz -
Category
Engineering
-
view
128 -
download
6
Transcript of motor paso a paso
Instituto Tecnológico de Querétaro
GRUPO Y SALÓN:
Grupo 0V, Salón G24
MATERIA:
Microcontroladores: Mecatrónica 2
Número de Equipo:
Equipo 4
CONTENIDO:
Practica: motor a pasos
INTEGRANTES:
Martín Enrique Valdivia Mejía
José Francisco Álvarez Melgar
Héctor Cruz Noguez
Introducción
Los motores paso a paso son ideales para la construcción de mecanismos en donde se requieren movimientos muy precisos, por ejemplo, posicionamiento de piezas, impresoras, escanner, etc.
La característica principal de estos motores es el hecho de poder moverlos un paso a la vez por cada pulso que se le aplique (puede usarse un controlador digital ó un tren de pulsos para controlarlo). Este paso puede variar desde 90° hasta pequeños movimientos de tan solo 1.8°.
Otro dato importante es que la velocidad es proporcional a la frecuencia de los pulsos y la posición es proporcional a la secuencia de los pulsos.
En los motores a pasos se sacrifica la velocidad, por un mejor control de posición
Marco Teórico
El principio con el que funcionan estos motores es en base a la energización, energización inversa ó desenergización de sus bobinas, para producir un cierto movimiento del eje.
Este tipo de motores están divididos en motores de imán permanente y de reluctancia variable, para la aplicación a realizar se ocupa el motor de imán permanente por lo que hablaremos más de éste.
El motor de imán permanente a su vez se divide en motores unipolares y bipolares (en éste caso analizaremos los bipolares puesto que es el que se usará en la práctica):
Bipolares: 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. Como se aprecia, será necesario un puente H por cada bobina del motor, es decir que para controlar un motor Paso a Paso de 4 cables (dos bobinas), necesitaremos usar dos puentes H iguales al de la figura 3. El circuito de la figura 3 es a modo ilustrativo y no corresponde con exactitud a un Puente
H. En general es recomendable el uso de puentes H integrados como son los casos del L293 (ver figura 3 bises).
Unipolar: Estos motores suelen tener 6 o 5 cables de salida, dependiendo de su conexionado interno (ver figura 2). Este tipo se caracteriza por ser más simple de controlar.
Secuencias para manejar motores paso a paso Bipolares
Como se dijo anteriormente, estos motores necesitan la inversión de la corriente que circula en sus bobinas en una secuencia determinada. Cada inversión de la polaridad provoca el movimiento del eje en un paso, cuyo sentido de giro está determinado por la secuencia seguida.
A continuación se puede ver la tabla con la secuencia necesaria para controlar motores paso a paso del tipo Bipolares:
PASO TERMINALESA B C D
1 +V -V +V -V2 +V -V -V +V3 -V +V -V +V4 -V +V +V -V
Fabricantes: B&R, TECO, OMEGA, NEMA, shinano Kenshi, MITSUMI.
Protocolo RS232
La comunicación serial es un protocolo muy común para comunicación entre dispositivos que se incluye de manera estándar en prácticamente cualquier computadora. La mayoría de las computadoras incluyen dos puertos seriales RS-232. La comunicación serial es también un protocolo común utilizado por varios dispositivos para instrumentación; existen varios dispositivos compatibles con GPIB que incluyen un puerto RS-232. Además, la comunicación serial puede ser utilizada para adquisición de datos si se usa en conjunto con un dispositivo remoto de muestreo.
El concepto de comunicación serial es sencillo. El puerto serial envía y recibe bytes de información un bit a la vez. Aun y cuando esto es más lento que la comunicación en paralelo, que permite la transmisión de un byte completo por vez, este método de comunicación es más sencillo y puede alcanzar mayores distancias.
Típicamente, la comunicación serial se utiliza para transmitir datos en formato ASCII. Para realizar la comunicación se utilizan 3 líneas de transmisión: (1) Tierra (o referencia), (2) Transmitir, (3) Recibir. Debido a que la transmisión es asincrónica, es posible enviar datos por un línea mientras se reciben datos por otra. Existen otras líneas disponibles para realizarhandshaking, o intercambio de pulsos de sincronización, pero no son requeridas. Las características más importantes de la comunicación serial son la velocidad de transmisión, los bits de datos, los bits de parada, y la paridad. Para que dos puertos se puedan comunicar, es necesario que las características sean iguales.
Velocidad de transmisión (baud rate): Indica el número de bits por segundo que se transfieren, y se mide en baudios (bauds). Por ejemplo, 300 baudios representa 300 bits por segundo. Cuando se hace referencia a los ciclos de reloj se está hablando de la velocidad de transmisión. Por ejemplo, si el protocolo hace una llamada a 4800 ciclos de reloj, entonces el reloj está corriendo a 4800 Hz, lo que significa que el puerto serial está muestreando las líneas de transmisión a 4800 Hz. Es posible tener velocidades más altas, pero se reduciría la distancia máxima posible entre los dispositivos. Las altas velocidades se utilizan cuando los dispositivos se encuentran uno junto al otro, como es el caso de dispositivos GPIB.
Bits de datos: Se refiere a la cantidad de bits en la transmisión. Cuando la computadora envía un paquete de información, el tamaño de ese paquete no necesariamente será de 8 bits. Las cantidades más comunes de bits por paquete son 5, 7 y 8 bits. El número de bits que se envía depende en el tipo de información que se transfiere.
Bits de parada: Usado para indicar el fin de la comunicación de un solo paquete. Los valores típicos son 1, 1.5 o 2 bits. Debido a la manera como se transfiere la información a través de las líneas de comunicación y que cada dispositivo tiene su propio reloj, es posible que los dos dispositivos no estén sincronizados. Por lo tanto, los bits de parada no sólo indican el fin de la transmisión sino además dan un margen de tolerancia para esa diferencia de los relojes. Mientras más bits de parada se usen, mayor será la tolerancia a la sincronía de los relojes, sin embargo la transmisión será más lenta.
Paridad: Es una forma sencilla de verificar si hay errores en la transmisión serial. Existen cuatro tipos de paridad: par, impar, marcada y espaciada. La opción de no usar paridad alguna también está disponible. Para paridad par e impar, el puerto serial fijará el bit de paridad (el último bit después de los bits de datos) a un valor para asegurarse que la transmisión tenga un número par o impar de bits en estado alto lógico. Esto permite al dispositivo receptor conocer de antemano el estado de un bit, lo que serviría para determinar si hay ruido que esté afectando de manera negativa la transmisión de los datos, o si los relojes de los dispositivos no están sincronizados.
Es utilizado para una gran variedad de propósitos, como conectar un ratón, impresora o modem, así como instrumentación industrial. Gracias a las mejoras que se han ido desarrollando en las líneas de transmisión y en los cables, existen aplicaciones en las que se aumenta el desempeño de RS-232 en lo que respecta a la distancia y velocidad del estándar. RS-232 está limitado a comunicaciones de punto a punto entre los dispositivos y el puerto serial de la computadora. El hardware de RS-232 se puede utilizar para comunicaciones seriales en distancias de hasta 50 pies.
Este protocolo se está sustituyendo por el protocolo Universal Serial Bus (USB).
Hyperterminal
Un hyperterminal, es un programa que permite conectar dispositivos informáticos o computadoras, sitios telnet de internet, servicios en línea, entre otros, por medio de un modem para ello no necesita usar comandos de línea y es un medio útil para configurar conexiones con otros sitios de internet.
Sirve para enviar cualquier tipo de información o archivos pesados ya sean documentos, imágenes, videos, entre otros, a través del puerto serie. Una de sus ventajas es que no necesita un equipo especial adicional para enviar información, solo necesita tener un una conexión para modem, además funciona con mucha velocidad y envía la información en formato electrónico de forma directa.
El hyper terminal trabaja por puerto serial, (red punto a punto).Las características del hyperterminal son grabar mensajes bidireccionales por servicios o equipos situados al otro extremo de la conexión, transferir archivos grandes o pesados de un equipo a otro a través del puerto serie y ayuda a depurar el código fuente desde un terminal remoto.Proyecto
El problema a solucionar con el microcontrolador es:
Controlar la secuencia de giro del motor para que se mueva 90, 270, 180 y 360, grados tanto a la izquierda como a la derecha.
Que cada que realice un giro regrese a su posición original. Generar un menú en la hipertermynal, para elegir el tipo de giro y mandar la instrucción
de giro desde la computadora.
TX
USB
Rx
Laptop
En la laptop se desplego un menú de opciones, para que el usuario pueda escoger el tipo de giro y la dirección
USB/rs232 (DB9)
laptop Usb/rs232 (DB9)
micro Motor a pasos
Esta etapa la sustituimos por un convertidor USB-TTL, para esta práctica en específico utilizamos el convertidor USB-TTL-232R
El TTL-232R-PCB es un convertidor USB a TTL serial UART, el cual incorpora FTDI´s FT232RQ USB a una interfaz IC serial UART, el cual este dispositivo puede manejar todos los protocolos de la señal USB. Este convertidor incorpora una rápida y simple forma de conectar dispositivos con un nivel TTL con una interfaz serial a USB. Cabe mencionar que los niveles de voltaje que puede manejar este convertidor son de +5V o +3.3V.
Micro
En esta etapa se crearon dos tablas de datos para ejecutar la secuencia de giro, una para giro a la derecha y otra para giro a la izquierda. Se diseñó un menú que será impreso después de cada acción ejecutada. Se crearon ocho casos para los distintos grados de movimiento.
Motor a pasos
Se determinó el grado de giro para calcular el número de secuencias para mover el motor a la posición deseada.
PROGRAMA
#include <16f887.h>
#FUSES PUT,NOWDT,NOLVP,NOBROWNOUT,NOPROTECT,INTRC_IO
#USE DELAY(CLOCK=8000000)
#USE RS232(BAUD=9600, PARITY=N, BITS=8, XMIT=PIN_C6, RCV=PIN_C7)
#USE FAST_IO(C)
#USE FAST_IO(B)
#BYTE MOTOR=0X06
CHAR TECLO;
INT N;
BYTE CONST TAB[4]={1 2 4 8}; //tabla para girar a la derecha
BYTE CONST TAB2[4]={4 2 1 8}; //tabla para girar a la izquierda
//INICIALIZAR
INICIALIZAR(){
SET_TRIS_B(0);
SET_TRIS_C(0b10000000);
MOTOR=0;
TECLO=0;
}
//PROGRAMA
DERECHA(){
INT I;
FOR(I=0;I<N;I++){
INT J;
FOR(J=0;J<4;J++){
MOTOR=TAB[J];
DELAY_MS(500);
}
}
}
IZQUIERDA(){
INT I;
FOR(I=0;I<N;I++){
INT J;
FOR(J=0;J<4;J++){
MOTOR=TAB2[J];
DELAY_MS(500);
}
}
}
//PRINCIPAL
MAIN(){
INICIO:
INICIALIZAR();
PUTS("MENU\n\r\n\r DERECHA\n\r U=90°\n\r I=180°\n\r O=270°\n\r P=360°\n\r");
PUTS(" IZQUIERDA\n\r Q=90°\n\r W=180°\n\r E=270°\n\r R=360°\n\r");
WHILE(TRUE){
IF(KBHIT()){
TECLO=GETC();
SWITCH (TECLO){
//DERECHA
CASE 0X75:
{PRINTF("MOTOR AVANZA 90° DERECHA\n\r");
N=3;
DERECHA();
PRINTF("STOP\n\r");
DELAY_MS(3000);
PRINTF("RETURNING\n\r");
IZQUIERDA();
GOTO INICIO;}
BREAK;
CASE 0X69:
{PRINTF("MOTOR AVANZA 180° DERECHA\n\r");
N=6;
DERECHA();
PRINTF("STOP\n\r");
DELAY_MS(3000);
PRINTF("RETURNING\n\r");
IZQUIERDA();
GOTO INICIO;}
BREAK;
CASE 0X6F:
{PRINTF("MOTOR AVANZA 270° DERECHA\n\r");
N=9;
DERECHA();
PRINTF("STOP\n\r");
DELAY_MS(3000);
PRINTF("RETURNING\n\r");
IZQUIERDA();
GOTO INICIO;}
BREAK;
CASE 0X70:
{PRINTF("MOTOR AVANZA 360° DERECHA\n\r");
N=12;
DERECHA();
PRINTF("STOP\n\r");
DELAY_MS(3000);
PRINTF("RETURNING\n\r");
IZQUIERDA();
GOTO INICIO;}
BREAK;
//IZQUIERDA
CASE 0X71:
{PRINTF("MOTOR AVANZA 90° IZQUIERDA\n\r");
N=3;
IZQUIERDA();
PRINTF("STOP\n\r");
DELAY_MS(3000);
PRINTF("RETURNING\n\r");
DERECHA();
GOTO INICIO;}
BREAK;
CASE 0X77:
{PRINTF("MOTOR AVANZA 180° IZQUIERDA\n\r");
N=6;
IZQUIERDA();
PRINTF("STOP\n\r");
DELAY_MS(3000);
PRINTF("RETURNING\n\r");
DERECHA();
GOTO INICIO;}
BREAK;
CASE 0X65:
{PRINTF("MOTOR AVANZA 270° IZQUIERDA\n\r");
N=9;
IZQUIERDA();
PRINTF("STOP\n\r");
DELAY_MS(3000);
PRINTF("RETURNING\n\r");
DERECHA();
GOTO INICIO;}
BREAK;
CASE 0X72:
{
PRINTF("MOTOR AVANZA 360° IZQUIERDA\n\r");
N=12;
IZQUIERDA();
PRINTF("STOP\n\r");
DELAY_MS(3000);
PRINTF("RETURNING\n\r");
DERECHA();
GOTO INICIO;}
BREAK;
DEFAULT:
{PRINTF("ERROR DE TECLA\n\r");}
}
}
}
}
Diagrama de conexión
Observaciones
Se tuvo que rectificar los datos que nos dio el fabricante acerca de los pasos que daba el motor.
Tuvimos problemas para usar una solo tabla que nos controlara los dos giros, pues una de las funciones no se ejecutaban completas, así que hicimos dos tablas.
Bibliografía
http://perso.wanadoo.es/pictob/comserie.htm
http://galia.fc.uaslp.mx/~cantocar/microcontroladores/SLIDES_8051_PDF/21_MOTOR.PDF
http://www.slideshare.net/Nancysc/hyperterminal-5716653