de Minatitln
control Digital Ay8-1.
Docente: Dr. Jos de Jess Moreno
Vzquez
Ing. Electrnica
Reporte de control PID de la temperatura de un rea.
Edgar Prez Antonio.
N. de control: 12230425
8vo semestre
Objetivo de la prctica:
Hacer el control de temperatura de un rea especfica (caja de la maqueta) mediante los diagramas a
bloques de la herramienta simulink y la tarjeta de adquisicin Arduino due; as como el diseo del
controlador PID y su sintonizacin.
Material y equipo:
Material:
Equipo y software:
Herramientas:
Arduino due.
LCD de 16x2.
Protoboard
Un ventilador de pc.
Simulador electrnico
Proteus
Desarmador
2 focos incandescentes.
Fuente de alimentacin de 5
y 12v
Alambre UTP
Un transistor Tip120
Una computadora.
Desarmadores.
Un amplificador lm324
Termmetro.
Potencimetros de 5k y
10k.
Multmetro.
Visual studio.
Sensor de temperatura
LM35
Teniendo la maqueta lista se mantuvieron los focos encendidos por 30 minutos aproximadamente para
ver cul era la mxima temperatura que podra alcanzar y que tan rpido el ventilador lograba enfriar
dicha rea y estos fueron los resultados:
TIEMPO DE
CALENTAMIENTO
TIEMPO( TEMPERATU
MIN.)
RA(C)
0 T.AMBIENTE
10SEG
35
30SEG
40
1
45
2
52
4
61
6
68
8
76
10
82
12
90
14
95
16
103
18
105
20
109
22
110
24
112
26
115
28
117
30
120
32
122
34
125
36
130
Arduino due:
AT91SAM3X8E
3.3V
7-12V
6-16V
54 (of which 12 provide PWM
output)
12
2 (DAC)
130 mA
800 mA
800 mA
512 KB all available for the user
applications
4
SRAM
Clock Speed
Length
Width
Weight
Se eligi este Arduino por su convertidor anlogo digital que trae integrado un ADC (convertidor anlogo
digital) que tiene una resolucin de 12 bits, es decir nos ofrece 4096 datos de muestreo en el rango de
los 0 volts a 3.3 volts.
Lm35: este sensor de temperatura nos ofrece un cambio de 10mV por cada grado centgrado que se
incrementa, con un rango de temperatura de 0C hasta los 150C.
Si tenemos 10mV x 150C=1.5V considerando esto, no estaramos aprovechando la resolucin del
nuestro Arduino, por lo cual fue elegida esta tarjeta, se acondiciono la seal de entrada para que cuando
tuviramos 1.5v en la entrada ahora nos proporcionara 3.3 volts que es lo que acepta como mximo
voltaje la tarjeta Arduino.
LM324:es un amplificador operacional que cuenta con 4 opam en su encapsulado solo se ocupara uno
fue elegido este amplificador por que puede trabajar con una fuente nica en el rango de los 4 volts hasta
los 22volts, este se aliment con 5 volts y se conect como amplificador no inversor con una ganancia de
k=2.2 para obtener los 3.3 volts cuando el lm35 nos entregue los 1.5v.Se calcularon las resistencias
necesarias por medio de la siguiente formula:
K=1+ R 2/ R 1
Despejando la formula y proponiendo R1=10k
que:
(2.2-1) *(10k) =R2=12k
nos
manera:
queda
Figura 6.-pwm.
No podramos meter directamente la seal de pwm al motor porque daaramos la tarjeta y tambin por
que el voltaje y la corriente demandada por el motor son superiores a las que nos puede entregar el
Arduino se incorpor un transistor NPN TIP120 que tiene como caractersticas elctricas que su voltaje
colector emisor puede ser de 36 volts y una corriente de 2 amperes; adems de un diodo 1N4002 para
evitar los flujos de corriente inversos.
Lcd 16x2:
Se us una lcd para mostrar los valores de la temperatura tanto la de referencia como del sensor que
media la seal de error en nuestro sistema.
Cuando no se tiene conocimiento del proceso, histricamente se ha considerado que el controlador PID
es el controlador ms adecuado. Ajustando estas tres variables en el algoritmo de control del PID, el
controlador puede proveer una accin de control diseado para los requerimientos del proceso en
especfico. La respuesta del controlador puede describirse en trminos de la respuesta del control ante
un error, el grado el cual el controlador sobrepasa el punto de ajuste, y el grado de oscilacin del sistema.
Ntese que el uso del PID para control no garantiza control ptimo del sistema o la estabilidad del mismo.
Algunas aplicaciones pueden solo requerir de uno o dos modos de los que provee este sistema de
control. Un controlador PID puede ser llamado tambin PI, PD, P o I en la ausencia de las acciones de
control respectivas. Los controladores PI son particularmente comunes, ya que la accin derivativa es
muy sensible al ruido, y la ausencia del proceso integral puede evitar que se alcance al valor deseado
debido a la accin de control.
La constante puede ser manipulada para que nos d un valor numrico que se desee, ya haciendo la
prueba la entrada A/D de arduino solo nos mostraba 1023 datos estaba trabajando a 10bits es to porque
todas las tarjetas anteriores a la due solo manejan 10 bits de resolucin y muchos sistemas y prcticas
comunes estn adaptados a estos para lograr que el arduino nos entregue las 4095 muestras se tiene
que habilitar por medio de programacin del arduino.
Para poder habilitar los 12 bits de resolucin se hizo un
llamado s-funtion dentro de la herramienta simulink el cual
realices un bloque de programacin que se descarga
el script (programa para el arduino C/C++)
bloque
permite que
cuando hace
Dentro de este bloque se encuentran los parmetros donde indicas que es lo que quieres que escriba en
el programa en este caso ponemos las libreras que se utilizaran.
Tenemos una ventana que se llama discret update en este bloque se escribe un segmento del programa
que se ejecutara al inicio y volvemos un ciclo infinito para leer solo los datos de la entrada y se escriban
los datos.
Como ltimo le damos build esto nos generara una serie de archivos en la carpeta donde hallamos
guardado el trabajo, buscamos un archivo (dependiendo el nombre puesto ala s-function) en este caso
lcd_wrapper.c lo renombramos y como lcd_wrapper.cpp le damos doble click y se abrir un programa en
11
el editor del Matlab all donde diga void le agregamos extern C en las dos lneas que aparece el
void. Y lo guardamos as el programa sabr que se est trabajando de manera externa.
Paso 3.- se arm todo en el protoboard para probar la lcd asi como el muestreo de la seal de referencia
como la del sensor de temperatura.
12
13
Cuando se logr todo esto se dispuso a realizar el programa en el Matlab>simulink donde insertaremos lo
bloques descritos anteriormente asi como los bloques de acondicionamiento de la seal y del controlador .
Paso 4.Bloque de set-point:
Se inici con los bloques de referencia que entra por el A/D PIN 1 como nos entrega muestras de 0 a
4095 se acondiciona la salida para que cuando tengamos 4095 ser igual a 150 C que es la mxima
temperatura que nos proporciona el sensor lm35.
Si se coloc una constante de 1 para dividirlo porque nos pona un error en la compilacin debido a que
le faltaba un factor multiplicativo, se puso una ganancia para que cuando tuviramos 4095 muestras fuera
igual a 150C la ganancia se escribi asi: 150/4095 es un valor de 27.3, se utiliz un cuantificador para
que las variaciones en la seal de referencia fuera estable y no hiciera una variacin brusca, se agreg
un filtro para que nos promediara cierto nmero de muestras (30) y la variacin fuera ms estable, la
variacin debe ser nula porque solo se realiza un divisor de voltaje supongo que vara por que la corriente
del puerto de la computadora no es suficiente para alimentar la tarjeta ya con todos estos bloques entrara
al sumador.
14
Bloque de la LCD.
Para acondicionar la seales de entrada y visualizar los valores en la LCD se acondicion la seal igual
que en los bloques de referencia y los de retroalimentacin se utiliz un convertidor de datos flotantes a
datos de unit 16 para que la LCD pueda escribir los valores, igual que en los otros bloques los displays
son para visualizar el cambio de valores y asegurar que los valores mostrados son igual que los valores
muestreados.
15
Dentro de los recuadros se ponen los valores de KP, KI, KD seleccionamos el tipo de PID que se utilizara
paralelo o serie.
El bloque de salida est compuesto por un saturador y por un bloque de output de pwm, el bloque de
pwm del Arduino solo permite valores de 0 a 255 variando su ciclo de trabajo y con una frecuencia de
1khz para limitar eso y no sobrepase esos valores es donde entra el bloque saturador para limitar de 0 a
255 no aceptara valores inferiores a 0 ni superiores a 255.
Sintonizacin del PID:
Para la sintonizacin del PID se utiliz el mtodo de Ziegler-Nichols que mediante mtodos
experimentales obtuvieron una relacin de valores para las ganancias KP,Ti,Td variando la ganancia
proporcional en lazo cerrado este es por el segundo mtodo se obtiene el valor mximo (ultimo) donde el
sistema hace una oscilacin sostenida y se realiza una medicin del periodo de una seal que son
llamados Kcu=ganancia ultima
Tu=periodo crtico.
16
11.
5s
Ya teniendo los valore de la ganancia crtica y el periodo crtico se calcularon las ganancias:
Kcu=70, Tcu=11.5s.
Despejando de las tablas se obtuvieron los siguientes valores de ganancias
kp=
Ti=
70
=41.17647059 .
1.7
11.5
=5.75 .
2
Td=
11.5
=1.4375
8
Ki=
41.17647059
=7.16112532
5.75
Kd=41.176470591.4375=59.191176447
17
Resultados:
Se muestra el diagrama a bloques completo con todas las seales para poder correr la simulacin de
simulink
18
Figura 30.-grafica de las seales obtenidas a partir del clculo de las ganancias.
La
lnea
anaranjada
indica el valor
del pwm, la
lnea
azul
indica
la
setpoint.
La lnea azul debe seguir la lnea amarilla para mantener estable la temperatura dentro del interior de la
caja la oscilacin no era demasiada alta pero el pwm no era el adecuado porque entraba en un ciclo
donde solo responda de 0 a 255 y no debe responder asi si no de una manera ms pausada y uniforme.
Estas ganancias no eran adecuadas para nuestro control debido a que el pwm que generaba solo estaba
en dos valores 0 y 255 como un control on-off.
El mtodo no era adecuado, se utiliz la herramienta de Matlab para encontrar la funcin de transferencia
por medio de las grficas de respuesta a la funcin escaln.
19
Se hizo un bloque donde se le puso un generador de pulsos con una amplitud de 0 a 255 y la
retroalimentacin en lazo abierto se le agrego un bloque llamado simout para poder graficar punto a
punto
y
poder
graficarlo
en
el
entorno
de
Matlab.
Figura 33.-diagrama de lazo abierto para obtener las grficas para modelarse en Matlab.
>> plot(ScopeData1(:,2))
>> plot(ScopeData1(:,1))
>> entrada=simout(:,1);
>> salida=simout(:,2);
>> plot(entrada)
>> plot(salida)
>> ident
>> plot(salida)
>> plot(entrada)
>> plot(u2)
>> plot(y2)
Se obtuvieron las grficas de la simulacin, solo se tom una muestra de la grfica donde la seal se
mantena estable
>> ident
>> plot(entrada)
>> entra=entrada(20:30);
>> sali=salida(20:30);
Las muestras que fueron tomadas fueron en los puntos de 20 a 30 segundos donde la seal era estable.
21
Ya despus de importar los datos se estim los valores de los polos y los ceros para que estimara una
respuesta igual ala de la muestra teniendo varias iteraciones
Numero de
iteracin
Porcentaje de
aproximacin.
Numero de
polos.
Numero de
ceros.
36.2%
39.8%
20.6%
50.7%
-117%
-136%
23%
90.6%
22