miércoles, 25 de abril de 2012

Termómetro con LM35, y aviso visual+ventilador a 3 velocidades.


Hoy vamos a diseñar y programar un pequeño circuito que nos mida la temperatura.
En función de los valores obtenidos,tendremos el siguiente funcionamiento:


  • Si la temperatura es <25ºC el sistema se encuentra a la temperatura óptima.
  • Si la temperatura es >25ºC activaremos una señal luminosa.
  • Si la temperatura es >30ºC activaremos la señal luminosa y un ventilador al 60%.
  • Si la temperatura es >37ºC activaremos la señal luminosa y el ventilador casi a máxima potencia.

El componente empleado para realizar la medición es un sensor de temperatura LM35. Aquí podemos ver su patillaje:


Este es el esquema que he diseñado para la práctica:


Para alimentar el sensor LM35 podremos utilizar la misma fuente de Arduino, que nos suministra 5 voltios Vdc. En cambio para alimentar el ventilador de PC, le alimentaremos con una fuente adicional de 12 Vdc.
El diodo Led de alarma simplemente le pincharemos en la patilla 13 y GNd de Arduino, ya que lleva una resistencia interna de 330 ohmios.
    

Funcionamiento:


La temperatura es óptima

 La temperatura es >25ºC

La temperatura es >30


Vídeo Funcionamiento:





 Dentro del programa compilador en la seccion Tools>>Serial monitor, podremos visualizar la temperatura a través del puerto serie.



SKETCH:



//Lectura de temperatura mediante un sensor del tipo LM35, y aviso visual con un ventilador a 3 velocidades.
// el programa medirá la temperatura y en función de los valores, activara un led de alarma o activara un ventilador a varias velocidades

int pinTemperatura = 2;// daremos el nombre al pind e temperatura
int ledpin1 = 13;
int rele = 12;
int tempValor ; // La variable donde se almacena la temperatura
void setup()
{
  Serial.begin(9600); // Activamos el puerto serie para visulizar y definimos los pin 13 y 12 como salida
  pinMode(ledpin1, OUTPUT);
  pinMode(rele, OUTPUT);
}
void loop()
//bucle
{
  //mediante la siguiente encuacion transformaremos la lectura analógica en un valor de temperatura almacenado en la variable tempValor
  tempValor = ( 5.0 * analogRead(pinTemperatura) * 100.0) / 1024.0;
  // la funcion serial.print Impreme el valor en el puerto serie
  Serial.print("La Temperatura en este momento es de: (Celsius) = ");
  Serial.println(tempValor);
  // el delay es para medir la temperatura cada segundo
  delay (1000);
    int i= 0;
    analogWrite(rele,i);  // el ventilador estará apagado ya que i=0
  if(tempValor>25)// cuando la temperatura alcanza 25 grados se activa la alarma visual, ventilador apagado.
    {
    digitalWrite(ledpin1,HIGH);
    delay(500);
    digitalWrite(ledpin1,LOW);
      if(tempValor>30) // si la temperatura es mayor a 30 grados, se activa el ventilador al 60% aprox
      {
        int i = 150;
        analogWrite(rele,i);
            if(tempValor>37)// si la temperatura es mayor a 30 grados, se activa el ventilador al 85% aprox
              {
              int i = 215;
              analogWrite(rele,i);  //Recordemos que la funcion analogWrite toma valores entre 0 y 255.

    }
    }
  }

}

//Redfox





14 comentarios:

  1. hola
    este es justo el ejemplo del cual pregunto en la seccion de las pulsaciones del led !!!!!!!!!!!!!!
    como ves el uso de varios if se torna muy complejo
    como hacer esto mas claro con la sentencia switch
    gracias

    ResponderEliminar
  2. NO ME SALIO NO ME FUNCIONA EL VENTILADOR EL LED SI PERO EL VENTILADOR NO ESTOY ALIMENTANDO A 10 VOLST SERA POR ESO

    ResponderEliminar
  3. Hola disculpa cual es el programa que utilizas para esto? no se muy bien de programación y con esto me ayudarías bastante a saber como hacerlo : (

    ResponderEliminar
  4. Hola Eduardo. El programa es el propio de arduino, lo puedes descargar desde la pagina web oficial. Un saludo

    ResponderEliminar
  5. ya lo he hecho y me pasa lo mismo que a otro compañero, no funciona el ventilador, sólo el LED

    ResponderEliminar
  6. Hola Ismael. ¿Estas alimentando el ventilador con su tensión correcta? otra cosa muy importante es que unifiques la masa de las dos fuentes.
    Espero que te funcione, cualquier cosa no dudes en preguntar.
    Un saludo

    ResponderEliminar
  7. gracias por contestar, las tierras se unifican todas con las del arduino?, o con la fuente?

    ResponderEliminar
  8. En este caso como estas utilizando la fuente del arduino para el control, y luego una fuente externa para hacer funcionar el ventilador, tienes que unificar las masas. Es decir simplemente uniendo con un cable gnd del arduino y gnd de la fuente externa ya estas unificando masas. Fíjate en el esquemático de arriba. Espero tu respuesta. Un saludo

    ResponderEliminar
  9. una pregunta para alimentar el ventilador con otra fuente que puedo usar??? ... para que funcione adecuadamente

    ResponderEliminar
    Respuestas
    1. Hola Cecilia,
      pues para alimentar el ventilador puedes usar cualquier tipo de fuente que de el voltaje suficiente. Por ejemplo una fuente de Pc o un transformador.
      Un saludo

      Eliminar
  10. oye no Tienes el Diagrama del Proyecto pero Donde se Observe Bien cada conexion?

    ResponderEliminar
  11. amigo puedes subir el archivo del programa en arduino, gracias....

    ResponderEliminar