En este tutorial, aprenderás a utilizar un sensor de temperatura analógico TMP36 con Arduino. ¡He incluido un diagrama de cableado y varios códigos de ejemplo para ayudarte a empezar!
En la primera parte de este artículo, puedes encontrar las especificaciones e información sobre los sensores TMP35, TMP36 y TMP37. A continuación, veremos cómo conectar el sensor al Arduino.
El primer ejemplo de código puede ser usado para tomar lecturas de temperatura del sensor y mostrar los resultados en el Monitor Serial. En el segundo ejemplo, le mostraré cómo mostrar la temperatura en un LCD I2C para crear un termómetro independiente.
Si quiere saber más sobre otros sensores de temperatura, consulte los artículos siguientes.
Artículos recomendados
- La guía completa para los sensores digitales de temperatura DS18B20 con Arduino
- Cómo utilizar los sensores DHT11 y DHT22 con Arduino
- Tutorial de sensor de temperatura analógico LM35 con Arduino
- Cómo controlar un carácter I2C LCD con Arduino
- Cómo utilizar una pantalla LCD de 16×2 caracteres con Arduino
Suministros
Componentes de hardware
Sensor de temperatura analógico TMP36 (TO-92) | × 1 | Amazon |
Arduino Uno | × 1 | Amazon |
Tablero de pruebas | × 1 | Amazon |
Cables de puente | ~ 10 | Amazon |
LCD I2C de 16×2 caracteres | × 1 | Amazon |
Cable USB tipo A/B | × 1 | Amazon |
Software
Makerguides.com is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to products on Amazon.com. As an Amazon Associate we earn from qualifying purchases.
Acerca de los sensores de temperatura analógicos TMP35/TMP36/TMP37
Los TMP35/TMP36/TMP37 son sensores de temperatura centígrados de precisión y bajo voltaje fabricados por Analog Devices. Proporcionan una salida de voltaje que es linealmente proporcional a la temperatura en grados centígrados (°C) y son, por tanto, muy fáciles de usar con el Arduino. Además, son precisos, nunca se desgastan y son muy baratos.
Los sensores TMP35/TMP36/TMP37 no requieren ninguna calibración externa para proporcionar una precisión típica de ±1°C a +25°C y ±2°C en el rango de temperatura de -40°C a +125°C.
La diferencia entre el TMP35, el TMP36 y el TMP37 es su rango de temperatura de funcionamiento y el factor de escala de salida. El TMP35 lee temperaturas de 10°C a 125°C y proporciona una salida de 250 mV a 25°C. Este sensor es funcionalmente compatible con el LM35 fabricado por Texas Instruments. Puedes encontrar un tutorial dedicado al LM35 aquí:
El TMP36 lee temperaturas de -40°C a 125°C, proporciona una salida de 750mV a 25°C y funciona hasta +125°C con una única alimentación de 2,7 V. Este sensor es funcionalmente compatible con el LM50.
El TMP35 y el TMP36 tienen el mismo factor de escala de salida de 10 mV/°C.
El TMP37 está pensado para un rango de funcionamiento de 5°C a 100°C y proporciona una salida de 500 mV a 25°C. Este sensor proporciona una precisión ligeramente mayor que los otros sensores y tiene un factor de escala de salida de 20 mV/°C.
Como puede ver en la figura anterior, el rango de salida de todos los sensores está entre 0,1 V y 2 V. Tenga en cuenta que la tensión de salida es independiente de la tensión de alimentación que utilice.
Configuración de los pines del TMP35/TMP36/TMP37
Los sensores TMP35/TMP36/TMP37 vienen en 3 factores de forma diferentes, pero el tipo más común es el paquete TO-92 de 3 pines, que se parece a un transistor. La versión TMP36 de este sensor tiene el número de modelo TMP36GT9Z.
En la figura siguiente se muestra la distribución de las clavijas del sensor:
Tenga en cuenta que la clavija 1 (+VS) es la más a la izquierda cuando el lado plano del sensor (con el texto impreso) está orientado hacia usted.
Puede encontrar más especificaciones del TMP36 en la tabla siguiente.
Especificaciones del sensor de temperatura analógico TMP36
Tensión de alimentación | 2,7 V a 5,5 V |
Corriente de reposo | 50 µA |
Rango de temperatura | -40°C a + 125°C |
Precisión | ±1°C a +25°C ±2°C de -40°C a +125°C |
Factor de escala de salida | 10 mV/°C |
Tensión de salida a 25°C | 750 mV |
Paquete | TO-92 de 3 polos |
Fabricante | Dispositivos analógicos |
Coste | Comprobar el precio |
Para más información, también puede consultar la hoja de datos aquí:
Cableado - Conexión del sensor de temperatura TMP36 a Arduino
Conectar un TMP36 al Arduino es muy fácil ya que sólo necesitas conectar 3 pines. Comienza conectando el pin +VS a la salida de 5 V del Arduino y el pin GND a la tierra. Si estás usando un Arduino de 3,3 V, simplemente conecta +VS a 3,3 V en su lugar.
A continuación, conecta el pin del medio (VOUT) a cualquiera de las entradas analógicas del Arduino. En este caso, he utilizado el pin de entrada analógica A0.
Las conexiones también se indican en la tabla siguiente:
Conexiones del sensor de temperatura analógico TMP36
TMP36 | Arduino |
---|---|
Pin 1 (+VS) | 5 V |
Pin 2 (VOUT) | Pin A0 |
PIN 3 (GND) | GND |
Para mejorar la estabilidad del sensor, la hoja de datos recomienda añadir un condensador cerámico de 0,1 μF entre el pin +VS y GND. Si utiliza cables largos, añadir una pequeña resistencia (por ejemplo, 750 Ω) en serie con la línea de señal (VOUT) también puede reducir el ruido.
Cuando probé el sensor con un Arduino Uno, obtuve lecturas estables sin el condensador y la resistencia, pero tus resultados pueden variar.
Conversión de la tensión de salida del TMP36 en temperatura
Para convertir la tensión de salida del sensor en la temperatura en grados centígrados, puede utilizar la siguiente fórmula:
Temperatura (°C) = (VOUT - 500) / 10
con VOUT en milivoltios (mV). Así que si la salida del sensor es de 750 mV, entonces la temperatura es:
(750 - 500) / 10 = 25°C
Como puedes ver en el diagrama de cableado anterior, la salida del TMP36 está conectada a una de las entradas analógicas del Arduino. El valor de esta entrada analógica se puede leer con la función analogRead() como verás en los ejemplos de código más abajo. Sin embargo, la función analogRead(pin) no devolverá realmente la tensión de salida del sensor.
Las placas Arduino contienen un convertidor analógico-digital (ADC) multicanal de 10 bits, que asignará los voltajes de entrada entre 0 y la tensión de funcionamiento (5 V o 3,3 V) a valores enteros entre 0 y 1023. En un Arduino Uno, por ejemplo, esto produce una resolución entre las lecturas de 5 voltios / 1024 unidades o, 0,0049 voltios (4,9 mV) por unidad.
Así que si usas analogRead() para leer el voltaje en una de las entradas analógicas del Arduino, obtendrás un valor entre 0 y 1023.
Para volver a convertir este valor en la tensión de salida del sensor, puedes utilizar
VOUT = lectura del ADC * (5000 / 1024)
Y si estás usando un Arduino de 3,3 V:
VOUT = lectura del ADC * (3300 / 1024)
Utilizaremos estas fórmulas en los ejemplos de código que aparecen a continuación.
Sensor de temperatura analógico TMP36 con código de ejemplo de Arduino
Con el siguiente código de ejemplo, puedes leer la temperatura de un sensor TMP36 y mostrarla en el Monitor Serial.
Puedes cargar el código de ejemplo en tu Arduino utilizando el IDE de Arduino.
Para copiar el código, haga clic en el botón de la esquina superior derecha del campo de código.
/* TMP36 analog temperature sensor with Arduino example code. More info: https://www.makerguides.com */ // Define to which pin of the Arduino the output of the TMP36 is connected: #define sensorPin A0 void setup() { // Begin serial communication at a baud rate of 9600: Serial.begin(9600); } void loop() { // Get a reading from the temperature sensor: int reading = analogRead(sensorPin); // Convert the reading into voltage: float voltage = reading * (5000 / 1024.0); // Convert the voltage into the temperature in Celsius: float temperature = (voltage - 500) / 10; // Print the temperature in the Serial Monitor: Serial.print(temperature); Serial.print(" \xC2\xB0"); // shows degree symbol Serial.println("C"); delay(1000); // wait a second between readings }
Debería ver la siguiente salida en el Monitor Serial (Ctrl + Shift + M).
Asegúrese de que la tasa de baudios del Monitor Serial también está ajustada a 9600.
Cómo funciona el código
En primer lugar, he definido a qué pin del Arduino se dirige el VOUT del sensor está conectado. En este caso, utilizamos el pin analógico A0. La declaración #define se puede utilizar para dar un nombre a un valor constante. El compilador sustituirá todas las referencias a esta constante por el valor definido cuando se compile el programa. Por lo tanto, en todos los casos en los que se menciona sensorPin
el compilador lo sustituirá por A0 cuando se compile el programa.
// Define to which pin of the Arduino the output of the TMP36 is connected: #define sensorPin A0
En la sección de configuración del código, comenzamos la comunicación en serie a una velocidad de 9600 baudios.
void setup() { // Begin serial communication at a baud rate of 9600: Serial.begin(9600); }
En la sección de bucle del código, comenzamos tomando una lectura del sensor con la función analogRead(pin)
.
// Get a reading from the temperature sensor: int reading = analogRead(sensorPin);
A continuación, utilizamos las fórmulas que he mencionado antes en el artículo para convertir la lectura en tensión y luego en temperatura.
// Convert the reading into voltage: float voltage = reading * (5000 / 1024.0); // Convert the voltage into the temperature in degree Celsius: float temperature = (voltage - 500) / 10;
Si estás usando un Arduino de 3,3 V, como el Arduino Due o el Arduino Nano 33 BLE, tienes que conectar el pin +VS a 3,3 V y sustituir la línea resaltada por:
// Convert the reading into voltage: float voltage = reading * (3300 / 1024.0);
Por último, los resultados se imprimen en el monitor de serie:
// Print the temperature in the Serial Monitor: Serial.print(temperature); Serial.print(" \xC2\xB0"); // shows degree symbol Serial.println("C");
Mostrar las lecturas de temperatura del TMP36 en una pantalla LCD I2C
Si quieres hacer un termómetro autónomo que no necesite un ordenador, puede ser bueno saber cómo mostrar las lecturas de temperatura en una pantalla LCD.
Con el código de ejemplo que se muestra a continuación, puede mostrar las lecturas de temperatura en una pantalla LCD I2C de 16×2 caracteres.
La conexión de la pantalla LCD I2C es bastante fácil como puedes ver en el diagrama de cableado de abajo. Usted puede comprobar mi tutorial detallado a continuación para obtener más información.
Si quieres usar un LCD estándar no-I2C en su lugar, echa un vistazo a este artículo:
Las conexiones también se indican en la tabla siguiente:
Conexiones I2C LCD
LCD de caracteres I2C | Arduino |
---|---|
GND | GND |
VCC | 5 V |
SDA | A4 |
SCL | A5 |
Tenga en cuenta que el sensor de temperatura TMP36 se conecta de la misma manera que antes.
Instalación de las librerías Arduino necesarias
Para utilizar una pantalla LCD I2C, es necesario instalar la biblioteca LiquidCrystal_I2C Arduino.
Para instalar esta biblioteca, vaya a Herramientas > Gestionar Bibliotecas (Ctrl + Shift + I en Windows) en el IDE de Arduino. El Administrador de Bibliotecas se abrirá y actualizará la lista de bibliotecas instaladas.
Ahora busca 'liquidcrystal_i2c' y busca la biblioteca de Frank de Brabander. Selecciona la última versión y haz clic en Instalar.
TMP36 con código de ejemplo LCD I2C
/* TMP36 analog temperature sensor with I2C LCD and Arduino example code. More info: https://www.makerguides.com */ // Include the required Arduino libraries: #include "LiquidCrystal_I2C.h" // Create a new instance of the LiquidCrystal_I2C class: LiquidCrystal_I2C lcd(0x27, 16, 2); // Degree symbol: byte Degree[] = { B00111, B00101, B00111, B00000, B00000, B00000, B00000, B00000 }; // Define to which pin of the Arduino the TMP36 is connected: #define sensorPin A0 void setup() { // Start the LCD and turn on the backlight: lcd.init(); lcd.backlight(); // Create a custom character: lcd.createChar(0, Degree); } void loop() { // Get a reading from the temperature sensor: int reading = analogRead(sensorPin); // Convert the reading into voltage: float voltage = reading * (5000 / 1024.0); // Convert the voltage into the temperature in degree Celsius: float temperature = (voltage - 500) / 10; // Print the temperature on the LCD; lcd.setCursor(0, 0); lcd.print("Temperature:"); lcd.setCursor(0, 1); lcd.print(temperature); lcd.write(0); // print the custom character lcd.print("C"); delay(1000); // wait a second between readings }
Debería ver la siguiente salida en la pantalla LCD:
Conclusión
En este tutorial, he mostrado cómo utilizar un sensor de temperatura analógico TMP36 con Arduino. Espero que lo hayas encontrado útil e informativo. Si lo hiciste, por favor comparte este artículo con un amigo que también le guste la electrónica y hacer cosas.
Me encantaría saber qué proyectos planeas construir (o ya has construido) con este sensor. Si tienes alguna pregunta, sugerencia, o si crees que faltan cosas en este tutorial, por favor deja un comentario abajo.
Tenga en cuenta que los comentarios son retenidos por la moderación para evitar el spam.
Esta obra está bajo una licencia de Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Otros enlaces útiles de la web:
Benne is professional Systems Engineer with a deep expertise in Arduino and a passion for DIY projects.
Laura
Monday 6th of February 2023
Thank you for your tutorial!
Lee A
Miércoles 31 de marzo de 2021
En la clase de STEM, conectamos el sensor TMP36 a los 5V del Arduino, que estaba conectado al ordenador. Dos estudiantes cambiaron el +/- y el sensor se calentó tanto que se quemó los dedos. Cambié a un sensor diferente, pero también incluí una advertencia muy notable en mis notas del profesor para los que seguían usando el TMP36.