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.
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:
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:
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:
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.
¿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.
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!!
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.
Mirate este videotutorial del blog hecho por 0xDA_bit que está muy bien para entender los pines analógicos del arduino, además de traer un documento que te ayudara a entender mejor todo lo relacionado con estos pins, te dejo el enlace: https://tallerarduino.wordpress.com/2011/12/14/cap-2-pins-analogicos/
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.
El tema de la variable es porque tienes mal escrito el código, que serÃa de la siguiente forma:
segVar=!segVar;
Te dejo este enlace donde podrás descargarte una hoja bastante completa con comando y estructuras más generales de Arduino, a mi me sirve de mucha ayuda:
https://tallerarduino.wordpress.com/2011/08/30/acordeon-arduino-cheat-sheet/
Espero que te sirva!!
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.
Hola estoy interesado en hacer un proyecto fin de curso con arduino uno, estoy en México de estudiante de intercambio, y mis recursos son disminuido, pues no encuentro material adecuado para hacer proyectos más chulos…ahora mismo tengo dos motores de dc, sensor temp LM35 y diodos… me podrías 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
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!!
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
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!!
Hola, te han copia por completo esta entrada en:
http://robotbyzurera.blogspot.com.es/2013/06/sensor-de-temperatura-tmp36.html
Un saludo.
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!!!
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
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!!!
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.
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!!
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
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!!!
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
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.
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?
Muchas gracias !!
A partir de tu sketch, intentaré llegar a nuevas soluciones. Si me van bien, las compartiré con vosotros.
Thank you !!