Teensy 3.0 Problemas con un rango moderado (~ 40m) Señales OneWire

0

Estoy usando un Teensy 3.0 (con su señalización TTL de 3V) para intentar comunicarme con algunas sondas de temperatura Dallas DS18B20.

No estoy usando energía parásita porque escuché que una línea eléctrica separada permite conexiones más largas y confiables. Estoy alimentando esto usando el pin de vin 5V de mi Teensy:

LacomunicaciónserealizautilizandounodelospinesTTLde3V(pin14)conunaresistenciadepullupde4.7kohmiosa5V(mássobreestomásadelante).

Elusodel el bosquejo de ejemplo estándar de OneWire en el IDE de Arduino me permite recibir mediciones de temperatura perfectas con un corto (d = 5 m) cable, incluso con varias sondas de temperatura en la línea. Pero cuando se usa un cable ad = ~ 40m, la señal parece desaparecer y no se puede tener comunicación (la detección de la dirección falla, e incluso cuando se codifican las direcciones del dispositivo en el código, los bits de lectura resultantes son todos ceros (o el CRC). cheque falla)).

Al principio pensé que era un cable que tenía demasiada capacidad (como leí en otros hilos), así que intenté reemplazarlo con un cable Ethernet Ethernet cat5e igualmente largo (usando naranja sólido, azul y marrón para el 5V, señal, y GND respectivamente) con un comprobador RJ45 para saber que el cable es bueno. Esto tuvo los mismos resultados que mi intento anterior de cableado.

Entonces, mi pregunta es: ¿Alguien tiene algún paso para solucionar el problema? Desafortunadamente, no tengo un osciloscopio o un analizador lógico, y he intentado observar ingenuamente los voltajes de señal usando mi multímetro sin mucho éxito.

Una parte desconcertante de todo esto es: si estoy activando las sondas de Dallas con 5V, y tengo un pullup de 5V a un pin TTL de 3V en el Teensy, entonces, ¿cómo funciona esta configuración? ¿Quizás el Teensy es capaz de tirar la línea hasta el suelo con éxito aunque sea 3V ttl?

Intenté encender las sondas con un pin de 3.3V (2 pines debajo de Vin), y conecté la resistencia pullup a eso, pero incluso la corta longitud del cableado no funcionó.

También he intentado usar otra resistencia de 4.7k en paralelo con la resistencia de pullup para acercarla a 2k (lo que he oído es bueno para carreras más largas), pero esto no tuvo ningún efecto.

Gracias por cualquier ayuda / sugerencia / comentario!

* ACTUALIZACIÓN *

He agregado un diagrama de circuito (posiblemente el peor del mundo) para que la situación sea más comprensible. Lo siento por no hacer esto desde el principio.

También, un buen recurso que he revisado es esta nota de aplicación que recomienda el cable Cat5e y las redes de menciones. hasta varios cientos de metros de longitud.

    
pregunta JKnight

1 respuesta

1

La nota de aplicación a la que se vinculó tiene el siguiente párrafo en la página 8, que está completamente de acuerdo con su experiencia hasta el momento.

  

Las interfaces de pin de puerto de microcontrolador simples no son capaces de   Impulsar las corrientes necesarias para soportar grandes o incluso medianas.   redes El valor del resistor pullup a menudo está limitado por el pin de puerto   Capacidad desplegable a alrededor de 2,200Ω, lo que excluye a los pesados.   Redes (redes con valores de peso elevado). Interfaces de solo pin puerto   debe limitarse a las redes con un radio y peso de mesa, aproximadamente   3m máximo. (Ver Apéndice A).

Creo que el problema básico es que un pin de microcontrolador "simple" simplemente no tiene la fuerza de la unidad para crear un borde alto a bajo en el bus con la sincronización que requiere el protocolo. Vas a tener que usar algún tipo de controlador del lado maestro para hacer que esto funcione.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas