Control de Distancia Sistemas Digitales Contreras M. Gonzalez M. Proyecto: Control de Distancia Materia: Sistemas Digitales Profesor: Juarez José Alumnos: Contreras Mariano, Gonzalez Mariano Año: 2007 -1- Control de Distancia Sistemas Digitales Contreras M. Gonzalez M. INDICE 1. Objetivo 2. Desarrollo 2.1Desarrollo General 2.2 Hardware 2.2.1_ Descripción breve de los componente mas importantes de la placa 2.2.2_ Descripción del funcionamiento de la placa interfase a motor pap 2.3 Conexionado General 2.4_Diagrama temporal del programa principal del microcontrolador 2.5_Detalles del programa principal 2.6 Dificultades 2.7_Software de adquisición de datos hecho en entorno de C++ 3. Conclusiones 4. Apendice -2- Control de Distancia Sistemas Digitales Contreras M. Gonzalez M. 1.0 Objetivo El objetivo de este proyecto es realizar un control de distancia entre dos objetos a lazo cerrado. La idea surgió del conocimiento de la existencia de este tipo de lazo en autos de última generación. Investigando sobre el tema averiguamos que este control se activa o desactiva manualmente y tiene la finalidad de, pasado cierto umbral, comenzar a controlar la distancia con el coche que tiene adelante, acelerando o desacelerando el motor del mismo automáticamente y desvinculando al conductor de esta tediosa tarea. En este caso la variable a controlar, distancia, se mide mediante sensores ultrasónicos. Nuestra intención fue la realización de un proyecto que simbolizara el control anteriormente expuesto y que además tuviera los siguientes ítems: *comunicación serie con la PC. *Software de adquisición, registro y manipulación de variables del proceso. *Manejo de motores PAP. *Planta que refleje la idea. 2_Desarrollo 2.1_ Desarrollo general Nuestra primera idea de la planta que simbolizara el sistema anteriormente descripto fue la de un carro móvil sobre el cual iría adosado un sensor ultrasónico que mediría la distancia hasta una referencia móvil. El sensado de la distancia se haría mediante un sensor ultrasónico, pero esta idea fue abortada por la complejidad de la electrónica asociada y los costos del sensor. Este método fue reemplazado por la utilización de dos potenciómetros multi-vuelta debido a su bajo costo y simplicidad de uso e instalación, además de poseer una precisión adecuada para este proyecto. La no utilización de medidores de ultrasonido trajo como consecuencia la eliminación del carro ya que no iría montado el sensor arriba del mismo y por lo tanto bastaba con un simple puntero. Lo mismo vale para el carro móvil. Para mover el puntero se eligió un motor paso a paso debido a nuestro interés en aprender el manejo de los mismos. El movimiento de los cursores se realizó mediante correas dentadas que corren sobre engranajes moviendo los ejes de los potenciómetros, permitiendo de esta manera calcular la distancia mediante la resta del valor de los mismos. El microcontrolador tiene como función obtener las variables de campo (señal proveniente de los potenciómetros), calcular la acción de control y ejecutarla, comunicar y recibir valores de todos los parámetros con un software de monitoreo que corre en la PC. La ejecución de la acción de control hacia el motor se realiza mediante una placa que se explicara en otro ítem. Con todo lo anteriormente expuesto se logro representar el sistema buscado. A continuación se muestra en la figura de la planta terminada. -3- Control de Distancia Sistemas Digitales Contreras M. Gonzalez M. 2.2_ Hardware El hardware de este proyecto se puede dividir en 3 partes que son las siguientes: *placa de interfase entre el microcontrolador y el motor paso a paso *sensor de posición de cusor de referencia *sensor de posición de cursor seguidor 1)-Placa de interfase La función de esta placa es la de simplificar al máximo el manejo del motor paso a paso bipolar que mueve el cursor seguidor. Posee 2 entradas opto-aisladas de las cuales una habilita el movimiento del motor y la otra establece el sentido de giro del mismo. Esta placa debe alimentarse con una tensión continua superior a 6V la cual será la tensión de manejo del motor. La placa se puede dividir en 4 partes *regulador de tensión *puentes H (uno para cada bobina del motor) *controlador del motor PAP *generador de pulsos 2) y 3)-Sensores de posición Consisten en potenciómetros de precisión de 2K de 10 vueltas los cuales se encuentran conectados de manera que se obtenga la misma variación de resistencia al desplazarse -4- Control de Distancia Sistemas Digitales Contreras M. Gonzalez M. los cursores en el mismo sentido. La salida de dichos potenciómetros están conectadas a las entradas AN-0 y AN 1 del conversor A/D. 2.2.1_ Descripción breve de los componente mas importantes de la placa L-297 El IC del regulador del motor de pasos de L297/A/D genera cuatro señales de impulsión para un motor paso a paso bipolar. El motor puede ser manejado tanto en medio paso como en paso entero. Una característica de este dispositivo es que simplifica el manejo de un motor paso a paso por medio de un puente H dual (L-298) ya que solamente requiere las siguientes señales de entrada: *habilitación del integrado *habilitación del control de corriente que pasa por las bobinas *voltaje de referencia para el control anteriormente citado *sentido de giro *clock *indicación del manejo del motor paso a paso -5- Control de Distancia Sistemas Digitales Contreras M. Gonzalez M. Terminales del L-297 1-SYNC:Salida del oscilador: Puede ser utilizada para en el caso de que se trabaje con mas de un L-297 ya que permite la sincronización de estos. Si se utiliza una fuente externa del reloj se inyecta en este terminal. 2-GND 3-HOME: Salida de colector abierto que indica cuando el L297 está en su estado inicial (ABCD = 0101). 4-A: Señal de manejo de la fase A del motor. 5-INH1: Si la misma se encuentra en nivel bajo se inhibe el control del puente H que maneja las fases A y B. Cuando se utiliza un puente bipolar esta señal se puede utilizar para asegurar el decaimiento rápido de la corriente de la carga cuando se desenergiza una bobina. También utilizado por el interruptor para regular la corriente de la carga si la entrada CONTROL esta en nivel bajo. 6-B: Señal de manejo de la fase B del motor. 7-C: Señal de manejo de la fase C del motor. 8-INH2: Idem que el terminal nº7 pero actúa sobre las fases C y D. 9-D: Señal de manejo de la fase D del motor. 10-ENABLE: Habilitación del integrado. Cuando esta en nivel bajo INH1, INH2, A, B, C y D están en nivel bajo. -6- Control de Distancia Sistemas Digitales Contreras M. Gonzalez M. 11-CONTROL: Define la acción del interruptor. Cuando es bajo el interruptor actúa en INH1 e INH2; cuando el interruptor alto actúa en la línea de las fases ABCD. 12-Vs: alimentación de 5V. 13-SENS2: Entrada para el censado y control de la corriente que circula por las líneas C y D. 14-SENS1: Entrada para el censado y control de la corriente que circula por las líneas A y B. 15-Vref: Voltaje de la referencia para el circuito del interruptor. Un voltaje aplicado a este terminal determina la corriente máxima que pasa por la bobina. 16-OSC: Un circuito RC (R a VCC, C a la tierra) conectado a este terminal determina la frecuencia del control. 17-CW/CCW: Este terminal se utiliza para establecer el sentido de giro del motor. Dicho sentido dependerá también del conexionado físico de las bobinas del motor. 18-CLOCK: Reloj de paso. El paso ocurre en el flanco decreciente de la señal. 19-HALF/FULL: Este terminal permite determinar el modo de operación del motor, es decir, si va a funcionar en medio paso o en paso completo 20-RESET: Este terminal permite restaurar el sistema a la posición de inicio (estado 1, ABCD = 0101). L-298 El L298 es un circuito monolítico integrado de 15 pines. Es en puente H que permite el manejo de cargas a alto voltaje y elevada corriente. Esta diseñado para aceptar niveles de lógica TTL y para conducir cargas inductivas tales como relais, solenoides, C.C. y motores pap. Poses dos entradas que permiten habilitar o inhabilitar el dispositivo independientemente de las señales de entrada a los terminales de entrada 5,7,10 y 12. Los emisores de los transistores inferiores de cada puente H están interconectados en un terminal externo que puede ser utilizado para la conexión de un resistor de detección externo. Posee además un terminal que debe ser alimentado con el voltaje de nivel lógico. -7- Control de Distancia Sistemas Digitales Contreras M. Gonzalez M. 2.2.2_ Descripción del funcionamiento de la placa interfase a motor pap El L297 se piensa para el uso con un puente H dual como el L-298. Recibe desde el microcontrolador las señales de enable y de sentido de giro. La señal de reloj de paso(step clock) es generada por un smicht trigger (contenido en el CI HCF-40106-BE) conectando el mismo de la siguiente manera: -8- Control de Distancia Sistemas Digitales Contreras M. Gonzalez M. En cuanto a los terminales relacionados al modo de funcionamiento están fijados en los siguiente niveles lógicos: CONTROL=1 HALF/FULL=0 (establecemos el modo full step) Vref=5Vcc RESET=1 La secuencia de salida generada por el L-297 desde los terminales 4,6,7 y 9 hacia las entradas de manejo del puente H dual es la siguiente: -9- Control de Distancia Sistemas Digitales Contreras M. Gonzalez M. Referencias: 1) Leds indicadores de sentido de corriente por cada bobina del motor pap. 2) Bornera de conexión del motor pap. 3) Optoacoplador para aislar al micro de la plaqueta. 4) Borne de conexión para establecer sentido de giro desde el HC11. 5) 0Vcc de placa programadora del HC11. 6) Borne de conexión para habilitar el IC L-297. 7) IC HCF-40106-BE para generar el step clock. 8) L-297. 9) Borne de conexión para establecer modo half o full step. 10) Borne de conexión para el step clock. 11) Borne de conexión alternativo para establecer sentido de giro. 12) Borne de salida de 5Vcc. 13) Borne de alimentación de plaqueta (0Vcc) 14) Borne de alimentación de plaqueta (5Vcc) 15) L-298. 16) Regulador de tension a 5Vcc (IC-7805). 2.3_Conexionado general Al PORTF del micro va conectado la salida de control hacia la plaqueta. - 10 - Control de Distancia Sistemas Digitales Contreras M. Gonzalez M. Al PORTE van conectados los dos potenciómetros de 10 Kohm cada uno, se toma alimentación del micro para los mismos. El motor al igual que la placa se alimenta con fuente externa con 24v. 2.4_Diagrama temporal del programa principal del microcontrolador Una vez inicializada la comunicación con la PC, el micro actualiza todas las variables del proceso por aproximadamente 320ms, una vez terminada dicha tarea comienza con las acciones de muestreo, calculo y acción de control. El diagrama siguiente muestra el diagrama temporal de ejecución del programa indicando cada tarea. Referencias: *delta T1= tiempo que tarda en tomar la entrada mas el calculo de control *delta T2= tiempo fijo de aproximadamente 32 ms *delta T3= tiempo desde que termina la acción de control hasta la nueva toma de datos de campo. *Ti= tiempo de actualización total de datos con la PC antes de comenzar a controlar *1-comunicación *2-adquisición de variables de campo *3-calculo de control *4-acción de control Se supone delta T1 y T3 ctes, delta T2 es aproximadamente 32 ms que es el tiempo que tarda el TCNT en dar 1 vuelta completa. Por lo tanto el tiempo de muestreo es constante e igual a T1+T2+T3 que es lo que nos interesa. 2.5_Detalles del programa principal Una de las primeras llamadas que hacemos es a la librería <iof1.h>, en esta - 11 - Control de Distancia Sistemas Digitales Contreras M. Gonzalez M. librería se encuentran definidos los registros y las direcciones del microcontrolador, así en la programación solo se hará referencia a los puertos como PORTX, al ADR como registro del conversor analógico digital, y así con los demás registros. Como resumen de las funcionalidades que utilizamos en el proyecto podemos mencionar: • Interrupciones • Entradas analógicas (conversor Analógico digital) • Salidas digitales • Comunicación RS-232 con la PC A manera de mejorar la organización del proyecto se decidió separar en diferentes archivos las declaraciones de variables y las funciones del programa según su funcionalidad. Archivos: port.h: contiene variables y funciones utilizadas por port.c. port.c: programa principal e única interrupción. comunicación.h: contiene variables y funciones utilizadas por comunicacion.c. distancia.h: contiene variables y funciones utilizadas por distancia.c. control.h: contiene variables y funciones utilizadas por control.c. motor.h: contiene variables y funciones utilizadas por motor.c. Proyecto Final de Materia Sistemas Digitales Programación en C de un microcontrolador Motorola mc68hc11 Las funciones utilizadas son: void recepcion_datos(void); // Se encarga de la recepción de datos desde la PC. void enviar_datos(void); // Se encarga del envió de datos hacia la PC. void ver_entrada(void); // Se encarga de obtener entrada o variable a controlar "distancia" del conversor a/d. void calculo_control(void);// Realiza el cálculo de acción de control mediante un algoritmo PID discreto. void salida_motor(void);// Genera una salida digital mediante la cual a través de una placa se acciona sobre el motor PAP. Luego se explicará más detalladamente cada una de las mismas. void main (void) { BAUD=0x30;//velocidad de transmisión de datos 9600 baudios SCCR1=0x00;//sci m=0 8 bits de datos SCCR2=0x0C;//te y re 1 habilita transmisión y recepción por el sci OPTION=0x80;//ENCENDER conversor: ADCTL=0x30;//SCAN -> activo conversión cont MULT -> activo PACTL=0x00;//interrupción tiempo real cada 4.1ms TMSK2=0x40; //vuelta completa del tem princ 32.77ms y permitir interrupción de tiempo real. - 12 - Control de Distancia Sistemas Digitales Contreras M. Gonzalez M. _asm("CLI");//habilitar interrupciones while(1){}; } En el programa se utiliza una sola interrupción de tiempo real llamada “reloj”, dentro de la cual se realiza una organización temporal de todas las acciones a realizar en la implementación del proyecto. @interrupt void reloj(void) { if((TFLG2 & 0x40)==0x40) { TFLG2=0x40; // se borra flag estado=estado+4; La variable estado es un contador que nos indica el estado de la secuencia y es por la cual se decide que acciones se deben realizar en la secuencia de control. recepcion_datos(); enviar_datos(); Se supone que cuando estado ~ 320ms el micro y la PC tienen todas sus variables actualizadas. if(estado==320) { ver_entrada(); calculo_control(); } Solo se levanta una entrada si ya se actuó sobre la anterior. if(estado>=320) { salida_motor(); } } } Funciones explicación: Las funciones “recepcion_datos” y “enviar_datos” conforman un protocolo de transmisión en el cual se recibe de la PC un código de un byte llamado “índice” que es único para cada variable y luego el valor de la variable asignada para ese código, ésta se almacena en la variable “dato”. Cada vez que se recibe un índice o dato es reenviado por medio de ”enviar_datos” hacia la PC para chequear que haya llegado bien y pasar al siguiente. La variable “ind” es un enrrutador interno del protocolo y sirve para recorrer el algoritmo de la forma deseada. void recepcion_datos(void) { while((SCSR & 0x20)!=0x20){}; //se espera que llegue dato if(ind=='1'||ind=='2'||ind=='3'||ind=='4'||ind=='5'||ind=='6') - 13 - { Control de Distancia Sistemas Digitales Contreras M. Gonzalez M. indice=SCDR; } else { dato=SCDR; } } Los datos recibidos se almacenan en variables globales, estas son utilizadas por otras funciones como por Ej.: el cálculo de acción de control en “calculo_control”. Los casos 5 y 6 de enviar_datos se diferencian de los primeros cuatro, ya que estas dos variables son propiedad del micro por decirlo de alguna manera, por lo tanto la PC pide al micro enviándole el código de variable que necesita y el micro directamente le responde con el valor de la variable requerida. void enviar_datos(void) { while((SCSR & 0x80)!=0x80){;} caso=indice; switch (caso) { case '1': if(indice==ind) { SCDR=indice;ind='0'; } else { Sp=dato; // Guarda en la variable Sp el valor enviado por la PC. SCDR=dato; // Reenvío hacia la PC. ind='2'; } break; case '2': if(indice==ind){SCDR=indice;ind='0';} else { P=dato; // Guarda en la variable P (cte. proporcional) el valor enviado por la PC. SCDR=dato; // Reenvío hacia la PC. ind='3'; } break; case '3': if(indice==ind){SCDR=indice;ind='0';} else { - 14 - Control de Distancia Sistemas Digitales Contreras M. Gonzalez M. I=dato; // Guarda en la variable I (cte. integral) el valor enviado por la PC. SCDR=dato; // Reenvío hacia la PC. ind='4'; } break; case '4': if(indice==ind){SCDR=indice;ind='0';} else { D=dato; // Guarda en la variable D (cte. derivativa ) el valor enviado por la PC. SCDR=dato; // Reenvío hacia la PC. ind='5'; } break; case '5': if(indice==ind){SCDR=En;ind='0';} // Envío hacia la PC la variable a controlar En. else { ind='6'; } break; case '6': if(indice==ind){SCDR=Sa;ind='0';} // Envío hacia la PC la variable salida de control llamada Sa. else { ind='1'; } break; } controlar=1; //habilita el calculo de control. Ya que existe la conexión. } La función “ver_entrada” toma los datos del conversor analógico digital, se resta el valor de los dos potenciómetros lo cual nos indica un número proporcional al valor distancia a controlar. void ver_entrada(void) { En=ADR1-ADR2; } - 15 - Control de Distancia Sistemas Digitales Contreras M. Gonzalez M. La función “calculo_control” esta inhibido si no hay conexión, una vez conectado se calcula el error, y la acción de control “Act”, luego se realiza un escalaje guardando en “Sa” la acción calculada para informarle a la PC. La variable proporción es usada para accionar sobre el motor. Act1, error1, error2 se utilizan para guardar datos de cálculos anteriores necesarios para el cálculo del PID discreto. void calculo_control(void) { if(controlar==1) { error=En- Sp; Act = P*(( 1 + I + D )*error - ( 1 + 2*D )*error1 + D*error2)+Act1; error2=error1; error1=error; //escalar if(Act>25500) {Act=25500;} if(Act<0) {Act=0;} //Con este escalaje definimos la saturación de la señal de actuación, para expresarlo en la variable “Sa” y comunicarlo al software de monitoreo. Sa=(char)(Act/100); proporcion =abs(Act-Act1); Act1=Act; } } La función “salida_motor” también está inhibida si no hay conexión, en la misma se calcula el signo del error para así poder saber en que sentido tiene que girar el motor. Esta condición se almacenara en la variable “sentidopos”. El cálculo mencionado anteriormente se efectúa una vez por cada acción al motor ejecutada ya que para completar la acción de control se debe ingresar varias veces a esta rutina. Una vez calculado el sentido se inicializa el TOC2 con el valor del TCNT para que cuente 32 ms como tiempo máximo de acción. De esta manera como se mostró en el grafico temporal se obtiene una frecuencia de muestreo cte. Luego se comienza con el accionamiento del motor por medio de la variable pulsos a la cual se la fuerza al estado lógico “1”. Es decir que por un lado tendremos el signo del error y por otro un tiempo de acción variable según el valor de “proporcion” que viene del cálculo de control. Si el error es positivo activara el bit 2, caso contrario lo desactivara, más la acción por el bit 1 el tiempo que se indique. Esta combinación se verá en el PORTF y será recibida por la placa interfase que moverá el motor PAP. La variable “veces” es un contador que se incrementa de a pasos de 80 unidades cada vez que se ingrese a la rutina salida_motor. Se decide incrementar de a 80 unidades en - 16 - Control de Distancia Sistemas Digitales Contreras M. Gonzalez M. cada pasada por esta rutina para adecuar la función de salida_motor a nuestra planta. En definitiva cada pasada representara un desplazamiento recorrido de 3 mm. La acción terminara por 2 razones: *se cumplió los 32 ms (tiempo de acción máxima) o *cuando la variable veces llegue al valor de la variable proporción. De esta manera se podrá observar la modulación de la acción de control cuando la misma tenga un tiempo menor a 32 ms. void salida_motor(void) { if(controlar==1) { if(calculosentido==0) //se calcula sentido { if(error>0) { sentidopos=0x00; } else { sentidopos=0x02; } TOC2= TCNT ;//inicializa la temporizacion de 32 ms TFLG1=0x40;// se resetea el flan de temporizacion calculosentido=1; } if((veces<=proporcion) && ((TFLG1 & 0x40) != 0x40)) { pulsos=0x01; PORTF= pulsos +sentidopos;//salida combinada a la placa veces=veces+80; estado=324; } else { pulsos=0x00; //una vez terminada la accion se detiene el motor PORTF= pulsos +sentidopos; if((TFLG1 & 0x40) != 0x40)//si se cumplieron los 32ms entonces //habilita para realizar el nuevo muestreo //y calculo de la acción de control { veces=0; estado=316; - 17 - Control de Distancia Sistemas Digitales Contreras M. Gonzalez M. calculosentido=0; } } } } 2.6 Dificultades: Principalmente la dificultad la tuvimos con la última función debido a que el tiempo de accionamiento del motor el muchísimo mayor que el tiempo que demandan las demás acciones. Con esto queremos decir que no podíamos realizar la acción completa dentro de la interrupción de 4 ms debido a que generaba perdidas de interrupciones y “congelamiento” en la comunicación con la PC. Esto lo solucionamos generando una función explicada anteriormente que corre paralela a la acción de comunicación ya que se deja en estado “on” el motor mientras el micro se encarga de la comunicación. Esto se ve también en el diagrama temporal del programa principal. Por ultimo cabe mencionar que no se puede lograr el error 0 debido a que la mínima actuación del motor provoca un desplazamiento de 3 mm. Este seria un aspecto pendiente a mejorar: una idea para esto seria conveniente efectuar un filtrado en la entrada de los conversores que promedie los últimos 3 o 4 valores para lograr así error 0 y por consiguiente que el motor se quede quieto. 2.7_Software de adquisición de datos hecho en entorno de C++ El programa que se comunica con el micro por RS232 es el siguiente: - 18 - Control de Distancia Sistemas Digitales Contreras M. Gonzalez M. Con este programa se pueden ver todas las variables de proceso, ver la acción de control, la entrada, si se desea, cambiar las constantes del PID y el Sp. Además ver el registro temporal graficado de la variable a controlar vs. Valor buscado. Detalles: En la parte superior izquierda se encuentra el controlador. El puntero deslizable representa el valor buscado de distancia a mantener, se puede leer su valor de 0 a 255 o lo que es más cómodo leerlo en unidad de ingeniería, es decir [cm] en la parte superior derecha. La primera barra representa la entrada o variable a controlar, al igual que la anterior se puede leer en [cm] en la parte superior derecha. La segunda barra es la salida del controlador, lectura ídem anteriores. Debajo del controlador tenemos un memo que se actualiza cada un segundo y nos muestra los valores de todas las variables enviadas y recibidas. Sirve para ver el estado de la comunicación. En la parte derecha esta Sentido en la cual se ve el sentido de giro del motor. Luego en el centro tenemos el recuadro de Constantes del PID, en el cual por medio de los distintos spin podemos modificar cualquiera de las tres en forma online, las constantes tienen un rango de 0 a 255. Por último tenemos un gráfico en tiempo real que nos muestra el setpoint y el valor de la variable entrada, es decir la distancia real que tenemos en ese instante. Este se actualiza cada un segundo. La interfase fue programada en lenguaje c++, utilizando dev-c++. Cabe aclarar que el algoritmo de comunicación es similar al implementado en el micro, con las características propias del lenguaje. - 19 - Control de Distancia Sistemas Digitales Contreras M. Gonzalez M. 3. Conclusiones: Podemos concluir que de nuestra idea original para este proyecto pudimos cumplir en gran medida con los objetivos deseados. Cabe mencionar que este control difiere en gran medida de la metodología implementada para controles de velocidad basados en PWM ya que en nuestro caso la acción de control lleva un tiempo considerable debido a la necesidad de tener una acción de salida prolongada como para obtener un movimiento del motor. Por ultimo se aclara que el control funciona para distancias positivas con respecto al cursor de referencia lo cual tiene sentido basándonos en la aplicación real de este tipo de control (por ejemplo, control de distancia entre 2 vehículos). - 20 - Control de Distancia Sistemas Digitales Contreras M. Gonzalez M. 4. Apendice Motores Paso a Paso Funcionamiento y Control a Través de un Pc (Obtenido de www.monografias.com) 1. 2. 3. 4. 5. Introducción Controlador de Motor Paso a Paso sin necesidad de Computadora Principio de Funcionamiento Secuencias para Manejar Motores Paso a Paso Bipolares: Cómo Identificar los Terminales Introducción Hoy en día es casi imposible pensar en aplicaciones de control o de robótica en las que no estén presentes los motores paso a paso. Donde se requieren movimientos precisos, hay un motor paso a paso. Pero ¿qué diferencia hay entre un motor paso a paso a un motor convencional, ya sea de continua o de alterna? En siguiente escrito se explica el funcionamiento de estos dispositivos y cómo se realiza su control por medio de una computadora, utilizando una interfaz para puerto paralelo. Controlador de Motor Paso a Paso sin necesidad de Computadora Los motores paso a. paso son ideales para la construcción de mecanismos en donde se requieren movimientos muy precisos. 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. Esto paso puede variar desde 90° hasta pequeños movimientos de tan sólo 1.8°, es decir, que se necesitarán 4 pasos en el primer caso (90°) y 200 para el segundo caso (1.8°), para completar un giro completo de 360°. Estos motores poseen la habilidad de poder quedar enclavados en una posición o bien totalmente libres. Si una o más de sus bobinas está energizada, el motor estará enclavado en la posición correspondiente y por el contrario quedará completamente libre si no circula corriente por ninguna de sus bobinas. En este caso trataremos solamente los motores P-P del tipo de imán permanente, ya que éstos son los más usados en robótica. Principio de Funcionamiento Básicamente, estos motores están constituidos normalmente por un rotor sobre el que van aplicados distintos imanes permanentes y por un cierto número de bobinas excitadoras bobinadas en su estator. Las bobinas son parte del estator y el rotor es un imán permanente. Toda la conmutación (o excitación de las bobinas) deber ser externamente manejada por un controlador. - 21 - Control de Distancia Sistemas Digitales Contreras M. Gonzalez M. En la figura 1 se puede apreciar la imagen de un rotor típico y en la figura 2 el aspecto de un estator de 4 bobinas. Existen dos tipos de motores paso a paso de imán permanente: Bipolar: Estos tienen generalmente, cuatro cables de salida (ver figura 3). 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 la figura 5A 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 5. El circuito de la figura 5 es a modo ilustrativo y no corresponde con exactitud a un H-Bridge. En general, es recomendable el uo de H-Bridge integrados, como son los casos del 1293 (ver figura 5B). - 22 - Control de Distancia Sistemas Digitales Contreras M. Gonzalez M. Unipolar: Estos motores suelen tener 6 o 5 cables de salida, dependiendo de su conexionado interno (ver figura 4). Este tipo se caracteriza por ser más simple de controlar. En la figura 6 podemos apreciar un ejemplo de conexionado para controlar un motor paso a paso unipolar mediante el uso de un ULN2803, el cual es una array de 8 transistores tipo Oarlington capaces de manejar cargas de hasta 500mA. Las entradas de activación (Activa A, 8 , C y D) pueden ser directamente activadas por un microcontrolador. 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. En la figura 7 se puede ver la tabla con la secuencia necesaria para controlar motores paso a paso del tipo Bipolares. Cómo Identificar los Terminales Para el caso de motores paso paso bipolares (generalmente de en el Identificando los Cables en Motores P-P Bipolares: cables de salida), la identificación es más sencilla. Simplemente tomando un multímetro en modo óhmetro (para medir resistencias), podemos hallar los pares de cables que corresponden a cada bobina, debido a que entre ellos deberá haber continuidad (en realidad una resistencia muy baja). Luego solo deberemos averiguar la polaridad de la misma, la cual se obtiene fácilmente probando. Es decir, si conectado de una manera no funciona, simplemente damos vuelta los cables de una de las bobinas y entonces ya debería funcionar correctamente. Si el sentido de giro es inverso a lo esperado, simplemente se deben invertir las conexiones de ambas bobinas y el HBridge. Recordar Un motor de paso con 5 cables es casi seguro de 4 fases y unipolar. Un motor de paso con 6 cables también puede ser de 4 fases y unipolar, pero con 2 cables comunes para alimentación, pueden ser del mismo color. Un motor de pasos con solo 4 cables es comúnmente bipolar. - 23 -