Interfaz del sensor de temperatura TMP36 con Arduino

En el mundo de la electrónica y la programación, los sensores de temperatura juegan un papel crucial en una variedad de proyectos y aplicaciones. En este artículo, exploraremos cómo interfazar el popular sensor de temperatura TMP36 con la plataforma Arduino. Descubre cómo obtener lecturas precisas de temperatura y cómo utilizar esta información en tus proyectos. Acompáñanos en este emocionante viaje hacia el mundo de la electrónica y la programación.

Una de las formas más fáciles y rentables de agregar una medición de temperatura a su proyecto Arduino es utilizar el sensor de temperatura TMP36. Estos sensores son bastante precisos y no requieren ningún componente externo para funcionar. Entonces, con solo unas pocas conexiones y algo de código Arduino, ¡puedes medir la temperatura en poco tiempo!

Sensor de temperatura TMP36

El TMP36 es un sensor de temperatura Celsius de precisión de bajo voltaje fabricado por Analog Devices. Es un chip que proporciona una salida de voltaje linealmente proporcional a la temperatura en °C y por lo tanto es muy fácil de usar con un Arduino.

Interfaz del sensor de temperatura TMP36 con Arduino

El sensor de temperatura TMP36 es bastante preciso, nunca se desgasta, funciona en muchas condiciones ambientales y no requiere ningún componente externo para funcionar. Además, el sensor TMP36 no requiere calibración y proporciona 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.

El sensor puede funcionar con un suministro de voltaje de 2,7 V a 5,5 V y solo consume 50 µA durante las conversiones de temperatura activas, lo que resulta en un autocalentamiento muy bajo (menos de 0,1 °C en aire en calma). También hay una función de apagado para reducir la corriente de suministro a menos de 0,5 µA.

Aquí están las especificaciones completas:

Fuente de alimentación 2,7 V a 5,5 V
Consumo de corriente 50 µA
Rango de temperatura -40°C a 125°C
exactitud ±2°C
Factor de escala de salida 10mV/°C
Área de salida 0,1 V (-40 °C) a 1,75 V (125 °C)
Salida a 25°C 750mV

Puede encontrar más información en la siguiente hoja de datos.

Principio de funcionamiento

El TMP36 utiliza tecnología de estado sólido para medir la temperatura. Se utiliza la caída de voltaje entre la base y el emisor (voltaje directo – V).Ser) de Transistor conmutado por diodo disminuye a un ritmo conocido a medida que aumenta la temperatura. Al amplificar con precisión este cambio de voltaje, es fácil generar una señal analógica que sea directamente proporcional a la temperatura.

Interfaz del sensor de temperatura TMP36 con Arduino

Esta relación lineal entre el voltaje directo y la temperatura es la razón por la cual los transistores conectados por diodos se utilizan como dispositivos de medición de temperatura. Básicamente, así es como se mide la temperatura, aunque ha habido algunas mejoras en esta técnica a lo largo de los años. Puedes encontrar más información sobre esta técnica aquí. Aquí.

La buena noticia es que todos estos cálculos complejos se realizan dentro del TMP36. Simplemente genera un voltaje que es linealmente proporcional a la temperatura.

Cómo medir la temperatura

El TMP36 es fácil de usar. Simplemente conecte el pin izquierdo a la alimentación (2,7-5,5 V) y el pin derecho a tierra (suponiendo que el lado plano del sensor esté hacia usted). Luego hay un voltaje analógico en el pin central que es directamente proporcional (lineal) a la temperatura en °C. Esto se puede ver fácilmente a partir de la característica del voltaje de salida versus la temperatura. Tenga en cuenta que el voltaje de salida analógica es independiente de la fuente de alimentación.

Interfaz del sensor de temperatura TMP36 con Arduino

Para convertir voltaje a temperatura, simplemente use la fórmula básica:

Temperatura (°C) = (Vsalida – 0,5) * 100

Por ejemplo, si el voltaje de salida es 1V, significa que la temperatura es (1 – 0,5) * 100 = 50°C

¿Quieres saber cómo se deriva esta fórmula?

Antes de calcular el valor de temperatura, restamos 0,5 V al voltaje de salida ya que el TMP36 tiene un desplazamiento de 500 mV. Esta compensación permite que el sensor mida temperaturas negativas.

Ahora, para convertir este voltaje en temperatura, simplemente lo multiplicamos por 100 ya que el TMP36 tiene un factor de escala de 10 mV/°C. Tan simple como el ABC.

Probando el sensor TMP36

Probar el TMP36 es bastante fácil. Simplemente conecte el pin izquierdo a una fuente de alimentación de 2,7-5,5 V (dos pilas AA funcionan muy bien) y el pin derecho a tierra (suponiendo que el lado plano del sensor esté hacia usted). Ahora conecte su multímetro a tierra y al pin del medio en modo de voltaje CC. A temperatura ambiente (25°C), el voltaje debe ser de aproximadamente 0,75 V.

Intente apretar ligeramente la carcasa de plástico del sensor para observar un aumento de temperatura.

Interfaz del sensor de temperatura TMP36 con Arduino

O intente tocar el sensor con un cubito de hielo (en una bolsa de plástico para que su circuito no entre en contacto con el agua) y observe cómo baja la temperatura.

Interfaz del sensor de temperatura TMP36 con Arduino

Configuración de pines del sensor TMP36

El TMP36 está disponible en tres factores de forma diferentes, pero el tipo más común es el encapsulado TO-92 de 3 pines, que luce exactamente como un transistor. Echemos un vistazo al pinout.

Interfaz del sensor de temperatura TMP36 con Arduino

+vs es la fuente de alimentación del sensor, que puede estar entre 2,7V y 5,5V.

votar El pin produce un voltaje analógico que es directamente proporcional (lineal) a la temperatura. Debe estar conectado a una entrada analógica (ADC).

Tierra es un pin de tierra.

Conexión del sensor de temperatura TMP36 a un Arduino

Conectar el TMP36 a un Arduino es muy fácil. Sólo necesitas conectar tres pines: dos de alimentación y uno para leer el valor del sensor.

El sensor puede funcionar con una salida de 3,3 o 5 V. El voltaje positivo está conectado a “+Vs” y la tierra está conectada a “GND”. El pin central “Vout” es la salida de señal analógica del sensor y está conectado a la entrada analógica A0 de un Arduino.

A continuación se muestra la conexión para los experimentos con el TMP36:

Interfaz del sensor de temperatura TMP36 con Arduino

Para medir la temperatura del aire, deje el sensor al aire libre o conéctelo a un objeto cuya temperatura desee medir, como un fregadero.

Lectura de los datos de temperatura analógicos

Como puede ver en el esquema anterior, la salida del TMP36 está conectada a una de las entradas analógicas del Arduino. El valor de esta entrada analógica también se puede leer analogRead() Función.

Sin embargo, eso es analogRead() En realidad, la función no devuelve el voltaje de salida del sensor. En cambio, el voltaje de entrada entre 0 y el voltaje de referencia del ADC (técnicamente es el voltaje de funcionamiento, por lo que 5 V o 3,3 V a menos que lo cambie) se asigna a valores enteros de 10 bits en el rango de 0 a 1023. Para convertir este valor nuevamente a Para encontrar el voltaje de salida del sensor, use esta fórmula:

Vout = (leído del ADC) * (5/1024)

Esta fórmula convierte el número 0-1023 del ADC a 0-5V

Si estás usando un Arduino de 3.3V debes usar:

Vout = (leído del ADC) * (3,3/1024)

Esta fórmula convierte el número 0-1023 del ADC a 0-3.3V

Luego, para convertir voltios a temperatura, use esta fórmula:

Temperatura (°C) = (Vsalida – 0,5) * 100

Código Arduino – Termómetro simple

El siguiente esquema muestra una forma rápida de leer un sensor de temperatura TMP36 y puede servir como base para futuros experimentos y proyectos prácticos. Simplemente lee el valor del TMP36 a través del puerto analógico A0 e imprime la temperatura actual (en °C y °F) en el monitor serie. Continúe y cárguelo en su Arduino.

// Define the analog pin, the TMP36's Vout pin is connected to
#define sensorPin A0

void setup() {
  // Begin serial communication at 9600 baud rate
  Serial.begin(9600);
}

void loop() {
  // Get the voltage reading from the TMP36
  int reading = analogRead(sensorPin);

  // Convert that reading into voltage
  // Replace 5.0 with 3.3, if you are using a 3.3V Arduino
  float voltage = reading * (5.0 / 1024.0);

  // Convert the voltage into the temperature in Celsius
  float temperatureC = (voltage - 0.5) * 100;

  // Print the temperature in Celsius
  Serial.print("Temperature: ");
  Serial.print(temperatureC);
  Serial.print("xC2xB0"); // shows degree symbol
  Serial.print("C  |  ");
  
  // Print the temperature in Fahrenheit
  float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;
  Serial.print(temperatureF);
  Serial.print("xC2xB0"); // shows degree symbol
  Serial.println("F");

  delay(1000); // wait a second between readings
}

Debería ver el siguiente resultado en el monitor serie.

Interfaz del sensor de temperatura TMP36 con Arduino

Explicación del código:

El boceto comienza definiendo el pin Arduino al que está conectado el pin Vout del sensor.

#define sensorPin A0

En la configuración inicializamos la conexión serie a la computadora.

void setup() {
  Serial.begin(9600);
}

En el bucle primero leemos la señal analógica del TMP36. analogRead() Función.

int reading = analogRead(sensorPin);

A continuación, utilizamos las fórmulas que analizamos anteriormente en este artículo para convertir la lectura analógica a voltaje y luego a temperatura.

float voltage = reading * (5.0 / 1024.0);

float temperatureC = (voltage - 0.5) * 100;

Luego, los resultados se imprimen en el monitor serie.

Serial.print("Temperature: ");
Serial.print(temperatureC);
Serial.print("xC2xB0"); // shows degree symbol
Serial.print("C  |  ");

El valor de temperatura que obtenemos es en grados Celsius (°C). Se convierte a Fahrenheit (°F) mediante una fórmula sencilla y se imprime en el monitor de serie.

t(°F) =T(ºC) × 9/5 + 32

float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;
Serial.print(temperatureF);
Serial.print("xC2xB0"); // shows degree symbol
Serial.println("F");

Mejora de la precisión del sensor TMP36

Como no hemos configurado el voltaje de referencia (ARef) utilizado para la entrada analógica (la referencia analógica predeterminada en las placas Arduino de 5 V es 5 voltios), la resolución máxima que obtenemos del ADC es 5/1024 = 4,88 mV o 0,49 °C.

Para lograr mejores resultados, utilizar el voltaje de referencia de 3,3 V como ARef en lugar del voltaje de referencia de 5 V es más preciso y reduce el ruido. Usando 3,3 V como voltaje de referencia obtenemos una resolución de 3,3/1024 = 3,22 mV o 0,32 °C.

Para utilizar el pin de 3,3 V como referencia analógica, conéctelo a la entrada AREF (referencia analógica) de la siguiente manera.

Interfaz del sensor de temperatura TMP36 con Arduino

También es necesario realizar algunos cambios en el código. He resaltado las líneas que necesitas agregar/cambiar en el siguiente código:

// Define the analog pin, the TMP36's Vout pin is connected to
#define sensorPin A0

// Tie ARef to 3.3V
#define aref_voltage 3.3
void setup() {
  // Begin serial communication at 9600 baud rate
  Serial.begin(9600);

  // If you want to set the aref to something other than 5v
  analogReference(EXTERNAL);}

void loop() {
  // Get the voltage reading from the TMP36
  int reading = analogRead(sensorPin);

  // Convert that reading into voltage
  float voltage = reading * (aref_voltage / 1024.0);
  // Convert the voltage into the temperature in Celsius
  float temperatureC = (voltage - 0.5) * 100;

  // Print the temperature in Celsius
  Serial.print("Temperature: ");
  Serial.print(temperatureC);
  Serial.print("xC2xB0"); // shows degree symbol
  Serial.print("C  |  ");
  
  // Print the temperature in Fahrenheit
  float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;
  Serial.print(temperatureF);
  Serial.print("xC2xB0"); // shows degree symbol
  Serial.println("F");

  delay(1000); // wait a second between readings
}

Debería ver el siguiente resultado en el monitor serie.

Interfaz del sensor de temperatura TMP36 con Arduino

Puede ver que la precisión aún se puede mejorar un poco, pero para la mayoría de los proyectos esto no será suficiente.

Una alternativa al TMP36 es utilizar un sensor de temperatura digital como el DS18B20, incluido en el mismo paquete. Los sensores de temperatura digitales tienen una mejor inmunidad al ruido, lo cual resulta útil cuando el sensor se coloca lejos o en un entorno con ruido eléctrico.

Interfaz del sensor de temperatura TMP36 con Arduino
Conexión del sensor de temperatura digital de 1 cable DS18B20 a Arduino
Una de las formas más fáciles y rentables de integrar sensores de temperatura en su proyecto Arduino es utilizar un sensor de temperatura de 1 cable DS18B20. Estos sensores…

Proyecto Arduino: termómetro independiente que utiliza TMP36 y una pantalla LCD I2C

A veces se le ocurre la idea de mostrar las lecturas de temperatura en tiempo real y mostrar una alerta cuando la temperatura está fuera del rango especificado. Entonces probablemente necesite una pantalla LCD de 16 × 2 caracteres en lugar de un monitor en serie.

En este ejemplo, conectamos la pantalla LCD I2C al Arduino junto con el TMP36.

Conectar la pantalla LCD I2C es bastante simple, como puede ver en el siguiente esquema. Si no está familiarizado con las pantallas LCD I2C de 16×2 caracteres, debe leer (al menos hojear) el siguiente tutorial.

Interfaz del sensor de temperatura TMP36 con Arduino
Conecte una pantalla LCD I2C a Arduino
Si alguna vez has intentado conectar una pantalla LCD a un Arduino, probablemente hayas notado que utiliza muchos pines Arduino. Incluso en…

El siguiente diagrama le muestra cómo cablear todo.

Interfaz del sensor de temperatura TMP36 con Arduino

El siguiente boceto imprime los valores de temperatura en la pantalla LCD I2C de 16×2 caracteres. El código es similar al primer ejemplo excepto que los valores están impresos en la pantalla LCD I2C.

// Include the LiquidCrystal_I2C library
#include <LiquidCrystal_I2C.h>

// Create a new instance of the LiquidCrystal_I2C class
LiquidCrystal_I2C lcd(0x3F, 16, 2);

// Define a custom degree character
byte Degree[] = {
  B00111,
  B00101,
  B00111,
  B00000,
  B00000,
  B00000,
  B00000,
  B00000
};

// Define the analog pin, the TMP36's Vout pin is connected to
#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 the voltage reading from the TMP36
  int reading = analogRead(sensorPin);

  // Convert that reading into voltage
  // Replace 5.0 with 3.3, if you are using a 3.3V Arduino
  float voltage = reading * (5.0 / 1024.0);

  // Convert the voltage into the temperature in Celsius
  float temperatureC = (voltage - 0.5) * 100;

  // Print the temperature on the LCD;
  lcd.setCursor(0, 0);
  lcd.print("Temperature:");
  lcd.setCursor(0, 1);
  lcd.print(temperatureC, 1);
  lcd.write(0); // print the custom degree character
  lcd.print("C ");
  
  // Print the temperature in Fahrenheit
  float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;
  lcd.print(temperatureF, 1);
  lcd.write(0); // print the custom degree character
  lcd.print("F ");

  delay(1000); // wait a second between readings
}

Debería ver el siguiente resultado en la pantalla LCD:

Interfaz del sensor de temperatura TMP36 con Arduino
Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

Interfaz del sensor de temperatura TMP36 con Arduino

Una de las formas más fáciles y económicas de agregar detección de temperatura a tu proyecto de Arduino es usar el sensor de temperatura TMP36. Estos sensores son bastante precisos y no necesitan componentes externos para funcionar. ¡Así que con solo unas pocas conexiones y algo de código Arduino, estarás detectando la temperatura en poco tiempo!

Sensor de Temperatura TMP36

El TMP36 es un sensor de temperatura centígrado de baja tensión y precisión fabricado por Analog Devices. Es un chip que proporciona una salida de voltaje que es linealmente proporcional a la temperatura en °C y, por lo tanto, es muy fácil de usar con un Arduino.

El sensor de temperatura TMP36 es bastante preciso, nunca se desgasta, funciona en muchas condiciones ambientales y no requiere componentes externos para funcionar. Además, el sensor TMP36 no necesita calibración y proporciona 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.

El sensor se puede alimentar con una fuente de alimentación de 2.7V a 5.5V y consume solo 50µA durante las conversiones de temperatura activas, lo que proporciona un auto calentamiento muy bajo (menos de 0.1°C en aire estático). Además, se proporciona una función de apagado para reducir la corriente de alimentación a menos de 0.5µA.

Principio de Funcionamiento

El TMP36 utiliza una técnica de estado sólido para medir la temperatura. Hace uso del hecho de que la caída de voltaje entre la base y el emisor (voltaje directo – Vbe) del transistor conectado con diodo disminuye a una tasa conocida a medida que aumenta la temperatura. Al amplificar precisamente este cambio de voltaje, es fácil generar una señal analógica que es directamente proporcional a la temperatura.

Esta relación lineal entre el voltaje directo y la temperatura es la razón por la cual se utilizan transistores conectados con diodo como dispositivos de medición de temperatura. Básicamente, así es como se mide la temperatura, aunque ha habido algunas mejoras en esta técnica a lo largo de los años. Más información sobre esta técnica se puede encontrar aquí. La buena noticia es que todos estos cálculos complejos se realizan dentro del TMP36. Simplemente emite un voltaje que es linealmente proporcional a la temperatura.

¿Cómo medir la Temperatura?

El TMP36 es fácil de usar, simplemente conecta el pin izquierdo a la alimentación (2.7-5.5V) y el pin derecho a tierra (suponiendo que el lado plano del sensor te esté mirando). Luego, el pin central tendrá un voltaje analógico que es directamente proporcional (lineal) a la temperatura en °C. Esto se puede ver fácilmente en la característica de voltaje de salida vs temperatura. Ten en cuenta que el voltaje de salida analógico es independiente de la fuente de alimentación.

Para convertir el voltaje en temperatura, simplemente usa la fórmula básica:

Temp (°C) = (Vout – 0.5) * 100

Entonces, por ejemplo, si el voltaje de salida es 1V, eso significa que la temperatura es (1 – 0.5) * 100 = 50 °C

¿Cómo probar el Sensor TMP36?

Probar el TMP36 es bastante fácil, simplemente conecta el pin izquierdo a una fuente de alimentación de 2.7-5.5V (dos baterías AA funcionan muy bien) y el pin derecho a tierra (suponiendo que el lado plano del sensor te esté mirando). Ahora conecta tu multímetro en modo de voltaje DC a tierra y el pin central. A temperatura ambiente (25°C), el voltaje debería ser aproximadamente 0.75V.

Intenta apretar suavemente el estuche de plástico del sensor para ver un aumento de temperatura.

O intenta tocar el sensor con un cubo de hielo (en una bolsa de plástico para que tu circuito no entre en contacto con el agua) y observa cómo baja la temperatura.

Pinout del Sensor TMP36

El TMP36 viene en tres formas diferentes, pero el tipo más común es el paquete de 3 pines TO-92, que se parece a un transistor. Veamos su pinout.

  • +Vs es la fuente de alimentación para el sensor que puede estar en cualquier lugar entre 2.7V y 5.5V.
  • El pin Vout produce un voltaje analógico que es directamente proporcional (lineal) a la temperatura. Debe conectarse a una entrada analógica (ADC).
  • GND es un pin de tierra.

Conexión del Sensor de Temperatura TMP36 a un Arduino

Conectar el TMP36 a un Arduino es súper sencillo. Solo necesitas conectar tres pines: dos para la alimentación y uno para leer el valor del sensor.

El sensor se puede alimentar desde una salida de 3.3 o 5V. El voltaje positivo se conecta a ‘+Vs’ y tierra se conecta a ‘GND’. El pin central ‘Vout’ es la salida de señal analógica del sensor y se conecta a la entrada analógica A0 de un Arduino.

A continuación tienes el esquema para los experimentos con el TMP36:

Para medir la temperatura del aire, deja el sensor al aire libre o conéctalo a un objeto del que quieras medir la temperatura, como un disipador de calor.

Lectura de los Datos de Temperatura Analógica

Como se puede ver en el diagrama de conexión 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(). Sin embargo, la función analogRead() no devuelve realmente el voltaje de salida del sensor. En cambio, asigna el voltaje de entrada entre 0 y el voltaje de referencia del ADC (técnicamente es el voltaje de operación, es decir, 5V o 3.3V a menos que lo cambies) a valores enteros de 10 bits que van desde 0 a 1023. Para convertir este valor de nuevo al voltaje de salida del sensor, usa esta fórmula:

Vout = (lectura del ADC) * (5 / 1024)

Esta fórmula convierte el número 0-1023 del ADC en 0-5V. Si estás usando un Arduino de 3.3V, deberías usar esto en su lugar:

Vout = (lectura del ADC) * (3.3 / 1024)

Luego, para convertir los voltios en temperatura, usa esta fórmula:

Temperatura (°C) = (Vout – 0.5) * 100

Código de Arduino – Termómetro Simple

El siguiente sketch muestra una forma rápida de leer un sensor de temperatura TMP36 y puede servir como base para experimentos y proyectos más prácticos. Simplemente lee el valor del TMP36 usando el puerto analógico A0 e imprime la temperatura actual (tanto en °C como en °F) en el monitor serie. Cárgalo en tu Arduino.


// Define el pin analógico, el pin Vout del TMP36 está conectado a
#define sensorPin A0

void setup() {
// Iniciar la comunicación en serie a una velocidad de 9600 baudios
Serial.begin(9600);
}

void loop() {
// Obtener la lectura de voltaje del TMP36
int lectura = analogRead(sensorPin);

// Convertir esa lectura en voltaje
// Reemplaza 5.0 con 3.3, si estás usando un Arduino de 3.3V
float voltaje = lectura * (5.0 / 1024.0);

// Convertir el voltaje en temperatura en Celsius
float temperaturaC = (voltaje - 0.5) * 100;

// Imprimir la temperatura en Celsius
Serial.print("Temperatura: ");
Serial.print(temperaturaC);
Serial.print("xC2xB0"); // muestra el símbolo de grado
Serial.print("C | ");

// Imprimir la temperatura en Fahrenheit
float temperaturaF = (temperaturaC * 9.0 / 5.0) + 32.0;
Serial.print(temperaturaF);
Serial.print("xC2xB0"); // muestra el símbolo de grado
Serial.println("F");

delay(1000); // esperar un segundo entre lecturas
}

Deberías ver la siguiente salida en el monitor serie.

Explicación del Código

El sketch comienza definiendo el pin de Arduino al que está conectado el pin Vout del sensor.


#define sensorPin A0

En la configuración, inicializamos la conexión serial con la computadora.


void setup() {
Serial.begin(9600);
}

En el bucle, primero leemos la señal analógica del TMP36 usando la función analogRead().


int lectura = analogRead(sensorPin);

A continuación, utilizamos las fórmulas que discutimos anteriormente en el artículo para convertir la lectura analógica en voltaje y luego en temperatura.


float voltaje = lectura * (5.0 / 1024.0);

float temperaturaC = (voltaje - 0.5) * 100;

Los resultados se imprimen en el Monitor Serie.


Serial.print("Temperatura: ");
Serial.print(temperaturaC);
Serial.print("xC2xB0"); // muestra el símbolo de grado
Serial.print("C | ");

El valor de temperatura que obtenemos está en Celsius (°C). Se convierte en Fahrenheit (°F) usando una fórmula simple y se imprime en el Monitor Serie.


T(°F) = T(°C) × 9/5 + 32

float temperaturaF = (temperaturaC * 9.0 / 5.0) + 32.0;
Serial.print(temperaturaF);
Serial.print("xC2xB0"); // muestra el símbolo de grado
Serial.println("F");

Mejorando la Precisión del Sensor TMP36

Porque no configuramos el voltaje de referencia (ARef) utilizado para la entrada analógica (la referencia analógica predeterminada en las placas Arduino de 5V es 5 voltios), la máxima resolución que obtenemos del ADC es 5/1024 = 4.88 mV o 0.49°C. Para obtener mejores resultados, usar el voltaje de referencia de 3.3V como ARef en lugar de 5V será más preciso y menos ruidoso. Con 3.3V como voltaje de referencia, obtenemos una resolución de 3.3/1024 = 3.22 mV o 0.32°C.

Para usar el pin de 3.3V como tu referencia analógica, conéctalo al pin AREF (Referencia Analógica) de la siguiente manera.

También necesitas hacer algunos cambios en el código. He resaltado las líneas que necesitas agregar/cambiar en el código a continuación.


// Define el pin analógico, el pin Vout del TMP36 está conectado a
#define sensorPin A0

// Unir ARef a 3.3V
#define voltaje_aref 3.3
void setup() {
// Iniciar la comunicación en serie a una velocidad de 9600 baudios
Serial.begin(9600);

// Si deseas configurar la ARef en algo distinto de 5V
analogReference(EXTERNAL);
}

void loop() {
// Obtener la lectura de voltaje del TMP36
int lectura = analogRead(sensorPin);

// Convertir esa lectura en voltaje
float voltaje = lectura * (voltaje_aref / 1024.0);
// Convertir el voltaje en la temperatura en Celsius
float temperaturaC = (voltaje - 0.5) * 100;

// Imprimir la temperatura en Celsius
Serial.print("Temperatura: ");
Serial.print(temperaturaC);
Serial.print("xC2xB0"); // muestra el símbolo de grado
Serial.print("C | ");

// Imprimir la temperatura en Fahrenheit
float temperaturaF = (temperaturaC * 9.0 / 5.0) + 32.0;
Serial.print(temperaturaF);
Serial.print("xC2xB0"); // muestra el símbolo de grado
Serial.println("F");

delay(1000); // esperar un segundo entre lecturas
}

Deberías ver la siguiente salida en el monitor serie.

Se puede ver que la precisión se puede mejorar un poco, pero para la mayoría de los proyectos, esto no será suficiente.

Una alternativa al TMP36 es usar un sensor de temperatura digital como el DS18B20 que viene en el mismo paquete. Los sensores de temperatura digitales tienen una mejor inmunidad al ruido, lo que es útil cuando el sensor se coloca a una distancia o en un entorno eléctricamente ruidoso.

Interfaz del Sensor de Temperatura Digital de 1 Cable DS18B20 con Arduino

Una de las formas más simples y económicas de incorporar la detección de temperatura en tu proyecto de Arduino es usar un Sensor de Temperatura DS18B20 de 1 cable. Estos sensores…

Proyecto de Arduino – Termómetro Independiente con TMP36 y una LCD I2C

A veces se te ocurre una idea en la que quieres mostrar las lecturas de temperatura en tiempo real y mostrar una alerta cuando la temperatura está fuera del rango especificado. Entonces probablemente necesitarás una LCD de caracteres 16×2 en lugar de un monitor serie.

En este ejemplo, conectaremos la LCD I2C al Arduino junto con el TMP36.

Conectar la LCD I2C es bastante fácil, como puedes ver en el diagrama de conexión a continuación. Si no estás familiarizado con las LCDs I2C de 16×2 caracteres, considera leer (al menos ojeando) el siguiente tutorial.

Interfaz de una LCD I2C con Arduino

Si alguna vez has intentado conectar una pantalla LCD a un Arduino, probablemente hayas notado que usa muchos pines de Arduino. Incluso en…

El siguiente diagrama te muestra cómo cablear todo.

El siguiente sketch imprimirá los valores de temperatura en la LCD I2C de 16×2 caracteres. El código es similar al primer ejemplo, excepto que los valores se imprimen en la LCD I2C.

// Incluye la biblioteca LiquidCrystal_I2C
#include <LiquidCrystal_I2C.h>

// Crea una nueva instancia de la clase LiquidCrystal_I2C
LiquidCrystal_I2C lcd(0x3F, 16, 2);

// Define un carácter de grado personalizado
byte Grado[] = {
B00111,
B00101,
B00111,
B00000,
B00000,
B00000,
B00000,
B00000
};

// Define el pin analógico, el pin Vout del TMP36 está conectado a
#define sensorPin A0

void setup() {
// Iniciar la LCD y encender la retroiluminación
lcd.init();
lcd.backlight();

// Crear un carácter personalizado
lcd.createChar(0, Grado);
}

void loop() {
// Obtener la lectura de voltaje del TMP36
int lectura = analogRead(sensorPin);

// Convertir esa lectura en voltaje
// Reemplaza 5.0 con 3.3, si estás usando un Arduino de 3.3V
float voltaje = lectura * (5.0 / 1024.0);

// Convertir el voltaje en temperatura en Celsius
float temperaturaC = (voltaje - 0.5) * 100;

// Imprimir la temperatura en la LCD;
lcd.setCursor(0, 0);
lcd.print("Temperatura:");
lcd.setCursor(0, 1);
lcd.print(temperaturaC, 1);
lcd.write(0); // imprime el carácter de grado personalizado
lcd.print("C ");

4 comentarios en «Interfaz del sensor de temperatura TMP36 con Arduino»

Deja un comentario