Fork me on GitHub

29/08/13

PIC: DHT11 - Sensor de Umidade e Temperatura

PIC: DHT11 - Sensor de Umidade e Temperatura


DHT11 é um sensor de temperatura e umidade.

Ele utiliza um sensor capacitivo de umidade e um termistor para medir o ar circundante e, produz um sinal digital no pino de dados (Data).

É bastante simples de usar, mas requer cuidado na hora de ler os dados. A desvantagem deste sensor é que você só pode obter novos dados a cada 2 segundos. ( esse é o tempo ideal ).

A temperatura é dada em (°C) e a umidade relativa em %.


Sinal de saída de dados do DHT11












CÓDIGO
Microcontrolandos/DHT11
Teste feito com PIC18F4550 e Display Nokia 3310


Caso não funcione, retire o resistor de pull-up!!!

34 comentários:

  1. Ótimo post, sempre na frente com as novidades. Parabéns!!!

    ResponderExcluir
  2. o codigo fonte foi escrito na plataforma ccs ou c18 ?

    ResponderExcluir
  3. sabe se existe alguma ferramenta que converta de um compilador para outro ?

    ResponderExcluir
  4. você conectou o pino RB2 do display também no pino do DHT11. Está certo?
    sbit LCD_D6 at RB2_bit;

    sbit DHT11_Data at RB2_Bit;

    ResponderExcluir
    Respostas
    1. Obrigado por avisar!!
      Digitei errado. o certo é conectar na PORTD.

      Excluir
  5. Desculpa, a configuração está certa, eu que não prestei atenção.
    Fiz um vídeo, mas, o valores não estão alterando. Tem algo de errado.
    http://www.youtube.com/watch?v=fod2GoBvsZo&feature=youtu.be

    ResponderExcluir
    Respostas
    1. Eu ainda nao cheguei a testar o codigo, fiquei de compra o componente no MercaoLivre, mas acabei esquecendo, ai postei o codigo mesmo assim...e o DHT11 é chatinho de programar, por nao seguir um padrao do sinal da saida, o tempo pode variar de um dispositivo pra outro.

      Excluir
  6. Olá, seu blog está de parabéns, sempre gosto de ficar brincando com seus projetos.... e aqui esse não deu certo (os valores permanecem estáticos), eu gostaria muito de ter um projetinho desse pendurado aqui na planta da sala, você tem previsão de quando irá arrumar o código? Ou o seu código já está testado e fui eu que fez algo de errado?

    ResponderExcluir
    Respostas
    1. Refiz o código. Não testei na prática. Fiz o teste com o Proteus. Mas funcionou.

      Excluir
    2. eu fiz um codigo pra esse sensor para o microcontrolador 18f4550, usando c18 funcionou perfeitamente

      Excluir
    3. Olá! Você adaptou do código acima ou utilizou outro? Queria saber se meu código funciona na pratica.

      Excluir
    4. eu não usei seu codigo por que nao sei utilizar o mikroC pro , utilizei o datasheet do sensor mesmo.
      o que da + trabalho são os tempos, tentei modificar o tempo utilizando a frequência de oscilação e não dava certo , então utilizei osciloscópio mensurei o tempo do start sinal ( o degrau de 1 pra 0 ) vi que estava em 43ms fiz regra de 3 para todos os outros tempos ! e bingo funcionou perfeitamente

      Excluir
    5. Cara, você poderia me passar esses tempos que você encontrou, já tentei aqui pelo osciloscópio e não estou conseguindo fazer ele encontrar os dados do meu 18f4550

      Excluir
  7. Tiago henrique como voce modelou o sensor dht11 para o proteus ?

    ResponderExcluir
    Respostas
    1. vlw ! ... eu jurava que meu proteus era o 8.1.. na verdade era o 7.7 , vo instalar aqui !

      Excluir
  8. Tiago Henrique... tem como postar aquela pasta com os arquivos para simulação... eu compilei aqui no mikroc pro o código e juntei os componentes no proteus só que hora que simulo o display fica em branco.. não acontece nada... ficaria muito agradecido, os componentes são baratos compensa executar esse projeto que me parece muito legal. Obrigado pelo código.

    ResponderExcluir
    Respostas
    1. Opa, não precisou não... achei meu erro aqui... era um errinho trivial, simulou aqui também.. obrigado.

      Excluir
  9. ola Tiago Henrique, me supreende muito a forma de como desenvolves os teus projectos. gostaria tanto de aprender com voce a comunicação RF no compilador MICRO PRO PIC. sem usar biblhoteca.

    ResponderExcluir
  10. o sensor nao esta pegando no proteus 7 ela da esta mensagem cannot find model file "DHTXX.MDF"
    o que eu faço?????????/

    ResponderExcluir
    Respostas
    1. Estou utilizando a versão 8 mas tenho o mesmo problema! Alguém sabe a solução?

      Excluir
  11. Galera alguém aí achou os tempos para um clock de 48Mhz???

    ResponderExcluir
  12. Sei que modificando esse código seria possível fazer com o DHT22, adicionei os bytes decimais da temperatura e umidade, somei os dois e dividi por 10, e mesmo assim não funcionou... você saberia qual parte precisa ser modificada?

    ResponderExcluir
  13. Boa noite tiago.
    estou tentando fazer esse programa fucional mais esta dando um erro no codigo da biblioteca
    nesta linha do progama

    while( !DHT11_Data ).

    mais como tenho visto ninguem falo nada, sera que estou fazendo de errado,
    para da erro no codigo da biblioteca
    inclui o codigo na programa como

    #include "DHT11.C" que é a biblioteca
    e depois copiei o exemplo que voce tem disponivel.

    abraço

    Att Rafael

    ResponderExcluir
  14. Cara, esse código não está funcionando, testei para diferentes PIC's, os números ficam congelados, não variam.

    ResponderExcluir
    Respostas
    1. tente retirar o resistor de pull-up ou "O DHT11 made in China não envia checksum. Tentem compilar o código sem a rotina." ( Ezequiel ).

      Excluir
  15. Pessoal,
    Resolvi o problema do PROTEUS fechando sozinho!!

    Apenas copiem a pasta MODELS do crack para os dois diretórios seguintes:

    C:\Program Files (x86)\Labcenter Electronics\Proteus 8 Professional

    C:\ProgramData\Labcenter Electronics\Proteus 8 Professional

    O primeiro diretório é padrão e todos já sabem!!
    O segundo é o que eu descobri!! =)
    Comentem!!

    ResponderExcluir
  16. Como faço para controlar uma resistência de aquecimento em função da temperatura , e uma ventoinha em função da umidade. Não estou entendendo como manipular o valor da temperatura e da umidade. Seria preciso "quebrar" a sequencia dos bits enviados pelo sensor?? tem como exemplificar?

    ResponderExcluir
  17. Parabéns Thiago,obrigado pelo incentivo,gostaria de saber se é possível o uso no pic16f628a,pois nao tem conversor AD e se é possível usar o sensor: DS18B20 pois seria
    uma aplicação muito bacana com este microcontrolador,agradeço por compartilhar,
    Parabéns pelo blog como sempre muito completo.

    ResponderExcluir
  18. rapaz eu quero muito fazer esse projeto, se possivel compacte os arquivos dele. e deie disponivel, fico muito grato se vc fizer isso.

    ResponderExcluir
  19. Bom noite pessoal, tudo bem?
    Alguém possui a lista de componentes necessários para desenvolver esse projeto? muito obrigado

    ResponderExcluir

Postagens Relacionadas!!