Sistema de enfriamiento

May 31, 2017 | Autor: Leonel Higuerey | Categoria: Control Systems
Share Embed


Descrição do Produto

REPÚBLICA BOLIVARIANA DE VENEZUELA
UNIVERSIDAD NACIONAL EXPERIMENTAL POLITÉCNICA
"ANTONIO JOSÉ DE SUCRE"
VICERECTORADO "LUÍS CABALLERO MEJIAS"
NÚCLEO CHARALLAVE
INGENIERÍA MECATRÓNICA
LAB. DE CONTROL AUTOMÁTICO





Diseño de Sistema de Acondicionamiento de Temperatura de Agua Mediante el Uso de un Intercambiador de Calor y Realimentación con Motor DC (Bomba)Diseño de Sistema de Acondicionamiento de Temperatura de Agua Mediante el Uso de un Intercambiador de Calor y Realimentación con Motor DC (Bomba)
Diseño de Sistema de Acondicionamiento de Temperatura de Agua Mediante el Uso de un Intercambiador de Calor y Realimentación con Motor DC (Bomba)
Diseño de Sistema de Acondicionamiento de Temperatura de Agua Mediante el Uso de un Intercambiador de Calor y Realimentación con Motor DC (Bomba)










Profesor:
Ing. Raúl Pérez
Autores:
Leonel Higuerey Exp: 2010247191
Katherine Navas Exp. 2010247180

Charallave, Julio de 2016

Objetivo General

Diseñar un sistema de acondicionamiento de temperatura de agua mediante el uso de un intercambiador de calor y realimentación con motor dc (bomba).

Objetivos Específicos

Diseño e implementación del intercambiador de calor en contraflujo.
Diseño e implementación de prototipo funcional de una bomba centrífuga, basado en un motor dc.
Diseñar el software que permita monitorear y controlar la temperatura interna del tanque.
Diseño del hardware y acondicionadores de señal respectivos para la adquisición de datos de la temperatura y control de la bomba.
Evaluación de desempeño del prototipo.






















Aparatos, instrumentos y materiales utilizados
Los instrumentos y materiales utilizados para la realización de este equipo son los siguientes:
Fuente de poder: para la alimentación de los circuitos.
Termómetro de mercurio hasta 300ºC: para obtener el valor de la temperatura dentro del tanque.
Multímetro: para medir voltaje.
Lcd 16x2: para mostrar el valor de la temperatura sensada, para mostrar el valor del set point y la potencia de la bomba.
Pic 18f4550: para el control de la planta (ver figura b)
Sensor LM35: para sensar la temperatura interna del tanque.
Motor DC: para armar la bomba que realimenta al tanque.
Mosfet: para controlar la potencia entregada a la bomba.
Optocoplador: para aislar el circuito del microcontrolador con la puerta del mosfet.
Potenciómetro de 100K: para el set point.
Potenciómetro de 1K: para el contraste de la lcd.
Amplificador LM324: para el acondicionador de señales del sensor de temperatura (ver a)
Resistencias varias.
Cable utp: para las conexiones.
Tubería de cobre de 1/2: para el serpentín, por esta pasara agua a altas temperaturas, aproximadamente hasta 100ºC.
Tubería de plástico de 3/4: para el serpentín, esta será la camisa de la tubería de cobre, por esta pasara agua de la toma doméstica.
Tees de 1/2: para para las conexiones del serpentín.
Niples de 1/2 : para las conexiones del serpentín.
Conectores Claber de jardinería: para las conexiones de las mangueras, la toma de agua y para la salida al tanque acumulador.
Abrazaderas: para ajustar las conexiones.
Teflón: para evitar los botes de agua.
Tanque de 1 gal. : para el depósito de agua.
Mesa de madera con dos pisos: para la estructura del sistema.
Válvula NPT 1/4 de compuerta: para la apertura de la salida del tanque.
Adaptador de 1/2 NPT a 3/8 flare compresión: para la conexión de la válvula con la tubería de cobre del serpentín.

Figura (a) Acondicionador de señales del sensor de temperatura


Figura (b) Tarjeta de adquisición e indicadora de datos.

Programación del microcontrolador con PIC C Compiler:
/*
Programa de Control de Temperatura con un PIC el cual nos informa la temperatura actual de un tanque y nos permite llevar hasta un setpoint deseado con la ayuda de un sistema de enfriamiento

Dicho setpoint puede ser modificado manualmente a través de un potenciómetro de 40°C hasta 80°C
*/


#include //Nuestro pic
#deviceadc = 10 //Convertidor AD a 10bits
#fuses XT, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
#use delay (clock=4000000) //Fosc=4Mhz
#define LCD_ENABLE_PIN PIN_B2
#define LCD_RS_PIN PIN_B0
#define LCD_RW_PIN PIN_B1
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7
#include //Libreria de la lcd

//Declaracion de variables publicas
float TOC;
floatPrescaler;


//Prototipos de Funciones
voidRefresh_lcd(float _DutyCicle_, float _SP_, float _Temperatura_); // funcion para refrescar la lcd con los nuevos datos
int16 Get_Lectura(intchannel); // funcion para obtener la conversion AD del "channel" seleccionado
floatRelacion_LineaRecta_m(float m, floatvalorEjeIndep); //funcion para calcular valores por medio de la resolucion (m) y su valor en bits
voidRefresh_PWM_Duty(float _DCValue); //funcion para acondicionar el ciclo util del pwm
floatCalcula_Value_DC(float _SP_, float _Temp_); //funcion para obtener el valor del dc


voidmain()
{
floatDelta_T = 0.0;
floatValue_DC = 0.0;
floatbits_temperatura = 0.0;
floatbits_setPoint = 0.0;
floatbits_dutyCicle = 0.0;
floatSetPoint = 0.0;
floatDutyCicle = 0.0;
float Temperatura = 0.0;
floatmT = 0.097751710; //Pendiente de la temperatura m = (100 - 0) / (1023 - 0)
floatmDC = 0.097751710; //Pendiente de la recta para DutCicle m = (100 - 0)/(255 - 0)
floatmSP = 0.039100684; //Pendiente de la recta para SetPoint m = (80 - 40)/(1023 - 0)
floatPWMValue = 0.0;
floatPWMValue_ = 0.0; //Valor de PWMValue inmediato anterior

TOC = 0.00000025; // TOC = 1 / clock = 1 / 4000000
Prescaler = 16.0;

output_low(PIN_C2); // Pin CCP1 en bajo
setup_ccp1(CCP_PWM); // Configurar CCP1 como PWM
setup_timer_2(T2_DIV_BY_16, 249, 1); //Frecuencia del PWM = 250 Hz
set_pwm1_duty(0); // DC pwm inicialmente en cero
lcd_init(); //Inicializamos LCD
lcd_putc(" UNEXPO");
lcd_putc("\n");
lcd_putc(" Lab de Control");
delay_ms(2000);
lcd_putc("\f");
lcd_putc("CONTROL DE");
lcd_putc("\n");
lcd_putc("TEMPERATURA");
delay_ms(2000);
lcd_putc("\f");
lcd_putc("HIGUEREY, L.");
lcd_putc("\n");
lcd_putc("NAVAS, K.");
delay_ms(2000);
lcd_putc("\f");
lcd_putc("INICIANDO...");
delay_ms(1500);

while(1)
{
//Obtenemos las lecturas del convertidor A/D para cada parametro de entrada (temperatura y setPoint)
bits_temperatura = Get_Lectura(0);
bits_setPoint = Get_Lectura(1);

//Obtenemos el valor del eje dependiente pasando el valor del eje independiente (bits) y el valor de la pendiente
SetPoint = Relacion_Linearecta_m(mSP, bits_setPoint)+40; //SP ajustado (0V=40°C;5V=80°C)
Temperatura = Relacion_Linearecta_m(mT, bits_temperatura); //(0V=0°C;5V=100°C)

//Calculamos el valor del DC
Value_DC = Calcula_Value_DC(SetPoint, Temperatura);

DutyCicle = Relacion_Linearecta_m(mDC, Value_DC);

PWMValue = Value_DC;

if(PWMValue != PWMValue_)
{Refresh_PWM_Duty(PWMValue);}

Refresh_lcd(DutyCicle, SetPoint, Temperatura);
PWMValue_ = PWMValue;
delay_ms(10);
}
}

//Metodo que calcula el valor del DutyCicle que se enviará
//No es más que la diferencia entre el valor de temperatura que
//se desea (SetPoint _SP_) y el valor de temperatura actual (_Temp_)
floatCalcula_Value_DC(float _SP_, float _Temp_)
{
floatValue_DC = 0.0;
floatDelta_T = 0.0;
Delta_T = _Temp_ - _SP_;
Value_DC = Delta_T*1023/60; //se ajusta el valor de los bits del DC desde 100 a 40,

if(Delta_T< 0)
{ Value_DC = 0; }

returnValue_DC;
}

//Asigna un nuevo valor de DutyCicle al PWM usado
voidRefresh_PWM_Duty(float _DCValue)
{
set_pwm1_duty((int16) _DCValue);
}

//Metodo que regresa el valor del eje dependiente para un valor
//del eje independiente (valorEjeIndep) de una recta de pendiente m
//que pasa por el origen
floatRelacion_LineaRecta_m(float m, floatvalorEjeIndep)
{
float Valor = 0.0;
Valor = (m * valorEjeIndep); //Calculamos el Valor del eje dependiente
return Valor;
}

//Obitiene una lectura del canal analógico pasado de parámetro
int16 Get_Lectura(intchannel)
{
floatmedicion=0; //variable entera que contendra la medicion del convertidor AD
int1 done = 0; //Contendra 1 si el convertidor terminó de convertir

setup_adc (adc_clock_internal); //Usando el oscilador interno
setup_adc_ports (all_analog); //Todo el puerto analogico como entrada analogica
set_adc_channel (channel); //Establecemos el canal de lectura analogica
delay_ms(1); //a smalldelayisrequiredaftersetting the channel
medicion=read_adc (); // Hace conversión AD
done = adc_done(); //done = 1 si el convertidor termino de convertir
while(!done)
{
done = adc_done(); //Mientras no acabe de convertir se seguira ciclando
}
setup_adc (adc_off); //detenemos al convertidor
returnmedicion; //Regresamos la medicion
}

//Reasigana los valores en la pantalla lcd
voidRefresh_lcd(float _DutyCicle_, float _SP_, float _Temperatura_)
{
lcd_putc("\f");
printf(lcd_putc,"DC:%4.1f", _DutyCicle_);
lcd_putc("%");
lcd_putc("\n");
printf(lcd_putc,"SP:%4.1f T:%4.1f", _SP_, _Temperatura_);
delay_ms(150);
}

Figura (c) DTI del sistema



Datos y Observaciones
Tabla Nº1. Prueba 1: Variación de temperatura en el tiempo.
Tiempo (segundos)/
Temperatura (ºC)
0
10
20
30
40
50
60
70
80
90
0










100










200










300










400










500










600










700










800










900














Tabla Nº2. Prueba 2: Variación de temperatura en el tiempo.
Tiempo (segundos)/
Temperatura (ºC)
0
10
20
30
40
50
60
70
80
90
0










100










200










300










400










500










600










700










800










900
















Procedimiento del Experimento

Llevar el agua a las condiciones iniciales: Como primer paso debemos llevar el agua a una temperatura en un rango entre 80ºC y 100ºC, con la ayuda de una hornilla o mechero en un recipiente, luego de esto verter el agua en el tanque hasta el nivel que consideremos como nuestra altura H predeterminada.

Primera prueba: Procedemos a sensar el agua con un termómetro y comparamos con nuestro elemento sensor lm35, para verificar la temperatura correcta de operación, ahora con la ayuda de un cronometro graficamos la respuesta de la temperatura con respecto al tiempo, sin utilizar el elemento diseñado para la transferencia de calor, esto es, dejaremos que el agua disminuya su temperatura hasta el punto de operación que fijemos solo con la interacción de la temperatura ambiente.

Reanudar las condiciones iniciales: llevamos el agua nuevamente a la temperatura entre 80ºC y 100ºC.

Segunda prueba: Ahora procedemos a inicializar el circuito de control, para ello medimos la temperatura interna del tanque con el lm35, y luego escogemos nuestro punto de operación (set point) con el potenciómetro dispuesto para esto. Conectamos el elemento intercambiador de calor a una toma de agua de red doméstica, y la salida a un tanque acumulador para no desperdiciar el agua. Luego abrimos la válvula para que pase el agua caliente por el intercambiador, pasando por la bomba que tiene en su otro extremo para que sea realimentado el tanque. Con la ayuda de un cronometro medimos la respuesta del sistema para ser comparada con la respuesta sin el intercambiador a posterior.




Lihat lebih banyak...

Comentários

Copyright © 2017 DADOSPDF Inc.