sensor de temperatura tmp36 y arduino


En esta nueva entrada vamos a ver como usar un sensor de temperatura analógico (emplea uno de los pines analógicos) modelo TMP36 con nuestra placa Arduino, dicho sensor es de la casa Analog Devices y permite realizar unas medidas de temperatura bastante precisas y a un muy reducido coste.

Foto Sensor TMP 36 GZ

Como podéis ver el sensor empleado es de tipo TO-92 (encapsulado como el DS18B20 o el de algunos transistores). Además se caracteriza por ser un sensor que es muy empleado para realizar medidas de temperatura y es muy sencillo de emplear (no hacen falta librerías para su uso). Es un sensor que se puede alimentar entre un rango de voltaje que va desde los 2.7V hasta los 5.5V, viene calibrado directamente en grados centígrados (ºC), presenta un factor de escala lineal de 10 mV/ºC (esto es la relación entre el cambio en la señal de salida y el cambio en la señal de la medida, es decir, cada 10 mV aumenta 1 ºC). Las características generales son:

Caracteristicas TMP36

Aquí os dejo un enlace para que podáis descargaros el datasheet del sensor de temperatura, el esquema en fritzing de conexionado y el sketch de Arduino: http://www.mediafire.com/?c26yr7fk48my0fw

Os pongo el esquema para la conexión del sensor a Arduino:

Conexion Fritzing TMP36

Aquí tenéis un código de ejemplo, de como obtener tanto el voltaje leído por el sensor, como los grados centígrados y los grados fahrenheit, además de mostrar los valores máximos y mínimos para cada una de las medidas mencionadas.

/* Sketch de ejemplo para testear el sensor de temperatura analógico TMP36
 Escrito por Regata para www.tallerarduino.wordpress.com

 MODO DE CONEXIÓN DEL SENSOR

 Conectamos el pin 1 que corresponde a la alimentación del sensor con los 5V del Arduino
 Conectamos el pin 2 que corresponde al pin de datos del sensor con cualquier pin analógico del Arduino
 Conectamos el pin 3 que corresponde al pin de masa (GND) del sensor con el pin GND del Arduino

*/

int temp = 5;  //Pin analógico A5 del Arduino donde conectaremos el pin de datos del sensor TMP36
float maxC = 0, minC = 100, maxF = 0, minF = 500, maxV = 0, minV = 5;  //Variables para ir comprobando maximos y minimos

void setup()
{
  Serial.begin(9600);  //Iniciamos comunicación serie con el Arduino para ver los resultados del sensor
                        //a través de la consola serie del IDE de Arduino
}

void loop()
{
  float voltaje, gradosC, gradosF;  //Declaramos estas variables tipo float para guardar los valores de lectura
                                    //del sensor, así como las conversiones a realizar para convertir a grados
                                    //centígrados y a grados Fahrenheit
                                    
  voltaje = analogRead(5) * 0.004882814;  //Con esta operación lo que hacemos es convertir el valor que nos devuelve
                                           //el analogRead(5) que va a estar comprendido entre 0 y 1023 a un valor
                                           //comprendido entre los 0.0 y los 5.0 voltios
                                           
  gradosC = (voltaje - 0.5) * 100.0;  //Gracias a esta fórmula que viene en el datasheet del sensor podemos convertir
                                       //el valor del voltaje a grados centigrados
                                       
  gradosF = ((voltaje - 0.5) * 100.0) * (9.0/5.0) + 32.0;  //Gracias a esta fórmula que viene en el datasheet del sensor podemos convertir
                                                           //el valor del voltaje a grados Fahrenheit
                                                           
  //Mostramos mensaje con valores actuales de humedad y temperatura, asi como maximos y minimos de cada uno de ellos
  Serial.print("Medidas actuales\n");
  Serial.print("C: "); 
  Serial.print(gradosC);
  Serial.print("\tF: "); 
  Serial.print(gradosF);
  Serial.print("\tV: "); 
  Serial.print(voltaje);
  //Comprobacion de maximos y minimos de humedad y temperatura
  if (maxC < gradosC)
    maxC = gradosC;
  if (gradosC < minC)
    minC = gradosC;
  if (maxF < gradosF)
    maxF = gradosF;
  if (gradosF < minF)
    minF = gradosF;
  if (maxV < voltaje)
    maxV = voltaje;
  if (voltaje < minV)
    minV = voltaje;
  Serial.print("\nMedidas maximas\n");
  Serial.print("C: "); 
  Serial.print(maxC);
  Serial.print("\tF: "); 
  Serial.print(maxF);
  Serial.print("\tV: "); 
  Serial.print(maxV);
  Serial.print("\nMedidas minimas\n");
  Serial.print("C: "); 
  Serial.print(minC);
  Serial.print("\tF: "); 
  Serial.print(minF);
  Serial.print("\tV: "); 
  Serial.print(minV);
  Serial.print("\n\n");
  delay(2000);  //Usamos un retardo de 2 segundos entre lectura y lectura  
}

La salida que obtenemos a través de la consola serie del IDE de Arduino es la siguiente:

Muestra de datos TMP36

Espero que os sirva de ayuda para vuestros proyectos!!

Si te ha servido de ayuda esta entrada, puedes realizar un donativo para agradecer el tiempo que dedico al blog y ayudar a hacer más entradas.

donativo_paypal

24 pensamientos en “sensor de temperatura tmp36 y arduino”

  1. ¿Qué comes que adivinas? jajaja justo estaba probando con el LM35 (Supongo es el mismo) pero montado en un circuito con el LM358 y el LM3914 , me preguntaba como hacer algo parecido pero programado.
    Asi que para mi es doblemente oportuno ; Una por lo que acabo de contar y otra por que soy el mas novato de este foro y de los demás que existen🙂 Voy a estudiar y te cuento como me vá. Gracias y hasta pronto.

  2. Hola Daniel!!

    Jaja es que me has pillado probando varios sensores de temperatura con el Arduino, y he dicho puede ser interesante para el blog poner alguna explicación de cada uno de ellos.

    En realidad no es el mismo que el LM35 (en cuanto tenga un sensor de estos hago un post sobre él), la ecuación de obtención de la temperatura se realiza de forma distinta aunque es también muy sencilla. Para el LM35 la ecuación que tendrías que usar es la siguiente:

    temperatura = (5.0 * analogRead(0) * 100.0) / 1024; //Lectura del pin 0 donde está conectado el sensor LM35

    En cuanto disponga de un sensor de este tipo hago un post algo más detallado e intentando explicar como usar el pin Aref para conseguir algo más de resolución.

    Un saludo!!

  3. Pues si que me vendrá bien tu nuevo tutorial por que ya ves que soy de los que confunden gato con liebre🙂
    Ahora me has dejado la tarea de buscar entender más como manejar los valores en los pines analógicos que ciertamente me han dado problemas en otros ejercicios. Muchas , muchas gracias. Estaré atento.

  4. Acabo der una primer revisada a ese excelente video y voy a realizar la practica para afirmar. Me temo que entonces hay otro tema que tengo “Cruzado”, sin animo de abusar te comento:

    Dandole valores aleatorios a los tres colores de un RGB he tratado de controlar el tiempo de encendido de cada uno con un push botton N.A, programando con bloques repetitivos mas o menos asi;

    buttonState = digitalRead(buttonPin);
    if (buttonState == HIGH) {

    segVar != segVar

    Con esta ultima variable “segVar” es con la que he tratado de mantener activos o inactivos los leds conforme a las veces que se presione el boton. Pero lo mas que logre es que realice los cambios solo mientras mantengo presionado el boton.

    Creo que esta instrucción ” segVar != segVar” no es la adecuada para estar cambiando el estado de esa variable y así poder usarla de “Switch”

    Seguro tendras OTRA muy buena aportación entre tus “joyas” .
    Vale decir que me has dado buen apoyo y quedo muy agradecido y con el animo de reciprocidad que corresponde.

    A tus ordenes Regata.

  5. Es cierto, de tanto probar confundí. Creo que me paso por estar incluyendo varias cosas en el ejercicio (valores análogos, random, operadores, etc.) Espero que me sirva de lección🙂.

    Gracias por acordeón , es una excelente herramienta que seguro me sirve.

    Seguimos en contacto amigo.

  6. Hola estoy interesado en hacer un proyecto fin de curso con arduino uno, estoy en Mxico de estudiante de intercambio, y mis recursos son disminuido, pues no encuentro material adecuado para hacer proyectos ms chulos…ahora mismo tengo dos motores de dc, sensor temp LM35 y diodos… me podras mandar algo bueno, bonito y barato donde pueda dejar a mi profesor impresionado… muchas gracias y pedazo de blog!!!! saludos

    Date: Sat, 27 Apr 2013 22:36:21 +0000 To: chaquetman@hotmail.com

  7. Hola!!

    Pues bueno no sé que más tienes aparte de eso que mencionas, pero con una pantalla lcd, unos pulsadores y un sensor de humedad como el DHT11 (del que se habló en el blog), podrías montarte una incubadora para huevos de gallinas o algún otro pájaro. Los motores te servirían para realizar la rotación de los huevos, el sensor de temperatura controlaría la temperatura que hace en el interior de la incubadora, el sensor DHT11 controlaría la humedad existente y por pantalla mostrar dichos datos, además de poder introducir valores como temperatura máxima, temperatura mínima, etc… Puedes ir buscando algo de información por ahí, si encuentro algún otro proyecto interesante te comento. Un saludo!!

  8. Hola, me ha gustado mucho vuestro trabajo, sirvió de ayuda para mi proyecto.

    Ando aprendiendo cosas sobre Arduino, mi pregunta es, sería posible mostrar la información que envía un sensor en una pantalla lcd?

    Gracias por vuestra atención

  9. Hola Guille!!

    Claro que puedes mostrar la información obtenida por el sensor a través de una pantalla LCD, puedes echar un vistazo a los ejemplos que vienen en el IDE de Arduino en la librería LiquidCrystal (si vas a emplear una pantalla LCD en modo 4 u 8 bits, el típico ejemplo de Arduino) o bien puedes echar un vistazo a este post que hice hace poco explicando el uso de las pantallas LCD a través del protocolo de comunicación I2C: https://tallerarduino.wordpress.com/2013/06/23/lcd-i2c-y-arduino/

    Con que veas uno de los ejemplos ya te vas a dar cuenta de lo sencillo que es el uso de las pantallas con tu Arduino. Si tienes alguna duda acerca de esto dímelo y te lo explico con un pequeño trozo de código para que puedas ver la temperatura.

    Un saludo!!

  10. Gracias por avisar ant!! Aunque tenemos una licencia creative commons que permite compartir los contenidos de este blog en otros sitios, sólo pedimos que se diga de donde vienen y quienes son sus autores, pero ya ves que hay gente que se salta esto (como este caso que tú mencionas), además no puede ni poner en contacto con él a través de ningún medio, ya que no hay opción de comentarios ni nada. Un saludo!!!

  11. A mi me ha copiado tambièn 3 artículos de mi blog, voy a iniciar un trámite de denuncia en blogspot para que los retire o, al menos, que haga mención que es lo que pido en mi licencia CC

  12. Es que esto es una plaga, has conseguido algo denunciando el tema? Yo lo pensé pero no veía claro el tema con wordpress, debe de ser más complicado que en blogspot.

    Lo de la entrada, como ha copiado todo, aparece en el código mi nick y la página del blog. Tampoco se puede dejar comentarios en el post que ha copiado por tanto no tengo manera de comunicarme con él sin perder mucho tiempo buscando información.

    Espero que lo hayas solucionado, un saludo PepeChorva!!!

  13. Hola Hermano Regata, He estado viajando y no podido seguir este tiro pero te ratifico mi admiración y solidaridad, si hay algo que podamos hacer colectivamente o individual tu solo dame indicaciones.
    A tus ordenes.

  14. Muchas gracias por todo danielsan!!

    No te preocupes, mi intención es hacer llegar el conocimiento a todo la gente, no es por el problema de copiar las entradas, se soluciona con poner una mención de donde lo han sacado nada más. Creo que no cuesta nada hacer eso.

    Un saludo!!

  15. Yo Regata te tengo que decir que sí hice una entrada para mi blog del sensor de temperatura, pero modificando el código (lo simplifiqué un poco) y dejando claro que me había basado en este blog.

    Adjunto la página y el texto en cuestión:

    /* Ejemplo para probar el sensor de temperatura analógico TMP36
    Adaptado por Guille para su proyecto en e-elektronic-blogspot.com.es
    Me he basado principalmente en el ejemplo escrito por Regata para http://www.tallerarduino.wordpress.com*/

    Creo que con esto cumplía la regla no escrita de no firmar como trabajo propio lo que es de otro, si tienes tiempo y te tomas la molestia, me gustaría que me dijeras si de verdad el código en cuestión te parece una copia, y si de verdad te parece mal lo retiro o lo modifico según creas conveniente.

    http://e-elektronic.blogspot.com.es/2013/06/arduino-tutorial-parte-8-el-sensor-de_28.html

  16. Hola Guille!!

    No me refería en absoluto a tí. Me parece muy bien que te hayas lanzado a crear un blog para compartir tú conocimiento, no tenía constancia de él, pero ahora tienes un nuevo seguidor!! Te comento que el código si lo modificas por mi parte no hace falta que pongas ninguna reseña hacía mí.

    Lo que comentábamos es que hay gente que copia las entradas tal cual, no cambia nada, ni dibujos, ni fotos, ni palabras y ni siquiera hace mención a la página de donde sacaron dicha información. Por mi parte es un tema zanjado, no me interesa tener problemas con nadie, ya que mi intención principalmente es compartir lo poco que sé, y como se ve no obtengo beneficio ninguno por ello. Solamente me gusta compartir y poder enseñar algo a los demás, esa es la intención de nuestro blog.

    Voy a echarle un vistazo a tú blog, espero que te vaya bien con él.

    Un saludo!!!

  17. Me alegro, se trata únicamente de un blog que hicimos unos amigos para trabajar sobre el arduino que nos presentaron de pasada por la universidad, y que a muchos de nosotros se nos abrieron los ojos al verlo.

    De hecho, lo que más me alegra del blog en sí es saber que algunos conocidos lo vieron y gracias a ello han podido conocer el entorno con lo cuál me quedo satisfecho.

    Por eso yo tampoco quiero molestar a nadie, y espero poder ver pronto tus trabajos😉 .

    De un seguidor del blog. Saludos

  18. Tienes toda la razón hermano, esperemos que la omisión sea por descuido o ignorancia y no por estupidez ni mala voluntad. Yo también quiero sentir que en este mundo se puede confiar en los miembros de nuestra especie. Un enorme abraso.

  19. Medidas actuales
    C: 94.04 F: 201.28 V: 1.44
    Medidas maximas
    C: 108.69 F: 227.64 V: 1.59
    Medidas minimas
    C: 45.70 F: 114.27 V: 0.96
    Medidas actuales
    C: 75.98 F: 168.76 V: 1.26
    Medidas maximas
    C: 108.69 F: 227.64 V: 1.59
    Medidas minimas
    C: 45.70 F: 114.27 V: 0.96
    ahora me da estos resultados. Es porque el sensor viene estropeado?

  20. Muchas gracias !!

    A partir de tu sketch, intentaré llegar a nuevas soluciones. Si me van bien, las compartiré con vosotros.

    Thank you !!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s