Controlador Pid Digital Implementado en Una Pc
Short Description
Download Controlador Pid Digital Implementado en Una Pc...
Description
ÍNDICE 1.- INTRODUCCIÓN
3
2.- MARCO TEÓRICO
4
2.1 CONTROLADOR PROPORCIONAL INTEGRAL DERIVATIVO
4
2.2 REGLAS DE ZIEGLER-NICHOLS PARA SINTONIZAR CONTROLADORES PID
4
2.3 ESQUEMA DE CONTROL DIGITAL
7
2.4 SEÑALES DIGITALES
8
2.5 MODELOS DE SISTEMAS DISCRETOS
8
2.6 DISEÑO DE CONTROLADORES DIGITALES
10
2.7 DISCRETIZACIÓN DE REGULADORES CONTINUOS
10
2.8 CONTROLADOR PID DISCRETO
11
2.9 PWM
11
3.- DESARROLLO DEL PROYECTO
13
3.1 ADQUISICIÓN DE DATOS
13
3.2 IMPLEMENTACIÓN DEL CONTROLADOR EN MATLAB
15
4.- CONCLUSIONES Y RESULTADOS
19
5.- ANEXOS
21
6.- BIBLIOGRAFIA
22
1.- INTRODUCCIÓN En el presente proyecto se diseñó e implementó un controlador PID digital genérico en una PC, que es capaz de controlar una variable cualquiera dependiendo del sensor conectado a la tarjeta de adquisición de datos, esta a su vez, esta comunicada con la PC vía USB e intercambian información de forma serial, calcula una acción de control e interpreta dicha acción para ser enviada al actuador mediante una salida tipo PWM. A continuación se presenta un diagrama a bloques del controlador.
Sensor
Tarjeta de adquisición de datos (Arduino)
Comunicación Serial
USB PWM
Actuador
El controlador PID (Proporcional, Integral y Derivativo) es un controlador realimentado cuyo propósito es hacer que el error en estado estacionario, entre la señal de referencia y la señal de salida de la planta, sea cero de manera asintótica en el tiempo, lo que se logra mediante el uso de la acción integral. Además el controlador tiene la capacidad de anticipar el futuro a través de la acción derivativa que tiene un efecto predictivo sobre la salida del proceso. El algoritmo de cálculo del control PID se da en tres parámetros distintos: el proporcional, el integral, y el derivativo. El valor Proporcional determina la reacción del error actual. El Integral genera una corrección proporcional a la integral del error, esto nos asegura que aplicando un esfuerzo de control suficiente, el error de seguimiento se reduce a cero. El Derivativo determina la reacción del tiempo en el que el error se produce. La suma de estas tres acciones es usada para ajustar al proceso vía un elemento de control como la posición de una válvula de control o la energía suministrada a un calentador, por ejemplo. CONTROLADOR PID DIGITAL IMPLEMENTADO EN UNA PC
Página 2
Ajustando estas tres variables en el algoritmo de control del PID, el controlador puede proveer un control diseñado para lo que requiera el proceso a realizar.
2.- MARCO TEÓRICO 2.1.- Controlador proporcional integral derivativo Un controlador PID (Proporcional Integral Derivativo) es un mecanismo de control por realimentación que calcula la desviación o error entre un valor medido y el valor que se quiere obtener, para aplicar una acción correctora que ajuste el proceso. La respuesta del controlador puede ser descrita en términos de respuesta del control ante un error, el grado el cual el controlador llega al "set point", y el grado de oscilación del sistema. Se puede indicar que un controlador PID responde a la siguiente ecuación: ( )
( )
( )
∫ ( )
Donde e(t) es el error de la señal y u(t) es la entrada de control del proceso. Kp es la ganancia proporcional, Ti es la constante de tiempo integral y Td es la constante de tiempo derivativa.
En el dominio de la frecuencia, el controlador PID se puede escribir como: ( )
[
] ( )
2.2 Reglas de Ziegler-Nichols para sintonizar controladores PID. Ziegler y Nichols propusieron unas reglas para determinar los valores de la ganancia proporcional Kp, del tiempo integral Ti y del tiempo derivativo Td, con base en las características de respuesta transitoria de una planta especifica. Tal determinación de los parámetros de los controladores PID o de la sintonización de los controles PID la realizan los ingenieros en el sitio mediante experimentos sobre la planta. Existen dos métodos denominados reglas de sintonización de Ziegler-Nichols. En ambos se pretende obtener un 25% de sobrepaso máximo en la respuesta escalón.
CONTROLADOR PID DIGITAL IMPLEMENTADO EN UNA PC
Página 3
En el primer método, la respuesta de la planta a una entrada escalón unitario se obtiene de manera experimental. Si la planta no contiene integradores ni polos dominantes complejos conjugados, la curva de respuesta escalón unitario puede tener forma de S, como se observa en la figura 2. Si la respuesta no exhibe una curva con forma de S, este método no es pertinente. Tales curvas de respuesta escalón se generan experimentalmente o a partir de una simulación dinámica de la planta. La curva con forma de S se caracteriza por dos parámetros: el tiempo de retardo L y la constante de tiempo T. El tiempo de retardo y la constante de tiempo se determinan dibujando una recta tangente en el punto de inflexión de la curva con forma de S y determinando las intersecciones de esta tangente con el eje del tiempo y la línea ( )=K, como se aprecia en la figura 2. En este caso, la función de transferencia ⁄ del modo siguiente:
CONTROLADOR PID DIGITAL IMPLEMENTADO EN UNA PC
Página 4
Figura 2.
Ziegler y Nichols sugirieron establecer los valores de Kp, Ti y Td de acuerdo con la fórmula que aparece en la siguiente tabla.
Tipo de controlador
Kp
P
⁄ ⁄ ⁄
PI PID
Ti
Td 0 0
⁄
Observe que el controlador PID sintonizado mediante el primer método de las reglas de Ziegler-Nichols produce: ( )
( )
[ [
] ]
Por lo tanto, el controlador PID tiene un polo en el origen y un cero doble en s=-1/L.
CONTROLADOR PID DIGITAL IMPLEMENTADO EN UNA PC
Página 5
2.3.- Esquema de control digital El esquema básico del control digital es semejante al del control analógico salvo por el hecho de que el conjunto comparador-regulador se encuentra dentro de un computador. Dicho conjunto comparador-regulador forma parte de un programa dentro del computador. El comparador no es más que una resta entre dos variables y el regulador es una serie de productos y sumas. Para unir este ámbito de números dentro de un programa al ámbito físico del sistema a controlar se necesita una interfaz. Esa es la labor que realizan precisamente los dos elementos nuevos que aparecen en el esquema del control digital respecto al del control analógico: el conversor digital/analógico (D/A) y el conversor analógico digital (A/D). El conversor D/A sirve para convertir el valor de la acción de control calculado dentro del programa en una señal eléctrica física que actúa sobre el proceso. A su vez el conversor A/D sirve para convertir la señal eléctrica que proporciona el sensor en un número dentro del programa.
Esquema de control con regulador continuo (analógico)
Esquema de control con regulador discreto (digital)
CONTROLADOR PID DIGITAL IMPLEMENTADO EN UNA PC
Página 6
2.4.- Señales digitales En un sistema continuo (analógico) las señales vienen representadas por funciones continuas (fig1-a). En un sistema discreto (digital) sin embargo, se representan como secuencias discretas (fig1-b). En el caso que nos ocupa, esas secuencias discretas son una serie de números que provienen de tomar los valores instantáneos de señales analógicas en instantes de tiempo concretos. Es lo que se denomina muestreo. Esos instantes suelen estar equiespaciados por un tiempo T que se denomina periodo de muestreo. A cada uno de los valores se les denomina muestras y se identifican por su número de muestra k. En fig1-b se observa una secuencia y = {y0, y1, y2, . . .}, que proviene de una señal analógica y(t) (fig1-a), con la relación entre muestra k e instante de tiempo kT . La elección del periodo de muestreo es muy importante puesto que un valor demasiado grande hace que se pierda información cuando se muestrean señales rápidas (fig1-c y d)..
2.5.- Modelos de sistemas discretos Al igual que un modelo de un sistema continuo (lineal e invariante) está representado por una ecuación diferencial: ( ) ( )
( )
( )
( )
( )
( )
Un modelo de un sistema discreto viene dado por su ecuación en diferencias:
Donde se observa que las muestras para distintos instantes de muestreo
Desempeñan en la ecuación en diferencias el mismo papel que las derivadas en las ecuaciones diferenciales de los sistemas continuos.
CONTROLADOR PID DIGITAL IMPLEMENTADO EN UNA PC
Página 7
Fig1. (a)Señal analógica representada por función continua, (b) señal digital representada por secuencia discreta, (c) efecto aliasing, (d) Disminución de periodo de muestreo para evitar efecto aliasing
Al igual que en los sistemas continuos podemos obtener la función de transferencia a partir de la ecuación diferencial por medio de la Transformada de Laplace teniendo en cuenta que: ( ) ( ) Para obtener: ( ) ( ) En los sistemas discretos podemos obtener su función de transferencia a partir de la ecuación en diferencias y por medio de la Transformada en Z, sin más que tener en cuenta: ( )
CONTROLADOR PID DIGITAL IMPLEMENTADO EN UNA PC
Página 8
Con lo que obtenemos la función de transferencia: ( ) ( )
2.6.- Diseño de controladores digitales Existen dos enfoques a la hora de realizar el diseño de un controlador discreto: 1. Diseñar directamente en “z ” trabajar con sistemas discretos y metodologías aplicables a los mismos. 2. Diseñar en “ s “ y pasar a “z “: se pueden aplicar todos los conocimientos de sistemas continuos para obtener un regulador continuo y luego convertir ese regulador continuo en uno discreto (discretizar).
2.7.- Discretización de reguladores continuos Para obtener la versión discreta de un sistema continuo se dispone, a grandes rasgos, de dos posibilidades:
Método exacto: tener en cuenta la relación
Métodos aproximados: por ejemplo el de la derivada.
El más sencillo es el método de la derivada, que consiste en aproximar la derivada por la pendiente de la recta que pasa por dos muestras consecutivas, con lo cual tenemos: ( )
Que visto en sus correspondientes transformadas se convierte en: ( )
( )
Por lo tanto, para obtener el regulador discreto a partir del continuo basta sustituir en la función de transferencia las s por
CONTROLADOR PID DIGITAL IMPLEMENTADO EN UNA PC
Página 9
2.8.- Controlador PID discreto De acuerdo a lo visto en el punto anterior, podemos obtener un PID discreto a partir de la versión continua, que es: ( ) ( )
[
]
Realizando la sustitución de las s por y operando, finalmente obtenemos la función de transferencia del PID discreto obtenido por la aproximación de la derivada: ( )
[
( (
)
)
] ( )
La función de transferencia discreta, también puede ser representada como:
( ) ( )
(
)
Donde:
2.9.- PWM. La Modulación por Ancho de Pulso (PWM = Pulse Width Modulation) es una técnica para simular una salida analógica con una salida digital. El control digital se usa para crear una onda cuadrada, una señal que conmuta constantemente entre encendido y apagado. Este patrón de encendido-apagado puede simular voltajes entre 0 (siempre apagado) y 5 voltios (siempre encendido) simplemente variando la proporción de tiempo entre encendido y apagado. A la duración del tiempo de encendido (ON) se le llama Ancho de Pulso (pulse width). Para variar el valor analógico cambiamos, o modulamos, ese ancho de pulso.
CONTROLADOR PID DIGITAL IMPLEMENTADO EN UNA PC
Página 10
El ciclo de trabajo de una señal periódica es el ancho relativo de su parte positiva en relación con el período. Expresado matemáticamente:
D es el ciclo de trabajo τ es el tiempo en que la función es positiva (ancho del pulso) T es el período de la función
La construcción típica de un circuito PWM se lleva a cabo mediante un comparador con dos entradas y una salida. Una de las entradas se conecta a un oscilador de onda dientes de sierra, mientras que la otra queda disponible para la señal moduladora. En la salida la frecuencia es generalmente igual a la de la señal dientes de sierra, y el ciclo de trabajo está en función de la portadora. La principal desventaja que presentan los circuitos PWM es la posibilidad de que haya interferencias generadas por radiofrecuencia. Éstas pueden minimizarse ubicando el controlador cerca de la carga y realizando un filtrado de la fuente de alimentación.
CONTROLADOR PID DIGITAL IMPLEMENTADO EN UNA PC
Página 11
3.- DESARROLLO DEL PROYECTO En el presente proyecto se diseñó un controlador PID digital mediante el GUIDE (Graphical User Interface Development Enviroment) de MATLAB, dicho controlador trabaja con una frecuencia de muestreo de 1kHz que permite modificar desde el entorno gráfico las ganancias del controlador y el valor de la referencia (set-point SP), y mostrar gráficamente el valor más reciente de la variable en proceso y de la acción de control, actualizados en cada instante de muestreo. Para la adquisición de datos, se utilizó el microcontrolador AT-Mega 328 integrado en la tarjeta electrónica Arduino, el cual recibe el voltaje entregado por el sensor, le obtiene su equivalente digital y lo envía de manera serial a la PC, esperando como respuesta la acción de control calculada por el controlador para posteriormente ser enviado por un canal de salida en formato PWM.
3.1.- Adquisición de datos En esta etapa del proyecto se utilizó la tarjeta electrónica Arduino, ya que puede llegar a tener una frecuencia de trabajo elevada y así cumplir con el requerimiento de la frecuencia de 1 kHz sin problemas, así como también poder establecer la comunicación vía serial de manera eficiente. Se utilizó el entorno de programación propio de Arduino para la elaboración del programa, el cual se encarga de procesar mediante el convertidor A/D la señal recibida del sensor y enviarla vía USB de manera serial y esperar como respuesta del controlador la acción calculada en base a los parámetros establecidos para después procesar la respuesta recibida y convertirla para ser enviada por el canal de salida en formato PWM.
CONTROLADOR PID DIGITAL IMPLEMENTADO EN UNA PC
Página 12
CONTROLADOR PID DIGITAL IMPLEMENTADO EN UNA PC
Página 13
3.2.- Implementación del controlador en MATLAB La interfaz gráfica del controlador, es capaz de recibir del usuario (por medio de cuadros de texto editables) las ganancias, constantes de tiempo y referencia para realizar el cálculo de la acción de control correspondiente a esos parámetros, permite también mostrar de manera gráfica los valores actuales de la variable en proceso así como de la acción de control.
Para poder ver el correcto funcionamiento del controlador se utilizó un sensor de temperatura LM35 y una bombilla de 5W para controlar la temperatura de una caja. La línea verde representa la referencia, la azul el valor más reciente de la variable en proceso y la roja es la acción de control calculada y ajustada en un rango de 0 % a 100 % de su capacidad. El programa responde instantáneamente después de haber recibido un dato válido, ejecutando la función captura_callback configurada en la propiedad “BytesAvailableFcn” del objeto serial (s=serial(‘COMX’)), de este modo la velocidad de procesamiento del controlador estará dada directamente por la rapidez en la que son transmitidos los datos desde el Arduino. El programa reconocerá como dato válido hasta que llegue un terminador, en este caso es un salto de línea, estas características fueron configuradas en las propiedades BytesAvailableFcn y Terminator del objeto serial. set(s,'BytesAvailableFcnMode','terminator') set(s,'Terminator','LF')
La función captura_callback, es la que realiza el cálculo de la acción de control; el siguiente esquema representa la serie de acciones que realiza. CONTROLADOR PID DIGITAL IMPLEMENTADO EN UNA PC
Página 14
SetPoint r(T)
Actualización de variables i(T0)=i(T) e(T0)=e(T)
Muestreo de la señal de salida y(T)
Transferencia de u(T) al actuador
Cálculo de error e(T)= r(T)-y(T)
Cálculo de la salida PID u(T)=a*e(T)+i(T)+ d(T)
Cálculo del termino integral i(T)=b*e(T)+i(T) Cálculo del termino derivativo d(T)=c*e(T)c*e(T0)
Antes de que sea ejecutado el programa, se deben de inicializar las variables e(T0) e i(T0) en ceros, eso se hizo desde la función OpeningFcn, también desde la misma función se declararon las variables que se ocuparían en la función principal así como las variables globales. function visual2_OpeningFcn(hObject, eventdata, handles, varargin) global hand s iT0 n y global eT0 v_ent y = []; y1=[]; r=[]; n = 0; iT0=0; eT0=0; v_ent=[]; s=0; handles.output = hObject; % Update handles structure guidata(hObject, handles); hand = handles; delete(instrfind); CONTROLADOR PID DIGITAL IMPLEMENTADO EN UNA PC
Página 15
CODIGO DE LA FUNCIÓN CAPTURA_CALLBACK ------------------------------------------------------------function capturar_callback(varargin) global s hand v_ent n global iT0 n y global eT0 y1 r v_ent = fgetl(s); v_ent = str2num(v_ent); set(hand.text4,'string',v_ent); temp1=v_ent*500/1024; %equivalente del voltaje en °C set(hand.text20,'string',temp1); a=get(hand.edit_kp,'string'); a=str2num(a); temp=get(hand.edit_ti,'string'); temp=str2num(temp); b=(a*(0.001))/temp; temp=get(hand.edit_td,'string'); temp=str2num(temp); c=((a*temp)/(.001))/1000; %los valores de a,b y c son calculados según:
ent=v_ent; rf=get(hand.referencia,'value'); temp2=rf*500/1024; set(hand.text21,'string',temp2); error=rf-ent; set(hand.s_error,'string',error); iT=(b*error+iT0); dT=c*(error-eT0); uT=iT+a*error+dT; porc=(uT*255)/((b*1023+iT0)+(c*(1023-eT0))+(a*1023)); porc=fix(porc); iT0=iT; eT0=error; if porc10000, uT=10000; end; if uT0, set(hand.text13,'visible','off'); end; set(hand.s_ctrl,'string',uT); n = n + 1; y = [y,ent]; r=[r,rf]; axes(hand.axes1) if n
View more...
Comments