Sensor de temperatura LM35 e TMP36

Descrición

Para poder medir a temperatura e realizar algunha acción en función do seu valor necesitamos un sensor capaz de medila.

Termistores

termistores
[tecnoloxia.org CC By-SA]
Unha opción sinxela é utilizar un termistor, que non é máis ca unha resistencia que varía coa temperatura. Procederíase igual que no caso da LDR. Por exemplo, podemos utilizar a información que lemos na consola en función da temperatura para acender un ventilador cando a temperatura ambiental supere un determinado valor.

O problema de utilizar termistores é a calibración e a precisión, que non é moi boa, pois a resistencia dos termistores non varía de forma lineal coa temperatura.

Chips

lm35_temperature_sensor
[LM35 Nevit Dilmen CC BY-SA Wikimedia Commons]
Se desexamos ter precisión, unha opción interesante é utilizar chips que nos devolvan un valor de tensión proporcional á temperatura á que están sometidos (por exemplo, 10mV por cada grao centígrado).

Nesta práctica imos ver dúas opcións: LM35 e TMP36.

  • Sensor de temperatura LM35: Rango: 0V → 0ºC e 1.5V→150ºC
  • Sensor de temperatura TMP36: Rango: 0V -50ºC, 0,5V→ 0ºC  e 1.75V125ºC

O LM35 é útil para medir temperaturas positivas, pois necesitaría tensións negativas para medir temperaturas por debaixo dos 0ºC e o Arduíno non pode ofrecelas. Se queremos medir temperaturas por debaixo dos 0ºC mellor utiliza o TMP36.

Para a seguinte práctica utiliza o que teñas dispoñible tendo en conta os rangos de medición.

Montaxe

Debemos conectar os pins dos extremos á alimentación e o pin central a unha entrada analóxica, tal e como aparece no seguinte esquema. A conexión é igual para os dous sensores LM35 e TMP36.

[tecnoloxia.org CC By-SA from Fritzing]
[tecnoloxia.org CC By-SA from Fritzing]
[tecnoloxia.org CC By-SA]

Programas

Nestes exemplos imos ver a temperatura redondeada coma un número enteiro, polo que usaremos o tipo de variable int (int mV, int T, etc.) Se quixéramos mostrar o valor decimal deberiamos utilizar o tipo de variable float (float T).

1. LM35

A lectura do sensor conectado a unha entrada analóxica vai desde 0 ata 1024. Isto correspóndese a uns valores de voltaxe de entre 0 e 5000 mV. Para calcular a voltaxe do sensor podemos utilizar a función map:

mV = map(valor,0,1023,0,5000);

Outra opción é utilizar a fórmula:  mV= valor*5000/1023

Cada 10 mV corresponde a 1ºC de temperatura, polo que para calcular a temperatura en graos centígrados facemos a conversión: temperatura (ºC) = mV/10

 
/* sensor de temperatura LM35 */

// Variables

int sensorPin= A0;  // O sensor está conectado no pin analóxico A0
int valor;          // Lectura realizada na entrada A0
int mV;             // milivoltios lidos no sensor
int T;              // Temperatura en ºC (nº enteiro).

// Configuración
 
void setup(){
  Serial.begin(9600);   // Iniciamos a comunicación serie
  while(!Serial);       // Agarda ata que conecte
}

// Programa
 
void loop(){
  
  valor = analogRead(sensorPin);    // asignamos a lectura á variable "valor" (entre 0 e 1024)
  mV = map(valor,0,1023,0,5000);    // Calculamos a voltaxe
  T = mV / 10;                      // Calculamos a temperatura en ºC

  Serial.print(mV);                 // Imprimimos na consola
  Serial.print(" mV"); 
  Serial.print(" -- "); 
  Serial.print(T);                  
  Serial.println(" C");

  delay(1000);
  
}

2. TMP36

O TMP36 permítenos medir co Arduíno temperaturas negativas, xa que cando nos dá un valor de OV a temperatura é de -50ºC.

Para calcular a temperatura facemos o mesmo que no caso do sensor LM35, pero restando ao final 50ºC:
T= (valor/1023)*500 – 50

 
/* sensor de temperatura TMP36 */

int sensorPin= A0;  // O sensor está conectado no pin analóxico A0
int valor;          // Lectura realizada na entrada A0
int mV;             // milivoltios lidos no sensor
int T;              // Temperatura en ºC, en decimal.

 
void setup(){
  Serial.begin(9600);   // Iniciamos a comunicación serie
  while(!Serial);       // Agarda ata que conecte
}
 
void loop(){
  
  valor = analogRead(sensorPin);    // asignamos a lectura á variable "valor" (entre 0 e 1024)
  mV = map(valor,0,1023,0,5000);    // Calculamos a voltaxe
  T = (mV/10) -50;                  // Calculamos a temperatura en ºC

  Serial.print(mV);                 // Imprimimos na consola
  Serial.print(" mV"); 
  Serial.print(" -- "); 
  Serial.print(T);                  
  Serial.println(" C");

  delay(1000);
  
}

3. LED

Cada vez que a temperatura supere un determinado valor (por exemplo 25ºC) debe acenderse un LED. Por debaixo dese valor o LED apagarase. Utilizarei un sensor LM35. Se fas esta práctica cun TMP36 lémbrate de modificar a fórmula.

 
/* LED activado por sensor de temperatura LM35 */
 
int sensorPin= A0;  // O sensor está conectado no pin analóxico A0
int led=13;         // LED conectado no pin 13
int valor;          // Lectura realizada na entrada A0
int mV;             // milivoltios lidos no sensor
int T;              // Temperatura en ºC, en decimal.
int umbral=24;      // Temperatura á que queremos acender o LED
 
void setup(){
  Serial.begin(9600);   // Iniciamos a comunicación serie
  while(!Serial);       // Agarda ata que conecte
  pinMode(led,OUTPUT);
}
 
void loop(){
  
  valor = analogRead(sensorPin);    // asignamos a lectura á variable "valor" (entre 0 e 1024)
  int mV = map(valor,0,1023,0,5000);    // Calculamos a voltaxe
  T = mV / 10;                      // Calculamos a temperatura en ºC  
  
  Serial.print(T);                 // Imprimimos na consola                
  Serial.println(" C");
 
  if(T>umbral){                     // Se a temperatura supera o umbral acende o LED
    digitalWrite(led, HIGH);
  }
  else{
    digitalWrite(led, LOW);
  }
  
  delay(1000);
  
}

Propostas

  1. Valores decimais: Nos programas anteriores móstranse a voltaxe e a temperatura cuns valores enteiros. Modifícaos para que se mostre o valor decimal.
  2. Convertedor de unidades. Fai que na consola serie se mostre unha táboa coa temperatura en ºC, ºK, e ºF.
  3. Ventilador: Cada vez que a temperatura supere un determinado valor (Por exemplo 25ºC) debe acenderse un ventilador. Podes utilizar un pequeno ventilador dun ordenador vello ou un motor de corrente continua conectado como se ve nesta sección.
  4. Termómetro de leds. Conecta 6 LEDs coas súas resistencias (2 verde, 2 amarelos e 2 vermellos) e fai que a medida que aumente a temperatura se vaian acendendo máis leds, desde os verdes ata os vermellos. Engade un zumbador que soe se a temperatura alcanza un máximo determinado.
  5. Termómetro na LCD: Utiliza unha pantalla LCD para mostrar cada certo tempo a temperatura medida polo sensor. fai que se mostre unha media das medidas realizadas no intervalo.
  6. Termostato: Mediante un potenciómetro deberá axustarse a temperatura límite que desexamos, e que se mostrará na pantalla (a consola ou unha LCD). Por debaixo desa temperatura deberá conectarse unha resistencia eléctrica (separa o circuíto de control do de potencia mediante un relé). Ao chegar á temperatura de referencia deberá desconectarse.

Deixa un comentario