Extraño comportamiento en lectura de sensor I2C

#1
Hola a todos.

Estoy haciendo un proyecto utilizando un microcontrolador de texas instruments que consiste en la lectura de un sensor de humedad y temperatura por I2C, la aplicación se encuentra operando pero se me presento una situación que se me hizo de lo mas raro. Si coloco el sensor de humedad y temperatura, un HTU21D, directamente en el PCB principal la medición de la temperatura y de la humedad es erróneo; pero si conecto el sensor a través de unos cables, aproximadamente de 20 cm de longitud, la medición de la temperatura y humedad es correcta. Ya he descartado problemas de continuidad y frecuencia de reloj ya que, como les comentaba, la lectura del sensor no se detiene en ningún momento. La frecuencia a la que opera el microcontrolador es 1MHz y el SCLK del I2C a 100 KHz.

La verdad no me explico la razon por la que sucede esto, ya que la frecuencia del SCLK no es tan alta como para producir algun efecto de interferencia, ¿o si?

Alguien me pudiera ayudar a encontrar una explicación a esta situación que me tiene dando vueltas en la cabeza, se los agradecería enormemente.

Gracias a todos por su atención.
 
#3
Hola D@rkbytes

Si, la placa principal que diseñe tiene un par de resistencias en pull up de 10K una para SDA y otra para SCLK; el modulo del sensor que utilizo, el HTU21D, igual tiene un par de resistencias de 10K. También descarto que esas dos resistencias en paralelo por linea este causando este comportamiento, ¿que opinas?
 
#4
Al estar las resistencias en paralelo se obtendrán 5 KΩ y es buen valor para el bus.
Así que se descarta esa posibilidad como error.

Podría ser también que el circuito no tenga buen plano de tierra o carezca de él.
Otra posibilidad puede ser el voltaje de alimentación para el módulo. (Que sea más alto)
Si no es eso, prueba colocando resistencias de 4.7 KΩ en serie para SDA y SCL del módulo.
 
#6
Yo tengo por costumbre, sobre todo en entornos industriales, filtrar por software los valores de los sensores para minimizar los efectos de transitorios, ruidos y demás..Tres medidas, media aritmética y solo admito los valores si están en un rango esperado, sino repito la lectura.

Los hilos que usas son paralelos?? Algún efecto de capacitancia?? Ruido electromagnético en el entorno de la placa? Masas?

 
#7
Gracias a todos por sus comentarios y ayuda.

D@rkbytes: ¡Justo eso pensaba probar! Sin embargo, ¿Una resistencia de 4.7 KΩ no sera muy grande, considerando que la resistencia de un cable es de unos pocos ohms?

Gudino Roberto: Con datos erroneos me refiero a por ejemplo: el sensor me da una medición de temperatura de 24°C y 16% de humedad, cuando en el mismo punto tengo 19°C y 30% de humedad, esto medido con un instrumento patron. Como comente, cuando hago la conexion del sensor con cables a la placa PCB principal el valor se aproxima a lo esperado, dentro de la exactitud referida en el datasheet del sensor.

dladystarlight: Dado que la señal del sensor no parece ser inestable (en el osciloscopio se ve una señal cuadrada y sin sobresaltos), no me parecio necesario realizar lo que acertadamente comentas (lo cual aplico en casos de que la salida de un sensor sea muy inestable). Los hilos son paralelos, el grosor de la pista es de 0.54 mm, con una separacion de 0.454 mm minimo y 2.54 mm maximo; con respecto al efecto de capacitancia, no se como verificar que esto esta sucediendo y con que intensidad; problemas de masas y ruido electromagnetico, yo lo descarto ya que estoy obteniendo un valor logico. ¿Qué opinas?

De nuevo les agradezco sus comentarios.
 
#8
D@rkbytes: ¡Justo eso pensaba probar! Sin embargo, ¿Una resistencia de 4.7 KΩ no será muy grande, considerando que la resistencia de un cable es de unos pocos ohms?
Como se maneja muy poca corriente, ese valor está bien, pero si el sensor no responde, la puedes bajar, digamos, a 1 KΩ o menos, es cosa de ir probando.
 
#10
Hola!

Disculpen la tardanza de mi respuesta.

He agregado una resistencia en serie de 1ohm en el bus I2C, tanto para SCLK como SDA, mejorando el problema que se tenia. Sin embargo, aun no tengo el mismo resultado que conectar el sensor con cables; como menciona D@rkbytes, pienso que aumentándole el valor de la resistencia a prueba y error conseguiré que el problema se solucione por completo.

Ahora, buscándole una explicación a lo que ha sucedido, ¿Acaso es un problema de acoplamiento de impedancias o algo similar? ¿Que opinan?
 
Última edición:

Fusatronica

Well-known-Thundercat
#11
Sr. alose87 Le hago una pregunta usted leyo el datasheet del IC?

Ahí explica los errores mas comunes y el porque no funciona directamente en el PCB.

Una parte de ello explica:

El sensor HTU21D (F) debe montarse de manera que evite la transferencia de calor, desde un sensor electrónico o que lo mantiene lo más bajo posible.

El consejo puede ser ventilación, reducción de capas de cobre entre el sensor HTU21D (F) y el resto de la PCB o fresar con una ranura en la PCB alrededor del sensor (ancho mínimo de 1 mm).

Otra recomendación es conectarlo como una sonda de tal forma que no haya errores de medición, es por ello que le funciona muy bien con los cables externos a ello se le llama sonda.
 

Adjuntos

Última edición:
#12
Hola Fusatronica.

El sensor esta montado en un modulo independiente al PCB principal donde se tomo en cuenta las recomendaciones de disipación de calor que se mencionan en el datasheet. El modulo independiente por si solo funciona de maravilla.

Con respecto al montaje en sonda, supongo te refieres a la sección "Wiring Considerations and Signal Integrity" del datasheet, ahí menciona que si se conecta el sensor con un cable de mas de 10 cm de longitud puede haber perdida de comunicación y esto se puede solucionar utilizando cable blindado o incluso disminuir la velocidad del transmisión del bus. No especifica que se debe de conectar en sonda ni por qué no funciona directamente en el PCB, o ¿lo menciona en alguna otra sección?

Gracias por tu comentario.
 
#13
alose87, No he trabajado demasiado con micro-controladores (Programando) pero cuando tuve problemas similares al que tienes, fueron por problemas en la alimentación. Con cuanto estás alimentando al módulo?
Si bien el módulo que tienes soporta según los datasheet, 5 y 3,3v no todos son iguales y afectan a la comunicación con algunos micros.
 
#14
Hola, tu pcb es fabricado de forma casera, puede ser que tengas un problema en las pistas, hay veces que se quedan uniones de inclusive MOhms imperceptibles a la vista.
 

Temas similares

Arriba