Control de Distancia

Anuncio
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 -
Descargar