Mais um sensor de temperatura e umidade relativa, desta vez um modelo que não é muito comum aqui no Brasil. Mas é um sensor que apresenta boas especificações de precisão e usa uma interface padrão I2C.
- Alimentação de 1.08 a 3.6V
- Consumo extremamente baixo no uso normal: 0.08uA no idle state, 320uA quando está realizando uma medida. O consumo pode chegar a 100mA quando o aquecedor é ligado (explico adiante)
- Mede umidade relativa de 0 a 100%, com resolução (menor unidade medida) de 0,01%. A precisão típica é de +/- 2% na faixa de 10 a 90%, a 25oC. O pior caso é +/-5%.
- Mede temperaturas de -40 a +125oC, com resolução de 0,01oC. A precisão típica é de +/- 0,2oC, na faixa de 0 a 65oC. No pior caso a precisão é de +/-0,4oC na faixa 0 a 65oC e +/-1,0oC na faixa completa.
Existem também os modelos SHT41, 42 e 45 com melhor precisão.
Na comunicação I2C, o endereço é fixo em 0x44 (o datasheet fala na possibilidade de outros endereços, mas provavelmente é uma opção de fábrica). O microcontrolador deve fazer uma operação de escrita enviando um byte de comando e depois uma operação de leitura para ler 6 bytes de resposta (exceto no caso do comando de soft reset, que não tem resposta).
Existem três variações do comando de leitura de temperatura e umidade, que fornecem precisão diferente e requerem tempo diferente para processamento. Se for tentada uma leitura antes do processamento ter terminado, o comando de leitura é rejeitado.
Um outro comando permite ler o número de série de 32 bits do sensor.
Os comandos restantes ativam o aquecedor e fazem uma leitura de temperatura e umidade. O aquecedor é usado para remover água do sensor e melhorar o desempenho durante a leitura em ambientes muito úmidos por longos períodos de tempo. Existem seis variações do comando de aquecimento, cada um mantendo o aquecedor ligado por um certo tempo com uma certa potência.
A resposta do sensor possui um formato peculiar. Como dito, são sempre seis bytes, organizado em dois grupos. Cada grupo tem um valor de 16 bits em dois bytes (mais significativo primeiro), seguido de um byte de CRC (para detecção de erros de comunicação).
A conversão dos valores de 16 bits na temperatura e umidade relativa é feita usando as fórmulas especificadas no datasheet:
A rotina (em C) a seguir calcula o CRC:
uint8_t crc8(uint8_t *dados) { uint8_t crc - 0xFF; for (int i = 0; i < 2; i++) { crc ^= dados[i]; for (int j = 0; j < 8; j++) { crc = (crc & 0x80) ? (crc << 1) ^ 0x31 : (crc << 1); } } } return crc; }
Resumindo, o SHT40 é um sensor que promete uma boa precisão e usa uma interface digital padrão com o microcontrolador, me parecendo uma alternativa melhor que sensores populares, como o DHT11, DHT22, DS18B20 e LM35, que fornecem precisão pior e/ou usam interfaces mais desajeitadas.
Nenhum comentário:
Postar um comentário