Go Down

Topic: Sensor Umid DHT11 (Read 1 time) previous topic - next topic

felipejose8

Estou tentando calibrar o sensor umidade DHT11, ele também é sensível a temperatura mas optei somente pela umidade.
Estou usando como referência os valores de umidade disponíveis no google para o meu bairro, porém ja tentei usar média , equações e em nenhum obtive sucesso, se não me engano o datasheet diz que não há a necessidade de calibrar ,mas vários posts da internet dizendo que o sensor não apresenta valores confiáveis. Quero saber se alguém já obteve sucesso na calibração desse sensor ou se há outro ,exceto o dht22, que forneça valores de umidade.

bubulindo

As medidas do Google não levam em consideração o que se passa dentro de tua casa.

Por exemplo, se existe roupa a secar, se acabaste de tomar banho, se o vizinho está a regar a relva, etc...

O que as pessoas dizem acerca desse sensor é que ele não é o mais preciso do mercado para medir humidade, não que não é de fiar.
This... is a hobby.

felipejose8

Bem observado, não notei essa variáveis, entao so é possível tentar calibrá-lo com higrômetro. O pior é que eu deixando a programação normal de exemplo ele marca pela noite 27% de umidade um valor impossível para a cidade onde moro. Num mas obrigado.

bubulindo

Porque é que é impossível para a cidade onde moras?

Onde é que tens o sensor? Ao ar livre? Ao sol? 
This... is a hobby.

felipejose8

Moro em uma cidade litorânea e um pouco perto do litoral . Umidade abaixo de 50% ,salvo engano, causam sangramento nas narinas e é perceptível ao ser humano, por isso é impossível uma umidade 27%.
Tentarei calibrá-lo por valores iguais , ele parece não obedecer a nenhuma equação, mas apresenta uma boa repetibilidade.

bubulindo

This... is a hobby.

felipejose8

Varanda , ar aberto a 5m de altura do solo.

bubulindo

Queres meter aqui o código? O sensor apanha sol durante alguma parte do dia?
This... is a hobby.

felipejose8

Postarei em breve, usei o código exemplo da biblioteca.

felipejose8

#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
}

void loop()
{
// Executa 1 vez a cada 2 segundos
if(millis() - timer>= 2000)
{

  DHT.read11(A2); // chama método de leitura da classe dht,
                  // com o pino de transmissão de dados ligado no pino A1

  // Exibe na serial o valor de umidade
  Serial.print((DHT.humidity)); //cte de calibracao 1.444
  Serial.println(" %");

  // Exibe na serial o valor da temperatura
  Serial.print(DHT.temperature);
  Serial.println(" Celsius");

  timer = millis(); // Atualiza a referência
}
}


biblioteca anexa

pksato

Ola Felipe,
Esse código não confere com a classe presente na biblioteca DHT.zip anexo a postagem.

E o DHT11 e um sensor com saída digital, porque esta usando uma entrada analógica? (afinal e A1 ou A2?)

O código parece ser dessa biblioteca https://playground.arduino.cc/Main/DHTLib

Mude onde o sensor esta conectado para uma das entradas digitais e mude o código de acordo.


felipejose8

Interessante nos sites brasileiros , ele é usado em pinos analógicos. Em sites americanos vi alguns em pinos digitais, surgiu uma dúvida, eu pensei que sensores só poderiam ser ligados em pinos analógicos devido a medição ser em uma escala e o tipo de função do hardware ser output.

Tentarei usá-lo em pino digital. Nos sites estrangeiros que fui também há queixas da calibração desse sensor.

pksato

Ola,
Tecnicamente não tem problema usar os pinos analógicos para entradas ou saídas digitais. Já que ira ser mapeado de acordo com a configuração do modo. Mas como gerenciamento de recursos, só deveria ser usado em ultimo caso.
Outra coisa que notei, o seu exemplo não esta verificando se a leitura e ou a transferência de dados foi feito de forma correta.
Veja esse fragmento do exemplo:
Code: [Select]
// READ DATA
  Serial.print("DHT11, \t");
  chk = DHT.read11(DHT11_PIN);
  switch (chk)
  {
    case DHTLIB_OK: 
Serial.print("OK,\t");
break;
    case DHTLIB_ERROR_CHECKSUM:
Serial.print("Checksum error,\t");
break;
    case DHTLIB_ERROR_TIMEOUT:
Serial.print("Time out error,\t");
break;
    default:
Serial.print("Unknown error,\t");
break;
  }
 // DISPLAY DATA
  Serial.print(DHT.humidity,1);
  Serial.print(",\t");
  Serial.println(DHT.temperature,1);

  delay(1000);
}


Existem dois tipos de erro, o de checksum (dados recebidos) e de tempo esgotado.
De muita atenção as rotinas de tratamento de erros.


felipejose8

uhum esse é o exemplo da biblioteca, peguei outra para testar

felipejose8

Também sem sucesso, atualmente marca 24% umidade.


/*
   Curso de Arduino e AVR 109
   
   WR Kits Channel


   Utilizando Sensor de Temperatura e Umidade DHT11

   
   Autor: Eng. Wagner Rambo  Data: Março de 2017
   
   www.wrkits.com.br | facebook.com/wrkits | youtube.com/user/canalwrkits | dailymotion.com/wrkits
   
*/


// ===============================================================================
// --- Biblioteca Auxiliar ---
#include <dht.h>   //biblioteca do sensor de umidade e temperatura


// ===============================================================================
// --- Mapeamento de Hardware ---
#define    dht_pin    5   //pino de sinal do dht11 ligado no digital 5


// ===============================================================================
// --- Declaração de Objetos ---
dht   my_dht;   //objeto para o sensor


// ===============================================================================
// --- Variáveis Globais ---
int    temperatura = 0x00,   //armazena a temperatura em inteiro
       umidade     = 0x00;   //armazena a umidade em inteiro


// ===============================================================================
// --- Configurações Iniciais ---
void setup()
{
   Serial.begin(9600);   //serial em 9600 baud rate


} //end setup


// ===============================================================================
// --- Loop Infinito ---
void loop()
{
   my_dht.read11(dht_pin);

   temperatura = my_dht.temperature;
   umidade     = my_dht.humidity;


   Serial.print(temperatura);
   Serial.print(" ");
   Serial.println(umidade);
   


   delay(2000);
 


} //end loop


Go Up