1. Tecnológico Nacional de México
Instituto Tecnológico de Apizaco
CONTROL
PROYECTO FINAL “NIVEL DE AGUA”
VANESSA SANCHEZ ROJAS
VICTOR NEZAHUAL RODRIGUEZ
ALFONSO ALVARADO LOPEZ
MAURO ALEJANDRO CALVA SILVESTRE
DEIVID BRANDON CUAMATZI CUAMANTZI
08/06/2016
2. JUSTIFICACION
La razón del proyecto del porque se realizó, es para lograr el control
del nivel de agua en un tanque de almacenamiento, donde
constantemente los sensores nivel están recabando datos, para
conocer la cantidad de agua en él.
Una de las principales razones, es para poder evitar el desperdicio de
agua potable, al seguir teniendo la llave abierta que llena el depósito
y no permitir que el tanque de agua, se quede sin líquido, pues esto
ocasionaría daños al sistema eléctrico de bombeo, así como fallos en
el servicio de abastecimiento de agua.
INTRODUCCION
Un sistema de control puede ser representado gráficamente por un
diagrama de bloques, tales diagramas de bloques indican la
interrelación existente entre los distintos componentes del sistema.
En un diagrama de bloques, todas las variables del sistema se enlazan
entre sí por medio de bloques funcionales. El bloque funcional, o
simplemente bloque, es un símbolo de la operación matemática que
el sistema produce a la salida sobre la señal de entrada. Una flecha
hacia adentro del bloque indica la entrada y la que se aleja del bloque
indica la salida. Debe notarse que la magnitud de la señal de salida
del bloque será la señal de entrada multiplicada por la función de
transferencia del bloque.
Un componente importante dentro de un diagrama de bloques es el
denominado punto de suma. Su símbolo, un círculo con una cruz,
indica la operación suma. El signo “+” ó “-“expresa si la señal ha de
sumarse o restarse.
3. En controles industriales es muy común encontrar los siguientes 5
tipos de reguladores:
• Dos posiciones (ON-OFF).
• Proporcional (P).
• Proporcional-Integral (PI).
• Proporcional-Derivativo (PD).
• Proporcional Integral Derivativo (PID).
Control Proporcional. (P)
La función de transferencia entre la salida del controlador u(t) y la
señal de error e(t) es:
Donde KP se denomina ganancia proporcional. Otro parámetro
importante en la acción de este controlador, es la denominada
banda proporcional que expresa que tan grande será la acción de
control ante una señal de error en la entrada, y es igual a:
4. Control Proporcional – Integral. (PI)
El valor de salida del controlador proporcional varía en razón
proporcional al tiempo en que ha permanecido el error y lamagnitud
del mismo, su función de transferencia es:
Donde KP es la ganancia proporcional y TN se denomina tiempo de
acción integral. Ambos valores son ajustables. El tiempo integral
regula la velocidad de acción de control, mientras que una
modificación en KP afecta tanto a la parte integral como a la parte
proporcional de la acción de control.
Control Proporcional – Derivativo. (PD)
Por lo general, una gran pendiente en e(t) en un sistema lineal
correspondiente a una entrada escalón considerable produce un
gran sobre impulso en la variable controlada. El control derivativo
mide la pendiente instantánea de e(t), prediciendo que tan grande
será el sobre impulso aplicando las correcciones apropiadas antes de
5. que se presente ese sobre impulso. La función de transferencia del
control PD es:
Donde TV se denomina duración predicha.
Control Proporcional – Integral – Derivativo. (PID)
Esta combinación tiene la ventaja de que cada una de las tres
acciones de control son individuales. La función de transferencia es:
Calibración de Controladores.
El proceso de seleccionar los parámetros del controlador para que el
sistema cumpla con las especificaciones de diseño se conoce como
calibración o ajuste del controlador. Las reglas de ZieglerNichols
sugieren un método para afinar controladores PID basándose en la
respuesta experimental ante una señal escalón de entrada. La regla
de Ziegler-Nichols es muy conveniente cuando no se conocen los
modelos matemáticos de las plantas.
La respuesta de salida de sistemas de orden superior, por lo general,
ante un escalón y en lazo abierto es una curva en forma de S que
6. puede caracterizarse por dos parámetros: el tiempo muerto TU y la
constante de tiempo Tg. El tiempo muerto o de atraso y la constante
de tiempo se determinan trazando una línea tangente a la curva en
forma de S en el punto de inflexión y se encuentran las
intersecciones de esta línea tangente con el eje del tiempo y con la
línea c(t) = K .
Ziegler-Nichols sugiere fijar los valores de Kp , TN y TV de acuerdo a
la tabla:
Ejemplos donde podemos usar el PID
Se desea controlar el caudal de un flujo de entrada en un
reactor químico. En primer lugar se tiene que poner una
válvula de control del caudal de dicho flujo, y un
caudalímetro, con la finalidad de tener una medición
constante del valor del caudal que circule. El controlador
irá vigilando que el caudal que circule sea el establecido
por nosotros; en el momento que detecte un error,
mandará una señal a la válvula de control de modo que
esta se abrirá o cerrará corrigiendo el error medido. Y
tendremos de ese modo el flujo deseado y necesario. El
PID es un cálculo matemático, lo que envía la información
es el PLC.
Se desea mantener la temperatura interna de un reactor
químico en su valor de referencia. Se debe tener un
7. dispositivo de control de la temperatura (puede ser un
calentador, una resistencia eléctrica,...), y un sensor
(termómetro). El P, PI o PID irá controlando la variable (en
este caso la temperatura). En el instante que esta no sea
la correcta avisará al dispositivo de control de manera que
este actúe, corrigiendo el error. De todos modos, lo más
correcto es poner un PID; si hay mucho ruido, un PI, pero
un P no nos sirve mucho puesto que no llegaría a corregir
hasta el valor exacto.
PROCEDIMIENTO
Una vez yahabiendo visto los ejemplos de las diferentes aplicaciones
de cada tipo de control, comenzaremos con el ejemplo de este
proyecto, el cual es la regulación del nivel de agua de un tanque.
Nuestra función de transferencia para un tanque.
8. Para esto, se realizó la simulación del sistema en Labview, donde se
introdujo, también un diagrama de bloques con su respectiva
programación
El diagrama de bloques, cuenta con un paro e inicio de sistema, un
tanque, controles de nivel máximo y mínimo de agua, así como
comparadores y alertas de nivel.
9. La forma de trabajar del sistema es el siguiente,
- Cuando el nivel de agua está por debajo del nivel que con
anterioridad se establece, este mismo manda una señal de
alerta.
- Cuando el nivel de agua está dentro, del rango establecido este
mismo, no mandara ninguna señal pues el sistema se
encuentra en un modo aceptable de funcionamiento.
- Por ultimo tenemos el caso, donde el nivel de agua rebasa en
punto establecido, por la programación en el diagrama de
bloques. De la misma manera mandara la señal de alerta, para
que el control corrija este exceso de nivel
10. Lenjuaje en c:
include "18f4550.h"
#fuses
HSPLL,NOWDT,NOBROWNOUT,NOPROTECT,NOLVP,NODEBUG,USB
DIV,PLL5,CPUDIV1,VREGEN,MCLR,NOPBADEN,WRTB,CPB
#use delay(clock=20000000) //FREC DE OSC DEL MICRO
#BUILD(reset=0x800,interrupt=0x808)
#ORG 0x0000,0x07ff {}
VOID MAIN(){
11. INT16 valor , control; //variable para lectura de ADC y señal de
contol a modulo CCP
FLOAT a,b,c; //CONSTANTES PARA PARAMETROS DE
CONTROLADOR PID
FLOAT TEMPERATURA_LIMITE; //Referencia de temperatura
FLOAT rT,eT,iT,dT,yT,uT,iT0,eT0;
FLOAT max,min;
min=0.0;
max=1000.0;
iT0=0.0;
eT0=0.0;
a=0.1243;
b=0.0062;
c=0.6215;
TEMPERATURA_LIMITE=1200.0 ; //Set point r(kT)=120°C
setup_timer_2(t2_div_by_4,249,1); //configuracion de timer2
para establecer frec. PWM a 1kHz
setup_ccp1(ccp_pwm); //configurar modulo CCP1 en
modo PWM
setup_adc_ports(all_analog); //configurar ADC
12. setup_adc(adc_clock_internal);
set_adc_channel(0); //selecionar el canal 0 para sensor
de temperatura
while(true){
valor=read_adc(); //leer ADC
yT=5000.0*valor ; //Escalizar señal de salida y(kT)
rT=TEMPERATURA_LIMITE;
eT=rT-yT; //Calcular señal de error e(kT)
iT=b*eT+iT0; //Calcular termino intregativo i(kT)
dT=c*(eT-eT0); //Calcular termino derivativo d(kT)
uT=iT+a*eT+dT; //Calcular señal de control u(kT)
if(uT>max){ //Anti-windup
uT=max;}
else{
if(uT<min){
uT=min;
}