Introdução:
Possui uma saída de sinal calibrado digital. Usando a técnica de aquisição de sinal digital e temperatura e umidade de sensoriamento, garante alta confiabilidade e estabilidade a longo prazo. Este sensor inclui um componente de medição de temperatura NTC, e se conecta a um microcontrolador de 8 bits, oferecendo excelente qualidade, resposta rápida, capacidade anti-interferência e de custo-eficácia.
Sobre o DHT11:
- Custo muito baixo
- 3 a 5V e I / O
- 2.5mA uso corrente máxima durante a conversão (quando solicitar dados)
- Bom para leituras de umidade 20-80% com precisão de 5%
- Bom para 0-50 ° C de temperatura leituras ± 2 ° C de precisão
- Não mais do que uma taxa de amostragem de Hz (uma vez por segundo)
- Tamanho de 15,5 milímetros x 12mm x 5,5 milímetros
- 4 pinos com 0,1 de espaçamento "
Código de Exemplo:
#define DHT11_PIN 0 // ADC0
byte read_dht11_dat()
{
byte i = 0;
byte result=0;
for(i=0; i< 8; i++)
{
while(!(PINC & _BV(DHT11_PIN))); // wait for 50us
delayMicroseconds(30);
if(PINC & _BV(DHT11_PIN))
result |=(1<<(7-i));
while((PINC & _BV(DHT11_PIN))); // wait '1' finish
}
return result;
}
void setup()
{
DDRC |= _BV(DHT11_PIN);
PORTC |= _BV(DHT11_PIN);
Serial.begin(9600);
Serial.println("Ready");
}
void loop()
{
byte dht11_dat[5];
byte dht11_in;
byte i;// start condition
// 1. pull-down i/o pin from 18ms
PORTC &= ~_BV(DHT11_PIN);
delay(18);
PORTC |= _BV(DHT11_PIN);
delayMicroseconds(40);
DDRC &= ~_BV(DHT11_PIN);
delayMicroseconds(40);
dht11_in = PINC & _BV(DHT11_PIN);
if(dht11_in)
{
Serial.println("dht11 start condition 1 not met");
return;
}
delayMicroseconds(80);
dht11_in = PINC & _BV(DHT11_PIN);
if(!dht11_in)
{
Serial.println("dht11 start condition 2 not met");
return;
}
delayMicroseconds(80);// now ready for data reception
for (i=0; i<5; i++)
dht11_dat[i] = read_dht11_dat();
DDRC |= _BV(DHT11_PIN);
PORTC |= _BV(DHT11_PIN);
byte dht11_check_sum = dht11_dat[0]+dht11_dat[1]+dht11_dat[2]+dht11_dat[3];// check check_sum
if(dht11_dat[4]!= dht11_check_sum)
{
Serial.println("DHT11 checksum error");
}
Serial.print("Current humdity = ");
Serial.print(dht11_dat[0], DEC);
Serial.print(".");
Serial.print(dht11_dat[1], DEC);
Serial.print("% ");
Serial.print("temperature = ");
Serial.print(dht11_dat[2], DEC);
Serial.print(".");
Serial.print(dht11_dat[3], DEC);
Serial.println("C ");
delay(2000);
}
Nenhum comentário:
Postar um comentário