Hoy seguimos aprendiendo sobre electrónica con Arduino Uno y vamos a provocar un descenso de temperatura (enfriamiento) utilizando una celda o célula Peltier. Esta célula se controlará con dos botones: uno para encender/apagar en modo manual, en el que la célula Peltier se enfriará progresivamente hasta alcanzar la temperatura mínima permitida (que depende de la potencia con la que alimentemos la célula), y el otro botón para entrar en modo PID, en el que la célula Peltier trabajará de forma automática para mantener la temperatura de su cara fría entre ciertos límites predefinidos (alrededor de 16-18°C).
Para medir la temperatura, utilizaremos un sensor de temperatura DS18B20 montado en la cara fría de la célula, y todo el proceso podrá verse en un display LCD 2004. Comenzaré analizando todos los componentes necesarios para realizar este interesante proyecto y mostrándoles cómo conectarlos y programarlos con Arduino.
Una célula Peltier o enfriador termoeléctrico (TEC) es un dispositivo que puede generar una diferencia de temperatura entre sus caras cuando circula una corriente eléctrica a través de él. Esto significa que una de sus caras se enfría (absorbe calor) mientras que la otra se calienta (emite calor).
La temperatura de cada cara depende del sentido de la corriente, y es posible invertir el flujo de calor invirtiendo el sentido de la corriente. Sin embargo, en nuestro proyecto alimentaremos la célula directamente sin invertir sus polos, es decir, conectaremos el polo positivo de la célula al positivo de la fuente de alimentación y el polo negativo al negativo.
Por lo tanto, la célula Peltier puede ser utilizada para enfriar, por debajo de la temperatura ambiente, objetos que estén en contacto con su cara fría, lo que la hace ideal para controles de temperatura como el que se desarrolla en este post. Es importante mencionar que la célula Peltier está internamente formada por múltiples celdas de materiales N y P ubicadas entre sus dos caras cerámicas.
Para construir las celdas Peltier suelen emplearse telurio y bismuto como semiconductores y óxido de aluminio para las placas cerámicas, pero en este momento no voy a profundizar en su comportamiento termodinámico.
Para que esta celda Peltier funcione correctamente, debe ser alimentada con una fuente de 12VDC y 8,5A (100W). Esto se debe a que necesita generar suficiente potencia para alimentar los aproximadamente 60W que consume la celda, además de poder alimentar el ventilador del disipador que también funciona a 12V. Es importante tener en cuenta que la celda consume una gran cantidad de corriente, por lo que la fuente de alimentación debe tener suficiente corriente para funcionar de manera eficiente.
Dado que Arduino solo proporciona salidas de 5VDC y unos pocos miliamperios, necesitaremos utilizar un módulo relé de 5VDC junto con Arduino para controlar la potencia de la fuente de alimentación y, de esta manera, controlar el comportamiento de la celda Peltier (encendido/apagado).
Ahora nos encontramos con un problema: para hacer funcionar una célula Peltier, debemos eliminar el calor generado en la cara caliente, lo cual requerirá instalar un sistema de disipación. Al menos, deberemos colocar un disipador con ventilador en el lado caliente (el lado con la serigrafía TEC1-12706 es el lado frío). No hagan funcionar una célula Peltier sin un sistema de disipación, ya que aumentará su temperatura rápidamente y se fundirá en poco tiempo, además de que las temperaturas alcanzadas son suficientemente altas como para ser peligrosas al contacto.
Para que haya una correcta transferencia de calor entre la célula y el disipador, es muy conveniente utilizar pasta térmica entre ambos componentes. Las caras de la celda están hechas de un material cerámico especial que es un buen aislante eléctrico y conductor del calor, pero que es relativamente frágil mecánicamente, por lo que no debe someterse a golpes ni a grandes esfuerzos. A continuación se destacan algunas de las características más relevantes de esta célula Peltier.
Las bajas temperaturas alcanzadas en la cara fría pueden dar lugar a la condensación de agua, que puede dañar los elementos que estamos enfriando, especialmente componentes electrónicos. Por eso, hemos elegido instalar el sensor de temperatura DS18B20, que es resistente a la humedad y la corrosión.
El sensor de temperatura DS18B20 es un dispositivo que se comunica de forma digital con Arduino. Tiene tres terminales: dos para alimentación y uno para datos. Con Arduino podemos «leer» la temperatura que registra este sensor mediante la comunicación OneWire, que es básicamente un protocolo especial que permite enviar y recibir datos utilizando un solo cable. Sobre este sensor y su protocolo de comunicación ya hemos escrito antes en este blog.
Para conectar correctamente este sensor, debemos unir sus pines VCC y GND (negro y rojo) y conectar el pin de datos mediante una resistencia de 4,7KΩ a +5VDC de Arduino (resistencia PULL-UP). A su vez, el pin de datos debe conectarse al pin digital de Arduino por el que leemos la temperatura, que en nuestro caso es el pin digital 6 («PIN_sensor»), para procesar los datos posteriormente mediante programación.
El display LCD 2004 de 4 filas y 20 caracteres por fila se conecta a nuestro Arduino mediante el protocolo I²C (pines SDA y SCL) para poder visualizar en todo momento el estado del sistema (temperatura y modos de funcionamiento). El circuito en general se debe alimentar correctamente (+5V y GND de Arduino).
Los dos pulsadores se conectan a través de una resistencia de 10KΩ a GND de Arduino (resistencia PULL-DOWN). Un pulsador se conecta al pin digital 8 («Pulsador_Peltier») de Arduino para el modo normal de funcionamiento encendido/apagado de la célula Peltier y el otro pulsador se conecta al pin digital 7 («Pulsador_PID») para el modo de funcionamiento PID, en el que la célula trabaja automáticamente entre un rango de temperaturas.
Por último, el pin de control del módulo relé de 5VDC debe conectarse al pin digital 9 («RELE») de nuestro Arduino. Para obtener más información, se recomienda consultar el esquema de conexión y los comentarios del programa, que debemos cargar en nuestro Arduino para el correcto funcionamiento del sistema.
Lista de Materiales
-
- Arduino UNO Rev.3
- Cable USB tipo A-B
- Módulo LCM 2004 I2C V1
- Display 20×4 LCD 2004
- Célula Peltier cerámica TEC1-12706 (12VDC – 60W)
- Fuente de alimentación de 12VDC – 8,5A (modelo CD-100W)
- Disipador de CPU con ventilador de 12VDC
- Pasta térmica (HY410)
- Sensor de temperatura DS18B20 (sumergible)
- Módulo relé de 5VDC (SRD-05VDC-SL-C)
- 2 Pulsadores
- 2 Resistencias de 10KΩ
- 1 Resistencia de 4,7KΩ
- Protoboard
- Cables de conexión
Código del programa
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 |
/* TITULO: Generar frío con una Célula Peltier cerámica TEC1-12706 AUTOR: MARIANO DEL CAMPO GARCÍA (@2016) --> INGENIERO TÉCNICO INDUSTRIAL ESPECIALIDAD ELECTRÓNICA - FACEBOOK: https://www.facebook.com/mariano.delcampogarcia - TWITTER: https://twitter.com/MarianoCampoGa - CORREO: [email protected] DESCRIPCIÓN DEL PROGRAMA Con este programa generamos frío a partir de una célula Peltier. Está célula será controlada mediante dos pulsadores, uno para su encendido/apagado en el modo manual (Pulsador_Peltier), donde la Célula Peltier se irá enfriando paulatinamente hasta llegar a la temperatura mínima límite (depende de la potencia con la que la alimentemos la célula), y el otro para entrar en el modo PID (Pulsador_PID) en el que la Célula Peltier trabajará de manera automática para mantener la temperatura de su cara fría entre unos rangos predefinidos (entre 16 y 18°C aproximadamente). La medida de dicha temperatura la realizaremos mediante el sensor de temperatura DS18B20, que montaremos sobre la cara fría de la Célula, además todo el proceso podrá ser visualizado a través de un display LCD 2004 conectado mediante I²C. La célula Peltier y su sistema de refrigeración se alimentan mediante una F.A de 12VDC y 8,5A a través de un relé de 5VDC, que es el que directamente será controlado a través de Arduino. ESQUEMA DE CONEXION +-----+ +----[PWR]-------------------| USB |--+ | +-----+ | | GND/RST2 [ ][ ] | | MOSI2/SCK2 [ ][ ] A5/SCL[ ] | SCL del módulo I2C del LCD 2004 | 5V/MISO2 [ ][ ] A4/SDA[ ] | SDA del módulo I2C del LCD 2004 | AREF[ ] | | GND[ ] | | [ ]N/C SCK/13[ ] | | [ ]IOREF MISO/12[ ] | | [ ]RST MOSI/11[ ]~| | [ ]3V3 +---+ 10[ ]~| | [ ]5v -| A |- 9[ ]~| Pin "S" del RELÉ | [ ]GND -| R |- 8[ ] | Pin "PA" del "Pulsador_Peltier" | [ ]GND -| D |- | | [ ]Vin -| U |- 7[ ] | Pin "PA" del "Pulsador_PID" | -| I |- 6[ ]~| Cable amarillo "DATA" del sensor de temperatura DS18B20 | [ ]A0 -| N |- 5[ ]~| | [ ]A1 -| O |- 4[ ] | | [ ]A2 +---+ INT1/3[ ]~| | [ ]A3 INT0/2[ ] | | [ ]A4/SDA RST SCK MISO TX>1[ ] | | [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] | | [ ] [ ] [ ] | | UNO_R3 GND MOSI 5V ____________/ \_______________________/ NOTAS: - Conexión de la parte de control (entrada) del Relé: - Pin(+) del Relé --> +5V. - Pin(-) del Relé --> GND. - Conexión de la parte de potencia (salida) del Relé: - Pin "COM" del RELÉ --> Negativo de la fuente de tensión de 12VDC. - Pin "NO" del RELÉ --> Cable negro(-) del ventilador de 12VDC. - Cable rojo(+) del ventilador de 12VDC --> Positivo de la fuente de tensión de 12VDC. - Conexión de la célula Peltier: - La Célula Peltier se conecta en paralelo con el Ventilador de 12VDC, es decir, el cable rojo(+) del ventilador de 12VDC al cable rojo (+) de la Célula Peltier y el cable negro(-) del ventilador de 12VDC al cable negro(-) de la Célula Peltier. - Los dos pulsadores tienen dos pines, que vamos a denominar PA y PB (si es de 4 sólo usamos 2 de ellos) - Conexión PULL-DOWN del "Pulsador_PID" y del "Pulsador_Peltier" - PB tanto del "Pulsador_PID" como del "Pulsador_Peltier" conectados a VCC. - PA tanto del "Pulsador_PID" como del "Pulsador_Peltier" conectados a GND a través de una R=10K ohms. (la resistencia debe de ser individual para cada pulsador) - La alimentación y la masa del módulo I2C del LCD 2004 van directamente conectadas a VCC (+5V) y GND respectivamente. - Conexión del sensor de temperatura DS18B20: - Cable rojo (VCC) del sensor de temperatura --> Cable negro (GND) del sensor de temperatura. - Cable amarillo (DATA) del sensor de temperatura --> +5VDC de Arduino a través de R=4,7K (PULL-UP) */ // Incluimos las librerías #include <OneWire.h> // Librería para la comunicación con un solo cable #include <DallasTemperature.h> // Librería para el sensor DS18B20 #include <Wire.h> // Librería para la comunicación I2C #include <LiquidCrystal_I2C.h> // Librería para el LCD I2C float temperatura; // Variable para almacenar la temperatura del sensor de temperatura DS18B20 float TEMP_MAX = 125; // Temperatura máxima que detecta el sensor de temperatura DS18B20 float TEMP_MIN = -55; // Temperatura mínima que detecta el sensor de temperatura DS18B20 int PIN_sensor = 6; // Pin digital para el sensor de temperatura DS18B20 int Pulsador_PID = 7; // Pin digital 7 para el pulsador que activa el modo PID int Pulsador_Peltier = 8; // Pin digital 8 para el pulsador que activa la célula Peltier int RELE = 9; // Pin digital 9 para la señal de entrada del Relé // Variables internas para los pulsadores con enclavamiento int encender_Peltier = 0; int anterior_Peltier = 0; int estado_Peltier = 0; int encender_PID = 0; int anterior_PID = 0; int estado_PID = 0; int Peltier = 0; int PID = 0; OneWire ourWire(PIN_sensor); // Se establece el pin digital 6 para la comunicación OneWire DallasTemperature sensor(&ourWire); // Se instancia la librería DallasTemperature // Declaración del objeto para el LCD // Terminales de conexión del LCD: addr, en,rw,rs,d4,d5,d6,d7,bl,blpol LiquidCrystal_I2C lcd(0x20, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); void setup() { pinMode(PIN_sensor, INPUT); // Pin digital 6 como entrada pinMode(Pulsador_PID, INPUT); // Pin digital 7 como entrada pinMode(Pulsador_Peltier, INPUT); // Pin digital 8 como entrada pinMode(RELE, OUTPUT); // Pin digital 9 como salida digitalWrite(RELE, LOW); // Relé inicialmente desconectado lcd.begin(20,4); // Se inicializa el LCD para 20x4 sensor.begin(); // Se inicializa el sensor de temperatura DS18B20 lcd.setCursor(0,0); lcd.print("TEMPERATURA PELTIER"); // Imprimo la cabecera lcd.setCursor(0,1); lcd.print("PELTIER - OFF"); // Imprimo el estado de la célula PELTIER lcd.setCursor(0,2); lcd.print("PID - OFF"); // Imprimo el estado del modo PID } void loop() { // Función que controla el estado (ON/OFF) de la célula Peltier Celula_Peltier(); // Función que controla el estado (ON/OFF) del modo PID modo_PID(); sensor.requestTemperatures(); // Prepara el sensor de temperatura DS18B20 para su lectura temperatura = sensor.getTempCByIndex(0); // Se lee la temperatura del sensor en grados Celsius // Mostramos el valor de la temperatura a través del LCD 2004 lcd.setCursor(0,4); lcd.print(">> TEMP = "); if(temperatura < 10) { lcd.print(" "); } lcd.print(temperatura); lcd.print(" \337C"); // Símbolo de º (número en OCTAL) + C (tabla de caracteres especiales LCD 1602) } // Función que controla el estado (ON/OFF) de la célula Peltier void Celula_Peltier() { // Función que evalúa el estado del pulsador Peltier Estado_Pulsador_Peltier(); // Si se enciende el pulsador Peltier o la Tª es mayor o igual que TEMP_MAX se activa el RELÉ if(encender_Peltier == 1) { digitalWrite(RELE, HIGH); lcd.setCursor(0,1); lcd.print(">> PELTIER = ON "); } // Si es la 2ª vez que presionamos el pulsador o la Tª es menor o igual que TEMP_MIN se desactiva el RELÉ if(encender_Peltier == 0) { digitalWrite(RELE, LOW); lcd.setCursor(0,1); lcd.print(">> PELTIER = OFF"); } } // Función que controla el estado (ON/OFF) del modo PID void modo_PID() { // Función que evalúa el estado del pulsador del modo PID Estado_Pulsador_PID(); // Si es la 1ª vez que presionamos el pulsador del modo PID if(encender_PID == 1) { TEMP_MAX = 18; // Temperatura máxima del modo PID TEMP_MIN = 16; // Temperatura mínima del modo PID lcd.setCursor(0,2); lcd.print(">> PID = ON "); if(temperatura >= TEMP_MAX) { encender_Peltier = 1;// Se enciende la célula Peltier } if(temperatura <= TEMP_MIN) { encender_Peltier = 0;// Se apaga la célula Peltier } } // Si es la 2ª vez que presionamos el pulsador del modo PID else { TEMP_MAX = 125; // Temperatura máxima que detecta el sensor de temperatura DS18B20 TEMP_MIN = -55; // Temperatura mínima que detecta el sensor de temperatura DS18B20 lcd.setCursor(0,2); lcd.print(">> PID = OFF"); } } // Función que evalúa el estado del pulsador ON/OFF de la Célula Peltier void Estado_Pulsador_Peltier() { estado_Peltier = digitalRead(Pulsador_Peltier); // Comprobamos el estado actual del pulsador Peltier // Si el pulsador Peltier está presionado y su estado anterior es desactivado if(estado_Peltier && anterior_Peltier == 0) { encender_Peltier = 1 - encender_Peltier; } anterior_Peltier = estado_Peltier; // Se actualiza el estado anterior del pulsador Peltier } // Función que evalúa el estado del pulsador del modo PID void Estado_Pulsador_PID() { estado_PID = digitalRead(Pulsador_PID); // Comprobamos el estado actual del pulsador Peltier // Si el pulsador del modo PID está presionado y su estado anterior es desactivado if(estado_PID && anterior_PID == 0) { encender_PID = 1 - encender_PID; } anterior_PID = estado_PID; // Se actualiza el estado anterior del pulsador Peltier } |
Video
En conclusión, este post describe un proyecto que utiliza una célula Peltier y un Arduino Uno para controlar la temperatura de un objeto mediante dos modos de funcionamiento: manual y automático. La célula Peltier se alimenta con una fuente de 12VDC y se controla mediante un módulo relé de 5VDC y Arduino. Se utiliza un sensor de temperatura DS18B20 y un display LCD 2004 para medir y mostrar la temperatura.
Espero que este post haya sido útil para entender el funcionamiento de la célula Peltier y cómo utilizarla con Arduino para controlar la temperatura. Si tienes alguna pregunta o sugerencia, no dudes en dejar un comentario. ¡Gracias por leer!