Novedad: el cortafuegos de IA supervisa toda la plataforma y explica cada incidente con palabras sencillas. Vea cómo funciona

El HTU21D responde al escaneo pero cada lectura de humedad llega vacía

El HTU21D responde al escaneo pero cada lectura de humedad llega vacía

Resuelto 6 5

Traducido del English por IA ·

Es un detalle pequeño, pero me está volviendo loco. Una MKR WiFi 1010 en un refugio de cabezal de pozo lee un breakout de humedad HTU21D en 0x40 y envía los datos a Hermetry cada minuto. La temperatura funciona. La humedad funciona quizá una lectura de cada diez.El escáner I2C encuentra 0x40 siempre. Analizador lógico: mi escritura de 0xF5 (humedad, sin hold) recibe un ACK, luego la dirección de lectura 0x81 recibe un NACK y Wire.requestFrom(0x40, 3) devuelve 0. En el panel, la humedad tiene huecos por todas partes.

Wire.beginTransmission(0x40);
Wire.write(0xF5);
Wire.endTransmission();
delay(15);
uint8_t n = Wire.requestFrom(0x40, 3);   // n == 0 most of the time
Ask me about 4–20 mA.
♥ 0

Traducido del English por IA ·

¿Las resistencias pull-up? Tenía lecturas inestables hasta que añadí 4.7k

Still waiting for the gateway to reconnect.
♥ 1

Traducido del English por IA ·

Ya tengo 4,7k en el breakout, y el escáner nunca falla, así que dudo que sea el cableado.

Ask me about 4–20 mA.
♥ 1

Traducido del English por IA ·

Tuve lo mismo con un BME280 y era la dirección, 0x76 frente a 0x77.

Ask me about 4–20 mA.
♥ 0

Traducido del English por IA ·

¿El breakout está a 3,3 V? Perdona si es obvio, quemé uno con 5 V el mes pasado.

Timestamps in UTC or it didn't happen.
♥ 2

Traducido del English por IA ·

El cableado está bien, tu lectura llega demasiado pronto. En modo no-hold, el HTU21D responde NACK a su dirección de lectura hasta que termina la medición, justo lo que muestra el analizador. Una lectura de humedad de 12 bits tarda hasta unos 16 ms; con la resolución por defecto y un poco de margen, conviene esperar más de 15. La temperatura es la lenta, con 50 ms, y probablemente copiaste el retardo de un ejemplo solo de humedad y tuviste suerte en sentido contrario.Consulto el sensor en lugar de adivinar:

Wire.beginTransmission(0x40);
Wire.write(0xF5);
Wire.endTransmission();
uint8_t n = 0;
for (int i = 0; i < 10 && n < 3; i++) {
  delay(10);
  n = Wire.requestFrom(0x40, 3);
}
if (n < 3) { /* skip humidity this round */ }

Y cuando una lectura sigue fallando, omite la clave en el mensaje de ese minuto o envía null. No envíes 0: Hermetry lo guarda como un 0 % real y tu regla de alarma se va a aprovechar de ello. null solo significa que no hay lectura.

Ground loops are my cardio.
Solución aceptada♥ 8

Traducido del English por IA ·

Bucle de sondeo implementado, n llega a 3 en el segundo o tercer intento, es decir, unos 20-30 ms. Dos días sin huecos. También enviaba 0 en los fallos, lo que explica las extrañas caídas en el gráfico. Gracias Daniel.

Ask me about 4–20 mA.
♥ 2
Viendo 7 entradas – de la 1 a la 7 (de un total de 7)
  • Debes estar registrado para responder a este debate.

Únete a la conversación

Inicia sesión para preguntar y responder, dar me gusta a las publicaciones útiles y marcar la respuesta que resolvió tu problema. Cada aportación suma puntos y niveles.

Compartir