Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Informe Control Moderno
Informe Control Moderno
Presentado por:
Docente:
Acuña Condori, Kevin
Control Moderno
IMPLEMENTACION DEL PROYECTO:
MATERIALES:
- LM35
- MÓDULO REGULADOR DE VOLTAJE
- ARDUINO UNO
- FOCO INCANDESCENTE
- JUMPERS MACHO-HEMBRA
- CABLE Nº16
- SOCKET
7. LM35 2. MÓDULO REGULADOR DE VOLTAJE
6.
LM35
∆ u=u2−u 1
−t
y ( t ) =K ∆ u ¿) = K ∆ u(1−e τ
s
)
Linealización:
Con los datos obtenidos al variar la potencia (de 0 a 9), medimos la temperatura
correspondiente a cada porcentaje.
Programación de Arduino:
Código completo:
//Sistema PID de control de temperatura de un foco
//Definiendo modo operación
int Modo_op = 1; // Modo de operación 1: Modo manual (lazo abierto)
// Modo de operación 2: Modo automático (lazo cerrado)
////////////////////////////////////////////////////////////////////////////////////////////////////////
// Declaración de variables
int pin_disparo = 3;
int pin_cruce_cero = 8;
int Tiempo_seg=0;
int last_CH1_state = 0;
int detectado_cruce = 0;
int valor=0;
char recibido;
int potencia_recibida=0;
int pot_rec=0;
void setup() {
Serial.begin(9600);
//Definicion de pines
pinMode (pin_disparo,OUTPUT);
pinMode (pin_cruce_cero,INPUT);
PCICR |= (1 << PCIE0);
PCMSK0 |= (1 << PCINT0);
}
void loop() {
if (Serial.available()) {
recibido= Serial.read();
if (recibido =='m')
{Modo_op=1;}
else if (recibido=='M')
{Modo_op=2;}
else if (recibido=='a')
{sp=20;}
else if (recibido=='s')
{sp=25;}
else if (recibido=='d')
{sp=30;}
else if (recibido=='f')
{sp=35;}
else if (recibido >= '0' && recibido <= '9')
{potencia_recibida=recibido - 48;
pot_rec=1;}
}
detectado_cruce=0;
Tiempo_seg+=1;
}
//Chequeamos que hayan pasado 120 ciclo de la onda senoidal es decir 1 seg
if(Tiempo_seg==120){
Tiempo_seg=0;
temperatura = 5.0*100.0*analogRead(A)/1024.0; //Lectura del sensor LM35
//se divide entre 2 a la 10 bits para hallar
temperatura
//((5-0)100(dato analógico)))/2^10
if(Modo_op == 1){
// Modo manual (lazo abierto)
if(pot_rec=1) {
potencia_1 = potencia_recibida*10;
pot_rec=0;
}
Potencia = potencia_1;
}
else if(Modo_op == 2){
// Modo automatico (lazo cerrado)
PID_error = sp - temperatura; //Cálculo del error
Error_INT = Error_INT + PID_error*(1000/Read_Delay); //Cálculo de la integral
del error
PID_valor = Kc*(PID_error + (1/Tao_I)*Error_INT); //Cálculo de la salida del
controlador PI
Función de transferencia
Para la función de transferencia de nuestro sistema de control de la temperatura de
un foco, se da una respuesta de primer orden:
K 1.32
=
τs+1 67.18 s +1
La curva azul representa a los valores tomados por el sensor (datos reales) y la curva
anaranjada representa a los valores calculados de la Función de transferencia.
No hay una gran exactitud; sin embargo, se aproxima bastante el modelo a los valores
sensados.
Sin embargo, para modelar en espacio de estados, se agregó un polo más para que
el sistema sea de segundo orden.
Modelamiento de espacio de estados
Debido a que es un sistema de primer orden, se agregó un polo para el modelamiento
en espacio de estados. Se multiplicó el primer polo x4 y con ello, se halló el segundo
polo:
K 1.32
G(s)= τs+1 => G*(s)= ( 67.18 s+1 )∗( s +0.06 )
Cálculos:
22∗u(t ) 83.85∗x 2 x1
x˙2= − −
1119.67 1119.67 1119.67
Definiendo coeficientes:
Luego de calcular e igualar, se modeló en espacio de estados de tal forma que
cumplan con el diagrama de bloques de la teoría de modelamiento:
Matlab y Simulink
Primero se quiso ver la respuesta usando la FT de segundo orden de nuestra planta:
Se usaron Script y Simulink para verificar las respuestas ante un escalón.
Luego, se agregó la Temperatura inicial (T0 = 21°C) y así vemos su respuesta ante un
escalón, mediante la herramienta Scope:
Para ver la respuesta en modelamiento de espacio de estados, primero se definieron
las matrices anteriormente calculadas:
Ley de control
Para que nuestro sistema tenga una salida a un punto de referencia fijo, en presencia
de disturbios, se procedió a aplica la Ley de Control.
En este caso, hicimos los cálculos sin referencia. Por tanto, el u=−kx . Con ello, se
reemplaza y se resuelve:
r=0
|( ) (
0
ẋ= Ax+ B (−kx ) sIX ( s )= AX ( s ) + B (−k ) X ( s )( sI− A+ Bk ) X ( s )=0 det ( sI − A +Bk ) = s 1 0 − −1 −
0 1
1119.67 11
|( ) ( )( )|
0 1 0 0
s 0
¿ − −1 −83.85 + 22 22
0 s k1 k2
1119.67 1119.67 1119.67 1119.67
|( |
s −1
¿ 1
+
22
1119.67 1119.67
k1 ) (s + 1119.67
83.85
+
1119.67 )
22
k2
¿ s2 + ( 1119.67
83.85
+
22
1119.67
k 2 ) s+ (
1119.67 1119.67 )
1
+
22
k1
Luego de hallar los K, se modela en Simulink para verificar que cumplan como
reguladores.
Como se puede observar en el Scope, nuestro sistema primero sufre una gran
oscilación, pero sí llega a un ess = 0 luego de unos segundos. Ante un disturbio, sí
llega a estabilizarse. Por tanto, los cálculos realizados sí están correctos y los valores
de k1 y k2 sí sirven como reguladores.
Conclusiones:
- El sistema es sobre amortiguado debido a que los 2 polos son negativos
- Asimismo, el sistema, se estabiliza con un tiempo de establecimiento en 269
segundos. Es posible evidenciar que la respuesta temporal de este sistema es
sobre amortiguada.
Recomendaciones:
- Para lograr enfriar el foco y tomar las muestras más rapido se recomienda
colocar un ventilador cerca del foco para acelerar el enfriamiento.
- Asimismo, se recomienda tomar la medida de los valores de temperatura,
contando el valor de temperatura de medio ambiente.
Link de exposición y presentación del sistema funcionando
Exposiciones:
https://youtu.be/znUeCmGcwLs
Presentación de Sistema en funcionamiento:
https://youtu.be/46xuS3YCaMg