Têm aparecido recentemente vários projectos de medição de humidade com os sensores DHT11 e DHT22.
Estes sensores são sensores extremamente baratos ( á venda na ebay também ) e além de medição de humidade medem também temperatura.
As caracteristicas descritas nos datasheets para o sensor DHT11 e para o DHT22 são bastante distintas.
Na ebay ou outras lojas o nome do sensor pode ser diferente dependendo do fornecedor, por exempo, o DHT22 pode ser conhecido também por RHT03.
Estou neste momento a desenvolver um projecto de um mini medidor de humidade e temperatura e decidi experimentar estes sensores.
Uma vez que a maior parte dos projectos deste genero que se encontram na internet usam o arduino e aproveitam librarias preparadas para comunicar com estes sensores, eu, como é habitual, vou construir utilizando um microcontrolador 16F88 da microchip e fazer o código de raiz.
This will be a project that will read the measurements from DHT11 and DHT22 sensors.
available soon.
O sensor DHT22 ( ou RHT03 ) possui melhor resolução que o DHT11 mas é mais lento a fornecer valores pois só consegue fornecer valores de 2 em 2 segundos enquanto que o DHT11 fornece valores a cada segundo.
Internamente, estes sensores estão constantemente a efectuar medições e depois de várias medidas efectuadas fazem a média para dar um valor final. É este valor final que é disponibilizado de segundo a segundo ( no caso do DHT11 ).
O sensor DHT11 é mais pequeno mas consome um pouco mais de corrente, tanto durante as medições como em standby. Para aplicações alimentadas por pilhas este sensor seria a segunda opção.
A imagem seguinte mostra o gráfico com os impulsos gerados pelo microcontrolador ( a vermelho ) para iniciar a comunicação com o sensor e a resposta do sensor ( a azul ).
O circuito foi inicialmente montado, como habitualmente, numa placa experimental.
Na imagem seguinte está o esquema do circuito.
Inicialmente pensei que ambos os sensores funcionavam da mesma forma e que o mesmo código funcionaria para ambos os sensores mas depois de terminado e testado o código, reparei que não era totalmente verdade.
O método de comunicação ( timmings e sequencia de dados ) é igual em ambos, ou seja, o microcontrolador precisa de gerar uns impulsos iniciais ao que o sensor identificará como sendo o pedido para obter valores e então dá inicio a um conjunto de pulsos onde os primeiros indicam o inicio da transmissão de dados.
A resposta dos sensores é composta por 40 bits. Os primeiros 16 bits indicam a humidade relativa. Os bits 17 ao 32 indicam a temperatura e os restantes 8 bits são referentes ao checksum. O primeiro bit da temperatura ( bit 17 ) indica se a temperatura é positiva ou negativa.
A diferença na descodificação da humidade entre os sensores DHT11 e DHT22 pode ser vista na tabela seguinte.
Enquanto que o sensor DHT11 divide os 16 bits em duas partes o sensor DHT22 usa os 16 bits por inteiro.
O DHT11 usa a primeira parte dos 16 bits para os valores antes da virgula e a segunda parte dos 16 bits para os valores depois da virgula.
O DHT22 usa a totalidade dos 16 bits para formar o valor final da humidade relativa.
Depois de descodificados os bits recebidos, os valores de humidade e temperatura podem ser mostrados no display.
Uma vez que o interface com o sensor é digital e depende de uma comunicação bilateral podemos programar pedaços de código que nos permite verificar se essa comunicação está a ser efectuada correctamente.
Além da verificação do checksum, é possivel perceber, por exemplo, se o sensor responde dentro de um intervalo de tempo ou se tem qualquer outro problema, mas também é possivel distinguir os sinais entre os dois diferentes sensores e adaptar-se automaticamente consoante o sensor usado.
No exemplo da imagem seguinte, o sensor foi desligado e o display indica de imediato que o sensor deixou de responder.
Em relação á fiabilidade do sensor DHT22, reparei que logo de inicio a temperatura apresentava 2 graus de diferença com o medidor de temperatura que tenho e que usa o LM35 como sensor.
Depois de vários minutos depois a temperatura começou lentamente a aproximar-se do valor real e dentro da tolerancia indicada no datasheet.
Uma vez que tenho acesso a um medidor de humidade calibrado consegui testar a humidade relativa em vários ambientes diferentes.
Depois de analisar os dados reparei que para valores de humidade relativa abaixo de 12% o sensor é bastante fiavel, no entanto, acima dos 12%, quanto maior for a humidade relativa, maior é o desvio e este pode atingir os 8%.
.