Temperatura por encendidos de LED

Feliz lluvioso y nublado domingo de noviembre  😛cabecera Estoy dejando un poco de lado a Raspberry a propósito, para dar un poco de fuerza a la parte de hardware que al fin y al cabo es la que nos va a valer para tomar medidas del mundo que nos rodea. Hoy apoyándome en el post anterior, voy a realizar un termómetro un tanto peculiar, utilizando un LED un ATTINY85 y un sensor de temperatura LM35. Vamos al lio! Tenía ganas de comprobar si realmente esta pequeña garrapata era capaz de obedecer mis órdenes y tras muchiiiiiiiiisimo curro he conseguido que todo se compatibilice y que podamos tener nuestros proyectos de Arduino más pequeños montados sobre un micro lowcost. Para el proyecto de hoy, que necesitamos:
  • Sensor LM35 (temperatura)
  • ATTINY85
  • Grabador de ATTINY85 (último post) + arduino uno
  • LED verde, no tenía otro.
  • Resistencia de 1Kohm (o menor…)
  • Soporte de pilas
  • Breadboard y jumpers macho-macho
El montaje que hay que realizar es el siguiente (he descubierto un programa para dibujar esquemas muy chulo, fritzing, así que lo hago con el :P): esq Así queda conectada la alimentación del LM35 a los dos extremos, y el pin de salida a la patilla 3 de ATTINY que es la que recibe datos analógicos. De la misma forma se conecta el circuito de encendido de un LED verde a una salida digital de ATTINY cerrando el circuito con el GND. La alimentación la voy a hacer con un portapilas de 3xAA de 1.5V cada una (4.5 V total). Los circuitos independientes son estos: ledlm El encargado de integrarlos es ATTINY que recibe de uno y manda al otro, básicamente. Cargamos el código en ATTINY como dijimos en la entrada anterior:
  1. Conectar el grabador a arduino UNO
  2. Cargar el sketch de arduino ISP en arduino UNO
  3. Seleccionar la placa ATTINY85 en el desplegable
  4. Seleccionar Arduino as ISP en programador
  5. Escribir el código
  6. Grabar
El código consiste en recibir el valor de temperatura del LM35 y encender y apagar el LED tantas veces como grados haya en la habitación repetitivamente. Es un interfaz gráfico poco usual pero no tengo un LCD y para comprobar que funciona me vale jajaja.
int led = 2;
int lm= 3;   // por algún motivo solo funciona analógico en el pin 3

void setup()
{               
    pinMode(led, OUTPUT);  
}
  void loop()
{
   int temp;
   temp=abs(410.0*analogRead(lm)/1023.0);
   int i;
   for(i=0;i<temp;i++)
   {
      digitalWrite(led, HIGH);  
      delay(250);                //tiempo de encendido
      digitalWrite(led, LOW);
      delay(250);                //tiempo de apagado
   }
 delay(3000);                    // tiempo que indica nueva medida
 }
  Tengo que explicar esta línea: temp=abs(410.0*analogRead(lm)/1023.0); ATTINY recibirá del LM35 un valor comprendido entre 0 y 1023 por definición dado que los pines analógicos tienen una resolución de 10 bits (210=1023). Por tanto: 1023 es Vcc 0 es 0V Es decir, si ATTINY recibe todo el voltaje de entrada, lo tomará como 1023 y si no toma nada, lo toma como un 0. Por tanto haciendo una regla de 3 tendríamos los voltios a los que corresponde el número recibido. El sensor tiene como característica que aumenta  10mV/ºC es decir, que aumenta 1V cada 100ºC. Entonces para pasar de voltios a grados multiplicamos por 100. Como en este caso medí con un voltímetro y el portapilas me daba una potencia de 4.1V en vez de los esperados 4.5 V (…las pilas están un poco descargadas…) Vcc en mi caso es 4.1 V. Por tanto:   4.1 V * 100 ºC/V Resultando la expresión expuesta en el código. Y ya está!!! Grabamos y tenemos nuestro sensor de temperatura!! Hasta el próximo post!!!

3 thoughts on “Temperatura por encendidos de LED

  1. Iván Herrero

    Ojo al comprador inexperto que adquiera un LM335…. no se conecta igual, tiene tres patillas pero una es para calibracion, si quereis leer con el solo se usan dos patillas, y en una de ellas hay que montar un divisor de corrientehttp://www.google.es/imgres?imgurl=http%3A%2F%2Fwww.learningaboutelectronics.com%2Fimages%2FLM335-temperature-sensor-circuit.png&imgrefurl=http%3A%2F%2Fwww.learningaboutelectronics.com%2FArticles%2FLM335-temperature-sensor-circuit.php&h=337&w=418&tbnid=hLWI884J9z40cM%3A&zoom=1&docid=Vl7zZMWLZjMHgM&ei=gKJHU72qJayT0QWYg4AQ&tbm=isch&ved=0CHEQhBwwBw&iact=rc&dur=1483&page=1&start=0&ndsp=12

     
    Reply

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>