Professional Documents
Culture Documents
ndice
ndice.......................................................................................................................................2
Introduccin............................................................................................................................3
Marco terico..........................................................................................................................4
Diseo general para el estudio................................................................................................5
Mtodos y materiales..............................................................................................................6
Descripcin del Sistema..........................................................................................................8
Clculos Matemticos...........................................................................................................10
Resultados.............................................................................................................................12
Programacin: Cdigo de Arduino.......................................................................................13
Discusin...............................................................................................................................18
Conclusin............................................................................................................................19
Fuentes de informacin.........................................................................................................20
Anexo....................................................................................................................................21
Introduccin
Un controlador es el encargado de regular o controlar uno o ms procesos.
En nuestro caso, el proceso fue la planta de temperatura y esta a su vez fue controlada en
primera instancia con la programacin en Arduino y con un controlador PID.
La planta a controlar fue construida para regular de manera rpida las variables de
temperatura, por lo que fue necesario en primera instancia la obtencin de datos, realizada a
travs de un programa con comunicacin serial de Arduino y un sensor de temperatura.
Esta misma programacin en Arduino fue utilizada para el modelado del sistema, mediante
un programa creado para control.
Uno de los parmetros importantes luego del control fue el error, que sin duda tambin fue
controlado y cumpla con los rangos permitidos.
Los valores de establecidos para el PID fueron obtenidos a travs del mtodo de ensayo y
error, de tal manera que la planta se aproximara a un modelo ideal. Como gua para
nuestras aproximaciones, utilizamos constantes obtenidas en los experimentos hechos por
instrumentistas profesionales de la Universidad Tecnolgica de Panam, las cuales fueron
adaptadas para el funcionamiento de nuestra planta.
Marco terico
El control automtico es de vital importancia en el mundo de la ingeniera. Adems de
resultar imprescindible en sistemas robticos o procesos de manufacturacin moderna,
entre otras aplicaciones, se ha vuelto esencial en operaciones industriales como el control
de presin, temperatura, humedad, viscosidad, y flujo en las industrias de transformacin.
Un controlador automtico es un dispositivo basado en hardware y software, que
funciona mediante el monitoreo de una seal de error, que es la diferencia entre los valores
establecidos (el valor de temperatura, velocidad etc. que se requiere que el controlador
mantenga) y los valores reales o medidos que el parmetro a controlar tiene. La
combinacin del sistema a controlar y el controlador empleado tienen generalmente una
disposicin de lazo cerrado, se puede observar un ejemplo de cmo puede ser el sistema en
la Figura 1:
Figura 1:
Sistema de control lazo cerrado.
Nuestro
sistema utiliza
controlador PID,
cual se caracteriza por combinar
siguiente algoritmo de control:
u ( t ) =K p e ( t )+
un
el
tres acciones (P, I y D) mediante el
de(t)
1
e ( t ) dt+T d
=P+ I + D
Ti
dt
Este algoritmo est considerado como el PID estndar por la ISA (Instrument Society of
America), en donde e ( t ) es el error de la seal y u ( t ) es la entrada de control del
proceso. A continuacin, se resumen los trminos bsicos:
minutos, que debe transcurrir para que la accin integral alcance (iguale o repita) a
la accin proporcional.
Constante de tiempo derivativa ( T d ) : es el intervalo de tiempo, generalmente
expresado en minutos, en el que la accin derivativa adelanta a la accin
proporcional.
Este algoritmo ser utilizado para la programacin en Arduino, de tal manera que la
programacin siga los lineamientos necesarios para comportarse como un sistema
PID.
Mtodos y materiales
Mtodo:
tambin un sensor de control, el cual se basa en un termmetro digital para carnes, el cual
se introdujo a travs de un pequeo agujero en la tapa de la caja.
Se calcul que los tres focos encendidos en conjunto consumen 2.5 A en total, por lo que se
utiliz cable calibre 12 para su conexin con el AC ya que este calibre es el mnimo
requerido para realizar instalaciones elctricas.
Materiales:
3 bombillos de 100 W
Sensor LM35
Rel 5 V
Diodo 4004
Transistor 2N2222
Resistencia 10 k
El sistema trmico est constituido por 3 bombillos de 100 W que se encargan de calentar la
planta. La etapa de potencia est basada en la utilizacin de un rel conectado al Arduino,
de tal forma de que haya una conexin no fsica entre la salida digital del Arduino y el cual
al ser excitado por la seal del Arduino permite pasar corriente alterna a travs de l,
permitiendo as encender la carga de calefaccin.
As mismo, la realizacin de este proyecto es material suficiente para contemplar todos los
aspectos de diseo de controladores vistos durante el curso.
La siguiente formula es utilizada para transformar la seal de voltaje del sensor LM35 (su
esquema se puede observar en la figura 5) a una medida de temperatura en nuestra lgica
de Arduino:
C=5.0Dato100 /1023
Esta frmula sale de la relacin del sensor con los grados. El sensor de temperatura LM35
responde a variaciones de 10 mV por cada grado centgrado. Si el sensor detecta 1 grado
centgrado a la salida del sensor obtendramos 10 mV. Ejemplo: 26,4C = 264 mV = 0.264
V.
Tenemos que el convertidor de analgico a digital es de 10 bits de resolucin, los valores
variarn entre 0 y 1023, entonces Vout= (5V*Dato)/1023 siendo ( 0 < Dato < 1023 ) y para
ajustar la escala a grados centgrados: Vout = ((5V*Dato)*100)/1023.
En la grfica 1 se representa la linealidad del sensor y la proporcin que existe entre el
voltaje entregado por el sensor y la temperatura real en la planta.
Clculos Matemticos
Calculo de T 2
T2 :
T2=
Q
+T 14
A
Datos:
=0,84
2
2
A=0,0713 m ( 6 )=0,4278m
w
m .K4
=5,67 x 108
T 1 =26 +273=299 K
10
Q1=100 w
Q2=200 w
Q3=300 w
Para
Q1 :
T2=4
100 w
+299 K 4
w
( 0,84 ) . 5,67 x 108 2 4 . (0,4278 m2 )
m .K
T 2 =337,02 K 273
T 2 =64,02
Para
Q2 :
T2=4
200 w
+299 K 4
w
( 0,84 ) . 5,67 x 108 2 4 . (0,4278 m2 )
m .K
T 2 =365,30 K 273
T 2 =92,03
Para
Q3
T2=4
300 w
+299 K 4
w
( 0,84 ) . 5,67 x 108 2 4 . (0,4278 m2 )
m .K
T 2 =388,23 K 273
11
T 2 =115,23
Para obtener el modelo se utiliz,
=tiempo@ 63.3% 117C=tiempo@75C=88.8 seg (vamos a la grfica 2 y buscamos el
punto donde la curva es de 75C y obtenemos el tiempo de 88.8 seg).
K=
117
=1.3 1
88.8
td=27.11 seg
G planta ( s )=
e27.11s 1.31
88.8 s+ 1
Temper atura C
60.00
40.00
20.00
0.00
0:57:36
1:04:48
1:12:00
Tiempo
12
Kp=
1.288.8
=4
1.3126.11
Ki=226.11=52.2
Ki=0.526.11=13. 6
Gc =4 (1+
1
+13.2s)
52.2s
Resultados
Los resultados obtenidos sobre el comportamiento de la planta frente a diferentes
temperaturas durante un periodo de tiempo.
13
El bulbPin 8 es el pin digital que se encarga de mandar la seal al actuador en nuestro caso
el bombillo. Antes de llegar al bombillo tiene que pasar por un acondicionador que es el
rel.
El analog_pin 2 corresponde al sensor. Recoge la seal del sensor y la manda al bulbPin 8.
Declaracin de las variables:
int C = 0;
float Ti = 0; // variable to store the value coming from the sensor
float Td;
int state = 0;
float eo;
float en;
float uo = 0;
float Ts;
14
loop(){
if (C==0)
{
Tio=analogRead(analog_pin);
Tio=5.0*Tio*100.0/1024.0;
Ti=Tio;
Serial.println("N");
Serial.print(Ti);
Serial.println("N");
Serial.print(Tio);
eo = Td - Tio;
C=1;
}
Ti = analogRead(analog_pin);
Ti = 5.0*Ti*100.0/1024.0;
if (((Ti-Tio > 5)||(Ti-Tio < -5)))
{
Ti = Tio;
}
else
{
Tio = Ti;
}
15
Serial.print(millis());
Serial.print(" ");
Serial.print("Ti: ");
Serial.print(Ti);
if ((bmillis == 0)==(cont==0)){ //Ocurren dos iteraciones que
determinan el valor de Ts.
bmillis =millis()-bmillis;
Ts = bmillis/1000;
cont = !cont;
Serial.print("Ts: ");
Serial.println(Ts);
}
if (Serial.available())
{
Td = Serial.parseInt();
Serial.print("Td: ");
Serial.println(Td);
uo=0;
eo=0;
Io=0;
}
while (Td == 0)
{
if (Serial.available())
{
Td = Serial.parseInt();
uo = 0;
Io = 0;
}
digitalWrite(bulbPin, HIGH);
Ti = analogRead(analog_pin);
Ti = 5.0*Ti*100.0/1024.0;
Serial.print("M");
Serial.print(Ti);
Serial.println("M");
/*
if ((Ti-Tio > 5)||(Ti-Tio < -5))
{
Ti = Tio;
}
else
{
Tio = Ti;
}
*/
Serial.print(millis());
Serial.print(" ");
Serial.print("Ti: ");
Serial.println(Ti);
16
}
en = Td - Ti;
uo = PID(eo, Td, en, uo, Ts, kp);
/*
Serial.print("en: ");
Serial.println(en);
Serial.print("eo: ");
Serial.println(eo);
Serial.print("Td: ");
Serial.println(Td);
*/
Serial.print(" uo: ");
Serial.println(uo);
if (en > 0) {
bulbPeriod = constrain(map(uo,0,umin*kp/5,100,0),0,100);
}
else {
digitalWrite(bulbPin, HIGH);
bulbPeriod = 1000000;
}
/*
Serial.println(fanIntensity);
*/
/*
Serial.print("bulbPeriod: ");
Serial.println(bulbPeriod);
*/
//Writes the on/off interval to the bulb.
currentMillis = millis();
/*
Serial.print("C-:");
Serial.println(currentMillis - previousMillis);
Serial.println(1-bulbPeriod/100);
*/
if (state == HIGH){
if(currentMillis - previousMillis > ((1-bulbPeriod/100)*1000)) {
previousMillis = currentMillis;
state = LOW;
}
}
else
{
if(currentMillis - previousMillis > (bulbPeriod)*1000/100) {
previousMillis = currentMillis;
state = HIGH;
}
17
}
/*
Serial.print("state: ");
Serial.println(state);
*/
digitalWrite(bulbPin, state);
eo=en;
}
float PID(float eo, float setpoint, float en, float uo, float Ts,
float kp)
{
float u;
float P;
float I;
float D;
float integral;
float ki=0.8*kp;
float kd=0.5*kp;
integral=(en+eo)*Ts/2;
P = kp*en;
I = ki*(integral+Io+In+Ino);
D = kd*(en-eo)/Ts;
//Ino=In;
//In=Io;
Io=integral+Io;
/*
Serial.print("P: ");
Serial.println(P);
Serial.print("I: ");
Serial.println(I);
Serial.print("D: ");
Serial.println(D);
*/
u = P + I + D;
return u;
}
18
Discusin
Para disear cualquier controlador primero hay que tener en claro todos los aspectos
que componen uno.
El tiempo de muestreo es uno de los factores primordiales, pues si no es elegido de
manera adecuada, la planta no se ver reflejada correctamente y los datos que reciba
sern muchas veces descartados, interfiriendo en el control.
La adquisicin de datos se realiza de forma serial con ayuda de una placa Arduino,
la cual ayuda en la comunicacin con el microprocesador, y optimiza el trabajo pues
al ordenador le ayuda con tiempo de comunicacin.
19
Conclusin
Las seales obtenidas por los sensores, muy comnmente vienen mezcladas con
ruido, el cual debe ser eliminado para poder obtener una seal confiable, la cual
pueda ser usada como un parmetro valido para la retroalimentacin del
controlador. Durante esta experiencia fueron planteados diferentes mtodos para
evitar el ruido en nuestra medicin de temperatura, sin embargo, varios de ellos
presentaron complicaciones, triunfando as un mtodo de simple comparacin.
20
Fuentes de informacin
Bibliografa
URL:http://www.utp.ac.pa/documentos/2010/pdf/RevistaI_D_pags72_0.pdf
URL:http://diymakers.es/sensores-en-entradas-analogicas-de-arduino/
21
Anexo
22