Início
/
Projetos Arduino
/
Projetos Squids
/
Básico
/
Projeto 88 - Calculando o "ponto de orvalho" com o Arduino e dados obtidos pelo sensor DHT22 (ou DHT11)
Projeto 88 - Calculando o "ponto de orvalho" com o Arduino e dados obtidos pelo sensor DHT22 (ou DHT11)
Angelo Luis Ferreira | 19/08/2020
Acessos: 4.374
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).
Definições
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 água 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 |
|
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 DHT22 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)
|
Resistor |
Resistor |
1 |
|
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:
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.
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 DHT11
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 dht
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: Desafio 75
O anúncio abaixo ajuda a manter o Squids Arduino funcionando
Comentários