controlador pid

c        ? ? ?  ?  ? ?  ? ? ? ? El controlador proporcional int

Views 116 Downloads 3 File size 321KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

c       

?

? ?  ?  ?

?

 ? ? ? ? El controlador proporcional integral derivativo (PID), mejor conocido como controlador de tres términos, con un sistema de la forma que ilustra la figura dará una salida, para una entrada de error e, de ? La función de transferencia, salida (s)/ e(s), del controlador es, de esta manera

?

?

Debido a que la constante de tiempo integral , % es Kp / K i y la constante de tiempo derivativa, % , Kd / K p; la ecuación se puede escribir como:

La función de transferencia en lazo abierto para el sistema de la figura es:

De este modo, el controlador PID ha incrementado el número de ceros en 2 y el número de polos en 1. También el factor 1/s incrementa el tipo de sistema en 1. En la ecuación anterior se supone que se ha empleado un diferenciador ideal.

c       

? ?? ?? ?? ? El objetivo de los ajustes de los parámetros PID es lograr que el bucle de control corrija eficazmente y en el mínimo tiempo los efectos de las perturbaciones; se tiene que lograr la mínima integral de error. Si los parámetros del controlador PID (la ganancia del proporcional, integral y derivativo) se eligen incorrectamente, el proceso a controlar puede ser inestable, por ejemplo, que la salida de este varíe, con o sin oscilación, y está limitada solo por saturación o rotura mecánica. Ajustar un lazo de control significa ajustar los parámetros del sistema de control a los valores óptimos para la respuesta del sistema de control deseada. El comportamiento óptimo ante un cambio del proceso o cambio del "setpoint" varía dependiendo de la aplicación. Generalmente, se requiere estabilidad ante la respuesta dada por el controlador, y este no debe oscilar ante ninguna combinación de las condiciones del proceso y cambio de "setpoints". Algunos procesos tienen un grado de no-linealidad y algunos parámetros que funcionan bien en condiciones de carga máxima no funcionan cuando el proceso está en estado de "sin carga". Hay varios métodos para ajustar un lazo de PID. El método más efectivo generalmente requiere del desarrollo de alguna forma del modelo del proceso, luego elegir P, I y D basándose en los parámetros del modelo dinámico. Los métodos de ajuste manual pueden ser muy ineficientes. La elección de un método dependerá de si el lazo puede ser "desconectado" para ajustarlo, y del tiempo de respuesta del sistema. Si el sistema puede desconectarse, el mejor método de ajuste a menudo es el de ajustar la entrada, midiendo la salida en función del tiempo, y usando esta respuesta para determinar los parámetros de control. Ahora describimos como realizar un ajuste manual. . Solamente el valor de avanacción? puede proveer la mayor porción de la salida del controlador. El controlador PID puede ser usado principalmente para responder a cualquier diferencia o "error" que quede entre el setpoint y el valor actual del proceso. Como la salida del lazo de avanacción no se ve afectada a la realimentación del proceso, nunca puede causar que el sistema oscile, aumentando el desempeño del sistema, su respuesta y estabilidad. Por ejemplo, en la mayoría de los sistemas de control con movimiento, para acelerar una carga mecánica, se necesita de más fuerza (o torque) para el motor.

c       

Si se usa un lazo PID para controlar la velocidad de la carga y manejar la fuerza o torque necesaria para el motor, puede ser útil tomar el valor de aceleración instantánea deseada para la carga, y agregarla a la salida del controlador PID. Esto significa que sin importar si la carga está siendo acelerada o desacelerada, una cantidad proporcional de fuerza está siendo manejada por el motor además del valor de realimentación del PID. El lazo del PID en esta situación usa la información de la realimentación para incrementar o decrementar la diferencia entre el setpoint y el valor del primero. Trabajando juntos, la combinación avanacción-realimentación provee un sistema más confiable y estable. PID como PI solamente. ?  ? ? ??  ? 

? El propósito de la aplicación de éste controlador es describir cómo un PIC16F684 se puede utilizar para implementar una posición? Proporcional-integral-derivativo (PID) de control de retroalimentación en un sistema intrínsecamente inestable. El péndulo Invertido se utiliza para demostrar este tipo de control; consiste de tres partes principales: La plataforma de base, el péndulo y la placa controladora, como se muestra en la Figura.

? ?  ?   ??  ? ? La plataforma de base es una plataforma de 3 puntos, 2 ruedas (una de los cuales se orienta y conecta a un motor de corriente continua) y un jack de audio.

c       

Cuando el motor de corriente está activado, la base de plataforma girará alrededor de un círculo con el centro del eje de rotación. El jack de audio tiene 2 propósitos: En primer lugar se utiliza como el eje de rotación para la plataforma de base y en segundo lugar, se utiliza para llevar potencia de conmutación a la tarjeta controladora. ? ? El péndulo está sujeto a la plataforma de base por un potenciómetro rotativo libre de 360º. La base del péndulo se adjunta al potenciómetro de tal manera que cuando el péndulo está equilibrado (totalmente vertical), el centro del potenciómetro del grifo está sesgado a Vref / 2. Para el resto de esta aplicación se utiliza el ángulo de desplazamiento del péndulo con respecto al el eje vertical.? ?  ?   ? ?

? ? ? La placa controladora tiene 2 funciones principales: medir y manejar el motor de CC. El suministro de energía necesaria para ejecutar el sistema está dada por la selección de la de motor. El motor está controlado por un puente H que es manejado por un PIC16F684 / Comparar / Módulo PWM (PECC). Hay 5 potenciómetros situados en la laca controladora, de las cuales 3 se utilizan para ajustar las constantes PID (KP, KI y KD) y uno para medir el ǒ . El quinto potenciómetro se utiliza en unión con el filtro de entrada de referencia. El filtro de entrada es un filtro de paso bajo de Bessel con una frecuencia de corte de 60 Hz y tiene un voltaje de ganancia de 6. Un filtro paso bajo se necesita para eliminar cualquier ruido de alta frecuencia y en la medición de ángulos. El controlador PID es extremadamente sensible.

c       

El filtro de Bessel se utiliza porque tiene la mejor respuesta a una función de paso. (Una vez que el péndulo es equilibrado, un desplazamiento súbito hace que se desequilibre. La frecuencia de corte debe ser por lo menos el doble de la frecuencia esperada del péndulo. La ganancia del filtro debe aumentar la resolución de analógica a digital (A / D). Con el potenciómetro de 360 ° y el convertidor de 10-bits A / D, sin ganancia, un LSb es igual a 0,35 °. Con la ganancia definida en 6, el desplazamiento del ángulo máximo de ± 30 °, ofrece una resolución de 0,059 ° por LSb.   !"!?"?# #$" ?"? !%$&!? ? ?

?

½  ? ? ½ (t) = Punto de referencia deseado Y (t) = Medición de la respuesta E (t) = Error C (t) = ½espuesta del Contralor? ? El punto de ajuste deseado ½ (t) de este sistema se produce cuando ǒ = 0 °. En este estado, es equilibrado el péndulo. Desde que la respuesta deseada del sistema es de 0°, cualquier medida de ángulo distinta de 0 ° es el error o '?()?*?"?()? En la ejecución del controlador PID, existen 3 condiciones que se basan fuera del error de medición. $ ?  + ?,"()????? ? ? ࢚ $ ? - +?ࡷ࢏ ‫ܧ ࢕׬‬ሺ‫ݐ‬ሻ݀‫? ?????ݐ‬

Donde ,?es la constante proporcional.

$ ?   +?KDdE(t)/dt

Donde KD es la constante derivativa

? ? ?

Donde Ki es la constante integral

c       

? "  ?.? ? ? ? En este sistema, la señal de salida del controlador, C (t), determinará la dirección en la que el motor se enciende. La magnitud de C (t) corresponde directamente con el deber de el ciclo del PWM en el módulo del PECC, la determinación de la velocidad a la que el motor se enciende.  ???  ? -  ? ? É?   ? ?  ? ? ?   ? ? ? ? ?  ?  ? ?   ? ? ? ? ? ? ?  ? ?   ?? ?    ?? ??  ? ?  ?? ? ? ?   ?   ???   ? ? Comenzando con el término derivado, podemos utilizar las siguientes ecuaciones en diferenciales para nuestra aproximación.? ?

?

?

? Donde E (n) es el error actual, E (n-1) es el error anterior y TS es nuestro período de muestreo. La ecuación 2 es la pendiente aproximada de la recta tangente a E (t). ? ? ? Con estas aproximaciones podemos reescribir C (t) como se muestra en la ecuación:

? ? ?  /???   ? ? Con el fin de aplicar correctamente el algoritmo de control, el usuario tiene que ver cómo los sistemas mecánicos y eléctricos van a la interfaz juntos. El modelado del péndulo invertido no es una tarea sencilla. Éstas son algunos de las variables que deben ser tomadas en cuenta con el fin de modelar el sistema:?

c       

? ] ] ] ] ] ] ] ] ] ] ] ] ] ]

Bases de posición Bases de velocidad Bases de aceleración Bases de momento de inercia Bases de coeficiente de fricción Bases de masas Bases de longitud La constante gravitacional de la Tierra Posición del Péndulo Velocidad del Péndulo Péndulo de momento de inercia Péndulo de coeficiente de fricción La masa de Péndulo Longitud de Péndulo

? A fin de simplificar todo esto, utilice una regla simple. Seleccione un motor (con el par de apriete correcto, rpm y relación de transmisión a la rueda motriz), que puede acelerar el plataforma de base lo más rápido que el péndulo puede caer. La aceleración angular del péndulo con respecto a la el ángulo de desplazamiento es: ? ? ? Como la aceleración del péndulo no es constante, use la aceleración máxima del péndulo, mediante esta regla. La aceleración máxima del péndulo se producirá cuando ǒ es el ángulo más grande, el controlador para intentar corregir ( ǒ MAX).ǒ MAX es controlado tanto por el hardware como de software. El hardware límite para ǒ MAX es fijado por la ganancia de l filtro de Bessel, con una ganancia de 6, el límite es de ± 30 º o ± 0,523 radianes. Esto puede ser más limitado en el software. ?

? ?  -  ????- ? ? Los gráficos siguientes muestran el flujo de una versión simplificada del código C para el péndulo invertido.

c       

?

 -?? ? ?

?

c       

? "0 ? ?

?

c       

?

c       

? ? ?

?

c       

???  ?(#  ?    ??  ) ? ? CONT½OL MANUAL Y AUTOMÁTICO DE PÉNDULO INVE½TIDO % Este script ejecuta la simulación de un péndulo que puede ser controlado manualmente (accionando % una barra deslizante o "slider") o de forma automática, mediante lazos de control PID. El control % automático incorpora un doble lazo incluyendo un lazo con control del ángulo del péndulo (para que se sitúe en % posición vertical) y otro lazo más lento para hacer que la posición de la base se sitúe en un punto dado % en el estado de equilibrio. % % El script puede ser utilizado tanto como un "equipo de prácticas", en el que pueden % estudiarse diversos conceptos de control, así como servir de base para que el profesor (o el % alumno) elaboren otros ejemplos interactivos totalmente distintos mediante el procedimiento % de "cortar y pegar". % % % Fecha: 2006-11-02 % Autor: Ignacio Díaz % Area de Ingeniería de Sistemas y Automática % Universidad de Oviedo clear; close all; clc; disp('Instrucciones:'); disp('- Pulsar ''0'' para desactivar el sistema de control'); disp('- Pulsar otra tecla para restaurar el sistema de control'); disp(' '); disp('Control manual: actuar sobre la barra deslizante para modificar la base del péndulo.'); pause(2); % PA½ÁMET½OS DEL PÉNDULO l = 2; % Longitud del péndulo m = 1; % Masa del péndulo J = m*l^2; % Momento de inercia referido al eje B = 1; % Coeficiente de fricción g = 10; % Aceleración de la gravedad % ESTADO INICIAL DEL PÉNDULO x = [pi-0.1;0]; % Para que se vea el efecto del control, empezamos % con el péndulo casi vertical (theta = pi +/- "algo")

c       

% DEFINICIÓN DE UN "SLIDE½" PA½A CONT½OLA½ MANUA LMENTE EL PÉNDULO f = figure(1); set(f,'pos',[200,200,700 700]); h = uicontrol('style','slider','pos',[20 20 680 20],'min', -4,'max',4); Tm = 0.01; e0 = zeros(2,1); ep0 = zeros(2,1); x0 = [0;0]; a0 = [0;0];

% Período de muestreo % Condiciones iniciales del control de ángulo % Condiciones iniciales del control de posición % Condiciones iniciales del péndulo

xmin = -2; xmax = +2; y = x(1); % PA½ÁMET½OS DEL CONT½OL PID DEL ÁNGULO Kp = 10; Ki = 100; Kd = .1; s = tf('s'); Cth = c2d(Kp + Ki/s + Kd*s/(0.01*s+1),Tm,'tustin'); % PA½ÁMET½OS DEL CONT½OL PID DE LA POSICIÓN DE LA BASE Cpos = c2d(.04 + 0.0001/s + s*0.0001/(0.01*s+1),Tm,'tustin'); pos = 0; % Valor inicial de la posición de la base del péndulo k = 2; % Empezamos en k=2 para tener acceso al menos a dos muestras anteriores while 1, k = k + 1; % BUFFE½ CON LA POSICIÓN (X(3) TIENE LA POSICIÓN ACTUAL) % X(k) = get(h,'Value'); e(k) = pi-y; % ½EST½INGIMOS EL VALO½ DEL E½½O½ AL INTE½VALO [ -pi,pi] e(k) = mod(e(k)+pi,2*pi)-pi; % CONT½OL DE LA POSICIÓN DE LA BASE DEL PÉNDULO ep = 0-pos; [dpos,ep0] = filter(Cpos.num{1},Cpos.den{1},ep,ep0);

c       

e(k) = e(k) - dpos; % SELECCIÓN DE CONT½OL MANUAL / CONT½OL AUTOMÁTICO tecla = get(f,'currentchar'); switch tecla case '0' pos = get(h,'value'); otherwise [pos,e0] = filter(Cth.num{1},Cth.den{1},e(k),e0); end

% Suavizado de la aceleración (muy conveniente, porque el movimiento del % objeto "slider" con un ratón se produce a saltos, dando lugar a segundas % derivadas muy elevadas) [X(k),x0] = filter(.01,poly([.9 .9]),pos,x0); [a,a0] = filter((1/Tm^2)*[1 -2 1],[1 0 0],X(k),a0); A(k) = a; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%% % ECUACIONES EN ESPACIO DE ESTADOS (NO LINEALES) DEL PÉNDULO u = -a; % Asignamos la entrada % Ecuación de estados x(1) = x(1) + Tm*x(2); x(2) = x(2) + Tm*(1/J*(-B*x(2)-m*g*l*sin(x(1))+m*u*l*cos(x(1)))); % Ecuación de salida y = x(1); th = y;

% Asignamos la salida

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%

% ½EP½ESENTACIÓN G½ÁFICA DE LA SIMULACIÓN figure(1); plot(X(k),0,'.'); hold on; p1 = X(k); p2 = X(k)+l*exp(j*(th-pi/2)); line(real([p1,p2]),imag([p1,p2])); plot(real(p2),imag(p2),'.','markersize',40); hold off;

c       

% Sugerencia: pueden dibujarse también otras flechas indicando en tiempo real las fuerzas reales % o de inercia que actúan en cada elemento del sistema % Centrado automático de la perspectiva sobre el objeto de control if X(k)>xmax-1 xmin = xmin + 0.1; xmax = xmax + 0.1; elseif X(k)