Académique Documents
Professionnel Documents
Culture Documents
PROYECTO:
DOCENTE:
AUTOR:
CONTROLADOR PID
Para la obtención de los datos hemos procedido a usar un sensor LM35, el cual va conectado a
al puerto A0 del PIC16F877a, y trasmitimos mediante rs232 a la PC
Conversión a temperatura
LM35
Cuando el LM35 se aplica con una resistencia de carga de 200 W como se muestra en la Figura
5, Figura 6 o Figura 8, es relativamente inmune a la capacitancia de cableado porque la
capacitancia forma un bypass desde tierra a entrada, no a la salida. Sin embargo, como con
cualquier circuito lineal conectado a cables en un entorno hostil, su funcionamiento puede
verse afectado negativamente por fuentes electromagnéticas intensas tales como relés,
transmisores de radio, Motores con escobillas de arco, transitorios SCR, etc., ya que su
cableado puede actuar como antena receptora y sus uniones internas pueden actuar como
rectificadores. Para obtener mejores resultados en estos casos,
Un condensador de derivación de VIN a tierra y un amortiguador de serie R-C tal como 75 Ohm
en serie con 0,2 o 1 μF de salida a tierra son a menudo útiles. Estos se muestran en la Figura
13, Figura 14, y Figura 16.
Entradas y salidas analógicas
Una señal eléctrica analógica es aquella en la que los valores de la tensión o voltaje varían
constantemente y pueden tomar cualquier valor. En el caso de la corriente alterna, la señal
analógica incrementa su valor con signo eléctrico positivo (+) durante medio ciclo y
disminuye a continuación con signo eléctrico negativo (–) en el medio ciclo siguiente.
Por lo tanto todo valor analógico intermedio es expresado con un valor entre 0 y 1023, es
decir, sumo 1 en binario cada 4,883 mV.
El pic 16F877A tiene una resolución de 10 bits, es decir, unos valores entre 0 y 1023.
Figura3
Por información del Datasheet nos dice que hace la conversión 10mV/°C
284.7𝑚𝑉 ∗ 1°𝐶
𝑇= = 28.47°𝐶
10𝑚𝑉
Entonces resumiendo Código en Matlab tenemos
𝐴𝐷𝐶∗5𝑉 1°𝐶 𝐴𝐷𝐶∗500
𝑇= ∗ = [°𝐶 ]
1023 10𝑚𝑉 1023
Figura 4
1
Vemos en la gráfica la respuesta nuestro sistema al Escalón 𝑅(𝑠) = 𝑠 llega a alcanzar
una temperatura máxima cerca a los 90°C después de casi más de una hora.
𝐾
𝐺(𝑆) =
𝜏𝑆 + 1
El modelo que describe la respuesta es
R(s) Y(s)
G(s)
1 𝐾𝑠
𝑌(𝑠) = 𝑅 (𝑠) ∗ 𝐺 (𝑠) =
𝑠 (1 + 𝜏𝑠)
Figura 5
Como visualizamos la gráfica de los datos obtenidos haciendo uso del comando plot. Y
llevando los datos a Excel tenemos:
τ : Constante de tiempo
𝑎 =0.00098619
𝐾
𝐺(𝑆) =
𝑆+𝑎
Ahora para hallar K se aplica del Teorema del valor final
1 𝐾 𝐾
𝑉𝑓 = lim 𝑠 ∗ 𝑌(𝑠) = lim 𝑠 ∗ ∗ =
𝑠→0 𝑠→0 𝑠 𝑆 + 𝑎 0.00098619
𝐾
90.91 =
0.00098619
𝐾 = 90.91 ∗ 0.00098619
𝐾 = 0.08966
Entonces tenemos
0.08966
𝐺 (𝑆) =
𝑆 + 0.00098619
Diseño del controlador de nuestra planta
Nos vamos al Matlab y en el editor escribimos, y corremos.
%% Open loop response to step
%G(S) = K/((S+a)
clc;clear;clf;
%Definimos la planta mediante zeros,poles,gain
G = zpk([],[-0.00098619],0.08966)
clc;clf;
step(1,1);hold on
step(G);
Según nuestro G(s) tenemos un polo cerca al origen lo que significa que nuestro
sistema es lento.
0.08966
𝐺(𝑆) =
𝑆 + 0.00098619
Vemos que al agregar un integrador a nuestro sistema se hace lento por el polo de
nuestra planta que está muy cercano al origen
Lo que hacemos es colocar un Zero cerca de -0.00098619 para anular el efecto del polo
de la planta.
Respuesta del sistema cuando colocamos un Zero en -0.000986
Vemos que el tiempo de respuesta de nuestro sistema será a los 4.9s cuando nuestra
planta esté en 0°C.
En este caso queremos hacer un controlador PID que consta de 2 zeros, un polo real un
integrador y una ganancia.
Completamos nuestro controlador así:
(s + 1.8) (s + 0.000986)
𝐶(𝑠) = 4.9
s (s + 1.2)
Respuesta del sistema con respecto al controlador C(s)
Se cumple que nuestros polos estén dentro del circulo unitario exportamos nuestro
C(z)
Sample time: 0.25 seconds
Discrete-time zero/pole/gain model.
Respuesta de nuestro sistema en Z
(z − 1) (z − 0.611)
𝐶(𝑧) = 4.9
(z − 1) (z − 0.741)
𝑈(𝑧) (z − 1) (z − 0.611) 𝑧 −2
= 4.9 ∗
𝐸(𝑧) (z − 1) (z − 0.741) 𝑧 −2
#include <16F877A.h>
#device ADC=10
#FUSES PUT //Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOCPD //No EE protection
#FUSES BROWNOUT //Reset when brownout detected
#FUSES NOWRT //Program memory not write protected
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOWDT
#FUSES HS
#use delay(Clock=4M)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,bits=8)
#use FIXED_IO( B_outputs=PIN_B0 )
//Declaracion de variables
long adc_value,set_point , duty,duty2, tk;
float rk, yk, ek,ek_1,ek_2,uk,uk_1,uk_2;
float Temp, Sensor, Error;
// Interrupcion generada por el desbordamiento del timer1
#int_timer1
void timer1_isr(void)
{
set_timer1(34285); //recargamos el timer1
output_high(Tsample); /* inicio de medición de tiempo utilizado por el uC
//en lectura de ADC, conversión e impresión de valores */
ek_2 = ek_1;
ek_1 = ek;
uk_2 = uk_1;
uk_1 = uk;
void main()
{
init_cpu();
ek=0.0;ek_1=0.0;ek_2=0.0;
uk=0.0;uk_1=0.0;uk_2=0.0;
tk=0;
lcd_init();
printf(lcd_putc,"\f DIGITAL CONTROL\n PID TEMPERATURA");
delay_ms(2000);
LCD_PUTC("\f"); //Limpio el LCD
while(TRUE)
{
lcd_gotoxy(1,1);
printf(lcd_putc,"T=%2.2fC",Temp);
lcd_gotoxy(10,1);
printf(lcd_putc,"S=%2.2fC",Sensor);
lcd_gotoxy(1,2);
printf(lcd_putc,"Er=%2.2f",Error);
lcd_gotoxy(10,2);
printf(lcd_putc,"D=%4ld",duty);
}
}
Diagrama esquemático en Eagle, igual que el proteus a diferencia de la conexión de
alimentaciones y fuente
PCB o board, se muestra el Enrutamiento de las pistas y colocación de componentes
electrónicos.
CONCLUCIONES
Mediante el curso de Control Digital, quiero comentar que se logró el objetivo de diseñar e
implementar controlador Digital para controlar procesos en el ámbito de la vida cotidiana
como en el campo industrial.
La ventaja del controlador Digital con respecto al Analógico es que todo se reduce en un chip, y
podemos aplicar algoritmos infinitos a nuestro proceso, ejemplo como visualizar en tiempo
real el comportamiento de nuestro sistema más fácilmente.
BIBLIOGRAFIA
Dinámica de Sistemas - Katsuhiko Ogata - Capitulo 7 Análisis de sistemas lineales.
REFERENCIAS
https://aprendiendoarduino.wordpress.com/tag/conversor-digital-analogico/
http://www.hubor-proteus.com/proteus-pcb/proteus-pcb/2-proteus.html
https://dominionindustrial.wordpress.com/2014/03/24/aplicaciones-industriales-control-de-
temperatura/