Práctica 12 Ventilador encendido automáticamente por medio de una señal enviada desde un sensor de temperatura

12.1  Objetivo General:

Programar el encendido de un ventilado, para que este se active automáticamente cuando el sensor de temperatura detecte niveles mayores a un límite preestablecido.


Se busca simular con este circuito los sistemas de refrigeración que utilizan las PC´s portátiles y demás equipos electrónicos que requieren mantener niveles de temperatura controlados para su correcto funcionamiento.

12.2 Materiales y Métodos:

  1. 1. Una tarjeta Arduino Uno-R3 o Arduino Mega 2560.
  2. Un cable USB impresora.
  3. Un computador.
  4. Cables para el montaje del circuito.
  5. Tarjeta Protoboard.
  6. Una Resistencia Eléctrica de 220 ohm.
  7. Sensor de temperatura TMP36
  8. Un transistor BJT.
  9. Un Motor de Corriente Continua.

Con esta práctica se va implementar un sistema de ventilación automático donde activaremos el motor de un supuesto ventilador cuando la temperatura medida por un sensor (en este caso el TMP36) supere una determinada temperatura.

Se va a trabajar con cuatro (4) bloques que son muy importantes y típicos en un sistema de control automático, como son:

  1. Un sensor o transductor que será la entrada del sistema.
  2. Un actuador o dispositivo de salida (ventilador), con la circuitería necesaria.
  3. El procesamiento o lógica de control que ejecutará la placa ARDUINO.
  4. La monitorización de la información.

12.3 Montaje de la práctica:

Antes de comenzar la realización del montaje del circuito electrónico, se debe realizar el circuito en el programa Fritzing.  Con ayuda de la placa Protoboard para el montaje del circuito, el sensor de temperatura TMP36 se debe colocar correctamente para su adecuado funcionamiento, teniendo en cuenta como diferenciar las partes que lo componen. El ánodo se conecta al pin de 5V de la tarjeta Arduino, el cátodo va conectado al pin GND y el cable que envía la señal desde el sensor hasta la tarjeta se coloca en el pin A0. El transistor BJT colocado en la configuración mostrada esta conectado para recibir de la placa Arduino la fuente de poder de 5V y a su vez conectado a una resistencia que protege la cantidad de corriente que atraviesa al mismo. El motor DC con aspas que hace las veces de ventilador, se conecta a la salida del transistor y también al circuito de tierra de la placa Arduino GND.

Figura 2. Montaje del circuito en el programa Fritzing

En esta práctica el ventilador que se va a utilizar, emplea para su funcionamiento 12 voltios y consume 140 mA. Arduino solamente puede proporcionar 5 voltios y 40 mA, por lo que es necesario utilizar un dispositivo de control para Arduino, en este caso, un transistor NPN un dispositivo de control de la placa de Arduino que es el transistor de unión bipolar BJT.

12.4 IDE de Arduino para la práctica:

Se selecciona la tarjeta Arduino que se esta utilizando sea Arduino Uno-R3 o Arduino Mega 2560.

– Se selecciona el Puerto Serial. Bajo que puerto USB se va a conectar el Arduino con el computador.

– Se empieza a realizar el código:

  • Inicialmente debemos darle un nombre de qué consiste el código, esto se hace a través del símbolo //, se puede colocar el título de la práctica o del programa en sí. También se puede utilizar como comentarios dentro del programa.
  • Se declaran las variables. En la práctica se declaran de tipo constante, una variable que no cambiara durante el desarrollo del programa, su comando es const, además se debe especificar qué tipo de datos se almacenará en la constante, en este caso será entero y su comando es int, luego se le da el nombre de la variable (control); en la tarjeta Arduino se coloca el ánodo en el pin -9, a la variable se le asignara el valor de 9. Esta será la señal que gobernará al ventilador. También, se declaran las variables enteras int Sensor con un valor de 0 (pin analógico que lee la temperatura) e int umbral con un valor de 60 (temperatura a partir de la cual arrancará el ventilador).
  • Se define si las variables declaradas son de tipo entrada o de salida, para eso se utiliza el comando void setup (), se abre corchete ({) para saber qué es lo que contiene ese comando y al finalizar el comando se cierra corchete (}). Entre los corchetes se coloca la comunicación de datos con el computador y también, se declara que la variable control es de salida (OUTPUT). Para abrir el puerto serie se utiliza el comando Serial.Begin(115200); indicando dentro de los paréntesis la velocidad de comunicación con el computador, esta generalmente es 9600 bits por segundo, aunque otras tasas pueden ser soportadas. Para declarar que la variable control es de salida, se debe colocar el comando pinMode(control,OUTPUT).
  • Luego de definir las variables, se procede a realizar la estructura del código a través del comando void loop (), de igual manera se abre corchete ({) y se cierra (}) luego de terminar su cumplimiento. Internamente del corchete se establecen las instrucciones que ejecutará Arduino continuamente. En las primeras instrucciones del bloque de programa se quiere leer la señal enviada por el sensor de temperatura al pin A0 y mostrar a través del monitor la señal captada. Para realizar estas acciones primero se necesita declarar una variable local de tipo entero, esta será llamada int lectura. Para ejecutar la lectura de la señal se realiza mediante el comando analogRead(Sensor); se indica además el pin en el que debe leer la entrada, la cual se almacena en la variable lectura. Posteriormente se empleará la función Serial.print (); para mostrar en pantalla el valor de la temperatura medido, en el interior de los paréntesis se debe colocar el valor, si se quieren escribir palabras o frases estas deben ir delimitadas mediante las comillas, ejemplo Serial.print(“Temperatura = ”). Este valor será almacenado en la variable local llamada voltaje de tipo float y que ha sido declarada previamente. Se utiliza el valor guardado en la variable lectura y se realiza la transformación a voltios dividiendo esta variable por la resolución (para esta tarjeta Arduino es 1024) y multiplicándola por el valor máximo del voltaje que es 5V. Realizada la conversión se utiliza nuevamente el comando Serial.print(); para permitir la visualización de los datos.
  • Con el uso de la estructura de programación if, se utiliza la variable temp que registrará los cambios de HIGH y LOW cuando se alcanza la temperatura establecida en la variable umbral como límite de funcionamiento permisible, con esto se crea la forma de encendido y apagado del ventilador, ya que con la comparación (temp >= umbral) se establece el límite en el cual se debe encender y con la comparación (temp < umbral) se establece el límite para el cual se debe apagar el ventilador. Para que el ventilador se encienda, si (temp >= umbral) se utiliza el comando digitalWrite(control,HIGH). Para que el ventilador pueda apagarse se utiliza el mismo comando digitalWrite pero indicándole esta vez una señal baja LOW.
  • Finalmente se debe realizar la medida de la temperatura de manera constante con el sensor TMP36, para esto se incluye un delay (200) dentro de la estructura de repetición, para que se efectúe la medida de la temperatura cada 0,2 segundos.
  • Al terminar el desarrollo del programa se debe compilar para verificar si existen errores dentro del codificado. Luego si no existen errores se debe cargar el código en la tarjeta Arduino para que lo ejecute.

NOTA: Para quel IDE de Arduino pueda entender los comandos es necesario que al final de cada instrucción se coloque punto y coma (;).

En la siguiente imagen se mostrara como quedo plasmado en el IDE de Arduino, los procedimientos anteriormente señalados:

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
//Ventilador encendido automáticamente por medio de una señal enviada desde un sensor de temperatura.
 
const int control = 9 ; // Gobierna el ventilador
int Sensor = 0 ;  // Pin que lee la temperatura
int umbral = 60 ; // Temparatura que arranca el ventilador jugar con esto para la temperatura
 
void setup()  // Se declara si la variable es de entrada o de salida
   {   Serial.begin(115200);
       pinMode(control, OUTPUT) ;
   }
 
void loop()
   {   int lectura = analogRead(Sensor);
       float voltaje = 5.0 /1024 * lectura ;    
       float temp = voltaje * 100 -5 ;
       Serial.print ("Temperatura = ");
       Serial.println(temp) ;
 
       if (temp &gt;= umbral)
           digitalWrite(control, HIGH);
       else
           digitalWrite(control, LOW);
 
       delay(200);
   }

Algoritmo  1 Código para encender el ventilador cuando la temperatura alcanza un determinado valor

Implementación del algoritmo 1 en el simulador https//123d.circuits.io:

https://circuits.io/circuits/4220979-practica-ventilador-encendido-automaticamente-por-medio-de-una-senal-enviada-desde-un-sensor-de-temperatura/embed#breadboard

12.5 Conclusión:

En la realización de esta práctica se combinaron varios métodos usados en las practicas anteriores, la estructura de programación if permite un seguimiento continuo de control de la temperatura que se mide en el sensor TMP36, con esta práctica se logra emular el comportamiento de los sistemas de refrigeración que se activan automáticamente con el uso de un sensor de temperatura. El uso de transistores en los circuitos eléctricos cumple la función de potenciar una corriente eléctrica, pero a su vez generan grandes cantidades de calor que deben ser controladas. Con esto se aprende un poco más del uso de transistores BJT en circuitos controlados por la tarjeta Arduino.

Nota: Esta práctica fue propuesta y elaborada por: Javier Alberto Porras Barrios durante su Régimen especial de la asígnatura Mecánica de Robots.