7 votos

Cualquier buena forma de activar automáticamente un transmisor RS-485 en hardware?

¿Alguien sabe de un buen circuito que iba a habilitar automáticamente la transmisión en un puerto RS-485 controlador cuando se transmiten los caracteres? En nuestros diseños utilizamos actualmente RTS para conducir el controlador de transmitir pin, pero entonces la estrategia en tiempo real de la señalización ha de ser hecho en el software.

Nota: la solución tendría que ser bastante barato ya que este será un volumen de producto (tipo de excluye el uso de otra microcontrolador para hacer el trabajo). También mantener la transmisión activada por más tiempo de lo necesario sería un problema, ya que la línea de serie puede tener que manejar una gran cantidad de tráfico.

4voto

GSerg Puntos 33571

Si usted está usando un ordinario asincrónica (UART) de protocolo, con un bit de inicio al comienzo de cada byte, un método sencillo es utilizar un monoestable multivibrator (incluso el temido 555) establece la duración de un byte más el bit de inicio y cerca de la mitad del bit de parada, y el uso que para habilitar la transmisión del controlador.

Si el multivibrator es repetida, debe permitir hasta un total de bytes de tiempo desde el final de una transmisión antes de que nadie puede transmitir, porque la multivibrator puede haber sido activado por el último bit de datos si se trataba de un cero.

Si no, entonces se deben apagar en el centro de cada bit de parada y, a continuación, gatillo de nuevo en el siguiente bit de inicio.

4voto

neilh Puntos 26

"Bueno" es un término vago, pero no decir "barato"...

La solución más sencilla para esto he visto y probado a mí mismo es el uso de un transistor PNP y la red de RC. El siguiente ejemplo está diseñado para 9600 baudios, por lo que una resistencia de 22k y 1n5 condensador se utilizan. Estos valores podría ser modificado para diferentes velocidades de transmisión.

Esta no es una solución elegante, pero es muy simple y se puede construir a partir de las piezas de reciclaje.

He aquí el esquema:

schematic

simular este circuito – Esquema creado mediante CircuitLab

3voto

Alex Andronov Puntos 178

Su mejor apuesta sería probablemente el uso de un microcontrolador pequeño (probablemente con una UART, aunque el software de bits golpeando sería suficiente), que tiene una "base de datos" de la señal y genera "datos" y "transmitir habilitar". Probablemente, usted debe tener un borde-activa la interrupción en los "datos" pin que afirma que los "datos" de la señal, incluso antes de que un byte ha sido recibido en su totalidad, de modo que tan pronto como la completa byte recibido usted puede empezar a transmitir (normalmente es una buena idea para hacer valer transmitir habilitar un poco de tiempo antes de la transmisión comienza realmente). Después de una cierta cantidad de tiempo que transcurre sin un flanco de bajada o una completamente recibida carácter, apague la transmisión habilitar pin.

El enfoque anterior sería introducir un retraso de un personaje de tiempo entre cuando el procesador recibe los datos y cuando sale el cable. En algunos casos, puede ser deseable para reducir ese tiempo. Hacerlo requeriría el uso de un software de bit bang UART en lugar de un hardware UART. Llegar el momento correcto en las tasas de bits sería difícil, pero se podría tener un control mucho más preciso sobre la sincronización de los datos entrantes y salientes.

2voto

ianb Puntos 659

Vi a un circuito que probablemente solucionado este problema. La CPU era un esclavo en el RS485 y por lo tanto normalmente era en modo de recepción de espera para la correcta IDENTIFICACIÓN de mensaje con lo que se iba a transmitir su respuesta. El RS485 chip fue transmitir habilitado por el borde de ataque del 1 de bits en los datos de respuesta provenientes de la CPU a la hora de responder. Un diodo, un condensador y una resistencia se las ingenió para activar rápidamente el chip en modo de transmisión y los sucesivos datos transiciones mantuvo en el modo de transmisión. Cuando la transmisión terminó la pac de descarga a través de la resistencia y después de un par de decenas de mili segundos, el chip podría volver al modo de recepción.

Hay dos problemas con esto - el primer bit transmitido fue un poco corto por sobre el 10% y esto puede causar problemas. Estoy seguro de que un mejor circuito podría ser desarrollado, pero siempre habrá un acortamiento de la 1ª poco debido a que este siendo utilizado para "detectar" una señal de transmisión y permitir que el RS485 para transmitir. El 2º problema es que la transmisión de habilitar el circuito de mantenerse activo durante algunas decenas de mili segundos después de la transmisión del esclavo había dejado y por supuesto, esto impide que el maestro de sondeo otro esclavo durante ese periodo de tiempo.

Si estos "problemas" son OK entonces no hay problema, va a trabajar

1voto

Dooha333 Puntos 391

He estado buscando una solución similar pero necesitaba muy precisa el tiempo como el autobús se está ejecutando en el 90% de su capacidad. No podía permitirse el lujo de tener más de la mitad de una longitud de bit de desbordamiento. Necesito desactivar de manera fiable el Tx dentro de 2uS de la final de la bit de parada.

Mi solución fue usar un S/R D tipo de flip flop para enclavar el bit de inicio, a continuación, la unidad que en un LTC chip de cronometraje (LTC6994), estos proporcionan una precisión del 3% a la tasa de baudios necesitaba de 230kbps. La salida del chip de cronometraje, las unidades de la reconfiguración en la D tipo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X