martes, 20 de noviembre de 2007

CONTROLADORES

Dada la función de transferencia:

Se requiere diseñar un controlador de modo que el porcentaje de overshoot del sistema sea del 20%.

Además se nos pide implementar un circuito que corresponda a la función de transferencia y también implementar el controlador.

El diseño del controlador es fácil y rápido si se tiene a la mano la herramienta RLTOOL del programa MATLAB.

Lo primero que hacemos es ir al entorno de MATLAB y escribir lo siguiente:

>> num=[0 1];

>> den=conv([1 1],conv([1 2],[1 3]));

>> sys=tf(num,den)

Transfer function:

1

----------------------

s^3 + 6 s^2 + 11 s + 6

>> rltool

Una vez que estemos en el entorno del SISO Design, entramos al menú File y legimos Import.

En la pantalla que nos aparece elegimos para G (ganancia de planta) el valor de sys, y el valor del resto de ganancias será igual a 1 (por el momento).

Le damos OK y aparecerá graficado el lugar geométrico de las raíces.

A partir de aquí, podemos hacer que nos aparezcan referencias para hacer nuestro diseño del controlador.

Por ejemplo, podemos hacer que nos aparezcan que puntos de la gráfica poseen un máximo sobreimpulso del 20%.

Otra forma de hacerlo sería de manera indirecta, es decir, relacionando el máximo sobreimpulso con la coeficiente de amortiguamiento ζ .

Sabemos por teoría que, para un sistema de segundo orden:


Despejando el coeficiente de amortiguamiento ζ en función del O.S.

Ahora, como queremos un O.S. de 0.2 (es decir 20%), si reemplazamos en la fórmula obtenemos:

Es decir, necesitamos los puntos en el lugar geométrico de las raíces donde se cumpla que el coeficiente de amortiguamiento sea 0.4559.

De cualquiera de estas dos maneras se llegará al mismo resultado, ya que ambos (directa o indirectamente) apuntan a una misma condición.

Obtenemos que para cumplir con esta condición nos basta con emplear un controlador proporcional de ganancia 10.3.

La gráfica obtenida es la siguiente:

El sobreimpulso máximo obtenido es del 19.8 %, bastante cercano al 20 % deseado.

Sin embargo, notamos que el tiempo de establecimiento del sistema es bastante grande (casi 5 segundos) lo cual representa un problema, ya que, un generador de señales estándar nos puede generar señales con frecuencias no menores a 1 Hz.

Otro gran problema es que la base de tiempo del osciloscopio llega sólo hasta cientos de milisegundos, y debido a esto no se podrá visualizar completamente la forma de la señal de salida.

Simulación en Proteus - Isis

Para la simulación en Proteus – Isis, elegiremos el amplificador operacional uA741 en lugar de un OPAM ideal para obtener una simulación más cercana a la realidad.

El circuito que implementaremos es el siguiente:


Un detalle a tomar en cuenta es que los capacitares que se emplearán en el experimento son electrolíticos, es decir, habrá que agregar un offset a la señal cuadrada para que no alcance valores por debajo de 0V.

En el simulador podemos cumplir con todos estos requerimientos, basta con configurar de forma adecuada el generador de señales.


En este caso hemos elegido una señal cuadrada de 2 Vpp y 60 mHz de frecuencia.

Además hemos elegido que se unipolar, es decir, que varía desde 0V hasta 2V en lugar de variar de -1V a 1V como lo hace normalmente.

La señal que se obtiene es la siguiente:

Si se desea mayor detalle basta con aplicar un zoom a la señal en los primeros 7 segundos:

Notamos que la gráfica de la salida es idéntica a la que se obtuvo en MATLAB.

INFORME FINAL

Al implementar el circuito se nos presentó el inconveniente que se había previsto:

La mínima frecuencia que el generador nos podía dar era de 1 Hz.

Sin embargo, no se contó con un detalle:

La mayor parte del tiempo (en otros cursos de laboratorio) hemos empleado osciloscopios analógicos, los cuales sólo pueden graficar señales periódicas dentro de un determinado ancho de banda. Pero ahora estamos empleando un osciloscopio digital, el cual, al no presentarse una señal periódica (o al trabajar a muy baja frecuencia) se puede comportar como un trazador de curvas, es decir, graficar en “tiempo real” (en realidad con un pequeño retardo) la señal que ingresa al osciloscopio.

Gracias a esto podemos graficar nuestra señal en el osciloscopio y llegamos a la conclusión de que podíamos obtener la entrada de dos formas:

La primera forma conmutar un interruptor manualmente para obtener una función escalón, pero para esto deberemos insertar primero un “circuito antirrobote” de manera que los rebotes mecánicos del interruptor no alteren la señal de entrada.

La segunda forma era generar una señal cuadrada con un periodo de 16 segundos aproximadamente, y así nosotros no tendríamos que mover el interruptor a cada momento.

Para generar esta señal podríamos emplear un temporizador o inclusive un microcontrolador.

No teníamos latches ni un temporizador a la mano, pero sí teníamos un microcontrolador que estaba programado para dar una señal cuadrada de periodo 16 segundos (¡Pero que coincidencia!), así que optamos por usar este último. Esto quiere decir que la señal de entrada será una onda cuadrada de periodo 16 segundos y donde el voltaje varía de 0 a 5V.

El código Assembler (realizado en MPLAB) es bastante sencillo y es el siguiente:

; Generador de señal cuadrada de periodo 16 seg

LIST P=16F877A

INCLUDE

CBLOCK 20H

VECES_1

VECES_2

VECES_3

ENDC

ORG 0000H

bsf STATUS,RP0

bcf TRISC,0

bcf STATUS,RP0

ONDA

bsf PORTC,0

call RET_8s

bcf PORTC,0

call RET_8s

goto ONDA

;-------------------------------------------------------------

RET_8s

call RET_1s

call RET_1s

call RET_1s

call RET_1s

call RET_1s

call RET_1s

call RET_1s

call RET_1s

return

;-------------------------------------------------------------

RET_1s

movlw .250

movwf VECES_1

BUCLE_1

movlw .108

movwf VECES_2

BUCLE_2

movlw .9

movwf VECES_3

BUCLE_3

nop

decfsz VECES_3

goto BUCLE_3

decfsz VECES_2

goto BUCLE_2

decfsz VECES_1

goto BUCLE_1

return

Empleamos este microcontrolador como generador y la señal obtenida en el osciloscopio fue la siguiente

4.56 V

5.42 V

1.8 seg

4.3 seg


De las mediciones realizadas se obtuvo lo siguiente:

T. de retardo: 800 ms

T. de subida:

Del 0% al 100% -------------- 1.3 seg

Del 10% al 90% -------------- 600 ms

T. de pico: 1.8 seg

% de Overshoot: 21%

T. de establecimiento (al 5%): 4.3 seg

jueves, 15 de noviembre de 2007

LUGAR GEOMÉTRICO DE LAS RAÍCES

RESULTADOS TEÓRICOS

Para este Laboratorio se requiere diseñar un sistema de lazo cerrado con una ganancia K que se pueda variar.

En nuestro caso emplearemos una retroalimentación unitaria (H=1)

Simulación en MATLAB

En el editor de texto:

% Funcion para hallar polos y salida de un sistema con ganancia K

function y=lgr(K)

R=849;
L=0.562*(10^(-3));
C=22*(10^(-12));
num=K*[0 1/(L*C)];
den=[1 R/L 1/(L*C)];
sys=tf(num,den);
sysr=feedback(sys,1)
pole(sysr)
step(sysr)

Guardamos el archivo como rgl.m

En el entorno de MATLAB:

Para K=0.1

>> lgr(0.1)

Transfer function:

7.736e012

----------------------------

s^2 + 1.511e006 s + 8.51e013

ans =

1.0e+006 *

-0.7553 + 9.1940i

-0.7553 - 9.1940i

Para K= 0.2

>> lgr(0.2)

Transfer function:

1.547e013

-----------------------------

s^2 + 1.511e006 s + 9.284e013

ans =

1.0e+006 *

-0.7553 + 9.6055i

-0.7553 - 9.6055i

Para K=0.5

>> lgr(0.5)

Transfer function:

3.868e013

----------------------------

s^2 + 1.511e006 s + 1.16e014

ans =

1.0e+007 *

-0.0755 + 1.0746i

-0.0755 - 1.0746i

Para K=1:

>> lgr(1)

Transfer function:

7.736e013

-----------------------------

s^2 + 1.511e006 s + 1.547e014

ans =

1.0e+007 *

-0.0755 + 1.2416i

-0.0755 - 1.2416i

Para K = 1.5

>> lgr(1.5)

Transfer function:

1.16e014

-----------------------------

s^2 + 1.511e006 s + 1.934e014

ans =

1.0e+007 *

-0.0755 + 1.3887i

-0.0755 - 1.3887i

Para K=2

>> lgr(2)

Transfer function:

1.547e014

-----------------------------

s^2 + 1.511e006 s + 2.321e014

ans =

1.0e+007 *

-0.0755 + 1.5216i

-0.0755 - 1.5216i

Simulación en Proteus - Isis

Para la simulación en Proteus – Isis, elegiremos el amplificador operacional uA741 en lugar de un OPAM ideal para obtener una simulación más cercana a la realidad.

El circuito que implementaremos es el siguiente.

Emplearemos la misma resistencia usada en el Laboratorio Nº2 , la misma inductancia y el mismo capacitor.

R = 849 Ω L = 0.564 mH C = 23 pF

Asimismo, emplearemos una entrada de 1V para comparar la salida con la del MATLAB.

Veamos lo que sucede con K=1

Notamos que la respuesta obtenida no se parece en nada a la respuesta obtenida en el MATLAB.

Esto puede ser debido a que el generador no envía una señal muy “cuadrada” que digamos, es decir, si aplicamos un zoom:

En la primera parte, la señal de onda cuadrada se comporta como una rampa, por ello la respuesta obtenida difiere tanto de la ideal.

Si no nos percatamos de esto podríamos confundir la respuesta con otra parte de la señal, como por ejemplo:

De ser así podríamos pensar que el sistema está críticamente amortiguado, cuando en realidad es sub – amortiguado.

Pero ¿Qué se podría hacer para solucionar este problema?

Bueno, una solución rápida podría ser emplear un microcontrolador para generar una onda cuadrada más “limpia” que la del generador.

Al ser una señal digital, el tiempo de conmutación será más pequeño.

Podemos emplear, por ejemplo el PIC16F84A:

Ahora sí podemos analizar cada uno de los casos:

Para K = 0.1

Para K = 0.2

Para K=0.5

Para K = 1

Para K = 1.5

Para K = 2

RESULTADOS EXPERIMENTALES

Al implementar el circuito en el laboratorio, nos encontramos con el inconveniente de que al variar el K por debajo de 0.3 o por encima de 0.6 , la señal en el osciloscopio se saturaba (no se podía apreciar bien la imagen). Por ello, sólo se varió el K desde 0.3 hasta 0.6.

Se empleó una entrada cuadrada de 4Vpp.

Para encontrar el tiempo de asentamiento se empleó el criterio del 5%

Para K = 0.3

244 mV

274 mV

1.74 µs

3.7 µs

Tiempo de pico = 1.740 µs

Porcentaje de overshoot = 12.3 %

Tiempo de asentamiento = 3.7 µs

Para K = 0.4

1.6 µs

420 mV

320 mV

7.12 µs

Tiempo de pico = 1.6 µs

Porcentaje de overshoot = 31.25 %

Tiempo de asentamiento = 7.12 µs

Para K = 0.5

928 mV

8.8 µs










Tiempo de asentamiento = 8.8 µs

En este caso no se puede hablar de porcentaje de overshoot, ya que el sistema no está subamortiguado.

Para K = 0.6

2 µs

464 mV

623 mV









Tiempo de pico = 2.0 µs

Porcentaje de overshoot = 34.27 %

Tiempo de asentamiento = 26.8 µs