DHT22 lecturas incorrectas en un cable rj45 largo

2

Duplicado de enlace , me di cuenta de que hay posibilidades aquí. ten una solución para mi.

Hola,

Estoy preparando una configuración con un cable largo que separa los sensores y el rpi. Wire es un cable cat6 RJ45 (Ethernet) de 100 pies (30 m), que estoy usando 6/8 cables. Elegí los cables al azar, pensé que, si tomaba el mismo en el otro extremo, debería funcionar. Y lo hace, en su mayor parte.

He dibujado mi cableado al ajuste para explicarlo. Vea abajo. Algunas notas a tener en cuenta:

  • Para el RJ45 en el dibujo, suponga que el cable blanco está parcialmente coloreado del cable más cercano a la izquierda. Por ejemplo, el primer cable es naranja y el segundo es blanco-naranja.
  • Para la resistencia, los horizontales son 10k y los verticales son 1k.
  • no se usan blanco-verde y blanco-azul, así que los fusioné en un extremo y los puse en GND en el otro. Antes de hacer eso, tuve una interferencia entre IRLed y los interruptores de botón

LaslecturasdeDHT22serealizanenpython,cadaminuto,utilizandoAdafruit_Python_DHT1.4.0.CódigoexactoparaDHT22enesterepositoriopúblico: enlace

Mi problema es: Las lecturas de DHT22 son 99% incorrectas. Estoy leyendo 10.3 ° C (50 ° F) y 3288.7% de humedad la mayor parte del tiempo. Las lecturas correctas serían de alrededor de 24 ° C (75 ° F) y un 21% de humedad. Lo suficientemente gracioso, obtengo una lectura correcta a veces como dos veces por hora.

Actualmente, es un cable de 100 pies (30 m), pero es solo como una prueba de concepto, el PI y los sensores en realidad no son más de 10 pies (3 m) en partes.

He intentado cambiar los cables (para descartar que el problema haya sido incorrecto en el RJ45) pero el resultado es siempre el mismo.

También he intentado usar un cable de puente de 10 pies (3 m) para el cable amarillo (sin pasar por RJ45) y luego, todo funciona bien.

Parece que el problema se debe a la longitud del cable.

He investigado un poco y descubrí que había problemas similares para otras personas con la biblioteca

Desafortunadamente, todos esos problemas se resolvieron con la reciente versión 1.4.0, que estoy usando en mi configuración.

¿Alguien sabe cómo resolver mi problema? ?

Además, puedes asumir esto:

  • Eléctrico & Los conocimientos electrónicos son muy limitados por mi parte. Estoy aprendiendo a usar Internet y haciendo esto como un pasatiempo.
  • Preferiría que la solución estuviera en el lado pi del RJ45, ya que el lado del sensor estaría en la pared
  • Para la prueba de concepto, RJ45 y jumperwire están retorcidos entre sí con tapas de cables.

Gracias, ¡que tengas un buen día!

    
pregunta ericmas001

1 respuesta

2

Su sensor no está diseñado para conducir metros de cableado. Eso simplemente no es para lo que fue diseñado.

La idea de utilizar el cableado Cat6 es buena, y puedo ver que se debe a la conclusión de que Ethernet sobre este cable funciona también en largas distancias.

Sin embargo, en Ethernet, los pares trenzados de las líneas de señal se controlan diferencialmente (es decir, la corriente en un conductor es opuesta a la del otro, y en el extremo receptor, el se evalúa la diferencia entre potenciales) y se tiene mucho cuidado para garantizar que la señal se lea y se reconstruya con firmeza.

Su circuito no tiene ninguna medida para cumplir el mismo rol, por lo que simplemente no funciona en una larga distancia de cableado, donde simplemente pierde mucho voltaje a caídas óhmicas en la distancia, donde obtiene la longitud completa como La antena o el devanado secundario a un transformador parásito con la red eléctrica y, lo más importante aquí, donde no se toman medidas para ayudar al transmisor a conducir la carga capacitiva e inductiva que representa el cable largo.

Para que esto funcione, deberías cambiar algunas cosas:

  • Los tramos largos de par trenzado realmente no son buenos para la transferencia de energía de bajo voltaje. Use transformadores para aumentar su voltaje en el extremo de alimentación, y bajar en el extremo de recepción.
  • Necesitará la conversión de extremo único a diferencial en el extremo del sensor y lo contrario en el extremo del receptor.
  • Tendrá que coincidir con las impedancias.
  • No estoy seguro de lo que hace el divisor de voltaje en la línea de datos del sensor, pero me parece una carga innecesaria para el sensor. Sin embargo, esto será obsoleto por sí solo cuando use los transceptores diferenciales
  • No sé qué velocidades necesita del transmisor de infrarrojos, pero fue una buena idea usar algo para aumentar la resistencia de la unidad Pi. Sin embargo, en lugar de utilizar un transistor solo en el extremo de transmisión, usted querrá un transistor de impulsión + búfer de activación de Schmitt en el extremo de recepción, o optar por el transceptor diferencial + el transistor de conducción de inmediato
  • Todo esto se considera, por lo general, es más sencillo ir y tener un pequeño microcontrolador en un extremo de una línea tan larga que hace todas las conexiones locales, y solo necesita un enlace único a lo largo de la distancia. Si va por esa ruta, podría probablemente simplemente usar I²C en lugar de transceptores diferenciales; el I²C de baja velocidad es relativamente robusto, y todos los microcontroladores sin costo mínimo vienen con maestros I²C integrados, y el Pi también puede actuar como dispositivo I²C; incluso hay controladores del núcleo.
  • Si desea probar I²C: ¡en realidad hay otros sensores aparte del DHT22 poco documentado (donde las personas encuentran estas cosas ?!) que hablan I²C ( ejemplo de sensor de temperatura , ejemplo sensor de humedad + temperatura ). Eso le ahorraría un poco de problemas, ya que podría, sin más preámbulos (en realidad: tal vez una resistencia pull-up) adjuntar esa cosa a la Pi.
  • Si realmente quiere hacerlo como los "niños grandes": los sensores industriales normalmente solo reciben una corriente constante (en algún lugar en el rango de 4–20 mA), y leería el valor por la caída de voltaje a través del sensor + cableado. Los bucles de corriente son insensibles a la resistencia del cableado.
respondido por el Marcus Müller

Lea otras preguntas en las etiquetas