Powered By Blogger
Mostrando postagens com marcador Thermistor. Mostrar todas as postagens
Mostrando postagens com marcador Thermistor. Mostrar todas as postagens

sábado, 24 de março de 2012

Arduino, Termômetro

Arduino by my Self
Esta barra, indica o nível de dificuldade encontrado para cada experiência realizada.
sendo:
"VERDE", indicação de nível 1 a 5 (Fácil);
"AMARELO", indicação de nível 6 a 8 (Médio);
VERMELHO, indicação de nível 9 e 10 (Difícil);



Olá! a todos,

Neste post veremos como usar um Thermistor como componente de sensoreamento da temperatura ambiente.  E como usar o Arduino para adquirir as informações e visualizar isto em um display LCD 16 x 2.
Ajuste necessário: um termômetro digital para saber a temperatura do ambiente e assim ajustar o Arduino Termômetro.

O HARDWARE:
Para esta experiência necessitaremos de:
1 x Arduino UNO ou Duemilanove
1 x Bread Board
1 x LCD 16x2 I2C
1 x Thermistor de 10KO
1 x Potenciômetro de 50KO
Fios e Cabos


O CIRCUITO:

Ligar os pinos do LCD da seguinte forma:
GND ao negativo da alimentação
VCC ao positivo da Alimentação
SDA ligar ao pino analógico 4 do Arduino
SCL ligar ao pino analógico 5 do Arduino

O Thermistor deve ser ligado da seguinte maneira:
Um terminal do Thermistor deve ser conectado diretamente ao VCC, o outro terminal deve ser ligado ao pino 2 de um potenciômetro.
O pino central do potenciômetro deve ser ligado ao pino 1 dele mesmo, e o pino 1 deve ser conectado ao GND.
Na junção, entre o terminal do Thermistor e o pino 2 do potenciômetro, deve ser ligado o pino analógico 0 do Arduino.


                                  _                                ________
                                   \                              c|               |
VCC |---------------/\/\/\/\-------------2-/\/\/\/\-1-----+-------|GND
                                       \                           Potenciômetro
                                      Thermistor


Qual é a necessidade do potenciômetro?
O Thermistor é de 10 KO à temperatura ambiente de 25 Graus Celcius. Isso significa que se estivermos a 25 Graus Celsius, sua resistência terá exatamente 10KO e se colocarmos uma outra resistência fixa de 10KO como divisor de tensão, teremos metade do valor de VCC, ou seja 2,5V no pino analógico 0 do Arduino. Assim fica fácil parametrizar que quando tivermos 2,5V no pino analógico 0 , termos 25 Graus Celcius.
Como geralmente nosso ambiente não estará a 25 Graus Celcius, necessitamos do potenciômetro para saber qual resistência devemos colocar como divisor de tensão, e assim fazer um ajuste fino.
De posse de um termômetro digital (quanto mais preciso melhor), podemos fazer o ajuste;

Nota: se girarmos totalmente o POT em direção ao negativo o circuito nunca mostrará nenhuma temperatura.  Se quiser pode ser colocado um resistor de 5KO em série com o POT e assim ter um valor fixo e ajustar o valor somente dentro de uma faixa.

Existem dispositivos semicondutores que podem ser usados para medir a temperatura ambiente com maior precisão que um Thermistor, por exemplo o LM35,  ou o LM335, mas isto será tema de um outro post.

Vejamos o circuito feito em fritzing:

Arduino Termômetro - Esquema

O SOFTWARE:
Abaixo o software completo e comentado.
Visite para maiores informações; http://arduino.cc/playground/ComponentLib/Thermistor2


/*
  Este exemplo é um código de domínio público.
*/


#include <Wire.h> // inclui a biblioteca Wire


 #include <LiquidCrystal_I2C.h> // inclui a biblioteca do LCD

 // initialize the library with the numbers of the interface pins
 LiquidCrystal_I2C lcd(0x27, 16, 2); // inicalização do LCD com o endereço de 
                                     // pinos utilizados no Arduino
                                     
 //Código extraído de ...http://www.arduino.cc/playground/ComponentLib/Thermistor2

 #include <math.h> // inclui a biblioteca math

 double Thermister(int RawADC) { 
                                 // pega os dados lido do Thermistor quando chamada a função
                                 // e armazena em RawADC, este é um valor relacionado a
                                 // queda de tensão
 double Temp; // variável usada no cálculo
 Temp = log(((10240000/RawADC) - 10000));
                                         // relaciona o valor de queda de tensão lido com resistência
                                         // 10000 é o valor da resistência do Thermistor
                                         // se for necessário usar um Thermistor diferente
                                         // ajustar o valor corretamente

 // formula para dar a temperatura em Kelvin
 Temp = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 * Temp * Temp * Temp)); 
 Temp = Temp - 273.15;            // converte de Kelvin para Celcius

 return Temp; // retorna o valor da temperatura calculada
 }

 void setup() {
   // configura o LCD
   lcd.init();                           // inicializa o lcd 
   lcd.backlight();                  // com luz de fundo
   Serial.begin(9600);           // inicializa a comunicação serial
   // imprime mensagens no LCD
  
 }

 void loop() {
   
   lcd.clear();                                      // limpa o LCD
   lcd.setCursor(0,0);                         // posiciona o cursor na coluna 0 x linha 0
   lcd.print("Temp. Ambiente: ");         // texto para colocar significado ao que for apresentado
   lcd.setCursor(0,1);                        // posiciona o cursor na coluna 0 x linha 1
   lcd.print(int(Thermister(analogRead(0))));  // imprime o valor lido do thermistor correspondente
                                                                    // à temperatura
   lcd.print(" Graus C");                    // imprime a unidade medida
   delay(1000);                                // pausa até executar uma nova leitura e visualização
 }
 // Fim da Compilação



O VÍDEO:

Dúvidas e sugestões enviem para: arduinobymyself@gmail.com

Nesta experiência não teremos vídeo, pois ela é bem simples e está bem documentada.

Segue fotos do projeto.

Visão Geral
Temperatura no Display
Thermistor em azul
Pinagem


Até o próximo post, Bons experimentos!