0% encontró este documento útil (0 votos)
45 vistas10 páginas

Control de Temperatura con Arduino y Matlab

Este documento describe el diseño de un controlador PID para regular la temperatura de una bombilla utilizando Arduino y Matlab. Se modeló el sistema de temperatura de la bombilla en Simulink y se implementó un controlador ON/OFF inicial. Luego, se identificó la función de transferencia del sistema y se diseñó un controlador PID para mejorar el control de la temperatura. El controlador PID demostró regular efectivamente la temperatura alrededor del punto de consigna deseado.

Cargado por

brayan barrera
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
45 vistas10 páginas

Control de Temperatura con Arduino y Matlab

Este documento describe el diseño de un controlador PID para regular la temperatura de una bombilla utilizando Arduino y Matlab. Se modeló el sistema de temperatura de la bombilla en Simulink y se implementó un controlador ON/OFF inicial. Luego, se identificó la función de transferencia del sistema y se diseñó un controlador PID para mejorar el control de la temperatura. El controlador PID demostró regular efectivamente la temperatura alrededor del punto de consigna deseado.

Cargado por

brayan barrera
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

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

También podría gustarte