Correo: [email protected] - Teléfono: +56979962128

1

Los TMP35/TMP36/TMP37 son sensores de temperatura en grados centígrados, de precisión y de baja tensión. Proporcionan una salida de tensión que es linealmente proporcional a la temperatura Celsius (centígrada). Los TMP35/ TMP36/TMP37 no requieren ninguna calibración externa para proporcionar precisiones típicas de ±1°C a +25°C y ±2°C en el rango de temperatura de -40°C a +125°C.

En este tutorial aprenderás a utilizar el sensor TMP36 con Arduino uno. La temperatura ambiente se imprimirá en el monitor serie.

Antes de empezar veamos más información sobre el sensor.

Paso 1: Sobre el sensor TMP36

2

Características:

  • Funcionamiento a baja tensión (+2,7 V a+5,5 V)
  • Calibrado directamente en °C
  • Factor de escala de 10 mV/8°C (20 mV/8°C en el TMP37)
  • ±2°C Precisión de sobre temperatura (típica)
  • ±0,5°C Linealidad (típica)
  • Estable con grandes cargas capacitivas
  • Especificado -40 °C a +125 °C, funcionamiento hasta +150 °C
  • Menos de 50 µA Corriente de reposo
  • Corriente de apagado 0,5 µA máx.
  • Puedes ver el pinout del TMP36 en la imagen anterior.

Encuentra más información aquí: datasheet

Paso 2: Lo que necesitarás

3

Para este proyecto necesitarás

  • Arduino uno
  • Breadboard
  • Sensor de temperatura TMP36
  • Cables

Paso 3: El circuito

Arduino circuit 07 01

Las conexiones son bastante fáciles, ver la imagen de arriba con el esquema del circuito de la breadboard.

Asegúrate de mirar el sensor desde la parte frontal:

  • Conecta el pin 5V a 5 volts (5V)
  • Conecta el pin SIGNAL al pin analógico 0
  • Conecta el pin GND a tierra (GND)

Paso 4: El código

Utilizaremos el código del SparkFun Inventor’s Kit – SIK Guide, Example sketch 07. El código es bastante auto-explicativo, y los comentarios hacen un buen trabajo explicando mas detalles.

/*
SparkFun Inventor's Kit 
Example sketch 07

TEMPERATURE SENSOR

  Use the "serial monitor" window to read a temperature sensor.

  The TMP36 is an easy-to-use temperature sensor that outputs
  a voltage that's proportional to the ambient temperature.
  You can use it for all kinds of automation tasks where you'd
  like to know or control the temperature of something.

  More information on the sensor is available in the datasheet:
  http://cdn.sparkfun.com/datasheets/Sensors/Temp/TMP35_36_37.pdf

  Even more exciting, we'll start using the Arduino's serial port
  to send data back to your main computer! Up until now, we've 
  been limited to using simple LEDs for output. We'll see that
  the Arduino can also easily output all kinds of text and data.

Hardware connections:

  Be careful when installing the temperature sensor, as it is
  almost identical to the transistors! The one you want has 
  a triangle logo and "TMP" in very tiny letters. The
  ones you DON'T want will have "222" on them.

  When looking at the flat side of the temperature sensor
  with the pins down, from left to right the pins are:
  5V, SIGNAL, and GND.

  Connect the 5V pin to 5 Volts (5V).
  Connect the SIGNAL pin to ANALOG pin 0.
  Connect the GND pin to ground (GND).

This sketch was written by SparkFun Electronics,
with lots of help from the Arduino community.
This code is completely free for any use.
Visit http://learn.sparkfun.com/products/2 for SIK information.
Visit http://www.arduino.cc to learn about the Arduino.

Version 2.0 6/2012 MDG
*/

// We'll use analog input 0 to measure the temperature sensor's
// signal pin.

const int temperaturePin = 0;

void setup()
{
  // In this sketch, we'll use the Arduino's serial port
  // to send text back to the main computer. For both sides to
  // communicate properly, they need to be set to the same speed.
  // We use the Serial.begin() function to initialize the port
  // and set the communications speed.

  // The speed is measured in bits per second, also known as
  // "baud rate". 9600 is a very commonly used baud rate,
  // and will transfer about 10 characters per second.

  Serial.begin(9600);
}

void loop()
{
  // Up to now we've only used integer ("int") values in our
  // sketches. Integers are always whole numbers (0, 1, 23, etc.).
  // In this sketch, we'll use floating-point values ("float").
  // Floats can be fractional numbers such as 1.42, 2523.43121, etc.

  // We'll declare three floating-point variables
  // (We can declare multiple variables of the same type on one line:)

  float voltage, degreesC, degreesF;

  // First we'll measure the voltage at the analog pin. Normally
  // we'd use analogRead(), which returns a number from 0 to 1023.
  // Here we've written a function (further down) called
  // getVoltage() that returns the true voltage (0 to 5 Volts)
  // present on an analog input pin.

  voltage = getVoltage(temperaturePin);

  // Now we'll convert the voltage to degrees Celsius.
  // This formula comes from the temperature sensor datasheet:

  degreesC = (voltage - 0.5) * 100.0;

  // While we're at it, let's convert degrees Celsius to Fahrenheit.
  // This is the classic C to F conversion formula:

  degreesF = degreesC * (9.0/5.0) + 32.0;

  // Now we'll use the serial port to print these values
  // to the serial monitor!

  // To open the serial monitor window, upload your code,
  // then click the "magnifying glass" button at the right edge
  // of the Arduino IDE toolbar. The serial monitor window
  // will open.

  // (NOTE: remember we said that the communication speed
  // must be the same on both sides. Ensure that the baud rate
  // control at the bottom of the window is set to 9600. If it
  // isn't, change it to 9600.)

  // Also note that every time you upload a new sketch to the
  // Arduino, the serial monitor window will close. It does this
  // because the serial port is also used to upload code!
  // When the upload is complete, you can re-open the serial
  // monitor window.

  // To send data from the Arduino to the serial monitor window,
  // we use the Serial.print() function. You can print variables
  // or text (within quotes).

  Serial.print("voltage: ");
  Serial.print(voltage);
  Serial.print("  deg C: ");
  Serial.print(degreesC);
  Serial.print("  deg F: ");
  Serial.println(degreesF);

  // These statements will print lines of data like this:
  // "voltage: 0.73 deg C: 22.75 deg F: 72.96"

  // Note that all of the above statements are "print", except
  // for the last one, which is "println". "Print" will output
  // text to the SAME LINE, similar to building a sentence
  // out of words. "Println" will insert a "carriage return"
  // character at the end of whatever it prints, moving down
  // to the NEXT line.

  delay(1000); // repeat once per second (change as you wish!)
}

float getVoltage(int pin)
{
  // This function has one input parameter, the analog pin number
  // to read. You might notice that this function does not have
  // "void" in front of it; this is because it returns a floating-
  // point value, which is the true voltage on that pin (0 to 5V).

  // You can write your own functions that take in parameters
  // and return values. Here's how:

    // To take in parameters, put their type and name in the
    // parenthesis after the function name (see above). You can
    // have multiple parameters, separated with commas.

    // To return a value, put the type BEFORE the function name
    // (see "float", above), and use a return() statement in your code
    // to actually return the value (see below).

    // If you don't need to get any parameters, you can just put
    // "()" after the function name.

    // If you don't need to return a value, just write "void" before
    // the function name.

  // Here's the return statement for this function. We're doing
  // all the math we need to do within this statement:

  return (analogRead(pin) * 0.004882814);

  // This equation converts the 0 to 1023 value that analogRead()
  // returns, into a 0.0 to 5.0 value that is the true voltage
  // being read at that pin.
}

// Other things to try with this code:

//   Turn on an LED if the temperature is above or below a value.

//   Read that threshold value from a potentiometer - now you've
//   created a thermostat!

Pega este código en el IDE de Arduino y luego haz clic en el botón “Upload” para programar tu placa Arduino con este sketch. Y ya está, has programado tu Arduino con este sketch. Pulsa el botón para abrir el monitor serial para iniciar la comunicación en serie y ver la temperatura del sensor.

¿Qué deberías ver? Deberías poder leer la temperatura que detecta su sensor de temperatura en el monitor serie en el IDE de Arduino. Si no funciona, asegúrate de haber conectado el circuito correctamente y verificado y cargado el código en tu placa

Ejemplo de lo que deberías ver en el monitor serie Arduino IDE:

voltage: 0.73 deg C: 23.24 deg F: 73.84

voltage: 0.73 deg C: 23.24 deg F: 73.84

voltage: 0.73 deg C: 22.75 deg F: 72.96

voltage: 0.73 deg C: 23.24 deg F: 73.84

voltage: 0.73 deg C: 23.24 deg F: 73.84

voltage: 0.73 deg C: 23.24 deg F: 73.84

voltage: 0.73 deg C: 22.75 deg F: 72.96

voltage: 0.73 deg C: 23.24 deg F: 73.84

voltage: 0.73 deg C: 22.75 deg F: 72.96

voltage: 0.73 deg C: 22.75 deg F: 72.96

voltage: 0.73 deg C: 23.24 deg F: 73.84

voltage: 0.73 deg C: 22.75 deg F: 72.96

voltage: 0.73 deg C: 23.24 deg F: 73.84

Paso 5: ¡Bien hecho!

SIK Arduino Uno exp 07 01

Has completado con éxito un tutorial más de “How to” de Arduino y has aprendido a utilizar el sensor de temperatura TMP36 con Arduino Uno.

Si quieres aprender sobre otros sensores de temperatura te recomendamos leer el siguiente tutorial:

¿Cómo conectar un sensor de temperatura DS18b20 a Arduino?

Si quieres conocer más sobre electrónica y circuitos revisa los siguientes tutoriales:

Codebender. How to use the TMP36 temp sensor Arduino tutorial. Instructables. https://www.instructables.com/How-to-use-the-TMP36-temp-sensor-Arduino-Tutorial/

Preguntas frecuentes

¿Qué mide el sensor TMP36?

El TMP36 es un sensor de temperatura en grados centígrados, de precisión y baja tensión. Proporciona una salida de tensión que es linealmente proporcional a la temperatura Celsius, con un factor de escala de 10 mV por grado.

¿El TMP36 necesita calibración externa?

No. Los TMP35, TMP36 y TMP37 no requieren ninguna calibración externa para entregar precisiones típicas de ±1 °C a +25 °C y de ±2 °C en todo el rango de temperatura de -40 °C a +125 °C.

¿Con qué voltaje funciona el TMP36?

Funciona a baja tensión, entre +2,7 V y +5,5 V. Consume menos de 50 µA de corriente en reposo y su corriente de apagado es de 0,5 µA como máximo, lo que lo hace apropiado para proyectos alimentados por batería.

¿Cómo se conecta el TMP36 a un Arduino?

Mirando el sensor desde su parte frontal: el pin 5V se conecta a 5 volts, el pin SIGNAL al pin analógico 0 y el pin GND a tierra. Solo hacen falta un Arduino UNO, una breadboard, el sensor y cables.

¿Cómo se convierte la lectura del TMP36 a grados Celsius?

Con la fórmula degreesC = (voltage - 0.5) * 100.0, que proviene de la hoja de datos del sensor. Primero se obtiene el voltaje real del pin analógico y luego se aplica esa conversión. Para pasar a Fahrenheit se usa degreesF = degreesC * (9.0/5.0) + 32.0.

¿Cómo distingo el TMP36 de un transistor?

Hay que mirarlo de cerca, porque son casi idénticos. El sensor que buscas tiene un logo de triángulo y las letras "TMP" en tamaño muy pequeño. Los que no quieres, los transistores, llevan impreso "222".

¿Cuál es el rango de temperatura del TMP36?

Está especificado de -40 °C a +125 °C, y puede funcionar hasta +150 °C. Su linealidad típica es de ±0,5 °C y es estable incluso con grandes cargas capacitivas.

Aprende esto en un curso

Si prefieres verlo en vivo y con alguien que resuelva tus dudas, estos cursos presenciales de MCI Educación cubren el tema de este tutorial: