Está en la página 1de 120

Universidad de Costa Rica

Facultad de Ingeniera
Escuela de Ingeniera Elctrica




IE 0502 Proyecto Elctrico


Diseo y construccin de un sistema de control de
temperatura para una incubadora de huevos de
aves de corral




Por:
Flix David Surez Bonilla


Ciudad Universitaria Rodrigo Facio
Junio del 2009



Diseo y construccin de un sistema de control de
temperatura para una incubadora de huevos de
aves de corral

Por:
Flix David Surez Bonilla


Sometido a la Escuela de Ingeniera Elctrica
de la Facultad de Ingeniera
de la Universidad de Costa Rica
como requisito parcial para optar por el grado de:

BACHILLER EN INGENIERA ELCTRICA

Aprobado por el Tribunal:


_________________________________
Ing. Ismael Mazn
Profesor Gua


_________________________________ _________________________________
Ing. Teodoro Willink Ing. Felipe Crdoba
Profesor lector Profesor lector









DEDICATORIA

Este proyecto se lo dedico a mis padres por su apoyo
incondicional, esfuerzo y trabajo, pero sobre todo a mis dos abuelas
ya fallecidas Nancy y Tita.




NDICE GENERAL
NDICE DE FIGURAS ....................................................................................................... VIII
NDICE DE TABLAS ........................................................................................................... XI
NOMENCLATURA ............................................................................................................. XII
RESUMEN .......................................................................................................................... XIV
CAPTULO 1: INTRODUCCIN .......................................................................................... 1
1.1 Objetivos .............................................................................................................................. 2
1.1.1 Objetivo general .......................................................................................................................... 2
1.1.2 Objetivos especficos................................................................................................................... 2
1.2 Levantamiento de requerimientos ......................................................................................... 2
1.3 Metodologa ......................................................................................................................... 4
CAPTULO 2: DESARROLLO TERICO ........................................................................... 6
2.1 Sistemas de control en tiempo continuo ................................................................................ 6
2.1.1 Elementos de control .................................................................................................................. 6
2.1.2 Caracterstica esttica ................................................................................................................. 9
2.1.3 Caracterstica dinmica ............................................................................................................. 10
2.1.4 Identificacin experimental ...................................................................................................... 10
2.1.5 Tipos de controladores ............................................................................................................. 11
2.1.5.1 Controlador PID ideal ............................................................................................................ 11
2.1.5.2 Controlador PID paralelo ...................................................................................................... 12
2.1.5.3 Controlador PID serie ............................................................................................................ 13
2.1.5.4 Controlador PID industrial .................................................................................................... 14
2.1.6 Proceso trmico ........................................................................................................................ 15
2.2 Sistemas de control en tiempo discreto................................................................................ 19
2.2.1 Esquema de control digital ....................................................................................................... 19
2.2.2 Modelos de sistemas discretos ................................................................................................. 21
2.2.3 Diseo de un controlador discreto ........................................................................................... 22




2.3 Microcontrolador Atmega16 ............................................................................................... 25
2.3.1 Descripcin general del microcontrolador ............................................................................... 25
2.3.2 Estructura del microcontrolador ............................................................................................... 25
2.3.3 Unidad de procesamiento central ............................................................................................ 27
2.3.3.1 Archivo de registros .............................................................................................................. 27
2.3.3.2 Contador de programa (PC) ................................................................................................... 28
2.3.3.3 Registro de banderas (SREG) ................................................................................................ 29
2.3.3.4 Puntero de pila ..................................................................................................................... 31
2.3.4 Sistema de memoria ................................................................................................................. 32
2.3.4.1 Memoria flash ....................................................................................................................... 32
2.3.4.2 Memoria SRAM ..................................................................................................................... 33
2.3.4.3 Memoria EEPROM ................................................................................................................ 34
2.3.5 Interrupciones ........................................................................................................................... 35
2.3.6 Perifricos ................................................................................................................................. 36
2.3.6.1 Puertos de entrada/salida .................................................................................................... 36
2.3.6.2 Convertidor analgico a digital ............................................................................................. 37
2.3.6.3 Temporizadores .................................................................................................................... 39
CAPTULO 3. IMPLEMENTACIN DEL SISTEMA ....................................................... 45
3.1 Descripcin del sistema ....................................................................................................... 45
3.2 Diseo del sistema .............................................................................................................. 47
3.2.1 Microcontrolador ..................................................................................................................... 47
3.2.2 Actuador .................................................................................................................................. 48
3.2.3 Sensor ...................................................................................................................................... 50
3.2.4 Visualizador .............................................................................................................................. 51
3.2.5 Alarma ...................................................................................................................................... 54
3.2.6 Esquemtico final del controlador ........................................................................................... 55
3.3 Implementacin de la planta ............................................................................................... 56
3.4 Identificacin del proceso ................................................................................................... 58
3.4.1 Obtencin de la curva de reaccin............................................................................................ 58
3.4.2 Obtencin del modelo .............................................................................................................. 59
3.5 Sintonizacin ...................................................................................................................... 59
3.6 Diagrama de flujo ............................................................................................................... 63
3.7 Programacin ..................................................................................................................... 68
3.8 Prototipo final .................................................................................................................... 76




CAPTULO 4: CONCLUSIONES Y RECOMENDACIONES ............................................ 81
BIBLIOGRAFA .................................................................................................................. 85
APNDICE A: CDIGO. .................................................................................................... 88






NDICE DE FIGURAS

Figura 2.1. Diagrama de bloques general de un sistema de control realimentado. ............................ 6
Figura 2.2. Diagrama de bloques detallado de un sistema de control realimentado. ......................... 7
Figura 2.3. Caracterstica esttica. ....................................................................................................... 9
Figura 2.4. Controlador PID serie. ...................................................................................................... 13
Figura 2.5. Controlador PID industrial. .............................................................................................. 15
Figura 2.6. Proceso trmico sencillo. ................................................................................................. 16
Figura 2.7. Red generalizada del proceso trmico. ............................................................................ 17
Figura 2.8. Diagrama de bloques del proceso trmico. ..................................................................... 17
Figura 2.6. Sistema de control en tiempo discreto. ........................................................................... 20
Figura 2.7. Seal discreta. .................................................................................................................. 21
Figura 2.8. Seal analgica. ............................................................................................................... 21
Figura 2.9. Diagrama de bloques del Atmega16. ............................................................................... 26
Figura 2.10. Archivo de registros. ...................................................................................................... 27
Figura 2.11. Registros X, Y y Z. ........................................................................................................... 28
Figura 2.12. Registro de banderas. .................................................................................................... 29
Figura 2.13. Puntero de pila............................................................................................................... 32
Figura 2.14. Mapa de memoria. ........................................................................................................ 33
Figura 2.15. Memoria SRAM. ............................................................................................................. 34
Figura 2.16. Configuracin de pines del microcontrolador Atmega16. ............................................. 37
Figura 2.17. Convertidor analgico a digital del Atmega16. .............................................................. 38




Figura 2.18. Temporizador/Contador 0. ............................................................................................ 41
Figura 2.19. Temporizador/Contador 1. ............................................................................................ 42
Figura 2.20. Temporizador/Contador 2. ............................................................................................ 43
Figura 3.1. Diagrama del sistema a disear. ...................................................................................... 45
Figura 3.2. Sistema calefactor. ........................................................................................................... 48
Figura 3.3. Manejo del sistema calefactor. ........................................................................................ 49
Figura 3.4. Sensor de temperatura LM35DT. ..................................................................................... 50
Figura 3.5. Visualizador de siete segmentos de nodo comn NTE3058. ......................................... 52
Figura 3.6. Conexin de los visualizadores al microcontrolador. ...................................................... 53
Figura 3.7. Sistema de alarma............................................................................................................ 55
Figura 3.8. Esquemtico del controlador. .......................................................................................... 56
Figura 3.9. Proceso implementado. ................................................................................................... 57
Figura 3.10. Curva de reaccin del proceso. ...................................................................................... 58
Figura 3.11. Subrutinas de atencin a interrupciones externas. ....................................................... 63
Figura 3.12. Subrutina de interrupcin de sobreflujo en temporizador 1. ........................................ 65
Figura 3.13. Subrutina de sobreflujo en temporizador 0. .................................................................. 66
Figura 3.14. Diagrama de flujo de rutina principal. ........................................................................... 67
Figura 3.15. Subrutina void port_define_IO(void). ............................................................................ 68
Figura 3.16. Subrutina void port_initiate(void). ................................................................................ 69
Figura 3.17. Subrutina void enc_timer0(void). ................................................................................... 69
Figura 3.18. Subrutina void enc_timer1(void). ................................................................................... 70
Figura 3.19. Subrutinas de interrupciones externas. ......................................................................... 70
Figura 3.19 (Continuacin). Subrutinas de interrupciones externas. ................................................ 71




Figura 3.20. Subrutinas config_pwm(). .............................................................................................. 72
Figura 3.21. Subrutina de sobreflujo en temporizador uno. ............................................................. 73
Figura 3.22. Archivo estructuras.h. .................................................................................................... 73
Figura 3.23. Salida del controlador. ................................................................................................... 74
Figura 3.24. Encendido de la alarma.................................................................................................. 75
Figura 3.25. Prototipo final. ............................................................................................................... 76
Figura 3.26. Respuesta del sistema para un valor deseado de 36.5C. ............................................. 77
Figura 3.27. Respuesta del sistema para un valor deseado de 38.5C. ............................................. 78
Figura 3.28. Respuesta del sistema para un valor deseado de 35.5C. ............................................. 79
Figura 3.29. Respuesta del sistema para un valor deseado de 37.2C. ............................................. 80







NDICE DE TABLAS

Tabla 1. Fuentes de interrupcin. ...................................................................................................... 35
Tabla 2. Temporizadores del Atmega16. ........................................................................................... 39
Tabla 3. Equivalencia entre la salida del sensor LM35DT y la temperatura. ..................................... 51







NOMENCLATURA

FTLA Funcin de transferencia de lazo abierto del sistema.

FTLC Funcin de transferencia de lazo cerrado del sistema.

) (s C Funcin de transferencia del controlador.

) (s P Funcin de transferencia de la planta.

C
K Ganancia del controlador.

P
K Ganancia de la planta.

) (s L Funcin de transferencia de lazo abierto.

) (s M
yr
Funcin de transferencia del servomecanismo.

) (s M
yd
Funcin de transferencia del control regulatorio.

P Controlador proporcional.

PI Controlador proporcional e integral.





PD Controlador proporcional y derivativo.

PID Controlador proporcional, integral y derivativo.

) (s R Funcin de transferencia de lazo cerrado del sistema.

s Variable compleja.

d
T Funcin de transferencia de lazo cerrado del sistema.

i
T Funcin de transferencia de lazo cerrado del sistema.

) (s Y Seal realimentada del sistema de control.

) (s D Perturbaciones del sistema de control.

LED Diodo emisor de luz (siglas en ingls de Light Emitting
Diode)









RESUMEN

El proyecto consisti en el diseo e implementacin de un controlador de
temperatura para una incubadora de huevos de aves de corral. El sistema se elabor
utilizando como unidad de procesamiento central un microcontrolador Atmega16, el sensor
de temperatura seleccionado fue el LM35DT debido a su bajo costo y gran cantidad de
documentacin disponible, y como elemento final de control, tres lmparas, dos
incandescentes y uno halgeno. Se construy la planta, y se obtuvo la curva de reaccin del
proceso, a partir del cual se obtuvieron los parmetros de sintonizacin del controlador. Se
program un controlador PID ideal en el microcontrolador utilizando estos parmetros y
posteriormente se realizaron un conjunto de pruebas para comprobar su correcto
funcionamiento.




1

CAPTULO 1: Introduccin
El control automtico ha desempeado una funcin vital en el avance de la
ingeniera y la ciencia. Adems de su extrema importancia en las reas cientficas y militar;
el control automtico se ha convertido en parte integral de los procesos modernos
industriales. Entre las reas de aplicacin del control automtico en procesos industriales, el
caso que nos atae es el control de temperatura en sistemas trmicos.
En este proyecto se pretende el diseo e implementacin de un controlador de
temperatura para una incubadora de huevos de aves de corral. Las incubadoras de huevos
son mquinas de gran importancia en la industria avcola, pues de su buen desempeo
depende una tasa alta de eclosin y por lo tanto una produccin exitosa que conlleve a
mayores dividendos para la compaa.
El sistema para llevar a cabo el control de temperatura est basado en un
microcontrolador Atmega16, que se usa para realizar un controlador PID discreto, se
contar con un sensor para medir la temperatura y un actuador para modificar el flujo de
calor del proceso.
El objetivo del proyecto es disear e implementar tanto el proceso trmico (incubadora)
como el sistema de control. Para implementar el conjunto controlador-planta se debe
primero disear el sistema, adquirir todos los elementos, materiales y circuitos integrados
necesarios, para luego realizar la implementacin.




2


1.1 Objetivos
1.1.1 Objetivo general

Desarrollar un sistema de control de temperatura de bajo costo y alta adaptabilidad para
una incubadora de huevos de aves de corral.

1.1.2 Objetivos especficos

Implementar una interfaz de operacin simple para el control de temperatura de la
incubadora.
Determinar el sensor de temperatura y el actuador adecuado tomando en
consideracin del costo de los elementos.
Construir el sistema de control y todos los circuitos necesarios para la puesta en
operacin del mismo.

1.2 Levantamiento de requerimientos
Un sistema de control de temperatura para una incubadora debe ser preciso, pues
pequeas variaciones de tan solo fracciones de grados, aunque sean tan solo temporales
tendrn como resultado una reduccin de la incubabilidad. En trminos cuantitativos el
error permanente en ste sistema no debe ser mayor a 0.2 C. El modo integral de un


3

controlador PID garantiza que esto sea as, ya que su contribucin en la salida del
controlador no alcanza un valor constante, a menos que el error sea cero y permanezca
siendo cero.
Otro requerimiento importante es la ventilacin, una incubadora debe permitir una buena
circulacin del aire, se desea que el dixido de carbono no sea mayor al 0.5% y el oxgeno
debe ser de entre 21% y 22%. En general un ambiente limpio permitir que se cumplan
estas especificaciones.
De forma adicional el operador de la incubadora debe poder seleccionar la temperatura
deseada a travs de botones o alguna clase de teclado y observar la temperatura del proceso
en alguna clase de visualizador.
Es de suma importancia contar con dos o ms calefactores y que la tasa de calor
entregada por un nico calefactor sea suficiente para mantener la temperatura deseada del
sistema, aunque se deterioren los parmetros de desempeo. Esto permite contar con un
respaldo en caso de que un calefactor falle.
La mayora de controladores comerciales de temperatura cuentan con alarmas que se
activan ante condiciones peligrosas de temperatura. Se pretende que este sistema en
particular cuente con una alarma sonora que se active cuando la temperatura alcanza
valores peligrosamente altos o peligrosamente bajos.
Tambin el sistema debe permitir al operador modificar los parmetros del controlador
PID, estos son: tiempo integral, tiempo derivativo y ganancia proporcional; lo que sin duda
dar versatilidad y robustez al sistema. Tambin permitir al ingeniero de control


4

identificar el proceso y escoger el mtodo de sintonizacin que considere ms adecuado
para una aplicacin en particular

1.3 Metodologa

A continuacin se detallan en orden cronolgico los pasos en que se incurrieron para
llevar a cabo la elaboracin del sistema:

Se construy el prototipo y se escogi el sensor as como el actuador. El sensor
debi ser lo suficientemente exacto y el actuador debi proporcionar una tasa de
flujo de calor que proporcione una respuesta rpida ante un cambio en el valor
deseado de temperatura.

Se realizaron un conjunto de pruebas sobre el proceso trmico para obtener la
curva de reaccin. Se energiz el sistema y se observ la evolucin de la
temperatura en el interior de la incubadora, se tomaron datos con los cuales se
determin la grfica de temperatura contra tiempo.

Se realizaron clculos de los parmetros del controlador con base en un mtodo
de sintonizacin. Se prefiri mtodos que permitieron obtener un rpida
respuesta en el servomecanismo.



5

El sistema se construy sobre un microcontrolador Atmega16, el cdigo se
escribi en C. Se dise el diagrama de flujo antes de comenzar su
implementacin.

Se finaliz el diseo del programa y se comenz con la implementacin del
diagrama de flujo en lenguaje C. Se us el convertidor analgico digital del
microcontrolador para medir la salida de tensin del sensor, una salida PWM, y
los puertos de entrada y salida digitales.

Se finaliz la escritura del programa. El controlador PID discreto se obtuvo a
partir de un controlador PID continuo utilizando la aproximacin de la derivada.

Ensamblaje del circuito en una tarjeta de prototipos y descarga del programa en
el microcontrolador.

Se realiz pruebas sobre el circuito para la correccin y deteccin de fallas.
Probablemente sern necesarios algunos ajustes para obtener un adecuado
funcionamiento del circuito.



6

CAPTULO 2: Desarrollo terico

2.1 Sistemas de control en tiempo continuo

2.1.1 Elementos de control

En la siguiente figura se muestra el diagrama de bloques general de un sistema de
control realimentado monovariable en tiempo continuo:


Figura 2.1. Diagrama de bloques general de un sistema de control realimentado.

Se incluyen en el diagrama la funcin de transferencia del proceso ) (s P , que incluye el
actuador y el sensor, la funcin de transferencia del controlador ) (s C , el valor deseado de


7

la variable controlada ) (s R , la seal a la salida del controlador ) (s U y la perturbacin
) (s D .
En la siguiente figura se muestra un diagrama que muestra el sistema de control en
forma ms detallada:


Figura 2.2. Diagrama de bloques detallado de un sistema de control realimentado.

Se incluye el elemento final de control que es el elemento fsico que finalmente realiza
el control sobre el proceso. El sensor/transmisor que mide la variable controlada y crea
una seal que es transferida al controlador. Los modos de control que utilizan un algoritmo
para generar una seal correctora para ajustar el proceso acorde.
La funcin de transferencia de lazo cerrado (FTLC) es la razn entre la salida y la
entrada cuando el lazo de retroalimentacin est cerrado. Debido a que el sistema de
control presenta dos entradas, se puede determinar la FTLC para cada una de estas dos


8

entradas. La funcin de transferencia respecto al valor deseado, denominada servocontrol,
est dada por:
) ( ) ( 1
) ( ) (
) (
) (
) (
s P s C
s P s C
s R
s Y
s M
yr
+

= = (2-1)
La funcin de transferencia FTLC respecto a la perturbacin, denominada control
regulatorio, est dada por:
) ( ) ( 1
) (
) (
) (
) (
s P s C
s P
s D
s Y
s M
yd
+
= = (2-2)
La funcin de transferencia de lazo abierto (FTLA) es la razn entre la seal de salida y
el valor deseado en ausencia de la retroalimentacin. Est definida por la siguiente
ecuacin:
) ( ) ( ) ( s P s C s L = (2-3)
De la ecuacin se observa que el polinomio en el denominador de ) (s M
yz
y ) (s M
yr
es
el mismo, siendo ste:
) ( ) ( 1 ) ( s P s C s p + = (2-4)
El cual recibe la denominacin de polinomio caracterstico, pues determina en gran
medida la dinmica del sistema.






9

2.1.2 Caracterstica esttica

La caracterstica esttica de la planta es la informacin correspondiente a la relacin
entre sus seales de entrada y salida en condiciones de estado estacionario. La caracterstica
esttica define el mbito del control, que es el intervalo de valor deseado para el cual sta
diseado el controlador, esto permite establecer ciertos lmites de operacin con los cuales
se puede dimensionar y seleccionar el elemento final de control y los instrumentos de
medicin y transmisin. Esta informacin suele representarse grficamente como una
familia de curvas. En la siguiente figura se tiene un ejemplo de ellas:

Figura 2.3. Caracterstica esttica.



10

La relacin entre la variable controlada C y la variable manipulada M se llama
caracterstica esttica de la planta. La relacin entre la seal realimentada y la salida del
controlador se llama caracterstica del conjunto actuador-planta-sensor.

2.1.3 Caracterstica dinmica

La caracterstica dinmica hace referencia a la respuesta del sistema ante una seal en
algunas de sus entradas. Debido a la presencia de dos entradas: el valor deseado y la
perturbacin; se tienen dos funciones de transferencia ) (s M
yr
y ) (s M
yd
que describen esta
dinmica.
El primer paso para entender el comportamiento dinmico del sistema es determinar la
respuesta de la planta aplicndole una excitacin particular y a partir de esto determinar los
parmetros con los cuales se modela la planta. A este procedimiento se le llama
identificacin. Una vez establecido el modelo de la planta, el segundo paso es llevar a cabo
la sintonizacin del controlador.

2.1.4 Identificacin experimental

La identificacin es el procedimiento en el cual se introduce una excitacin al proceso a
controlar para determinar a partir de la informacin de salida un modelo matemtico para la
planta. Hay dos tipos de mtodos. Los mtodos de lazo abierto calculan los parmetros del
modelo a partir de la curva de reaccin, y los mtodos de lazo cerrado, entre los cuales


11

destaca el mtodo de Ziegler y Nichols, que consiste en variar la ganancia del controlador
funcionando slo en su parte proporcional para obtener una respuesta oscilatoria, sta
respuesta proporciona la informacin ltima que es usada para obtener el modelo.

2.1.5 Tipos de controladores

En general, los controladores tienen varios modos de control que se encuentran
relacionados por medio de una funcin matemtica que caracteriza el tipo de controlador.
As se distinguen los controladores proporcionales (P), los proporcionales integrales (PI), y
los proporcionales integrales y derivativos (PID). Como parte del proceso histrico que ha
seguido el desarrollo de los controladores se pueden distinguir controladores PID ideales,
PID serie, PID paralelo y PID industriales.

2.1.5.1 Controlador PID ideal

Los controladores PID ideales estn caracterizados por la siguiente ecuacin en el
dominio del tiempo y en el dominio de la frecuencia, respectivamente:


(

+ + =

dt
t de
T d e
T
t e K t u
t
d
i
c
) (
) (
1
) ( ) (
0
(2-5)
( ) ) (
1
1 1 ) ( s E
s T
s T K s U
i
d c

|
|

\
|
+ + = (2-6)


12

En el dominio del tiempo algunas veces se dice que es un controlador no interactuante
porque los modos actan en forma independiente sobre la seal de error. Por otro lado,
desde el punto de vista del dominio de la frecuencia se dice que es interactuante porque
ambos ceros del controlador se ven afectados al variar cualquiera de los parmetros
i
T o
d
T .


2.1.5.2 Controlador PID paralelo

Este es quizs el tipo de controlador PID menos utilizado en la industria. Est
caracterizado por la siguiente ecuacin:

) (
1
) ( s E
s K
K
s
K
K s U
d
d i
p

(

+
+ + =

(2-7)

El efecto de la variacin de las diferentes ganancias del controlador paralelo no tiene el
mismo efecto que el normalmente asociado a la ganancia y constantes de tiempo integral y
derivativo de los controladores PID, siendo normalmente ms difcil de sintonizar
mediantes procedimientos de prueba y error.





13


2.1.5.3 Controlador PID serie

Este controlador es el resultado de colocar un controlador PI en serie con un PD. Tiene
la siguiente ecuacin caracterstica:

) (
1 '
1 '
'
1 '
' ) ( s E
s T
s T
s T
s T
K s U
d
d
i
i
c

|
|

\
|
+
+

|
|

\
|

+
=

(2-8)

Contrario a lo que sucede con el controlador ideal, el serie se conoce como controlador
interactuante en el dominio del tiempo, porque el modo integral interacta con el derivativo
para procesar la seal de error, mientras que en el dominio de la frecuencia se dice que es
no interactuante, porque uno de los ceros del controlador depende slo de
i
T y el otro slo
de
d
T . En la siguiente figura se muestra el diagrama de bloques del controlador serie:


Figura 2.4. Controlador PID serie.


14


2.1.5.4 Controlador PID industrial

Tanto el controlador PID ideal como el PID serie aplican el modo derivativo
directamente a la seal de error; por lo tanto, ante un escaln en el valor deseado R(s), se
produce un pico en la salida del controlador producido por el modo derivativo. Para evitar
esto se cre el controlador PID industrial, el cual aplica el modo derivativo nicamente a la
seal realimentada Y(s). Hay que tomar en cuenta que, en la prctica, un cambio escaln en
R(s) puede ser producido en cualquier momento por el operador.
La siguiente ecuacin representa la salida del controlador PID industrial. Se puede
observar que sta es deducida a partir de la ecuacin PID serie.


(

|
|

\
|
+
+

|
|

\
|

+
= ) (
1 '
1 '
) (
'
1 '
' ) ( s Y
s T
s T
s R
s T
s T
K s U
d
d
i
i
c

(2-9)

Se puede ver que se tienen dos controladores, uno PI que se denomina el compensador
de valor deseado y un PID serie que se denominar compensador de realimentacin. Si se
compara con el PID serie es fcil comprobar que el comportamiento del lazo de control es
idntico ante un cambio en la perturbacin, ms no as en el caso de un cambio en el valor
deseado.
En la figura 2.5 se ilustra el diagrama de bloques del controlador PID industrial:


15


Figura 2.5. Controlador PID industrial.

2.1.6 Proceso trmico

A continuacin se presenta el anlisis y modelado de un sistema trmico sencillo, lo cual
permite comprender la dinmica de una incubadora de huevos, y en general de cualquier
proceso trmico, tales como hornos domsticos y calentadores de agua. El modelado se
hizo utilizando la red generalizada, la cual es una manera uniforme y nica de estudiar
cualquier sistema dinmico. En la red generalizada se tienen dos tipos de variables, las
transvariables y las pervariables. Las transvariables son aquellas variables que requieren de
dos puntos para medirse y que se obtiene a travs de los elementos, las pervariables son
aquellas variables que se propagan por los elementos y para cuya medicin se requiere
solamente de un punto.


16

La figura 2.6 muestra un esquemtico del sistema y todas las variables involucradas en
el proceso:

Figura 2.6. Proceso trmico sencillo.

La primera consideracin en el anlisis es que el flujo de calor entrante a la cavidad es
una fuente de pervariable, y la temperatura ambiente una fuente de transvariable. El espacio
en el interior es una capacitancia trmica, ya que almacena energa en funcin de un
incremento en la temperatura. El material entre la cavidad interior y el exterior es una
resistencia trmica, en virtud de la resistencia que ofrece al flujo de calor. Tomando en
consideracin estas observaciones se obtiene la red generalizada de la figura 2.7.


17


Figura 2.7. Red generalizada del proceso trmico.

Se hace notar que la variable manipulada es el flujo de calor ) (s q
i
, la variable
controlada es la temperatura interna ) (s T y la perturbacin es la temperatura ambiente
) (s T
a
(vase figura 2.8).

Figura 2.8. Diagrama de bloques del proceso trmico.

Del anlisis de la figura 2.7 se desprende la funcin de transferencia del proceso, dada
por la ecuacin 2-10.


18

) (
1
1
) (
1
) ( s T
s C R
s q
s C R
R
s T
a
t t
i
t t
t

|
|

\
|
+
+
|
|

\
|
+
= (2-10)

Al considerar nicamente el valor deseado que corresponde al flujo de calor entrante, se
tiene la funcin de transferencia de la ecuacin 2-11.

) (
1
) ( s q
s C R
R
s T
i
t t
t

|
|

\
|
+
= (2-11)

Ntese que la respuesta del proceso al considerar nicamente el valor deseado es de
primer orden. Al considerar nicamente la perturbacin se tiene la funcin de transferencia
dada por la ecuacin 2-12.

) (
1
1
) ( s T
s C R
s T
a
t t

|
|

\
|
+
= (2-12)

La respuesta del proceso al considerar nicamente la perturbacin es de primer orden.
Ntese que se trata de un proceso autoregulado que comprende nicamente un elemento
almacenador de energa - la capacitancia trmica - y un elemento disipador de energa - la
resistencia trmica - y que est caracterizado por la constante de tiempo
t t
C R T = .



19

2.2 Sistemas de control en tiempo discreto

2.2.1 Esquema de control digital

Un sistema de control en tiempo discreto es similar al caso continuo, salvo por el hecho
de que el controlador se encuentra dentro de un sistema computador. La obtencin del error
no es ms que una resta, y la accin de control se hace con una serie de sumas y
multiplicaciones. Para unir este mbito de nmeros dentro de un programa al mbito fsico
del sistema a controlar se necesita una interfaz. Esa es la labor que realizan precisamente
los dos elementos nuevos que aparecen en el control discreto: el convertidor analgico a
digital (ADC: por sus siglas en ingls analog to digital converter) y el convertidor digital a
analgico (DAC: por sus siglas en ingls digital to analog converter). El convertidor DAC
sirve para convertir el valor de la accin de control calculado por el computador en una
seal fsica que acta sobre el proceso. A su vez el convertidor ADC se utiliza para
convertir la seal que proporciona el sensor en un nmero dentro del programa.



20


Figura 2.6. Sistema de control en tiempo discreto.

En un sistema continuo las seales vienen representadas por funciones continuas. En un
sistema discreto sin embargo, se representan como secuencias discretas. Estas secuencias
discretas son una serie de nmeros que provienen de tomar los valores instantneos de
seales analgicas en instantes de tiempo concretos (muestreo). Esos instantes suelen estar
espaciados por un tiempo que se denomina tiempo de muestreo. A cada uno de los valores
se les denomina muestras y se identifican por su nmero de muestra k. En la figura 2.7 se
tiene la siguiente secuencia { } ... , , ,
3 2 1
y y y y y
o k
= la cual proviene de la seal analgica
) (t y de la figura 2.8


21


Figura 2.7. Seal discreta.

Figura 2.8. Seal analgica.

2.2.2 Modelos de sistemas discretos

Un modelo de un sistema continuo, lineal e invariante en el tiempo est representado por
una ecuacin diferencial:


22

) (
) (
...
) (
) (
) (
...
) (
0 1 0 1
t u b
dt
t du
b
dt
t u d
b t y a
dt
t dy
a
dt
t y d
a
m
m
m n
n
n
+ + + = + + + (2.10)
Siendo ) (t y la salida del sistema y ) (t u la entrada. La ecuacin en tiempo discreto
equivalente a la ecuacin diferencial en tiempo continuo corresponde a una ecuacin en
diferencias:
k k m k m k k n k n
u b u b u b y a y a y a + + + = + + +
0 1 1 0 1 1
... ... (2.11)
De la misma forma que en un sistema de tiempo continuo se puede obtener la funcin de
transferencia a partir de la ecuacin diferencial por medio de la Transformada de Laplace,
en los sistemas discretos se puede obtener su funcin de transferencia a partir de la
ecuacin en diferencias y por medio de Transformada Z, teniendo en cuenta lo siguiente:
) (z Y z y
n
n k

(2.12)
Al considerar la ltima ecuacin se obtiene la siguiente funcin de transferencia:
0
1
1
0
1
1
...
...
) (
) (
b z b z a
b z b z b
z U
z Y
n
n
m
m
+ + +
+ + +
=


(2.13)

2.2.3 Diseo de un controlador discreto

Para disear un regulador discreto hay bsicamente dos enfoques: El primero es disear
utilizando todo un conjunto de nuevos mtodos y tcnicas aplicables a los sistemas
discretos. La segunda es aplicar todos lo referente a sistemas continuos para obtener un
controlador continuo que luego se convierte en uno discreto. Para hacer esto ltimo se


23

tienen dos posibilidades, tener en cuenta la relacin
sT
e z = , o bien utilizar mtodos
aproximados como el de la derivada.
El mtodo ms sencillo es el de la derivada, que consiste en aproximar la derivada por la
pendiente de la recta que pasa por dos muestras consecutivas, con lo cual se tiene:
T
y y
dt
t dy
k k 1
) (

(2.14)
Al llevar ambas expresiones a su correspondiente transformada se obtiene:
) (
1
) (
1
z Y
T
z
s Y s

(2.15)
Por lo tanto para obtener un controlador discreto a partir de un controlador continuo es
suficiente con sustituir las s por
T
z
1
1

.
Entonces es posible obtener un controlador PID discreto a partir de su ecuacin
continua:
|
|

\
|
+

+ =
d
i
T s
s T
K
s E
s U 1
1
) (
) (
(2.16)
Sustituyendo las s por
T
z
1
1

y resolviendo, se obtiene la funcin de transferencia del


PID discreto:
1
2 1
1
2 1 1
) (
) (

+ |

\
|
+ + +
=
z
z
T
T
z
T
T
T
T
T
T
K
z E
z U
d d d
i
(2.17)


24

Transformando en una ecuacin en diferencias, se tiene:
1 2 2 1 1 0
+ + + =
k k k k k
u e b e b e b u (2.18)
Donde los coeficientes estn determinados por los parmetros del controlador (
i
T ,
d
T y
C
K ) y el tiempo de muestreo ( T ).
|
|

\
|
+ + =
T
T
T
T
K b
d
i
1
0
(2.19)
|

\
|
+ =
T
T
K b
d
2 1
1
(2.20)
T
T
K b
d
=
2
(2.21)


25

2.3 Microcontrolador Atmega16

En esta seccin se describe la arquitectura y los perifricos del microcontrolador
Atmega16.

2.3.1 Descripcin general del microcontrolador

El Atmega16 es un microcontrolador de ocho bits fabricado con tecnologa CMOS,
posee un conjunto reducido de instrucciones (RISC) y tiene memoria separada para datos e
instrucciones, lo que se denomina arquitectura Harvard. Posee un conjunto de perifricos
que le permiten interactuar con el mundo exterior, como lo son un convertidor analgico a
digital, temporizadores, puertos de entrada y salida, entre otros.

2.3.2 Estructura del microcontrolador

En la figura 2.9 se muestra el diagrama de bloques que presenta el microcontrolador
Atmega16. En el diagrama se puede ver cada uno de los elementos que integran el
microcontrolador, as como la forma en que stos interactan; tambin se detallan los
elementos que conforman la unidad de procesamiento central (CPU) y los perifricos. Entre
los perifricos se pueden observar cuatro puertos de ocho bits cada uno, el convertidor
analgico a digital con ocho canales y un comparador analgico. En la unidad de
procesamiento central se tienen varios tipos de memoria y registros, entre ellos; registros de


26

control, de propsito general y de propsito especial. Cada uno de estos elementos se
explica con ms detalle en las secciones subsiguientes.

Figura 2.9. Diagrama de bloques del Atmega16.


27

2.3.3 Unidad de procesamiento central

La unidad de procesamiento central se encarga de ejecutar las instrucciones
almacenadas en memoria, a continuacin se explica con detalle los elementos que la
conforman.

2.3.3.1 Archivo de registros

El Atmega16 cuenta con 32 registros de propsito general. Algunos de estos registros
tienen funciones especiales adicionales. La figura 2.10 muestra el archivo de registros;
ntese que estn nombrados de R0 a R31 y estn divididos en dos partes de 16 registros
cada una, de R0 a R15 y de R16 a R31.

Figura 2.10. Archivo de registros.


28

Los registros R26 a R31 tienen un propsito adicional, sirven de punteros de 16 bits para
direccionamiento indirecto de memoria. Cuando se usan con este propsito estos punteros
son nombrados como X, Y y Z; segn se muestra en la figura 2.11.


Figura 2.11. Registros X, Y y Z.

2.3.3.2 Contador de programa (PC)

El Atmega16 dispone de un registro de 16 bits llamado contador de programa (PC por
sus siglas en ingls: program counter) el cual sigue la ejecucin del programa. Una vez
finalizada la ejecucin de una instruccin el contador de programa contiene la direccin
que apunta a la siguiente instruccin a ejecutar.





29

2.3.3.3 Registro de banderas (SREG)

El registro de banderas (SREG por sus siglas en ingls: Status Register) contiene
informacin acerca del resultado de la ltima operacin aritmtica realizada y el estado de
la CPU. Esta informacin puede ser usada para alterar el flujo corriente del programa a
travs de instrucciones de salto condicional. La figura 2.12 muestra el registro de banderas:


Figura 2.12. Registro de banderas.

A continuacin se explica cada una de las banderas del registro:

I: Bandera de habilitacin de interrupciones.

sta bandera habilita las interrupciones globales de la mquina. Un uno en esta bandera
permite interrupciones, y un cero las inhabilita.

T: Bandera de copia de bit.

Las instrucciones BLD (Bit Load) y BST (Bit Store) usan sta bandera como fuente o
destino en una operacin de bit. La instruccin BST copia un bit de algn registro del


30

archivo de registros en esta bandera, y la instruccin BLD copia la bandera en algn
registro del archivo de registros.

H: Bandera de acarreo intermedio.

sta bandera indica un acarreo del bit 3 al bit 4 en algunas operaciones aritmticas. sta
bandera es fuertemente usada en aritmtica BCD.

S: Bandera de signo.

La bandera de signo es siempre una OR exclusiva entre las banderas N y V. Estas dos
banderas se explican mas adelante.

V: Bandera de sobreflujo.

sta bandera indica sobreflujo en operaciones aritmticas con nmeros en complemento
a dos.

N: Bandera de Negativo.

sta bandera se utiliza para verificar si el resultado es negativo en operaciones lgicas o
aritmticas.





31

Z: Bandera de cero.

sta bandera indica un resultado igual a cero despus de operaciones lgicas o
aritmticas.

C: Bandera de acarreo.
La bandera C se utiliza para almacenar el acarreo que se genera despus de realizar una
operacin aritmtica o para conectar en lazo el bit ms significativo con el bit menos
significativo en instrucciones de rotacin de bits.

En esta arquitectura el registro de banderas no es automticamente almacenado al entrar
en una subrutina de atencin a interrupciones y no es restaurado al salir de sta. Esto debe
ser manejado por software.

2.3.3.4 Puntero de pila

El puntero de pila es un registro de 16 bits usado para direccionar un segmento de la
memoria llamado pila. La pila est ubicada en la memoria SRAM y es usada
principalmente para almacenamiento temporal de datos, variables locales, y direcciones de
retorno en saltos a subrutina. El puntero de pila del Atmega16 crece de posiciones altas a
posiciones ms bajas y est divido en una parte alta y una parte baja, segn se muestra en la
figura 2.13.


32


Figura 2.13. Puntero de pila.

2.3.4 Sistema de memoria

En esta seccin se describen los diferentes tipos de memoria del Atmega16. La
arquitectura tiene memorias separadas para datos e instrucciones.

2.3.4.1 Memoria flash

El Atmega16 contiene 16K de memoria flash para almacenar las instrucciones del
programa. Debido a que las instrucciones tienen 16 o 32 bits de ancho, la memoria est
organizada en 8K x16.
El mapa de memoria, el cual se muestra en la figura 2.14; est dividido por razones de
seguridad en dos secciones: una seccin de aplicacin (Aplication Flash Section) y una
seccin de arranque (Boot Flash Section).


33


Figura 2.14. Mapa de memoria.

2.3.4.2 Memoria SRAM

La memoria SRAM es un espacio de 1120 localidades de ocho bits y es utilizada para
almacenamiento de datos. Esta memoria contiene los archivos de registros, el espacio de
entrada/ salida y 1024 localidades de propsito general.


34


Figura 2.15. Memoria SRAM.

Ntese en la figura 2.15 que el archivo de registros y el espacio entrada/salida puede ser
tratado como localidades de memoria SRAM.

2.3.4.3 Memoria EEPROM

La memoria EEPROM es usada para almacenamiento de datos y consiste en 512
posiciones de ocho bits. La memoria EEPROM no est mapeada en memoria, est ubicada
en un espacio independiente, por eso se requiere el uso tres registros de entrada/salida para
su acceso. Para la direccin se usa el registro EEAR, para el dato se usa EEDR y para su
control el registro EECR.


35

2.3.5 Interrupciones

Una interrupcin es la ocurrencia de una condicin o evento que ocasiona la suspensin
temporal del programa principal para atender con una secuencia de cdigo diferente el
evento que gener la interrupcin, al programa que trata la interrupcin se le conoce como
rutina de servicio a la interrupcin (ISR por sus siglas en ingls: interrupt service routine).
En el Atmega16 se tienen 21 fuentes de interrupcin que se listan en la tabla 1.

Tabla 1. Fuentes de interrupcin.



36

Para atender una interrupcin la bandera I del registro de banderas (SREG) debe estar en
alto, adems de las habilitaciones individuales para cada perifrico. Al generarse la
interrupcin el Contador de programa es almacenado en la pila y la bandera I se pone en
bajo, para no permitir que otras interrupciones puedan ser atendidas. El flujo del programa
se transfiere a la respectiva subrutina de servicio a la interrupcin cuya direccin est dada
por el vector de interrupcin. La subrutina termina con la instruccin RETI la cual recupera
el contador de programa (PC) de la pila y ajusta el valor de la bandera I.

2.3.6 Perifricos

El microcontrolador cuenta con un conjunto de perifricos que le permite intercambiar
informacin con el mundo exterior.

2.3.6.1 Puertos de entrada/salida

El Atmega16 presenta cuatro puertos de entrada/salida conectados a los pines del
encapsulado y accesibles desde el exterior del microcontrolador. Cada uno de estos pines
comparte funciones con otros perifricos y la Unidad central de procesamiento. La figura
2.16 muestra la configuracin de pines de este microcontrolador.


37


Figura 2.16. Configuracin de pines del microcontrolador Atmega16.

Para habilitar los pines de estos puertos como entradas o salidas digitales se escribe uno
para salida, o un cero para entrada, en el registro correspondiente DDRx. Las direcciones
pueden configurarse de manera independiente para cada terminal.

2.3.6.2 Convertidor analgico a digital

El convertidor analgico a digital del Atmega16 tiene una resolucin de 10 bits, posee
ocho canales de entrada y tensiones de referencia separados, utiliza la tcnica de
aproximaciones sucesivas como mtodo de conversin y posee un registro retenedor. La
figura 2.17 muestra la estructura interna de este perifrico.



38


Figura 2.17. Convertidor analgico a digital del Atmega16.

Los voltajes de referencia externos se introducen mediante los pines AREF y AVCC.
Para utilizar el convertidor analgico a digital es necesario escribir la configuracin
deseada en los registros ADCSRA, ADMUX y SFIOR.




39

2.3.6.3 Temporizadores

El temporizador es usado por el microcontrolador para determinar intervalos de tiempos
concretos; a nivel de hardware se trata de un registro que se incrementa de manera
automtica en cada ciclo de reloj, que al llegar a un valor predeterminado genera alguna
clase de sealizacin.

El Atmega16 cuenta con dos temporizadores de ocho bits y uno de 16 bits. En la tabla 2
se muestran estos temporizadores, su tamao, y el nombre de sus registros contadores.

Tabla 2. Temporizadores del Atmega16.
Temporizador Tamao Registros
Temporizador/Contador 0 8 bits TCNT0
Temporizador/Contador 1 16 bits TCNT1H, TCNT1L
Temporizador/Contador 2 8 bits TCNT2

Los temporizadores manejan tres clases de eventos, estas son situaciones que tendrn
como resultado una sealizacin de la que dar cuenta la Unidad central de procesamiento:

Desbordamiento: Cuando el respectivo temporizador alcanza su valor mximo,
se reinicia en cero, y el evento de registra en la bandera TOVn del registro TIFR.


40

El registro TCNTn puede ser cargado con un valor inicial para generar diferentes
intervalos de tiempo.

Coincidencia: Un registro llamado OCRn puede ser cargado con un valor para
ser comparado con el valor del temporizador en cada ciclo de reloj; una
coincidencia tendr como resultado un evento que es reportado en la bandera
OCFn.

Captura. El microcontrolador tiene terminales que capturan eventos externos, un
cambio en esas terminales tendr como resultado una lectura del registro
TCNTn, cuyo valor ser almacenado en ICRn, indicando el evento en la bandera
ICFn.

De la misma forma existen tres formas de detectar eventos con el fin de actuar en base a
ellos:

Sondeo: El programa lee constantemente el estado de las banderas, hasta que
ocurre el evento y es reportado en las banderas. Tambin se denomina a ste
mtodo polling y es muy ineficiente en el uso de los recursos del sistema.



41

Interrupcin: Para que los eventos generen interrupciones, stos se deben
habilitar en el registro TISMK, y en el registro SREG se deben habilitar las
interrupciones globales.

Reaccin automtica: El microcontrolador ofrece la posibilidad de reaccionar
automticamente a nivel de hardware sin intervencin de la Unidad central de
procesamiento al ocurrir un evento de comparacin. Se podra utilizar para poner
un pin en alto al darse una coincidencia en el temporizador 1, por citar un
ejemplo.

Temporizador/Contador 0

Este temporizador de ocho bits se muestra en la figura 2.18.

Figura 2.18. Temporizador/Contador 0.


42

El registro TCNT0 es el registro que realiza el conteo. El registro OCR0 se compara
continuamente con el registro TCNT0 para generar eventos de coincidencias por
comparacin. Las propiedades del temporizador se modifican a travs del registro de
control TCCR0.

Temporizador/Contador 1

Este temporizador se muestra en la figura 2.19. Debido a que se trata de un temporizador
de 16 bits muchos de sus registros se componen de dos registros de ocho bits.


Figura 2.19. Temporizador/Contador 1.


43

El conteo se realiza con TCNT1, que est dividido en dos registros de ocho bits,
TCNT1H para la parte alta y TCNT1L para la parte baja. Los registros OCR1A y OCR1B
se utilizan para la continua comparacin con TCNT1, con el fin de generar eventos de
coincidencia, estos registros tambin son de 16 bits. Tambin est presente el registro ICR1
cuya funcin es capturar y retener el valor de TCNT1 ante un evento en la terminal ICP1.
Los registros de control son TCCR1A y TCCR1B, ambos de ocho bits.

Temporizador/Contador 2

La figura 2.20 muestra los subsistemas que conforman este temporizador.

Figura 2.20. Temporizador/Contador 2.


44

El registro TCNT2 realiza el conteo. El registro OCR2 es usado para ser comparado con
TCNT2 y generar eventos de coincidencia. El registro de control del temporizador es el
TCCR2.







45

CAPTULO 3. Implementacin del sistema

3.1 Descripcin del sistema

El sistema a disear deber medir la temperatura a travs de un sensor, y a partir del
valor deseado introducido por el operador, realizar las operaciones lgicas y aritmticas
necesarias - en base al algoritmo PID descrito anteriormente - para determinar la salida
PWM.

Figura 3.1. Diagrama del sistema a disear.

Se compone de cuatro entradas, tres entradas digitales y una entrada analgica las cuales
se describen a continuacin:

Up: Esta entrada digital se usa para incrementar el valor deseado de temperatura
o alguno de los tres parmetros de sintonizacin.


46


Down: Esta entrada digital se usa para decrementar el valor deseado de
temperatura o alguno de los tres parmetros de sintonizacin.

Config: sta entrada permite seleccionar entre los parmetros de sintonizacin o
el valor deseado, para poder visualizarlos en los tres visualizadores de siete
segmentos.

Sensor: Una entrada analgica que proviene del sensor de temperatura, y es la
forma en la que el sistema mide la variable controlada de la planta.

El sistema tambin cuenta con cuatro salidas, tres salidas digitales y usa salida PWM, la
cuales se explican a continuacin:

Actuador: La salida PWM es usada para realizar el control sobre el proceso
trmico.

On: Si el sistema est energizado esta luz se mantiene encendida, al apagarse el
sistema, la luz se apaga.

Display: Visualiza el valor deseado de temperatura (SP) o la temperatura del
proceso (PV), segn sea el caso.

Alarma: Esta salida se activa cuando la temperatura alcanza valores
peligrosamente alto o peligrosamente bajos.



47

3.2 Diseo del sistema

A continuacin se describe en la seleccin de cada uno de los elementos que integran el
sistema, as como otras importantes decisiones de diseo con el fin de implementar el
sistema de la figura 3.1.

3.2.1 Microcontrolador

Para escoger un microcontrolador a emplear en el diseo hay que tomar en cuenta una
multitud de factores, como documentacin, herramientas de desarrollo disponibles y su
precio, tambin caractersticas del microcontrolador como tamao de memoria, nmero de
temporizadores, interrupciones, etc.

Para sta aplicacin en particular se tienen los siguientes requerimientos:

El microcontrolador deber contar con herramientas de desarrollo gratuitas y una
gran cantidad de documentacin.

El microcontrolador deber disponer de un convertidor analgico a digital, ya
que se pretende utilizar un sensor de temperatura que tenga una salida analgica.



48

Son necesarios dos contadores, uno para fijar el tiempo de muestreo de la seal
analgica y otro para contar el tiempo que hay que mantener encendido cada
visualizador de siete segmentos.

3.2.2 Actuador

Para la implementacin del sistema se opt por utilizar como actuador un conjunto de
tres bombillos para proporcionar calor a los huevos, se descart el uso de un calefactor
tradicional debido a su alto costo. En la figura 3.2 se muestra los tres bombillos utilizados,
se trata de dos bombillos incandescentes y uno halgeno.


Figura 3.2. Sistema calefactor.



49

Una manera de mejorar la confiabilidad de un sistema es introducir redundancia en
tiempo (repetir una operacin) o en recursos (tener otros elementos a disposicin que
puedan cumplir la funcin del elemento que fall) . En este sentido utilizar tres bombillos
en lugar de uno tendr como resultado un mejora significativa en la confiabilidad de todo el
sistema, pues introduce redundancia en recursos.
Para controlar la tasa de flujo de calor entregada por los tres bombillos se utiliz un rel
conectado a la salida PWM del microcontrolador, segn la configuracin mostrada en la
figura 3.3.


Figura 3.3. Manejo del sistema calefactor.



50

Ntese en la figura 3.3 la presencia de un LED conectado en paralelo a la seal PWM.
Este LED se us para efectos de pruebas y depuracin en las ltimas etapas de la
implementacin del prototipo.

3.2.3 Sensor

El sensor de temperatura seleccionado fue el LM35DT debido a su bajo costo, facilidad
de uso y gran cantidad de documentacin disponible.


Figura 3.4. Sensor de temperatura LM35DT.

El LM35DT tiene tres pines, dos para alimentarlo y uno que proporciona una salida en
voltios proporcional a la temperatura en grados Celsius. Este sensor tiene una salida que
equivale a 10 mV/C y una precisin de 0.2 C. La siguiente tabla muestra algunas


51

equivalencias entre la salida del sensor en milivolts y el correspondiente valor en grados
celsius.

Tabla 3. Equivalencia entre la salida del sensor LM35DT y la temperatura.
Vout (mV) Temperatura (C)
112 11.2
298 29.8
529 52.9

El LM35DT funciona con un rango de alimentacin comprendido entre 4 V y 20 V. Y se
pretende conectarlo al convertidor analgico a digital del microcontrolador.

3.2.4 Visualizador

El visualizador utilizado es el NTE3058 de nodo comn el cual se muestra en la figura
3.5; en total se utilizaron tres de stos, para visualizar los tres dgitos requeridos de la
temperatura.


52


Figura 3.5. Visualizador de siete segmentos de nodo comn NTE3058.

Se contaba con solamente diez pines para manejar los tres visualizadores, por ello se
utiliz multiplexacin de los visualizadores. En este tipo de conexin los visualizadores
comparten las mismas lneas de datos pero tienen habilitadores por separado. De esta
manera se utilizan solamente diez lneas para manejar los tres visualizadores, tal como se
muestra en la figura 3.6.


53


Figura 3.6. Conexin de los visualizadores al microcontrolador.

Para utilizar este tipo de conexin se debe dividir el tiempo entre tres y mostrar durante
unos pocos milisegundos el dgito correspondiente. Si se quiere mostrar el nmero 123 se
debe habilitar el primer visualizador poniendo un uno en la lnea del transistor
correspondiente al primer visualizador y enviando el valor 1 al buffer de tercer estado
74HCT573. Despus de un tiempo se coloca un uno en la base del transistor
correspondiente al segundo visualizador y se enva un 2 al 74HCT573. Pasado el tiempo


54

se selecciona el tercer visualizador y se enva un 3 al buffer.

El tiempo que permanece encendido cada visualizador est determinado por el tiempo de
refresco del ojo humano, que no reconoce ms de 25 cuadros por segundo, por lo que el
tiempo mximo de refresco de cada visualizador es el valor del tiempo en que se tiene que
refrescar los tres visualizadores, dividido entre el nmero de visualizadores:

ms
ores visualizad
cuadros segundo
3 3 . 13
3
25 / 1
=


(3-1)

3.2.5 Alarma

Para dar aviso de temperaturas peligrosas se utiliz un sistema de alarma. La idea es dar
aviso de condiciones de temperatura totalmente fuera de los parmetros de incubacin. Se
utiliz un zumbador genrico de bajo costo y un transistor TIP122. El uso de un transistor
PNP se debe a que se desconoca de antemano las exigencias de carga del zumbador.


55


Figura 3.7. Sistema de alarma.

3.2.6 Esquemtico final del controlador

Se utiliz el puerto A y el puerto C del microcontrolador para manejar los tres dgitos de
siete segmentos. Los pines del cero al seis del puerto A se conectaron a cada uno de los
pines del 74HCT573 y de ah a los segmentos de los visualizadores, y tres pines del puerto
C se conectaron de forma alternada a los transistores habilitadores correspondientes a cada
uno de los visualizadores. El pin siete del puerto A se dej como una entrada analgica de
la seal que proviene del sensor de temperatura. El pin siete del puerto C se utiliz para
generar una seal PWM para manejar el rel, el cual a su vez enciende y apaga los
bombillos. Los botones Up, Down y Config se conectaron al pin dos y tres del puerto D, y
al pin dos del puerto B, respectivamente. Por ltimo el pin cuatro del puerto C maneja el


56

transistor TIP122 del zumbador. La figura 3.8 corresponde al esquemtico final del
controlador:

Figura 3.8. Esquemtico del controlador.

3.3 Implementacin de la planta

Entre los materiales para la construccin de la incubadora se tenan dos opciones: la
madera y el metal. El metal se descart por su alto costo; en cambio se utiliz madera, que
no es tan cara, y adems ofrece excelentes cualidades de aislamiento trmico.
Uno de los requerimientos de una incubadora de madera es que la misma no debe estar
pintada ni barnizada, ya que estas sustancias emanan gases txicos que pueden perjudicar el
proceso de incubacin.
El tamao de una incubadora puede variar desde cmaras del tamao de una habitacin
que pueden incubar varias decenas de miles de huevos hasta incubadoras pequeas, del


57

tamao de un microondas o un horno domstico. La incubadora que se construy es de
dimensiones pequeas, con capacidad para media docena de huevos.
Para construir la incubadora se comenz con una panera de madera ya construida, que
tenan los requerimientos de espacio necesarios para albergar sta pequea cantidad de
huevos.
Para permitir una buena circulacin del aire se instal un ventilador y se realizaron
pequeos orificios a los costados, esto porque la circulacin de aire es un requerimiento
importante, pues permite renovar el aire constantemente en el interior de la incubadora,
algo fundamental para la correcta incubacin de los huevos. Tambin la ventilacin busca
homogenizar la temperatura del aire y as evitar fuertes gradientes de temperatura.


Figura 3.9. Proceso implementado.


58

3.4 Identificacin del proceso

3.4.1 Obtencin de la curva de reaccin

Para poder aplicar cualquier mtodo de sintonizacin es necesario conocer primero la
dinmica del proceso. La obtencin de la dinmica del proceso requiere que el mismo sea
excitado con una seal escaln en su entrada y que su respuesta sea registrada. En el caso
particular de la incubadora, el proceso se excita encendiendo los bombillos con una seal
constante de 12 V. A los 5400 segundos se apag la fuente de poder y se sigui registrando
datos durante 1800 segundos ms, manteniendo los bombillos apagados.
Se utiliz un termmetro digital para medir la evolucin de la temperatura en el interior
de la incubadora y un cronmetro para medir el tiempo. Despus de dos horas (7200
segundos) se obtuvieron los datos con los cuales se elabor la siguiente grfica.


Figura 3.10. Curva de reaccin del proceso.


59

3.4.2 Obtencin del modelo

La respuesta del sistema ante una entrada escaln permite determinar que el sistema es
de primer orden y que el modelo ms adecuado ser tambin de primer orden. A partir de la
medicin directa de los parmetros sobre la curva de reaccin se determin la constante de
tiempo y la ganancia, obtenindose el modelo de la ecuacin 3-2.

1 0 . 480
847 . 0
) (
+
=
s
s P (3-2)

3.5 Sintonizacin

El mtodo de sintonizacin elegido fue analtico. Se pretende optimizar el desempeo
del sistema para la respuesta en el valor deseado (servomecanismo). La dinmica de la
planta est dada por la siguiente ecuacin:
1
) (
+
=
Ts
K
s P
p
(3-3)
Donde
P
K es la ganancia, y T es la constante de tiempo de la planta. Ambos
parmetros ya fueron determinados utilizando identificacin experimental.
La ecuacin del controlador PID ideal que se est implementando es:



60

s T
s T s T K
s C
i
i d c
) 1 ( ) 1 (
) (
+ +
= (3-4)

Donde
C
K es la ganancia proporcional,
d
T el tiempo derivativo, y
i
T el tiempo integral.
La funcin de transferencia de lazo abierto:

) 1 (
) 1 ( ) 1 (
) ( ) ( ) (
+
+ +
= =
s T s T
s T s T K K
s C s P s L
i
i d p c
(3-5)

La solucin ms simple es hacer el tiempo integral igual a la constante de tiempo de la
planta y el tiempo derivativo nulo, esto es:

i
T T = (3-6)
0 =
d
T (3-7)

Con lo que se obtiene la siguiente funcin de transferencias de lazo abierto:

s T
K K
s L
i
c p

= ) ( (3-8)




61

Y la siguiente funcin de transferencia de lazo cerrado:

1
1
+

=
s
K K
T
M
c p
i
yr
(3.9)

Ntese en la funcin de transferencia de lazo cerrado que la ganancia es unitaria y que la
constante de tiempo est determinada por la ganancia del controlador y el tiempo integral.
La constante de tiempo de la respuesta en el servomecanismo queda entonces:

c p
c
K K
T
T

= (3.10)

Despejando la ganancia proporcional:

c p
c
T K
T
K

= (3-11)

En resumen se tienen los siguientes parmetros para el PID:

T T
i
= (3-12)


62

0 =
d
T (3-13)
c p
c
T K
T
K

= (3-14)

Como se puede ver, el nico parmetro ajustable es la constante de tiempo de la
respuesta del servomecanismo. Hacer este parmetro pequeo sera lo ideal, pero tendra el
inconveniente de que salida del controlador analtico sera demasiado grande, y la salida del
controlador real trabajara en saturacin. El valor de compromiso elegido para esta
constante es:
s T 300 = (3-15)

Por lo tanto, los parmetros del controlador quedan como:
0 . 480 =
i
T (3-16)
00 . 0 =
d
T (3-17)
89 . 1 =
c
K (3-18)
Un tiempo derivativo nulo implica un controlador PI, que es un caso particular del
controlador PID ideal. Y los respectivos coeficientes del controlador discreto son:
90 . 1
0
= b (3-19)
89 . 1
1
= b (3-20)
00 . 0
2
= b (3-21)


63


3.6 Diagrama de flujo

EL microcontrolador cuenta con un conjunto de perifricos que permiten implementar el
circuito de forma simple y eficaz. Los tres botones; stos son: Up, Down y Config se
conectaron a los pines del microcontrolador sealados como: INT0, INT1, INT2. Un evento
de flanco positivo en estos pines tendr como resultado una interrupcin que har al
programa salir de su rutina principal y ejecutar la correspondiente subrutina de atencin a
interrupciones. La figura 3.11 corresponde a los diagramas de flujos de cada una de estas
tres subrutinas:


Figura 3.11. Subrutinas de atencin a interrupciones externas.


64

En la figura 3.11 se muestra las subrutinas correspondientes a cada unos de los eventos
generados por los botones. Al presionar el botn Up, se generar un flanco positivo en la
entrada del pin INT0 que llevar el flujo del programa a la subrutina de interrupcin
sealada como Interrupcin Externa 0, a continuacin el cdigo de la subrutina deber
incrementar la variable que est mostrando el visualizador. De manera similar, el botn
Down generar un flanco que tendr como resultado el decremento de la variable
correspondiente en la subrutina Interrupcin Externa 1.
Algo diferente hace la subrutina correspondiente al botn Config, pues sta deber
cambiar el valor actual en los visualizadores, por otro parmetro de sintonizacin, o el valor
deseado, para as realizar las respectivas modificaciones a la variable.
El muestreo de la seal analgica se hace cada T segundos, es por esa razn que se
requiri de un temporizador cuyo nico propsito sea contar ste tiempo, al terminar de
contar, deber generar un evento de sobreflujo que trasladar el flujo a una subrutina de
atencin a interrupciones llamada Sobreflujo en Temporizador 1, la cual utilizar el
convertidor analgico a digital para tomar una muestra del voltaje analgico de salida del
sensor, y asignar a la variable global Read_ADC el valor TRUE, con el fin de informar al
programa principal de que ha sido tomada una nueva muestra.


65


Figura 3.12. Subrutina de interrupcin de sobreflujo en temporizador 1.

Para manejar los tres visualizadores con el menor nmero de pines se utiliz una tcnica
conocida como multiplexacin (ver seccin 3.2.4). sto requiere un temporizador dedicado
que interrumpa constantemente el flujo del programa, y ejecute una subrutina que
encender un visualizador con el dgito correspondiente y apagar el que se encontraba
encendido. La subrutina se llama Sobreflujo en Temporizador 0, y se muestra en la figura
3.13.


66


Figura 3.13. Subrutina de sobreflujo en temporizador 0.

La figura 3.14 corresponde a la rutina principal del programa. sta comienza con la
configuracin e inicializacin de los perifricos, seguido de la obtencin de los parmetros
del controlador, a continuacin el programa hace polling de la variable Read_ADC,
esperando que la subrutina de sobreflujo en temporizador 1 tome una muestra y cambie el
valor de sta variable a TRUE. Una vez que ha sido tomada la muestra, la rutina sigue con
la ejecucin del cdigo. El control debe realizarse si el valor deseado es mayor que la seal
realimentada; si ste es el caso, se calcula la salida del controlador y este valor se escribe en


67

el registro OCR2 del temporizador 2, que se encarga de generar la seal PWM. ste ciclo
se repite de forma indefinida.


Figura 3.14. Diagrama de flujo de rutina principal.


68

3.7 Programacin

La rutina principal comienza con la definicin de los puertos, los cuales se definen en
una funcin llamada port_define_IO(). En sta funcin se configuran los pines de los
puertos como entradas o salidas, segn corresponda, a travs del registro DDRx. Un 1
define un pin como salida, y un 0 como entrada.

void port_define_IO(void) //Definicin de puerto I/O.
{
DDRA=0x7f;
DDRB=0x01;
DDRC=0xff;
DDRD=0x80;
}
Figura 3.15. Subrutina void port_define_IO(void).

A continuacin se procede con la inicializacin de los puertos con la funcin
port_initiate().





69

void port_initiate(void) //Inicializacin de puertos.
{
PORTA=0xff;
PORTB=0x00;
PORTC=DISPLAYOFF;
}
Figura 3.16. Subrutina void port_initiate(void).

Las interrupciones se habilitan usando la funcin sei(), y a continuacin se procede con
el encendido de los temporizadores 0 y 1, a travs de las funciones enc_timer0() y
enc_timer1().

void enc_timer0(void) {
TCCR0 = 0x02; //Preescala 8.
TIFR = 0x01; //Pone en cero en la bandera de desborde del Reloj/Contador0.

sbi(TIMSK,TOIE0); //Habilitacin de la interrupcin por desborde del Reloj/Contador0.
}
Figura 3.17. Subrutina void enc_timer0(void).






70

void enc_timer1(void) {
TCCR1A = 0x00;//Preescala 64.
TCCR1B = 0x03;
TIFR = 0x04; //Borra bandera de sobreflujo en timer1.

sbi(TIMSK, TOIE1); //Habilita las interrupciones por sobreflujo en timer1.
}
Figura 3.18. Subrutina void enc_timer1(void).

La funcin enc_timer0() configura el temporizador cero con una preescala de ocho, para
obtener un retardo de 2,048 ms, y la funcin enc_timer1() con un preescala de 64 para
obtener un retardo de 4.19 s.
A continuacin se habilitan las tres interrupciones externas que son configuradas para
deteccin de eventos de flanco positivo en los pines, esto a travs de las funciones
enable_int0(), enable_int1() y enable_int2().

void enable_int0(void)
{
sbi(MCUCR,ISC00); //Flanco positivo.
sbi(MCUCR,ISC01);

sbi(GICR,INT0); //Habilita interrupcin.
sbi(GIFR,INTF0); //Limpio bandera.
}
Figura 3.19. Subrutinas de interrupciones externas.



71


void enable_int1(void)
{
sbi(MCUCR,ISC10); //Flanco positivo.
sbi(MCUCR,ISC11);

sbi(GICR,INT1); //Habilita interrupcin.
sbi(GIFR,INTF1); //Limpio bandera.
}

void enable_int2(void)
{
cbi(MCUCSR,ISC2); //Flanco positivo.
sbi(GICR,INT2); //Habilita interrupcin.
sbi(GIFR,INTF2); //Limpio bandera.
}
Figura 3.19 (Continuacin). Subrutinas de interrupciones externas.

En el apndice A, especficamente en el archivo isr.h, se presentan stas tres subrutinas,
se puede ver que la interrupcin INT0 tendr como resultado un incremento en el valor
deseado o algunos de los tres parmetros de sintonizacin
0
b ,
1
b y
2
b ; de la misma forma
una interrupcin INT1, tendr como resultado una disminucin del parmetro
correspondiente. La interrupcin INT2 se utiliza para cambiar el valor que actualmente se
est visualizando en el conjunto de los tres visualizadores, para ello se utiliza la variable
PV_SP que puede almacenar cuatro estados Display_SP, Display_b0, Display_b1,
Display_b2 y Display_SP. La interrupcin siempre tendr como resultado el paso de un


72

estado al siguiente, y el estado correspondiente ser usado por la subrutina de atencin a
interrupciones de sobreflujo en temporizador cero para mostrar el nmero correspondiente.

Despus de cuatro funciones que convierten los parmetros de sintonizacin y el valor
deseado en codificacin BCD, se habilita la salida PWM a travs de la funcin
config_pwm().La configuracin seleccionada es Fast PWM, y el valor del registro OCR2,
que es el registro que controla la modulacin del ancho de pulso, es por defecto 0xff.


void config_pwm(void) //Configura el PWM.
{
TCCR2=0x6f;
OCR2=0xff;
}
Figura 3.20. Subrutinas config_pwm().

La seccin siguiente de cdigo en la rutina principal (ver Apndice A) es un bucle que
se repite indefinidamente y comienza revisando la variable Read_ADC, que es modificada
por la subrutina de atencin a interrupciones de sobreflujo en temporizador 1. La siguiente
figura corresponde a sta subrutina de atencin a interrupciones.




73

SIGNAL(SIG_OVERFLOW1) // Sobreflujo en timer1.
{
apg_timer1(); // Se inhabilitan interrupciones y se borra la bandera de sobre flujo.

Read_ADC=TRUE;

sensor_adlar_0(); // Realiza conversin ADC.

enc_timer1(); // Se habilitan interrupciones y se borra la bandera.
}
Figura 3.21. Subrutina de sobreflujo en temporizador uno.

Cada 4.19 s se ejecuta sta subrutina de atencin de interrupciones que almacena en
Read_ADC la constante TRUE, eso por una razn: para informar al programa principal de
que el convertidor analgico digital ha tomado una muestra almacenando el resultado de la
conversin en el entero de 16 bits y_n.
A continuacin se convierte el valor de y_n en una estructura tipo bcd. La estructura tipo
bcd est declarada en el archivo estructuras.h, el contenido de ste archivo se muestra a
continuacin:

// Archivo: estructuras.h
//-------------------------------------------------------//
//---------------------Estructuras-----------------------//
//-------------------------------------------------------//
typedef struct
{
u08 decimales;
u08 unidades;
u08 decenas;
} bcd;
Figura 3.22. Archivo estructuras.h.


74


La estructura bcd almacena un nmero en sta misma codificacin. Para ello se dispone
de tres enteros de ocho bits cada uno, uno para unidades, otro para las decenas y otro para
los decimales.
sta estructura en conjunto con la funcin bcd binario_bcd(u16 numero) es usada
intensamente por la subrutina de atencin a interrupciones SIGNAL(SIG_OVERFLOW0)
para desplegar los respectivos valores en los visualizadores. sta subrutina tiene cuatro
estados, un estado inicial, que mantiene los tres visualizadores apagados, y los estados
DISPLAY1, DISPLAY2 y DISPLAY3; en cada uno de estos estados se habilita un nico
visualizador, y se escribe en el puerto el dgito correspondiente.
Las secciones siguientes del cdigo calculan la salida del controlador y revisan la
temperatura del proceso, si la misma est fuera de las cotas asignadas, se enciende la
alarma indicando al operador la presencia de temperaturas totalmente fuera de los rangos
normales de operacin para la incubacin de huevos. El siguiente cdigo calcula la salida
del controlador:

u_0 =(b_0*e_0 - b_1*e_1 + b_2*e_2 + u_1);

Figura 3.23. Salida del controlador.

La figura 3.24 corresponde al cdigo de alarma.


75


if( (y_n > 400) || (y_n < 200) )
{on_alarma();}
else
{off_alarma();}

Figura 3.24. Encendido de la alarma.

Cada vez que el convertidor analgico toma una muestra se revisa que el valor no
excede los 40C, y que no est por debajo de 20C, en caso contrario se enciende la alarma.
Las funciones on_alarma() y off_alarma(), ponen un 1 y un 0 en el pin del puerto C,
respectivamente; encendiendo y apagando



76

3.8 Prototipo final

La figura 3.25 muestra el circuito implementado en una protoboard; se muestran cada
uno de los elementos que integran el sistema: tres botones, los visualizadores, el rel, el
sensor de temperatura LM35, y la alarma.


Figura 3.25. Prototipo final.
Se puede ver un conjunto de cables con una cubierta protectora que van desde el
conector hembra del puerto paralelo de la protoboard al microcontrolador, estos cables
son usados para descargar el programa en la memoria flash del Atmega16. La aplicacin


77

utilizada para descargar el programa en el microcontrolador se denomina uisp, y para
compilarlo se utilizaron las respectivas libreras de gcc. Es importante hacer notar que
ambas aplicaciones son software libre.
Se realizaron un conjunto de pruebas para probar el funcionamiento del sistema como
servomecanismo. Las pruebas se realizaron para valores de temperatura entre 35.5C y 38.5
C, pues ste es el rango de valores de temperatura de incubacin de la mayora de aves de
corral.
En la figura 3.26 se muestra la respuesta del sistema para un valor deseado de 36.5C.


Figura 3.26. Respuesta del sistema para un valor deseado de 36.5C.

Adjunto a cada punto en el grfico est el valor de la medicin de la temperatura en
grados celsius. Ntese que la respuesta del sistema es de primer orden, y que presenta una


78

constante de tiempo de aproximadamente 300 segundos, ambas caractersticas son
consistentes con el mtodo de sintonizacin llevado a cabo.


Figura 3.27. Respuesta del sistema para un valor deseado de 38.5C.

La figura 3.27 presenta la respuesta del sistema para un valor deseado de 38.5C. En sta
figura y en la figura 3.26 el valor inicial de la temperatura fue 26.3C y 27.1C, ambas
corresponden a la temperatura ambiente al momento de realizar las pruebas.
La figura 3.28 y 3.29 corresponden a pruebas realizadas pero con una temperatura inicial
en el interior de la incubadora distinta de la temperatura ambiente.


79


Figura 3.28. Respuesta del sistema para un valor deseado de 35.5C.

La figura 3.28 es una grfica de la respuesta del sistema para un valor deseado de 35.5C
y una temperatura inicial de 28.5C, ntese que aproximadamente a los cinco minutos la
temperatura en el interior de la incubadora ya ha alcanzado el valor deseado, despus de eso
la temperatura se mantiene cercano a este valor, hasta finalizar la prueba pasados 14
minutos.
La figura 3.29 es la ltima grfica de temperatura versus tiempo, en este caso la
temperatura de la incubadora al iniciar la prueba era de 32.4C y el valor deseado de
37.2C.


80


Figura 3.29. Respuesta del sistema para un valor deseado de 37.2C.

La temperatura de la incubadora tiene una respuesta rpida al inicio pues en los primeros
60 segundos pasa de 32.4 C a 33.8 C, un aumento de 1.4 C, al ir disminuyendo el error,
la respuesta se hace ms lenta, ntese que desde los 300 segundos hasta los 600 segundos,
la temperatura en la incubadora aumenta apenas 1.0C, hasta alcanzar el valor deseado;
punto desde el cual la temperatura se mantiene relativamente estable. ste es
comportamiento esperado para un sistema con una respuesta de primer orden.


81

CAPTULO 4: Conclusiones y recomendaciones
Dentro de las principales conclusiones obtenidas a partir del desarrollo del proyecto y de
los resultados del mismo se tiene:

Se realiz un anlisis del proceso trmico desde la perspectiva de la red
generalizada, considerando un capacitor generalizado para modelar el
almacenamiento de calor dentro de la incubadora y una resistencia generalizada
para modelar la prdida de calor a travs de las paredes de la incubadora,
obtenindose la ecuacin que muestra la temperatura en el interior de la
incubadora en funcin del calor proporcionado por el calefactor, la temperatura
exterior, y las caractersticas constructivas de la planta.

Se obtuvo la dinmica del sistema empleando la curva de reaccin del proceso,
identificando el sistema con un modelo de primer orden a travs de la medicin
directa de los parmetros, de sta forma se obtuvo una constante de tiempo de
480 segundos y una ganancia de 0.847, a partir de los cuales se determin la
funcin de transferencia del proceso.

Para sintonizar el controlador se utiliz un mtodo analtico cancelando el cero
del modo integral con el polo de la planta obtenindose la funcin de


82

transferencia de lazo abierto y la funcin de transferencia de lazo cerrado para el
servomecanismo. Se determinaron los parmetros del controlador para una
constante de tiempo de 300 segundos, para la cual se calcul una ganancia
proporcional de 1.89, un tiempo derivativo igual a cero, y un tiempo integral
igual a 480.0 segundos.

Se determin que la accin del controlador debe ser de tipo inversa; ya que un
aumento en la temperatura provocara una disminucin en la salida del
controlador.

Se program el controlador PID discreto en un microcontrolador Atmega16, para
ello se utiliz el compilador gcc para obtener el programa objeto y el software
uisp para descargarlo en la memoria flash del microcontrolador.

Se realizaron un conjunto de pruebas para probar el correcto funcionamiento del
controlador. Se realizaron mediciones de temperatura contra tiempo para una
entrada escaln en el valor deseado, esto se observa en las figuras 3.26, 3.27,
3.28, y 3.29.



83

Gracias al conocimiento y a las experiencias adquiridas durante este proyecto, se desea
agregar un conjunto de recomendaciones que pueden resultar tiles para optimizaciones a
este proyecto, o para futuros estudiantes interesados en proyectos similares:

Hay todo un conjunto de controladores ms complejos que pueden ser
implementados en tiempo discreto, tambin hay todo un conjunto de mtodos de
sintonizacin que pueden ser aplicados para optimizar diferentes criterios de
desempeo.

Para futuros proyectos que sigan esta lnea, se sugiere utilizar un filtro para
disminuir el efecto del ruido, pues la seal realimentada proveniente del sensor
de temperatura presenta pequeas variaciones que afectan el funcionamiento del
controlador, ya que trata de corregir supuestas bajas en la temperatura que
corresponden al ruido del cable entre el sensor y el microcontrolador.

Durante el perodo de diseo e implementacin del sistema de control se decidi
utilizar un rel electromecnico debido a su bajo costo, el cual para las
condiciones de operacin tan abusivas de un elemento final de control ver su
vida til disminuida en forma significativa en comparacin a un dispositivo de
estado slido, por eso se recomienda la utilizacin de algn otro dispositivo de


84

conmutacin como un rel de estado slido o un tiristor de potencia en lugar de
un elemento electromecnico.

El sensor de temperatura LM35DT es relativamente barato, sin embargo con una
inversin adicional se podra obtener un sensor con salida digital, como el
DS18S20, que permitira utilizar el convertidor analgico a digital del
microcontrolador para otros propsitos como por ejemplo un sensor de dixido
de carbono o de oxgeno.

Es usual que los controladores comerciales incluyen varios tipos de salidas, as
que una mejora de ste trabajo podra incluir salidas de voltaje y corriente,
adicional a la salida de rel.

Un mtodo de programacin de los parmetros a travs del protocolo RS-485
sera un mejora adicional a ste proyecto, lo cual dara la posibilidad de disponer
de un mtodo adicional de fijacin de los parmetros del controlador.





85

BIBLIOGRAFA
Libros

1. Katsuhiko, O. Ingeniera de control moderna, Tercera edicin, Prentice Hall,
Estados Unidos, 1998
2. Katsuhiko, O. Sistemas de control en tiempo discreto, Segunda edicin,
Prentice Hall, Estados Unidos, 2005.
3. Alfaro, V. Apuntes del curso IE 0431: Sistemas de control, Escuela de
Ingeniera Elctrica. Universidad de Costa Rica. 2005.
4. Alfaro, V. Apuntes del curso IE 1032: Control e instrumentacin de
procesos industriales. Escuela de Ingeniera Elctrica. Universidad de Costa Rica.
2006.

Hojas del fabricante

1. Atmel. 8-bit AVR Microcontroller with 16 K Bytes In-System Programmable
Flash. Atmega16A.
2. NTE Electronics, Inc. NTE3052 thru NTE3055 0.3 Single Digit Numeric
Display, Seven Segment, Common Anode.
3. STMicroelectronics. TIP120/121/122/125/126/127. Complementary Silicon
Power Darlington Transistors.


86

4. National Semiconductor. LM35. Precision Centigrade Temperature Sensors,
November 2000.
5. Fairchild Semiconductor. DM74LS573. Octal D Latch with 3-STATE
Outputs, March 1998.
6. Motorola. Amplifiers Transistors. NPN Silicon. BC546, B. BC547, A, B, C.
BC548, A, B, C.
7. Discrete POWER & Signal Technologies. 2N3904 / MMBT3904 / MMPQ3904 /
PZT3904.







88

Apndice A: Cdigo.

// Archivo: define.h

#define IN 0
#define OUT 1

#define LOW 0
#define HIGH 1

#define FALLING 0
#define RISING 1

#define TRUE 1
#define FALSE 0

#define DISPLAY1 0x80
#define DISPLAY2 0x20
#define DISPLAY3 0x40
#define DISPLAYOFF 0x00

#define Display_SP 0x00
#define Display_b0 0x01
#define Display_b1 0x02
#define Display_b2 0x03
#define Display_PV 0xff

//Valor deseado

#define SetPoint 35.5

//Parmetros del PID.

//Parmetros del controlador.

//b_0
#define b0 1.90f

//b_1




#define b1 1.88f

//b_2
#define b2 0.00f

//Tiempo de muestreo.
#define T 4.194f


#define VAR
#define BEGINCODE
#define ENDCODE

#define DDR(x) ((x)-1) /* address of data direction register of port x */
#define PIN(x) ((x)-2) /* address of input register of port x */


#ifdef AVR_ATmega103
#define AVR_MEGA 1
#else
#ifdef AVR_ATmega603
#define AVR_MEGA 2
#else
#ifdef AVR_ATmega161
#define AVR_MEGA 3
#else
#define AVR_MEGA 0
#endif
#endif
#endif


// Archivo: estructuras.h

//-------------------------------------------------------//
//---------------------Estructuras-----------------------//
//-------------------------------------------------------//

typedef struct
{
u08 decimales;
u08 unidades;
u08 decenas;




} bcd;


// Archivo: include.h

#include "define.h"
#include "tipos.h"
#include "estructuras.h"
#include "variables.h"
#include "prototipos.h"
#include "isr.h"


// Archivo: isr.h

//-------------------------------------------------------//
//-------------------Interrupciones----------------------//
//-------------------------------------------------------//

SIGNAL(SIG_INTERRUPT0) // Incrementa la variable indicada
{ //por el botn Config.
disable_int0();

switch(PV_SP)
{
case Display_SP:
++r_n;
sp=binario_bcd(r_n);
break;

case Display_b0:
b_0+=0.01f;
function_b0();
break;

case Display_b1:
b_1+=0.01f;
function_b1();
break;

case Display_b2:
b_2+=0.01f;
function_b2();




break;

case Display_PV:

break;
}

enable_int0();
}

SIGNAL(SIG_INTERRUPT1) // Decrementa la variable indicada
{ // por Config.
disable_int1();

switch(PV_SP)
{
case Display_SP:
--r_n;
sp=binario_bcd(r_n);
break;

case Display_b0:
b_0-=0.01f;
function_b0();
break;

case Display_b1:
b_1-=0.01f;
function_b1();
break;

case Display_b2:
b_2-=0.01f;
function_b2();
break;

case Display_PV:

break;
}

enable_int1();
}





SIGNAL(SIG_INTERRUPT2) // Visualiza entre los distintos parmetros de
{ // configuracin.
disable_int2();

switch(PV_SP)
{
case Display_SP:
PV_SP=Display_b0;
break;

case Display_b0:
PV_SP=Display_b1;
break;

case Display_b1:
PV_SP=Display_b2;
break;

case Display_b2:
PV_SP=Display_PV;
break;

case Display_PV:
PV_SP=Display_SP;
break;
}

enable_int2();
}

SIGNAL(SIG_OVERFLOW1) // Sobreflujo en timer1.
{
apg_timer1(); // Se inhabilitan interrupciones y se borra la bandera de sobre flujo.

Read_ADC=TRUE;

sensor_adlar_0(); // Realiza conversin ADC.

enc_timer1(); // Se habilitan interrupciones y se borra la bandera.
}

SIGNAL(SIG_OVERFLOW0) // Subrutina encargada del manejo de los tres visualizadores




{ // de siete segmentos.
apg_timer0();

switch(EstDisplay)
{
case DISPLAYOFF:

switch(PV_SP)
{
case Display_SP:
PORTA=numero_display(sp.decimales);
break;

case Display_PV:
PORTA=numero_display(pv.decimales);
break;

case Display_b0:
PORTA=numero_display(coef_b0.decimales);
break;

case Display_b1:
PORTA=numero_display(coef_b1.decimales);
break;

case Display_b2:
PORTA=numero_display(coef_b2.decimales);
break;
}

PORTC=EstDisplay=DISPLAY1;
break;

case DISPLAY1:

switch(PV_SP)
{
case Display_SP:
PORTA=numero_display(sp.unidades);
break;

case Display_PV:
PORTA=numero_display(pv.unidades);




break;

case Display_b0:
PORTA=numero_display(coef_b0.unidades);
break;

case Display_b1:
PORTA=numero_display(coef_b1.unidades);
break;

case Display_b2:
PORTA=numero_display(coef_b2.unidades);
break;
}

PORTC=EstDisplay=DISPLAY2;
break;

case DISPLAY2:

switch(PV_SP)
{
case Display_SP:
PORTA=numero_display(sp.decenas);
break;

case Display_PV:
PORTA=numero_display(pv.decenas);
break;

case Display_b0:
PORTA=numero_display(coef_b0.decenas);
break;

case Display_b1:
PORTA=numero_display(coef_b1.decenas);
break;

case Display_b2:
PORTA=numero_display(coef_b2.decenas);
break;
}
PORTC=EstDisplay=DISPLAY3;




break;

case DISPLAY3:

switch(PV_SP)
{
case Display_SP:
PORTA=numero_display(sp.decimales);
break;

case Display_PV:
PORTA=numero_display(pv.decimales);
break;

case Display_b0:
PORTA=numero_display(coef_b0.decimales);
break;

case Display_b1:
PORTA=numero_display(coef_b1.decimales);
break;

case Display_b2:
PORTA=numero_display(coef_b2.decimales);
break;
}

PORTC=EstDisplay=DISPLAY1;
break;
}
enc_timer0();
}


// Archivo: main.c

#include <avr/io.h>
#include <avr/interrupt.h>
#include <compat/deprecated.h>

#include "include.h"

//-------------------------------------------------------//




//-------------------------Main--------------------------//
//-------------------------------------------------------//

int main(void) {

// Definicion de puertos E/S
port_define_IO();

// Inicializacion de puertos E/S.
port_initiate();

// Habilitacion de interrupciones globales.
sei();

// Encendido del timer 1.
enc_timer1();
// Encendido del timer 0.
enc_timer0();

// Habilito interrupciones externas.

enable_int0();
enable_int1();
enable_int2();

// Valor deseado.

setpoint();

// Coeficientes.

function_b0();
function_b1();
function_b2();

// Configuro PWM.

config_pwm();

for(;;)
{
if(Read_ADC)
{




Read_ADC=FALSE;

pv=binario_bcd(y_n); // Escribe el valor en los puertos.

if(r_n > y_n)
{
//Error.
e_2=e_1;
e_1=e_0;
e_0=(float)( r_n - y_n );

//Salida.
u_1=u_0;

//Clculo de la salida del controlador a travs de
//ecuacin en diferencias.
u_0 =(b_0*e_0 - b_1*e_1 + b_2*e_2 + u_1);
//Se toma en cuenta la saturacin al fijar la salida
//del controlador.

if(u_0 >= 255.0f)
pwm(0xff);
else if(u_0 <= 0.0f)
pwm(0x00);
else
pwm( ( (u08)u_0 ) );
}
else
{ pwm(0x00); }

//Temperaturas peligrosas.

if( (y_n > 400) || (y_n < 200) )
{on_alarma();}
else
{off_alarma();}

}
}
return TRUE;
}

//-------------------------------------------------------//




//-----------------------Puertos-------------------------//
//-------------------------------------------------------//

void port_define_IO(void) //Definicin de puerto I/O.
{
DDRA=0x7f;
DDRB=0x01;
DDRC=0xff;
DDRD=0x80;
}

void port_initiate(void) //Inicializacin de puertos.
{
PORTA=0xff;
PORTB=0x00;
PORTC=DISPLAYOFF;
}
//-------------------------------------------------------//
//-------------------Temporizadores----------------------//
//-------------------------------------------------------//

void enc_timer0(void) {
TCCR0 = 0x02; //Preescala 8.
TIFR = 0x01; //Pone en cero en la bandera de desborde del Reloj/Contador0.

sbi(TIMSK,TOIE0); //Habilitacin de la interrupcin por desborde del Reloj/Contador0.
}

void apg_timer0(void) {
TCCR0 = 0x00;
TIFR = 0x01;

cbi(TIMSK, TOIE0);
}

void enc_timer1(void) {
TCCR1A = 0x00;//Preescala 64.
TCCR1B = 0x03;
TIFR = 0x04; //Borra bandera de sobreflujo en timer1.

sbi(TIMSK, TOIE1); //Habilita las interrupciones por sobreflujo en timer1.
}





void apg_timer1(void) {
TCCR1A = 0x00;//Stop.
TCCR1B = 0x00;
TIFR = 0x04; //Borra bandera de sobreflujo.

cbi(TIMSK, TOIE1); //Inhabilita la interrupcin.
}

//-------------------------------------------------------//
//-----------------Interrupcion-Externa------------------//
//-------------------------------------------------------//

void enable_int0(void)
{
sbi(MCUCR,ISC00); //Flanco positivo.
sbi(MCUCR,ISC01);

sbi(GICR,INT0); //Habilita interrupcin.
sbi(GIFR,INTF0); //Limpio bandera.
}

void disable_int0(void)
{
cbi(GICR,INT0); //Inhabilita interrupcin.
sbi(GIFR,INTF0); //Limpio bandera.
}

void enable_int1(void)
{
sbi(MCUCR,ISC10); //Flanco positivo.
sbi(MCUCR,ISC11);

sbi(GICR,INT1); //Habilita interrupcin.
sbi(GIFR,INTF1); //Limpio bandera.
}

void disable_int1(void)
{
cbi(GICR,INT1); //Inhabilita interrupcin.
sbi(GIFR,INTF0); //Limpio bandera.
}

void enable_int2(void)




{
cbi(MCUCSR,ISC2); //Flanco positivo.
sbi(GICR,INT2); //Habilita interrupcin.
sbi(GIFR,INTF2); //Limpio bandera.
}

void disable_int2(void)
{
cbi(GICR,INT2); //Deshabilito interrupcin.
sbi(GIFR,INTF2); //Limpio bandera.
}

//-------------------------------------------------------//
//------------------------ADC----------------------------//
//-------------------------------------------------------//

void sensor_adlar_0(void) {

u08 pv_h=0, pv_l=0;

//Configuracin del ADC.
//Registro ADCSRA.
ADCSRA=0xe6;
//Registro ADMUX.
ADMUX=0x07;
//Registro SFIOR.
SFIOR=0x00;
//---------------------

pv_l = ADCL;
pv_h = ADCH;

//---------------------

y_n = convert_u08_u16(pv_h, pv_l);
}

//-------------------------------------------------------//
//------------------------Display------------------------//
//-------------------------------------------------------//

// Esta sencilla funcin decodifica de bcd a cdigo de siete
// segmentos.





u08 numero_display(u08 numero) {
switch(numero)
{
case 0:
return 0x02;
case 1:
return 0x7a;
case 2:
return 0x14;
case 3:
return 0x50;
case 4:
return 0x68;
case 5:
return 0x41;
case 6:
return 0x21;
case 7:
return 0x5a;
case 8:
return 0x00;
case 9:
return 0x48;

default:
return 0x05;
}
}

// sta funcin decodifica de binario a BCD.

bcd binario_bcd(u16 numero)
{

bcd convert;

convert.decimales=0x00; // Inicializacin de
convert.unidades=0x00; // la estructura.
convert.decenas=0x00;
while(numero>=100)
{
++convert.decenas;




numero-=100;
}

while(numero>=10)
{
++convert.unidades;
numero-=10;
}

convert.decimales=numero;
return convert;

}

//-------------------------------------------------------//
//--------------------------PWM--------------------------//
//-------------------------------------------------------//

void config_pwm(void) //Configura el PWM.
{
TCCR2=0x6f;
OCR2=0xff;
}

void pwm(u08 salida) //Salida del controlador.
{
OCR2=salida;
}

//-------------------------------------------------------//
//--------------------------PID--------------------------//
//-------------------------------------------------------//
u16 convert_u08_u16(u08 _H, u08 _L)
{

return ( ( (u16)_H )<<8 ) + ( (u16) _L );
}

void setpoint(void)
{
r_n=(u16)(SetPoint*10);

sp=binario_bcd(r_n);





return;
}

void function_b0(void)
{

coef_b0=binario_bcd( (u16)(b_0*100) );

return;
}

void function_b1(void)
{

coef_b1=binario_bcd( (u16)(b_1*100) );

return;
}

void function_b2(void)
{

coef_b2=binario_bcd( (u16)(b_2*100) );

return;
}

//-------------------------------------------------------//
//-------------------------Alarma------------------------//
//-------------------------------------------------------//

void on_alarma(void) //Enciende alarma.
{
sbi(PORTB,PB0);
}

void off_alarma(void) //Apaga alarma.
{
cbi(PORTB,PB0);
}








// Archivo: prototipos.h

//-------------------------------------------------------//
//----------------------Prototipos-----------------------//
//-------------------------------------------------------//

void port_define_IO (void);//Definicin de puertos I/O.
void port_initiate(void); //Valor inicial de puertos.

void enc_timer0(void);//Enciende temporizador 0.
void apg_timer0(void);//Apaga temporizador 0.

void enc_timer1(void);//Enciende temporizador 1.
void apg_timer1(void);//Apaga temporizador 1.

void sensor_adlar_0(void); //Realiza conversin ADC con ADLAR=0.

void enable_int0(void); //Inhabilita interrupcin externa 0.
void disable_int0(void); //Inhabilita interrupcin externa 0.

void enable_int1(void); //Habilita interrupcin externa 1.
void disable_int1(void); //Inhabilita interrupcin externa 1.

void enable_int2(void); //Habilita interrupcin externa 2.
void disable_int2(void); //Inhabilita interrupcin externa 2.

void config_pwm(void); //Configura temporizador 2 como Fast PWM.
void pwm(u08 salida); //Salida del controlador.

void setpoint(void); //Convierte el valor deseado a BCD.

void function_b0(void); //Convierte el parmetro b0 a BCD.
void function_b1(void); //Convierte el parmetro b1 a BCD.
void function_b2(void); //Convierte el parmetro b2 a BCD.

void on_alarma(void); //Enciende alarma.
void off_alarma(void); //Apaga alarma.

u16 convert_u08_u16(u08 _H,u08 _L);

u08 numero_display(u08 numero); //Decodifica de binario a siete segmentos.





bcd binario_bcd(u16 numero); //Decodifica binario a bcd.


// Archivo: tipos.h

typedef unsigned char u08;
typedef char s08;
typedef unsigned short u16;
typedef short s16;
typedef u08 bool;


// Archivo: variables.h

//-------------------------------------------------------//
//-----------------Variables-Globales--------------------//
//-------------------------------------------------------//
volatile bcd sp, pv, coef_b0, coef_b1, coef_b2;

volatile u08 EstDisplay=DISPLAYOFF;

volatile u08 PV_SP=Display_PV;

volatile u16 y_n=0, r_n=0;
volatile float u_0=0.0f, u_1=0.0f;
volatile float b_0=b0, b_1=b1, b_2=b2;
volatile float e_0=0.0f, e_1=0.0f, e_2=0.0f;

volatile u08 Read_ADC=FALSE;