TMP36
El TMP36 genera una salida lineal a razón de 10mV/ºC. A este valor le suma un offset de 500mV, de esta forma podemos medir temperaturas próximas a 0ºC o negativas algo que no es posible con un LM35 y una placa Arduino.
La conexión de este sensor de temperatura es muy sencilla, una vez alimentado entre +5V y GND sólo hay que conectar el terminal de salida a una entrada analógica, A0, en este ejemplo.
El montaje con una placa Compluino UNO resulta especialmente sencilla al disponer esta placa de pines de alimentación (+5V y GND) asociados a todas las entradas y salidas de la placa.
La placa arduino original dispone de un número mul limitado de pines de +5V y GND, en este caso resulta especialmente interesante usar las lineas de distribución de alimentación de la propia protoboard, especialmente si queremos añadir otros elementos al montaje.
En este programa leemos la temperatura ambiental con el sensor TMP36 y la mostramos en el Monitor Serie. Un detalle importante, para calcular el voltaje aplicado a la entrada analógica multiplicamos la lectura del convertidor (0 a 1023) por 5.0 / 1024. Esa es la forma correcta para calcular la resolución del convertivor, evidentemente la lectura máxima nunca llegará a los 5V de una forma exacta (1023 * 5.0 / 1024), esta es justamente, una limitación de este tipo de conversores analógico a digital.
Otro detalle que puede sorprender es cuando ponemos 5.0 / 1024 en vez de 5 / 1024. La forma correcta de hacerlo es la primera, la que hemos usado en este ejemplo, ya que de esta forma indicamos al compilador de Arduino que realice las operaciones en coma flotante (con decimales).
// Monitoriza la temperatura proporcionada por el sensor TMP36
// en el monitor del IDE de Arduino a intervalos de dos segundos
#define TMP36 0
float voltaje;
float temperatura;
void setup()
{
Serial.begin(9600);
}
void loop()
{
//Leer el voltaje proporcionado por el sensor TMP36
voltaje = analogRead(TMP36) * 5.0 / 1024;
//Convertir el voltaje a temperatura
temperatura = (voltaje * 100.0) - 50;
//Mostrar la temperatura en el monitor serie
Serial.print ("Temperatura: ");
Serial.print (temperatura);
Serial.println (" grados");
delay (2000);
}
A continuación se muestra la información que se mostraría en el monitor del IDE de Arduino