FUNDACION UNIVERSIDAD AUTONOMA DE COLOMBIA
FACULTAD DE INGENIERIA
INGENIERIA ELECTROMECANICA
Asignatura: Automatización Industrial.
Taller: Control Variables de temperatura de una bombilla.
Presentado por:
Brayan Yesid Ramirez Barrera.
Carlos Alberto Medina Gomes.
Johanna Andrea Posada Arboleda.
DISEÑO DE CONTROL DE TEMPERATURA.
Para poder realizar este taller es indispensable utilizar las herramientas del
programa de Arduino y Matlab poder diseñar el controlador de referencia del
modelo de temperatura en Simulink, para esto se requirió de algunos materiales
para poner en marcha el laboratorio y analizar las variables de control del sistema;
Para poder tener un modelado de la planta se desarrolló el siguiente código de
Arduino y Matlab.
Ahora que tenemos cierta intuición sobre el comportamiento de nuestra planta y
un modelo, podemos intentar algunas estrategias para su control.
Específicamente, intentaremos controlar la temperatura de la bombilla. El primer
enfoque para controlar que intentaremos es un simple controlador ON/OFF que
enciende la bombilla cuando la temperatura medida es menor que la temperatura
deseada (error > 0) y apaga la bombilla cuando la temperatura medida es mayor
que la temperatura deseada (error < 0), a continuación se muestra nuestro modelo
Simulink modificado con la lógica de nuestro controlador ON/OFF implementado
mediante un bloque Switch con una temperatura de referencia de 75 grados
Celsius
El código utilizado para programar el Arduino es:
int SENSOR; // variable almacena valor leido de entrada analogica A0
float y; // valor de temperatura en grados centígrados
float t=0;
void envia_datos(float x,float y ){
Serial.print(y);
Serial.print(" ");
Serial.println(x);
void setup(){
Serial.begin(9600); // inicializacion de comunicacion serie a 9600 bps
// Entradas analógicas no requieren inicialización
}
void loop(){
SENSOR = analogRead(A0); // lectura de entrada analogica A0
y = ((SENSOR * 5000.0) / 1023) / 10; // fórmula para convertir valor leído
envia_datos(t,y);
t=t+1000;
delay(1000); // demora de 1 seg. Entre lecturas
Ya teniendo el código cargado Utilizamos un sensor de temperatura lm35 y
conectamos el pin de salida del sensor a la entrada analógica A0 del Arduino uno
se capturaran los datos cada segundo que son enviados por el puerto serie con la
función serial.print.
A continuación mostraremos el código utilizado para Matlab:
copiar este en el command window de Matlab y damos enter y verificar con el
administrador de dispositivos a que COM está conectado las tarjeta Arduino en
nuestro caso es el COM5.
clear all
close all
clc
format short
delete(instrfind({'Port'},{'COM5'}));
canal_serie=serial('COM5','BaudRate',9600,'Terminator','CR/LF');
fopen(canal_serie);
xlabel('Segundos');ylabel('Datos');title('Adquisicion de datos de temperatura bombillo');
grid on ;hold on;
prop=line(nan,nan,'color','b','LineWidth',1);
datos=fscanf(canal_serie,'%f %f',[2,1]);
clc;
disp('Adquisicion de datos arduino UNO');
i=1;
while i<1000
datos=fscanf(canal_serie, '%f %f',[2,1]);
y(i)=datos(1,1);
x(i)=datos(2,1);
set(prop,'YData',y(1:i),'XData',x(1:i));
drawnow;
i=i+1;
end
fclose(canal_serie);
delete(canal_serie);
clear canal_serie;
Este código lee los datos que envía el Arduino por el puerto serie tomando 999
datos de temperatura esto se demora 16.5 minutos los datos se graficas como se
muestra en la gráfica 1.
GRÁFICA 1: Respuesta transitoria del sistema
Fuente: El autor
La temperatura resultante de nuestra bombilla con el controlador ON/OFF de bucle
cerrado se muestra a continuación. El comportamiento es bastante intuitivo.
Inicialmente, la bombilla está demasiado fría, lo que hace que el controlador
encienda la bombilla. Esto hace que la bombilla se caliente. La temperatura de la
bombilla tarda aproximadamente 75 segundos en alcanzar primero la temperatura
deseada de 75 grados centígrados con la bombilla completamente encendida. En
este punto, la bombilla se apaga porque su temperatura ha subido por encima del
nivel deseado. A medida que la bombilla pierde calor al medio ambiente, su
temperatura disminuye hasta que cae por debajo de 75 grados, momento en el
que la bombilla se vuelve a encender. Esta estrategia de control ON/OFF da como
resultado el parpadeo de la bombilla, que se enciende y apaga rápidamente, y las
temperaturas resultantes se mueven alrededor de la temperatura deseada.
Este código en Matlab nos creará un vector con los 999 datos de temperatura con
el nombre de variable de temperatura y este vector se tiene que transponer para
ello ponemos en el command window salida=y’
Ahora generamos un vector columna de 999 datos de voltaje para mi caso son
110 voltios este vector lo generamos en Excel, estos datos se generaron poniendo
110 en la primera fila y primera columna y copiándolo hasta llegar a 999. Ver
imagen 1
IMAGEN 1: Tablas de datos.
Ahora los exportamos a Matlab, para ello damos clic en workspace y lo
nombramos salida damos doble clic en él y copiamos y pegamos los datos que
tenemos en Excel acá, ahora en el command window copiamos ident y damos
enter, Abriendo la siguiente ventana ver imagen 2.
Seleccionamos datos en el dominio del tiempo
IMAGEN 2: configuración de datos
Fuente: El autor
Se abrirá la siguiente ventana y en input ponemos entrada y en output salida en
starting time 0 y en simple time 1 y damos import.
IMAGEN 3: Configuración de variables
Fuente: El autor.
Ahora en la ventana del ident de Matlab seleccionamos process models y
seleccionamos sistema de primer orden y le damos estimar.
IMAGEN 5: Selección del sistema
Fuente: El autor
Ahora nos generará la función de transferencia de la planta y la exportamos al
workspace.
IMAGEN 6: Función de transferencia del modelo
Fuente: el autor.
Para ver la respuesta la paso de la planta modelada el el command window
copiamos.
G=tf(P1)
STEP(G).
IMAGEN 7: Respuesta de la función de transferencia
Fuente: el autor.
Para generar el control copiamos pidtool en el command window y damos enter.
Abriéndose el PID tuner. y damos clic en imprt y seleccionamos G. esperamos a
que cargue la planta y seleccionamos el tipo de control que deseamos.
Ahora en show parameters podemos ver las constantes de nuestro control,
nosotros escogimos un control PID
IMAGEN 8: Parámetros del controlador PID
IMAGEN 8: Configuración de los parámetros
Fuente: El autor.
IMAGEN 10: Respuesta del modelo
Fuente. El autor.
Ahora el simulink simularemos el control PID para ver su comportamiento.
En la caja de PID se ponen las constante KP,KI Y KD halladas en pid tuner y en
plant la planta hallada por el ident de matlab.
IMAGEN 11: Modelo en Simulink
Fuente: El autor
IMAGEN 12: Respuesta del modelo en simulink
Fuente: el autor.
Se observa un muy buen comportamiento de control de la planta.
CONCLUSION:
Hasta ahora en este experimento, la lógica para controlar la temperatura de la
bombilla se ha estado ejecutando en Simulink en un equipo host. Esto se logró
empleando el paquete de E/S de MathWorks que en esencia incluye un conjunto
de bloques especializado y un programa que se ejecuta a bordo del Arduino para
comunicarse entre la placa y el equipo host que ejecuta Simulink. La ventaja de
emplear el paquete de E/S es que nos permite comunicarnos con la placa en
tiempo real con facilidad. Por lo tanto, podemos observar y graficar la temperatura
de la bombilla medida (y el esfuerzo de control) durante el experimento.
REFERENCIAS
http://ctms.engin.umich.edu/CTMS/index.php?aux=Activities_Lightbulb#3