Está en la página 1de 15

ADECUACIÓN DE UN SISTEMA DE REFRIGERACIÓN CON CELDA PELTIER

POR MEDIO DE ARDUINO

DESCRIPCIÓN
Se requiere refrigerar algún sistema con la condición de que la temperatura mínima sobre la
superficie no alcance la temperatura del punto de rocío. La temperatura de punto de rocío se
define como la temperatura exacta en donde el vapor de agua del aire se empieza a condensar
sobre la superficie, este fenómeno afecta negativamente a los sistemas electrónicos o donde
la condensación de agua puede dañar algunos elementos. Gracias a esto este sistema podría
ser utilizado para refrigerar el procesador de un computador o para remover rápidamente el
calor producido por una celda de combustible.
Para lograr esto se requiere el uso de una celda peltier, un dispositivo cerámico y
termoeléctrico que generan una diferencia de temperatura entre sus caras al ser circulados
por una corriente: una de sus caras se enfría, mientras que la otra se calienta. Si se invierte la
polaridad de la circulación de corriente, la cara fría pasa a ser caliente y viceversa,
invirtiéndose el sentido del flujo de calor. Usando la celda peltier la superficie que se desea
refrigerar empezará a disminuir su temperatura y se configurará el sistema para que cuanto
la temperatura de la superficie en contacto llegué a la temperatura de punto de rocío calculada
el sistema se apague y una vez la superficie se caliente lo suficiente se volverá a prender el
sistema refrigerando de una forma ON/OFF (Encendido y apagado).
Se usó un Arduino UNO que tiene una cantidad más que suficiente de capacidad de cómputo
y de entradas análogas y digitales. En el Arduino con la ayuda de sensores se hará el cálculo
de la temperatura del punto de rocío mediante dos variables, además de estar monitoreando
la temperatura de la superficie, una vez se cumplan las condiciones se procederá a apagar o
encender la celda peltier mediante el uso de un relé. Para alimentar el Arduino se usará una
fuente de poder de 12V y 1.5A y para alimentar la celda peltier se usará una fuente de poder
de computador sencilla y antigua que suministra 12V y 19A, aunque en ambos casos, el
Arduino y la celda peltier consumen menos energía y por medio del uso de una pantalla LCD
se podrá ver en tiempo real las variables que se están midiendo y la variación de la
temperatura del punto de rocío. Finalmente se calcula y se presenta la temperatura de
sensación térmica que podría ser utilizada en sistemas de refrigeración de aire acondicionado.

DIAGRAMA DE BLOQUES
Se presenta un diagrama de bloques que representa el sistema:
Figura 1. Diagrama de bloques del sistema de refrigeración

Ta: Temperatura ambiente


Hr: Humedad relativa
Tpr: Temperatura del punto de rocío
Tc: Temperatura en contacto con la superficie
u1: Tc-Tpr
En el proceso el objetivo será medir la temperatura ambiente y la humedad relativa, con estas
dos variables se procede a calcular mediante tablas termodinámicas la temperatura del punto
de rocío. Además, se mide la temperatura de la superficie donde desea que no haya
condensación de agua. Se comparán estas variables y si se dan las condiciones necesarias se
enviará una señal al relé para que se prenda o se apague. El relé permitirá que la celda peltier
reciba o no energía, si recibe energía enfriará y si no se apagará.
DIAGRAMA ESQUEMÁTICO DEL CIRCUITO O DIAGRAMA DE
CONEXIONES

El diagrama de conexiones usado en el proyecto fue el siguiente:


Figura 2. Montaje del sistema de refrigeración con Arduino

En el montaje realizado se requirió de los siguientes elementos:


1. Arduino UNO R3

Figura 3. Arduino UNO R3


2. Protoboard

Figura 4. Protoboard

3. Capacitor de 1000 uf

Figura 5. Capacitor

4. Sensor digital de temperatura y humedad relativa DHT22

Figura 6. Sensor DHT22 digital

Existen dos tipos de sensores DHT que se pueden obtener en el mercado actualmente, el
DHT11 y el DHT22, ambos tienen la capacidad de medir temperatura y humedad relativa,
la principal diferencia se encuentra en su rango de operación y precisión al momento de
realizar mediciones siendo el DHT22 el de mejor características. Las características del
sensor DHT22 son las siguientes:
Tabla 1. Especificaciones dadas por el fabricante para el sensor DHT22

5. Resistencia de 4700 Ω

Figura 7. Resistencia de 4700 ohms (figura sólo de ejemplo)

6. Sensor de temperatura análogo LM35

Figura 8. Sensor de temperatura LM35 análogo

Las características del sensor LM35 son las siguientes:


7. Relé

Figura 9. Relé (Relay)

8. Diodo

Figura 10. Diodo

9. LCD 20x4 con módulo I2C

Figura 11. LCD con módulo I2C, permite usar menos conexiones, la figura representa la versión 16x2

A continuación, se muestra una imagen del LCD usado en el sistema.

Figura 12. LCD 20x4 con módulo I2C


10. Fuente de poder de computador

Figura 13. Fuente de poder de computador, en el montaje se representó esto con el elemento a la izquierda,
pero realmente se usó el elemento de la derecha, haciendo corto a la fuente para que siempre que se conecte
se prendiese automáticamente

11. Fuente de poder para el Arduino

Figura 14. Fuente de poder para Arduino

12. Cables de conexión

ECUACIONES
Para la realización del código en Arduino se necesita saber como calcular dos variables, las
cuáles son la temperatura del punto de rocío y la sensación térmica.

 Temperatura del punto de rocío


El punto de rocío o temperatura de rocío es la más baja temperatura a la que empieza a
condensarse el vapor de agua contenido en el aire, produciendo rocío. Existen varias formas
de calcular esta variable, desde ecuaciones aproximadas hasta con el uso de tablas
termodinámicas que es lo más preciso al momento de realizar este cálculo. Para calcular la
temperatura del punto de rocío se pueden usar las siguientes ecuaciones:

8 𝐻
𝑇𝑝𝑟 = √ (110 + 𝑇) − 110 𝐸𝑐𝑢𝑎𝑐𝑖ó𝑛 1
100

La fórmula ampliada se define como:

8 𝐻
𝑇𝑝𝑟 = √ (112 + 0.9 𝑇) + (0.1 𝑇) − 112 𝐸𝑐𝑢𝑎𝑐𝑖ó𝑛 2
100

En donde
Tpr: Temperatura del punto de rocío
H: Humedad relativa
T: Temperatura ambiente
Pero si se desea realizar un cálculo más preciso se debe recurrir a las tablas termodinámicas.
Los pasos a seguir se presentan a continuación:
1. Medir la temperatura ambiente
2. Hallar la presión de saturación (Psat) para la temperatura ambiente (Tabla A4)
𝐻
3. Realizar el cálculo 𝑃𝑣 = 𝑃𝑠𝑎𝑡 ∗ para obtener la Presión de vapor
100
4. Con la presión de vapor se halla la temperatura de saturación (Tabla A5) y así se
obtiene la temperatura del punto de rocío
También se puede calcular la temperatura del punto de rocío por medio de la tabla
psicrométrica. El método utilizado fue el de tablas termodinámicas.

Tabla 2. Tabla A4, termodinámica de Cengel


Se debe recalcar que muy probablemente cualquier medición de temperatura nunca dará un
valor exacto para usar las tablas termodinámicas, siempre se requerirá una interpolación y el
código que se desarrolló contempla esto.

Tabla 3. Tabla A5, termodinámica de Cengel

 Sensación Térmica
Es la temperatura que se percibe como ser humano, puede ser diferente a la temperatura
ambiente en ese instante si algunas condiciones se dan. Para determinar la temperatura de
sensación térmica es necesario conocer los valores de la temperatura ambiente y la velocidad
del aire o humedad relativa. En este trabajo se enfocó en la sensación térmica por medio de
temperatura y humedad relativa, por lo tanto, esta medición sólo es correcta si la velocidad
del aire es baja.
Para el cálculo de sensación térmica se usan las siguientes tablas.

Tabla 4. Tabla para el cálculo de la sensación térmica


La librería que se debe descargar para el correcto funcionamiento del sensor DHT22 contiene
esta tabla y sólo es necesario escribir algunas líneas de código para calcular la sensación
térmica.
PROGRAMACIÓN EN ARDUINO
#include "Wire.h" //Librerías necesarias para el funcionamiento del LCD 20x4 con módulo I2C
#include "LCD.h"
#include "LiquidCrystal_I2C.h"
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7);

#include "DHT.h" //Librerías para el funcionamiento del sensor DHT22, también declaración del pin digital de uso
#define DHTTYPE DHT22
const int DHTPin = 8;
DHT dht(DHTPin, DHTTYPE);

float temperaturarocio; //Definición de variables que serán usadas más adelante, pin digital para el rele y sensor LM35
float temperaturabaja = 50;
float temperaturaalta = 50;
float a;
float b;
int RELE = 7;
float h;
float t;
float tf;
float tcc;
float tempC;
int pinLM35;

void setup() { //Inicialización del LCD

lcd.begin (20, 4);


lcd.setBacklightPin(3, POSITIVE);
lcd.setBacklight(HIGH);
lcd.clear();

dht.begin(); //Inicialización del sensor DHT22

pinMode(RELE, OUTPUT); //Inicialización del relé

analogReference(INTERNAL); //Este comando sirve para que el sensor LM35 no trabaje a 5V si no a 1.1V, aumenta la
resolución

}
void loop() {

delay (250);

tempC = 0; //Declaración de otras variables


float lec = 0;
h = 0;
t = 0;
tf = 0;
a = 0;
b = 0;
temperaturarocio = 0;
float f = 0;
float hi = 0;
float hic = 0;

for (int i = 0; i <= 2000; i++) { //Lecturas del sensor LM35, se realizará un promedio de 2000 lecturas
lec = lec + analogRead(pinLM35);
}

lec = lec / 2000;


tempC = ((1.1 * analogRead(pinLM35) * 100.0) / 1024.0); //Calculo de la temperatura leida por el LM35
tempC = (tempC - 1.5) ; //Calibración para que la lectura sea correcta, a pesar de que la ecuación anterior
//es la recomendada por el fabricante no arroja mediciones correctas
if ( tempC <= temperaturabaja ) {
digitalWrite(RELE, HIGH); //Determinar si está muy cerca de la temperatura del punto de rocío
}
if ( tempC >= temperaturaalta ) {
digitalWrite(RELE, LOW);
}

h = dht.readHumidity(); //lectura dht22


t = dht.readTemperature(); //lectura dht22
tf = dht.readTemperature(true); //lectura dht22

h = (h + 3) * 1.005; //calibración
t = t * 1.004; //calibración
tf = tf * 1.004; //calibración

//Aquí comienzan las tablas termodinámicas para el cálculo de la temperatura del punto de rocío

if (0 <= t && t < 5) {


a = 0.6117 + (t - 0.01) * ((0.8725 - 0.6117) / (5 - 0.01));
b = (a) * ((h / 100));
if (1 <= b && b < 1.5) {
temperaturarocio = 6.97 + (b - 1) * ((13.02 - 6.97) / (1.5 - 1));
}
if (1.5 <= b && b < 2) {
temperaturarocio = 13.02 + (b - 1.5) * ((17.5 - 13.02) / (2 - 1.5));
}
if (2 <= b && b < 2.5) {
temperaturarocio = 17.5 + (b - 2) * ((21.08 - 17.5) / (2.5 - 2));
}
if (2.5 <= b && b < 3) {
temperaturarocio = 21.08 + (b - 2.5) * ((24.08 - 21.08) / (3 - 2.5));
}
if (3 <= b && b <= 4) {
temperaturarocio = 24.08 + (b - 3) * ((28.96 - 24.08) / (4 - 3));
}
}

if (5 <= t && t < 10) {


a = 0.8725 + (t - 5) * ((1.2281 - 0.8725) / (10 - 5));
b = (a) * ((h / 100));
if (1 <= b && b < 1.5) {
temperaturarocio = 6.97 + (b - 1) * ((13.02 - 6.97) / (1.5 - 1));
}
if (1.5 <= b && b < 2) {
temperaturarocio = 13.02 + (b - 1.5) * ((17.5 - 13.02) / (2 - 1.5));
}
if (2 <= b && b < 2.5) {
temperaturarocio = 17.5 + (b - 2) * ((21.08 - 17.5) / (2.5 - 2));
}
if (2.5 <= b && b < 3) {
temperaturarocio = 21.08 + (b - 2.5) * ((24.08 - 21.08) / (3 - 2.5));
}
if (3 <= b && b <= 4) {
temperaturarocio = 24.08 + (b - 3) * ((28.96 - 24.08) / (4 - 3));
}
}

if (10 <= t && t < 15) {


a = 1.2281 + (t - 10) * ((1.7057 - 1.2281) / (15 - 10));
b = (a) * ((h / 100));
if (1 <= b && b < 1.5) {
temperaturarocio = 6.97 + (b - 1) * ((13.02 - 6.97) / (1.5 - 1));
}
if (1.5 <= b && b < 2) {
temperaturarocio = 13.02 + (b - 1.5) * ((17.5 - 13.02) / (2 - 1.5));
}
if (2 <= b && b < 2.5) {
temperaturarocio = 17.5 + (b - 2) * ((21.08 - 17.5) / (2.5 - 2));
}
if (2.5 <= b && b < 3) {
temperaturarocio = 21.08 + (b - 2.5) * ((24.08 - 21.08) / (3 - 2.5));
}
if (3 <= b && b <= 4) {
temperaturarocio = 24.08 + (b - 3) * ((28.96 - 24.08) / (4 - 3));
}
}

if (15 <= t && t < 20) {


a = 1.7057 + (t - 15) * ((2.3392 - 1.7057) / (20 - 15));
b = (a) * ((h / 100));
if (1 <= b && b < 1.5) {
temperaturarocio = 6.97 + (b - 1) * ((13.02 - 6.97) / (1.5 - 1));
}
if (1.5 <= b && b < 2) {
temperaturarocio = 13.02 + (b - 1.5) * ((17.5 - 13.02) / (2 - 1.5));
}
if (2 <= b && b < 2.5) {
temperaturarocio = 17.5 + (b - 2) * ((21.08 - 17.5) / (2.5 - 2));
}
if (2.5 <= b && b < 3) {
temperaturarocio = 21.08 + (b - 2.5) * ((24.08 - 21.08) / (3 - 2.5));
}
if (3 <= b && b <= 4) {
temperaturarocio = 24.08 + (b - 3) * ((28.96 - 24.08) / (4 - 3));
}
}

if (20 <= t && t < 25) {


a = 2.3392 + (t - 20) * ((3.1698 - 2.3392) / (25 - 20));
b = (a) * ((h / 100));
if (1 <= b && b < 1.5) {
temperaturarocio = 6.97 + (b - 1) * ((13.02 - 6.97) / (1.5 - 1));
}
if (1.5 <= b && b < 2) {
temperaturarocio = 13.02 + (b - 1.5) * ((17.5 - 13.02) / (2 - 1.5));
}
if (2 <= b && b < 2.5) {
temperaturarocio = 17.5 + (b - 2) * ((21.08 - 17.5) / (2.5 - 2));
}
if (2.5 <= b && b < 3) {
temperaturarocio = 21.08 + (b - 2.5) * ((24.08 - 21.08) / (3 - 2.5));
}
if (3 <= b && b <= 4) {
temperaturarocio = 24.08 + (b - 3) * ((28.96 - 24.08) / (4 - 3));
}
}

if (25 <= t && t < 30) {


a = 3.1698 + (t - 25) * ((4.2469 - 3.1698) / (30 - 25));
b = (a) * ((h / 100));
if (1 <= b && b < 1.5) {
temperaturarocio = 6.97 + (b - 1) * ((13.02 - 6.97) / (1.5 - 1));
}
if (1.5 <= b && b < 2) {
temperaturarocio = 13.02 + (b - 1.5) * ((17.5 - 13.02) / (2 - 1.5));
}
if (2 <= b && b < 2.5) {
temperaturarocio = 17.5 + (b - 2) * ((21.08 - 17.5) / (2.5 - 2));
}
if (2.5 <= b && b < 3) {
temperaturarocio = 21.08 + (b - 2.5) * ((24.08 - 21.08) / (3 - 2.5));
}
if (3 <= b && b <= 4) {
temperaturarocio = 24.08 + (b - 3) * ((28.96 - 24.08) / (4 - 3));
}
}

if (30 <= t && t <= 35) {


a = 4.2469 + (t - 30) * ((5.6291 - 4.2469) / (35 - 30));
b = (a) * ((h / 100));
if (1 <= b && b < 1.5) {
temperaturarocio = 6.97 + (b - 1) * ((13.02 - 6.97) / (1.5 - 1));
}
if (1.5 <= b && b < 2) {
temperaturarocio = 13.02 + (b - 1.5) * ((17.5 - 13.02) / (2 - 1.5));
}
if (2 <= b && b < 2.5) {
temperaturarocio = 17.5 + (b - 2) * ((21.08 - 17.5) / (2.5 - 2));
}
if (2.5 <= b && b < 3) {
temperaturarocio = 21.08 + (b - 2.5) * ((24.08 - 21.08) / (3 - 2.5));
}
if (3 <= b && b <= 4) {
temperaturarocio = 24.08 + (b - 3) * ((28.96 - 24.08) / (4 - 3));
}
}

if (35 <= t && t <= 40) {


a = 5.6291 + (t - 35) * ((7.3851 - 5.6291) / (40 - 35));
b = (a) * ((h / 100));
if (1 <= b && b < 1.5) {
temperaturarocio = 6.97 + (b - 1) * ((13.02 - 6.97) / (1.5 - 1));
}
if (1.5 <= b && b < 2) {
temperaturarocio = 13.02 + (b - 1.5) * ((17.5 - 13.02) / (2 - 1.5));
}
if (2 <= b && b < 2.5) {
temperaturarocio = 17.5 + (b - 2) * ((21.08 - 17.5) / (2.5 - 2));
}
if (2.5 <= b && b < 3) {
temperaturarocio = 21.08 + (b - 2.5) * ((24.08 - 21.08) / (3 - 2.5));
}
if (3 <= b && b <= 4) {
temperaturarocio = 24.08 + (b - 3) * ((28.96 - 24.08) / (4 - 3));
}
}

if (40 <= t && t <= 45) {


a = 7.3851 + (t - 40) * ((9.5953 - 7.3851) / (45 - 40));
b = (a) * ((h / 100));
if (1 <= b && b < 1.5) {
temperaturarocio = 6.97 + (b - 1) * ((13.02 - 6.97) / (1.5 - 1));
}
if (1.5 <= b && b < 2) {
temperaturarocio = 13.02 + (b - 1.5) * ((17.5 - 13.02) / (2 - 1.5));
}
if (2 <= b && b < 2.5) {
temperaturarocio = 17.5 + (b - 2) * ((21.08 - 17.5) / (2.5 - 2));
}
if (2.5 <= b && b < 3) {
temperaturarocio = 21.08 + (b - 2.5) * ((24.08 - 21.08) / (3 - 2.5));
}
if (3 <= b && b <= 4) {
temperaturarocio = 24.08 + (b - 3) * ((28.96 - 24.08) / (4 - 3));
}
}

//Temperatura del punto de rocío ya se calculó

temperaturabaja = temperaturarocio + 4; //Debido a que se realizó el trabajo con un sistema ON/OFF se tuvo que usar este par de
variables, en donde lo que se busca es acercarse
temperaturaalta = temperaturarocio + 4.1; //a la temperatura del punto de rocío pero no tocarla, como el cambio de temperatura es tan
brusco se dejó un error de 4°C, aunque en
//la práctica el sensor la lectura era de 0.5 a 1 °C por encima de la temperatura del punto de rocío

f = dht.readTemperature(true); //lecturas para el cálculo de la sensación térmica


hi = dht.computeHeatIndex(f, h);
hic = dht.computeHeatIndex(t, h, false);
lcd.setCursor(0, 0); //Mostrar las variables leídas durante todo el proceso

lcd.print(" HR:");
lcd.print(h, 1);
lcd.print("%");

lcd.print(" Ta:");
lcd.print(t, 1);
lcd.print((char)223);
lcd.print("C");

lcd.setCursor(0, 1);

lcd.print("Tr:");
lcd.print(temperaturarocio, 1);
lcd.print((char)223);
lcd.print("C");

lcd.print(" Tc:");
lcd.print(tempC, 1);
lcd.print((char)223);
lcd.print("C");

lcd.setCursor(0, 2);
lcd.print("St:");
lcd.print(hic, 1);
lcd.print((char)223);
lcd.print("C");

lcd.print(" TF:");
lcd.print(tf, 1);
lcd.print((char)223);
lcd.print("F");
}

CALIBRACIÓN:
Para la realización de la calibración se usó una estación meteorológica de precisión utilizada
en el laboratorio de pruebas dinámicas automotrices en donde se encontró que la lectura de
temperatura en ambos sensores es muy cercana, por lo tanto, el sensor DHT22 tiene una
lectura de temperatura ambiente muy acertada de fábrica. En el caso de la humedad relativa
se encontró que el sensor DHT22 no arroja buenas lecturas de esta variable, de ser posible lo
mejor es usar otro sensor de humedad, por lo tanto, para que las lecturas de humedad fueran
más acertadas se realizó una corrección. Se escogió el sensor LM35 debido a que no se
encuentra encapsulado y sus lecturas son muy rápidas, necesario para evitar que la
temperatura lograse bajar de la temperatura del punto de rocío. Este sensor trabaja
normalmente a 5V, pero con un comando de Arduino puede trabajar a 1.1V lo que aumenta
la resolución del sensor. Se usa la ecuación proporcionada por el fabricante para determinar
finalmente la temperatura ambiente, pero a pesar de todo la medida de temperatura no es
precisa y corrigió.
Calibración para la temperatura DHT22: T = T * 1.004;
Calibración para la humedad relativa DHT22: H = (H + 3) * 1.005
Calibración para la temperatura LM35: T = (T - 1.5)
Se debe tener en cuenta que la calibración no fue para nada rigurosa por cuestiones de tiempo,
básicamente la calibración consistió en acercarse a la lectura que se considerara correcta
restando un número y multiplicando por otro (corrección de xxxxx y pendiente), además de
no contar con equipos para simular diferentes condiciones de temperatura y humedad,
siempre se trabajó a temperaturas y humedades típicas. Por alguna razón si se alimenta el
Arduino a diferentes voltajes las lecturas de los sensores cambian.

CONCLUSIONES: