Anda di halaman 1dari 22

Instituto Tecnolgico

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.

Resistencias: 10k,12k,2.2k Fritzing simulador.


1 diodo 1N4002

Visual studio.

Sensor de temperatura
LM35

Planteamiento del problema:


Se hizo una maqueta que simula lo que es nuestro sistema a controlar, su elaboracin se hizo de
madera, clavos, bisagras; las fuentes de calor son dos focos incandescentes de 100 watts, s puso un
termmetro como referencia de la temperatura en el interior de la caja para verificar si la temperatura
proporcionada por el sensor (LM35) era semejante a la de nuestra referencia, para enfriar nuestro
sistema se le puso un ventilador de PC.

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

Figura 1.-maqueta para simular el


sistema.

Se hizo un diagrama a bloques de lo que era el sistema:

Figura 2.- diagrama a bloques del sistema.

Descripcin de los materiales y acondicionamiento de la seal.

Figura 3.- Arduino due.

Arduino due:

AVR Arduino microcontroller


Microcontroller
Operating Voltage
Input Voltage (recommended)
Input Voltage (limits)
Digital I/O Pins
Analog Input Pins
Analog Output Pins
Total DC Output Current on all
I/O lines
DC Current for 3.3V Pin
DC Current for 5V Pin
Flash Memory

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

96 KB (two banks: 64KB and


32KB)
84 MHz
101.52 mm
53.3 mm
36 g

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

Quedando nuestro diagrama de la siguiente

manera:

queda

Figura 4.- sensor LM35.

Figura5.-diagrama de acondicionamiento de la seal.

TIP120 y salida pwm:


Para controlar la velocidad del motor se emple el mtodo de pwm (pulse width modulation) Esta accin
tiene en cuenta la modificacin del proceso de trabajo de una seal de tipo peridico. Puede tener varios
objetivos, como tener el control de la energa que se proporciona a una carga o llevar a cabo la
transmisin de datos.
La Regulacin por Ancho de Pulso de un motor de CC est basada en el hecho de que, si se recorta la
CC de alimentacin en forma de una onda cuadrada, la energa que recibe el motor disminuir de manera
proporcional a la relacin entre la parte alta (habilita corriente) y baja (cero corrientes) del ciclo de la onda
cuadrada. Controlando esta relacin se logra variar la velocidad del motor de una manera bastante
aceptable.

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.

Figura7. Conexin para la seal pwm.

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.

Figura8.-lcd para mostrar los valores de temperatura.

Marco terico del controlador PID.


Un controlador PID es un mecanismo de control por realimentacin ampliamente usado en sistemas de
control industrial. Este calcula la desviacin o error entre un valor medido y un valor deseado.
El algoritmo del control PID consiste de tres parmetros distintos: el proporcional, el integral, y el
derivativo. El valor Proporcional depende del error actual. El Integral depende de los errores pasados y el
Derivativo es una prediccin de los errores futuros. La suma de estas tres acciones es usada para ajustar
al proceso por medio de un elemento de control como la posicin de una vlvula de control o la potencia
suministrada a un calentador.
7

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.

Figura 9 diagrama a bloques de control PID.


Desarrollo de la prctica:
Paso 1:
Adquisicin de datos con la tarjeta arduino y un potencimetro, s hizo un programa a bloques en el
software simulink como prueba para la adquisicin de los datos de un potencimetro.

Figura 10.-prueba de la tarjeta.

Figura 11.-conexin de la tarjeta.

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

Figura 12.-Bloque para habilitar los 12 bits del arduino.

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.

Figura 13.-librera para activar los 12bits de muestreo.

En el bloque de salida se escribe el segmento de programa:

Figura 14.-segmento que activa los 12 bits.

Ya con esto tenemos habilitado los 12bits de resolucin.


Paso 2:
Para poder visualizar los valores de la temperatura se incorpor una lcd de 16x2 en los bloques de
simulink de la misma manera que se habilito los 12 bits se ocup una s-function para poder integrar un
segmento de programacin que convirtiera las entradas A/D del arduino tanto la de referencia como la
del sensor respectivamente.
Se escribieron las libreras requeridas

Figura 15.-bloque para la lcd.

Figura 16.librerias para la lcd


En propiedades los datos se le asigna cuantas entradas sern y se les asigna un nombre adems que
se le indican de qu tipo sern dobles flotantes string o unit16 para sacarlo por una lcd.
10

Figura 17.-propiedades para la entrada al bloque.


Se escribe un segmento de programa para tener una salida, donde declaramos las variables de la
entrada y la posicin en la cual se escribirn los datos

Figura 18.-declaracion de variables.

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.

Figura 19.- cambios en el programa para la LCD.

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

Figura 20.- diagrama de conexiones en el protoboard.

Figura 21.- diagrama elctrico de conexiones.

Figura 22.-conexiones lista en el protoboard.

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.

Figura 23.- bloque de referencia en simulink

Bloque de retroalimentacin de la planta:


Para el bloque de retroalimentacin se utilizaron los mismos bloques que en el set point solo que la seal
de entrada a la tarjeta venia del amplificador que variaba el rango de voltaje dependiendo la temperatura
del sensor LM35 los display que estn puestos solo son para la visualizacin de la variacin ya que daba
nmeros flotantes pero no logre visualizar todos los datos en el la LCD despus de los bloques anteriores
entraba al sumador el sumador se puso de forma inversa para que nuestra seal fuera contrara cuando
tuviera mucha temperatura en la referencia y menor en la retroalimentacin nos diera un dato negativo y
no accionaria al ventilador si fuera contrario el error sera positivo y accionaria el ventilador por medio del
pwm .

14

Figura 24.- bloque de la retroalimentacin en simulink.

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.

Figura 25.- bloque de visualizacin para la LCD.

Bloque de controlador y de salida:


Despus del sumador se encuentra el error el cual debe ser compensado se puso el bloque de Simulink
de PID que tiene la ventana siguiente:

15

Figura 26.- ventana de parmetros del PID.

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

Figura 27.-tabla de Ziegler-Nichols y oscilacin sostenida para determinar las ganancias.

11.
5s

Figura 28.- oscilaciones sostenidas y ganancia critica.

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

Se pusieron estos valores obtenidos en la ventana del PID

17

Figura 29.- introduccin de los valores de las ganancias.

Resultados:
Se muestra el diagrama a bloques completo con todas las seales para poder correr la simulacin de
simulink

Figura 30.-diagrama del modelado completo.

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

Figura 31.-Temperatura estable.

retroalimentacin de la planta, la lnea amarilla es el

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 32.-ventana del


generador de pulsos

Figura 33.-diagrama de lazo abierto para obtener las grficas para modelarse en Matlab.

Despus se importaron estos datos a matlab con los comandos


>> plot(simout,'DisplayName','simout')
>> plot(simout,'DisplayName','simout')
>> plot(ScopeData1,'DisplayName','ScopeData1')
>> plot(simout(:,1))
>> plot(simout(:,end))
>> plot(ScopeData1(:,end))
>> plot(ScopeData1(:,2))
>> plot(ScopeData1(:,end))
20

>> 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.

Figura 34.- ventana para la estimacin de la funcin de transferencia.

21

Figura 35.- Ventana para Importar Datos.

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%

Despus de varias iteraciones se logro

22

Anda mungkin juga menyukai