Parece só mais um sensor de temperatura, mas esse Sensor de temperatura IR TMP006 da Adafruit tem algumas características bem legais. Ele não serve especificamente para medir a temperatura ambiente (apesar de poder ser utilizado para tal). Sua função principal é atuar como um medidor de temperatura de objetos: basta você apontar o sensor para o objeto e ele vai determinar a sua temperatura baseado na radiação infravermelha emitida.
Esse módulo também permite o uso de até 8 sensores no mesmo barramento I2C, mediante a mudança de endereço de cada módulo, assim podemos ter um sistema completo de monitoramento de temperatura, em várias fases.
Características do sensor de temperatura IR TMP006
A alimentação vai de 3 à 5 Volts, e a comunicação com o Arduino é feita por meio da conexão I2C, ligando-se o pino SDA ao pino analógico A4 do Arduino Uno (pino 20 no Arduino Mega), e o SCL ao pino analógico A5 (pino 21 no Arduino Mega).
Ok, mas e os outros 3 pinos ? DRDY, AD1 e AD0 ?
Esses são utilizados justamente quando você precisa de mais de um módulo no mesmo barramento. Por padrão, os pinos AD1 e AD0 estão ligados ao GND, atribuindo assim ao módulo o endereço 0x40. Se você ligar tanto o AD1 como o AD0 no Vcc, você terá um módulo com endereço 0x45.
A tabela abaixo mostra como deve ser a conexão dos pinos para cada endereço (que vai do 0x40 ao 0x47 – 8 sensores, como comentamos no início):
O pino DRDY (Data Ready) não tem muita função na maioria das vezes, mas se você deseja saber exatamente o momento em que a temperatura foi lida pelo sensor e o módulo está pronto para a próxima leitura, basta checar o momento em que o estado desse pino vai para o estado LOW (baixo), e então efetuar uma nova medição.
Circuito sensor de temperatura
Mostre os valores de temperatura em um display LCD 16×2 efetuando a seguinte ligação:
O programa utiliza a biblioteca Arduino_TMP006, disponível nesse link.
Descompacte o arquivo e renomeie a pasta Arduino_TMP006-master para Arduino_TMP006. Depois, coloque essa pasta dentro da pasta LIBRARIES da IDE (ambiente de programação) do seu Arduino.
// Programa : Teste sensor de temperatura IR TMP006 // Alteracoes e adaptacoes : Arduino e Cia /*************************************************** This is an example for the TMP006 Barometric Pressure & Temp Sensor Designed specifically to work with the Adafruit TMP006 Breakout ----> https://www.adafruit.com/products/1296 These displays use I2C to communicate, 2 pins are required to interface Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit! Written by Limor Fried/Ladyada for Adafruit Industries. BSD license, all text above must be included in any redistribution ****************************************************/ #include <Wire.h> #include <Adafruit_TMP006.h> #include <LiquidCrystal.h> // Conexoes do modulo : // - Conectar pino Vcc do modulo ao 3.3 V ou 5V do Arduino // - Conectar Gnd ao Gnd do Arduino // - Conectar o pino SDA ao pino A4 do Arduino (pino 20 no Mega) // - Conectar o pino SCL ao pino A5 do Arduino (pino 21 no Mega) Adafruit_TMP006 tmp006; // Utilize a sintaxe abaixo para definir outro endereco // Adafruit_TMP006 tmp006(0x41); // Inicializa o LCD LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Array que desenha o simbolo de grau byte a[8]= {B00110,B01001,B00110,B00000,B00000,B00000,B00000,B00000,}; void setup() { Serial.begin(9600); Serial.println("Adafruit TMP006"); if (! tmp006.begin()) { Serial.println("No sensor found"); while (1); } // Inicializa o LCD e imprime informacoes iniciais lcd.begin(16, 2); lcd.createChar(1, a); lcd.setCursor(0,0); lcd.print("Adafruit TMP006"); //Atribui a "1" o valor do array "A", que desenha o simbolo de grau lcd.setCursor(0,1); lcd.print("Temp.:"); } void loop() { float objt = tmp006.readObjTempC(); //Imprime os dados de temperatura na serial Serial.print("Object Temperature: "); Serial.print(objt); Serial.println("C"); //Imprime os dados de temperatura no display lcd.setCursor(7,1); lcd.print(objt); lcd.setCursor(12,1); lcd.write(1); //Aguarda 4 segundos e realiza a próxima leitura delay(4000); }
Algumas considerações devem ser feitas sobre esse sensor, principalmente sobre o ângulo de leitura. Esse sensor tem um ângulo de leitura bem grande, então você deve observar a proximidade do objeto com o sensor. Tome como exemplo um pequeno objeto que você está segurando com a mão. Dependendo da distância do sensor, ele pode estar lendo a temperatura da sua mão, e não a temperatura do objeto, por isso fique atento à esse detalhe. Informações completas sobre ângulo de leitura e outras informações sobre o sensor TMP006 você pode obter nesse link.
Outra questão é a superfície do objeto a ser medido. Esse sensor apresenta melhores condições na leitura de objetos de cor escura. Objetos com superfície polida ou metálica podem apresentar alguma variação nos dados lidos pelo sensor.
Existe uma tabela que apresenta os coeficientes de emissão de radiação de calor de alguns materiais. Um material na cor preta tem coeficiente 1, que seria o valor ideal. Uma folha de alumínio tem o coeficiente 0,09 , o que dificulta a leitura. Já um tijolo tem o coeficiente 0,93. Quanto mais próximo de 1 for esse valor, melhor a leitura.
Gostou? Confira outros posts usando sensor de temperatura aqui mesmo no Arduino e Cia!