Lección 6 del curso para principiantes de Arduino– Lectura de datos del sensor – Temperatura TMP36

Puede descargar nuestro libro electrónico ‘Aprender Arduino’ desde este enlace

Durante esta lección, pasaremos por el proceso de lectura de datos del sensor, el sensor de temperatura TMP36 para ser precisos. Primero describamos el sensor con más detalle. El TMP36 (ebay) tiene una salida lineal de voltaje a temperatura, lo que significa que no hay que calcular la corrección de errores desde nuestro lado, el sensor lo maneja de manera brillante por sí solo. Los siguientes son algunos detalles tomados directamente de la hoja de datos:

  • Tamaño: paquete TO-92 (3 conductores)
  • Precio: alrededor y menos de €1.00
  • Rango de temperatura: -40°C a 150°C
  • Rango de salida: 0,1 V (-40 °C) a 2,0 V (150 °C)
  • Potencia: 2,7 V a 5,5 V, corriente de 0,05 mA

El sensor tiene una precisión de hasta alrededor de 125 °C, más allá de eso, se esperan márgenes de error cada vez mayores.

Tiene 3 conductores

  • Clavija 1 – Vin (+2.7V – +5.5V)
  • Pin 2 – Salida de voltaje analógico
  • Clavija 3 Tierra

Asignación de pines TMP36

Comencemos conectando el sensor a nuestro Arduino. Conecte el Pin 1 a +5V en Arduino, el Pin 3 a Arduino GND y el Pin 2 a A0 en su Arduino.

Eso es todo, ahora ¿cómo vamos a leer la temperatura a través de un pin analógico? Por lo tanto, el sensor emitirá un voltaje de 10 mV por centígrado a partir de una compensación de 500 mV para permitir temperaturas bajo cero. Habiendo dicho eso, sabemos que necesitamos convertir la lectura analógica en el Arduino (0-1023) a mV. Usando la siguiente fórmula podemos lograr esto con facilidad.

resultado en mV = (lectura A0)*(5000/1023)

El 5000 se refiere al máximo que puede leer el pin analógico Arduino. Entonces, cuando use Arduino de 3.3V como el Pro Mini, reemplace el 5000 con 3300. Ahora todo lo que queda es convertir mV a centígrados.

centígrados = (resultado en mV – 500)/10

Y ahí lo tienes… el resultado en centígrados.

Código de muestra

int sensor = A0;    void setup() {    Serial.begin(9600);    }    void loop(){      //reading from the sensor   int reading = analogRead(sensor);        // converting sensor reading to milli volts   float reading_mV = reading * 5.0; //if using 3.3v replace the 5.0 with 3.3   reading_mV /= 1024.0;      // convert mV to temperature    float temp = (reading_mV - 0.5) * 100;   //print the temperature   Serial.println(temp);   delay(1000);     }