Básico - Projeto 88

Cálculo do ponto de orvalho através do sensor de temperatura e umidade DHT22

Objetivo

Neste projeto vamos apresentar 3 métodos de cálculo do ponto de orvalho (Dew Point) realizados no IDE do Arduino com dados obtidos através do sensor de temperatura e umidade DHT22. Os métodos apresentados determinam a temperatura do ponto de orvalho de forma aproximada, mas que podemos utilizá-la como referência em controles ambientais e sistemas de refrigeração que não exijam muita precisão.

Observação: É possível substituir o sensor DHT22 pelo sensor DHT11. Para isto, faça apenas uma pequena alteração no programa como mostramos mais a frente em código do projeto (sketch).

Sensor DHT22 - O DHT22 é um sensor básico de baixo custo utilizado para a medição de temperatura e umidade do ar ambiente através de um termistor e um sensor capacitivo. Existem várias versões diferentes do DHT22 com a mesma aparência e número de pinos. Portanto é importante verificar o "datasheet" do componente para obter suas características principais. No nosso projeto as características estão descritas na tabela de componentes.

Umidade relativa (UR ou HR) do ar é a relação entre a quantidade de água existente no ar (umidade absoluta) e a quantidade máxima que poderia haver na mesma temperatura (ponto de saturação). Ela é um dos indicadores usados na meteorologia para se saber como o tempo se comportará (fazer previsões) - Wikipédia.

Obs.: A umidade relativa também influencia a saúde humana. De acordo com a OMS (Organização Mundial da Saúde), valores de umidade abaixo de 20% oferecem risco à saúde, podendo provocar doenças e desidratação nas pessoas.

Ponto de orvalho (dew point): Temperatura na qual o vapor de água presente no ar ambiente passa ao estado líquido na forma de pequenas gotas por via da condensação, o chamado orvalho.[1] Em outras palavras, é a temperatura na qual o vapor de água que está em suspensão no ar começa a se condensar (viraria "orvalho") - wikipédia

Exemplo prático: Observe que quando se coloca cerveja gelada em um copo em um dia quente e úmido, o ar próximo ao copo esfria e fica saturado, de forma que o vapor d'água se condensa na superfície do copo como orvalho (gotículas). Portanto, o ponto de orvalho é a temperatura em que o ar úmido (vapor d'agua) fica saturado e se condensa.

Utilização: O ponto de orvalho é muito utilizado em cálculos de sistemas de refrigeração e ar condicionado, sistemas meteorológicos e parâmetro para a determinação das condições de conforto térmico em ambientes.

Veja a tabela abaixo onde é comparado a temperatura de ponto de orvalho do ambiente com a sensação no corpo humano:

Aplicação

Para fins didáticos e projetos onde é necessária a medição de temperatura e/ou umidade do ambiente e o cálculo do "dew point" (ponto de orvalho).

Componentes necessários

Referência

Componente

Quantidade

Imagem

Observação

Protoboard Protoboard 830 pontos 1 Resultado de imagem para protoboard 830v

No mínimo utilizar protoboard com 830 pontos

Jumpers Kit cabos ligação macho / macho 1    
Sensor de Temperatura e Umidade DHT22

Sensor de Temperatura e Umidade DHT22

1

 

Características do DHT11 utilizado neste exemplo:

Tensão de alimentação: 3,3V a 5V

Umidade relativa: 0% a 100% (precisão de 2%)

Temperatura: -40 a 80 ºC (precisão de 1%)

Resolução: 0,1

Intervalo entre medições: mínimo 2s

Corrente de utilização: 0,5mA

datasheet

Atenção: Você poderá substituir o sensor DHT22 pelo sensor DHT11

Resistor Resistor 10KΩ     1 Resistor de 4,7KΩ a 10KΩ
Arduino UNO R3 Arduino UNO 1

Você poderá utilizar uma placa Arduino UNO original ou similar

Montagem do Circuito

Conecte os componentes no Protoboard como mostra a figura abaixo. Verifique cuidadosamente os cabos de ligação antes de ligar seu Arduino. Lembre-se que o Arduino deve estar totalmente desconectado da força enquanto você monta o circuito.


Atenção

1. Cuidado para não ligar o sensor de temperatura e umidade (DHT22 ou DHT11) invertido. Ele deve ficar com a face reta virada para frente e conectado da seguinte forma:

Pinagem DHT11

3.1. O pino 1 deverá estar conectado no polo positivo Vcc - tensão de contínua contínua de 3.3V a 5V.

3.2. O pino 2 deverá estar conectado em uma porta analógica do Arduino. No nosso projeto utilizamos a porta analógica A1.

3.2.1. ATENÇÃO: Para evitar flutuações e garantir que o sinal seja lido corretamente é necessário acrescentar um resistor "pullup" de 4,7KΩ a 10KΩ.

3.2.2. Veja abaixo como deve ser a montagem do resistor "pullup":

 

3.3. Pino 3 não deverá estar conectado (NC - não conectado);

3.4. Pino 4 deverá estar conectado ao polo negativo GND - tensão 0V)

4. A montagem do nosso projeto foi realizada em um protoboard com linhas de alimentação contínuas. Verifique se o seu protoboard possui linhas de alimentação contínuas ou separadas - saiba mais em protoboard

 

Incluindo a biblioteca para os Sensores de Temperatura DHT11, DHT22, DHT33 e DHT44

Para facilitar e reduzir o tempo gasto em programação, utilizaremos a biblioteca DHTIB desenvolvida para os sensores DHT11, DHT22, DHT33 e DHT44:

Download dos arquivos da biblioteca do sensor DHT

Para trabalharmos de forma mais fácil com o sensor DHT, podemos baixar a biblioteca DHTlib que foi desenvolvida para os sensores DHT11, DHT22, DHT33 e DHT44:

DOWNLOAD - DHTlib.zip

Para saber detalhes desta biblioteca clique aqui.

Instalando a biblioteca pelo IDE do Arduino

Após fazer o download do arquivo DHTlib.zip com todos os arquivos da biblioteca compactados no formato zip, abra o IDE do Arduino e siga o tutorial: Como incluir uma biblioteca no IDE do Arduino.

Métodos para o cálculo do ponto de orvalho (dew point)

Como mencionado no objetivo do projeto, vamos criar 3 métodos para o cálculo do ponto de orvalho através das leituras de temperatura e umidade relativa feitas pelo sensor DHT22 e compiladas pelo microcontrolador Arduino, sendo eles:

1º Método: Este método, o mais preciso, é obtido pela relação da pressão de saturação do vapor de água e a umidade relativa do ar ambiente. Você poderá encontrar esta relação no Wikipédia. As constantes foram obtidas material fornecido pela National Oceanic Atmospheric Administration (NOAA). Essa relação foi desenvolvida e aplicada no link https://playground.arduino.cc/Main/DHT11Lib/ (Playground do Arduino).

2º Método: Este método é uma aproximação que leva em conta apenas a temperatura atual (Bulbo seco) do ar (T) e a umidade relativa do ar (UR – em percentagem), é a "fórmula de Magnus".  Você também poderá encontrar esta relação no Wikipédia.

3º Método: É o método menos preciso, porém o mais simples. É uma aproximação conversão entre o ponto de orvalho, temperatura e umidade relativa. ATENÇÃO: Esse método tem uma precisão de ±1 °C quando a umidade está acima de 50%, por este fato, reduzimos em 0.5º C o valor calculado como compensação.

No projeto vamos obter valores do ponto de orvalho nos 3 métodos, permitindo avaliarmos os valores e compararmos com o gráfico abaixo (ponto de orvalho em relação à temperatura do ar e da umidade relativa do ar):

Código do Projeto (Sketch)

1) Faça o dowload e abra o arquivo projeto88.ino no IDE do Arduino: DOWNLOAD projeto88.ino

Obs: Atenção: Este código poderá ser utilizado também com o sensor DHT11. Para isto, basta excluir as duas barras de comentário na linha 26 (depois de DHT.read22) e acrescentar as duas barras na linha 27.

Se preferir, copie e cole o código abaixo no IDE do Arduino:

/*******************************************************************************
*
*    Projeto 88 - Calculando o ponto de orvalho com um sensor DHT22 (3 métodos)
*    Adaptado por: Angelo Luis Ferreira
*    Referência: https://playground.arduino.cc/Main/DHT11Lib/
*    Data: 19/08/2020
*            http://squids.com.br/arduino
*
*******************************************************************************/
#include <dht.h> // Inclui a biblioteca no seu código

dht DHT; // Cria um objeto da classe dht
uint32_t timer = 0;
 
void setup() {
  Serial.begin(9600); // Inicializa serial com taxa de transmissão de 9600 bauds (vezes por segundo)
  Serial.println("CÁLCULO DO PONTO DE ORVALHO");
  Serial.println("SQUIDS ARDUINO");
  Serial.println("\n");  
}
 
void loop() {
  // Executa 1 vez a cada 2 segundos
  if(millis() - timer>= 2000)  {

    DHT.read22(A1); // uso do sensor DHT22
    //DHT.read11(A1); // uso do sensor DHT11

    // exibe temperatura, umidade e ponto de orvalho 
    Serial.print("Temperatura = ");
    Serial.print(DHT.temperature,1);
    Serial.println(" ºC");
    Serial.print("Umidade = ");    
    Serial.print(DHT.humidity,1);
    Serial.println("%");
    Serial.print("Ponto de Orvalho (método 1) = ");
    Serial.print(dewPoint(DHT.temperature, DHT.humidity),1);
    Serial.println(" ºC");
    Serial.print("Ponto de Orvalho (método 2) = ");
    Serial.print(dewPointFast(DHT.temperature, DHT.humidity),1);
    Serial.println(" ºC");
    Serial.print("Ponto de Orvalho (método 3) = ");
    Serial.print(dewPointSimple(DHT.temperature, DHT.humidity),1);
    Serial.print(" ºC");
    Serial.println("\n");       
     
    timer = millis(); // Atualiza a referência
  }
}

// CALCULO DO PONTO DE ORVALHO (DEW POINT) ===========================================================

//MÉTODO (1) - Referência: https://playground.arduino.cc/Main/DHT11Lib/ =============================
// dewPoint function NOAA
// reference (1) : https://wahiduddin.net/calc/density_algorithms.htm
// reference (2) : https://www.colorado.edu/geography/weather_station/Geog_site/about.htm
//
double dewPoint(double celsius, double humidity) {
  // (1) Saturation Vapor Pressure = ESGG(T)
  double RATIO = 373.15 / (273.15 + celsius);
  double RHS = -7.90298 * (RATIO - 1);
  RHS += 5.02808 * log10(RATIO);
  RHS += -1.3816e-7 * (pow(10, (11.344 * (1 - 1/RATIO ))) - 1) ;
  RHS += 8.1328e-3 * (pow(10, (-3.49149 * (RATIO - 1))) - 1) ;
  RHS += log10(1013.246);

   // factor -3 is to adjust units - Vapor Pressure SVP * humidity
  double VP = pow(10, RHS - 3) * humidity;

  // (2) DEWPOINT = F(Vapor Pressure)
  double T = log(VP/0.61078);   // temp var
  return (241.88 * T) / (17.558 - T);
}

//MÉTODO (2) - Referência: https://playground.arduino.cc/Main/DHT11Lib/ ================================
// CÁLCULO PONTO DE ORVALHO RÁPIDO (DEW POINT FAST)
// delta max = 0.6544 wrt dewPoint()
// 6.9 x faster than dewPoint()
// reference: https://en.wikipedia.org/wiki/Dew_point
double dewPointFast(double celsius, double humidity) {
  double a = 17.271;
  double b = 237.7;
  double temp = (a * celsius) / (b + celsius) + log(humidity*0.01);
  double Td = (b * temp) / (a - temp);
  return Td;
}

//MÉTODO (3) ===========================================================================================
// CÁLCULO PONTO DE ORVALHO APROXIMADAÇÃO SIMPLES
// Referência: https://pt.wikipedia.org/wiki/Ponto_de_orvalho
// Atenção: umidade acima de 50% a precisão é de +- 1ºC
float dewPointSimple(float celsius, float humidity) {   
  return (celsius - (100 - humidity)/5) - 0.5;
}

Como o projeto deve funcionar

1. Ao executar o programa, abra o Monitor Serial para acompanhar as leituras da temperatura, umidade relativa e os três métodos da temperatura de orvalho. A leitura é realizada a cada 2 segundos:

2. Observe que os valores dos 3 métodos ficaram bem próximos. Entretanto, eles poderão ficar um pouco mas divergentes dependo da temperatura e da umidade relativa lidas no sensor.

Sugestão: Faça um mapa com várias leituras em vários dias para observar estas variações.

3. Verificando os valores do nosso exemplo com o gráfico abaixo (ponto de orvalho em relação à temperatura do ar e da umidade relativa do ar) encontramos um valor aproximado de 14,4 ºC, ou seja, muito próximo dos valores calculados.

Desafios

Com base neste projeto, resolva o seguinte desafio:

O anúncio abaixo ajuda a manter o Squids Arduino funcionando.

Compartilhe:

Doações

Contribua pra manter o site online :)

Inscreva-se no canal Squids

Você está preparado?

Squids Arduino News

Desafio 78 - Projeto I05 Controlando 2 motores - juntos e individualmente Com base no projeto I06 - Controlando um motor DC com L293D (Ponte H) e Arduino resolva os seguintes desafios: 1. A...

Básico - Projeto 91 Exibindo imagens bitmap em um Oled SSD1306 - bibliotecas Adafruit Objetivo Neste projeto vamos mostrar como exibir imagens bitmap em um display OLED SSD1306 com Arduino. Uti...

Intermediário - Projeto 06 Controle de velocidade e sentido de rotação de um motor DC Objetivo Neste tutorial vamos mostrar como criar um circuito para controlar a velocidade e o sentido de ro...

Desafio 77 - Projetos hub005 e hub007 Acessar leds com comunicação serial e manipulação direta de portas Com base nos projetos Hub 005 - Acender leds por comunicação serial - Arduino  e Hub 007...

Básico - Hub 007 Leds são acionados pelo teclado do computador   Sugerido por: Vinicius Medeiros Objetivo O projeto é composto por 3 leds, um verde, um amarelo e um vermelho. Ao digitar a ...

Outros artigos

Mais: Desafios Projetos Básicos Projetos Intermediários Básico

Topo