Diodo en conexión RS-232

Tengo dos placas, una de ellas se comunica con la otra mediante RS-232 (hilos TX-RX-GND), en concreto con un Max233.

Quiero controlar tambi=E9n la segunda placa con un PC, de modo que he conectado un cable serie, y cuando la placa B responde a la A, en el PC veo correctamente la respuesta, hasta aqu=ED todo ok, pero cuando desde el PC trato de enviarle una orden a la placa B, no me responde, sin embargo, con este escenario las placas se comunican bien entre s=ED (aun con el cable del PC conectado).

He pensado que puede deberse a que cuando el PC manda los datos, el MAX233 debe interferir con el mandato, de modo que he puesto un diodo T4148 entre la pata del Max233 y el cable. Si hago esto, la placa A se comunica con la B, pero solo una vez, luego se cuelga. El cableado est=E1 correcto puesto que si desconecto la placa A y dejo solo el PC y la placa B, funciona.

=BFEse diodio no aislar=EDa la se=F1al de modo que lo que emita el RS232 del PC no entrar=EDa al Max233? He probado con varios diodos con id=E9ntico resultado, pero ya no se me ocurre qu=E9 probar.

Saludos

Reply to
tontolbote
Loading thread data ...

Una cosa es hacia donde cisculan los datos, y otra muy distinta hacia donde circula la corriente. El diodo permite circular la corriente sólo en un sentido, eso es cierto (más o menos), pero no es tan listo como para hacer que los datos circulen en un sólo sentido.

Lo que quieres hacer no es posible sólo con diodos. Necesitas algo más, y sobre todo, una lógica que decida quién puede comunicar con quién en cada momento, ya que la interface RS232, en principio, sólo permite la comunicación entre dos equipos (eso sí, puede haber otros equipos "escuchando" las líneas, pero no pueden enviar nada).

Una posibilidad, ya que sólo utilizas RXD y TXD, es utilizar alguna de las señales de control del puerto serie del PC para conmutar entre las dos posibles conexiones (A-B ó PC-B). Quizás si explicas qué es lo que quieres hacer exactamente, se podría concretar algo más.

--
Saludos de Jose Manuel Garcia
jose.mgg@terra.es
 Click to see the full signature
Reply to
Pepitof

Pepitof ha escrito:

de

cer

s, y

n cada

las

quieres

Buenas y gracias por contestar

No quiero que ambos sistemas se comuniquen simult=E1neamente, es decir, o se comunican las placas A y B, o el PC y la placa B, pero nunca los tres a la vez. Ahora lo tengo solucionado con un jumper, cuando conecto el PC quito el jumper y desconecto el pin TX del Max233, pero quer=EDa algo m=E1s elegante. De hecho no entiendo por qu=E9 si el Max233 est=E1 inactivo (sin enviar datos), no puedo comunicar entre el PC y la placa B, por eso hab=EDa pensando en el tema del diodo.

Saludos

Reply to
nUke

A ver si te he entendido (usar un font fijo)

Inicialmente tenias esta conexion

mcuA mcuB Tx ----------------- Rx Rx ----------------- Tx

Y luego agregaste la PC asi ?

mcuA mcuB Tx ------+---------- Rx Rx ------|-+-------- Tx | | PC | | Tx ------' | Rx --------'

Con las salidas Tx de A y la PC cortocircuitadas mandara la que maneje mas corriente, en tu caso el max233

Luego agregaste un diodo asi ?

mcuA mcuB Tx -->|--+---------- Rx Rx ------|-+-------- Tx | | PC | | Tx ------' | Rx --------'

Tampoco funcionara.

Tienes que agregar otro diodo, una resistencia 4K7 (por ej.) y disponer de 12V (de 5 a 15)

+12V | R mcuA | mcuB Tx -->|--+---------- Rx Rx ------|-+-------- Tx | | PC | | Tx -->|--' | Rx --------'

Eduardo.

Reply to
Eduardo

Grrr... por que los errores se ven siempre inmediatamente despues que se envio el mensaje?

La resistencia no va a +12V sino a -12V, y la resistencia mejor que sea de 10K.

Eduardo.

Reply to
Eduardo

Vaya un cacao. Utiliza un protocolo direccionable, como I2C, y te quitas todos esos follones, que no hay quien los entienda.

escribió en el mensaje news: snipped-for-privacy@j8g2000cwa.googlegroups.com... Tengo dos placas, una de ellas se comunica con la otra mediante RS-232 (hilos TX-RX-GND), en concreto con un Max233.

Quiero controlar también la segunda placa con un PC, de modo que he conectado un cable serie, y cuando la placa B responde a la A, en el PC veo correctamente la respuesta, hasta aquí todo ok, pero cuando desde el PC trato de enviarle una orden a la placa B, no me responde, sin embargo, con este escenario las placas se comunican bien entre sí (aun con el cable del PC conectado).

He pensado que puede deberse a que cuando el PC manda los datos, el MAX233 debe interferir con el mandato, de modo que he puesto un diodo T4148 entre la pata del Max233 y el cable. Si hago esto, la placa A se comunica con la B, pero solo una vez, luego se cuelga. El cableado está correcto puesto que si desconecto la placa A y dejo solo el PC y la placa B, funciona.

¿Ese diodio no aislaría la señal de modo que lo que emita el RS232 del PC no entraría al Max233? He probado con varios diodos con idéntico resultado, pero ya no se me ocurre qué probar.

Saludos

Reply to
Cangrejo Moruno

te lo ha dicho pepitof, creo que lo deberías releer ;-)

a más a más :-) creo que si intentaras con el diodo pero al reves (invirtiendo la polaridad), te podría funcionar.

O mucho mejor si conviertes la señal a ttl de colector abierto, y polarizas las lineas con una resistencia a +5. Solo el que transmita en un momento determinado pondrá bits a 0, ya que el bit de stop es un 1. Pero debes garantizar por software que nunca se pongas dos a treansmitir a la vez.

Reply to
Nolo Pongo

Es que lo que tú llamas inactivo, no lo es en realidad. Cuando no se estén enviando datos, las líneas RXD y TXD estarán en un estado determinado, por ejemplo +10V (no recuerdo si el 0 lógico en estas líneas es +10V o -10V). En una conexión "normal", es decir, de sólo dos equipos, la salida TXD del equipo A va conectada a la entrada RXD del equipo B, y viceversa. Es decir, la tensión en cada línea está controlada por una salida en un equipo, y es leída por una entrada en el otro equipo.

Pero cuando conectas como tú quieres, tienes dos salidas tratando de definir la tensión que hay en una misma línea. Mientras esas dos salidas estén en el mismo estado, no habrá problema, pero si en algún momento las dos quieren poner estados diferentes, tendrás una tratando de llevar la tensión en esa línea a +10V, y la otra tratando de llevarla a -10V. El resultado es difícil de prever, y dependerá de la capacidad de cada salida para entregar o drenar corriente. Lo más probable es que la tensión quede en un estado poco definido, por ejemplo -1V.

Y mientras tanto, los dos drivers de línea (MAX233 o similar) estarán forzados al máximo, con riesgo de morir en el intento, ya que estarán conduciendo toda la corriente que pueden.

Como solución un poco cutre pero simple, tienes la idea que te ha dado Eduardo. Digo cutre, porque al depender de corrientes de pull-up derivadas por las resistencias, estás limitando las prestaciones de la interface RS-232 en cuanto a longitud de los cables, sensibilidad al ruido, etc.

Una solución más elegante sería substituir los MAX233 por otro modelo de transceiver con salidas triestado. Eso significa que, cuando se activa una entrada especial llamada ENABLE, sus salidas serán las típicas, +10V o -10V, pero si se desactiva la entrada ENABLE, sus salidas quedan en alta impedancia, es decir, como si no estuvieran conectadas a la línea. Así, manejando la entrada ENABLE de los equipos entre los que quieres conmutar, puedes definir quién se conecta a quién.

Sin embargo, tampoco es plan de cambiar los chips de tu PC, y añadir un multiplexor RS232 sería caro, así que, si no necesitas cubrir una gran distancia, la solución de Eduardo es la más práctica, sin duda.

--
Saludos de Jose Manuel Garcia
jose.mgg@terra.es
 Click to see the full signature
Reply to
Pepitof

Buena respuesta, como no entiendo lo que quieres, lo mejor es que lo cambies todo, y te gastes una pasta. :-)

--
Saludos de Jose Manuel Garcia
jose.mgg@terra.es
 Click to see the full signature
Reply to
Pepitof

t=E9n

, por

0V).

El 0 logico corresponde a tension positiva entre 8 y 25V (para el transmisor).

el

r,

o, y es

finir

=E9n en el

eren

n esa

f=EDcil

renar

Ademas la corriente que puede manejar el puerto de la PC es distinta para el '1' que para el '0', y varia segun las placas. Tambien con la tension de umbral, algunos puertos serie pueden leer con tensiones 0 y

-5v ('0' y '1' logicos) otros con +5 -5 .

lo de

o -10V,

=ED,

Si es por cambiar, me pregunto si estara justificado usar RS232 para comunicar los micros, si la comunicacion se hara solo entre esos micros y la PC es mas negocio usar salidas de colector abierto entre micros y el MAX233 solo para la PC.

Eduardo.

Reply to
Eduardo

"Pepitof" escribió en el mensaje news: snipped-for-privacy@individual.net...

Tal vez lo interprete mal, yo parto que el funcionamiento normal son las dos placas solas comunicandose entre si, y se conecta la PC para modificaciones. La idea no es que ponga los diodos y la resistencia en las placas sino dentro de las tapas de un cable que se intercala cuando pone la PC.

Cable temporal Cable original TxA o-->|--+----o o----------------o RxB | RxA o------|--+-o o----------------o TxB | | | | -12V --R---+ | | | - | ^ | | | o o Tx Rx PC

Eduardo.

Reply to
Eduardo

"Eduardo" escribió en el mensaje news: snipped-for-privacy@l70g2000cwa.googlegroups.com...

Bueno, supongo que en los PCs actuales, la corriente para 1 y para 0 será la misma, aproximadamente, porque las salidas de los drivers de línea suelen ser medios puentes H MOSFET

Pero no sabemos qué aparatos son los implicados. Por eso decía yo al autor de la pregunta que harían falta datos más concretos. Si estamos hablando de circuitos hechos por él, perfecto lo de las salidas de colector abierto, pero si son aparatos comerciales (por ejemplo PC, PDA, GPS, impresora, plotter, o vaya usted a saber), cualquier cosa que suponga cambiar os drivers de línea es poco viable.

--
Saludos de Jose Manuel Garcia
jose.mgg@terra.es
 Click to see the full signature
Reply to
Pepitof

Pues yo creo que esto debería funcionar bien, aunque seguramente la resistencia no será necesario ponerla a -12, porque las salidas TX tampoco darán -12, igual dan -5, o -8, ...

Yo probaría poninedo la resistencia a -5 (más que suficiente) e incluso a 0V (igual funciona). Luego comprobaría que desenchufando el tx del PC las dos placas van bien, y que desenchufando el TX de la placa de la izquierda, el pc~placa va bien.

Si eso es así, el problema es de software. Debes garantizar que cuando la placa de la izquierda transmite, el PC no lo hace, y que cuando transmite el PC, la placa de la izquierda no lo hace. Y eso debes controlarlo por software (supongo que ya lo sabías pues veo que la conexion está hecha con esa intención).

Reply to
Nolo Pongo

Pepitof ha escrito:

de

cer

s, y

n cada

las

quieres

1=BA No se cu=E1l es el objetivo que persigues 2=BA Una de las cosas buenas que tiene la electr=F3nica digital es lo sencillo que resulta "decirle" al circuito lo que quieres: las tablas de verdad, simplificaci=F3n y que cualquier circuito combinacional puede reducirse a puertas Nand o puertas Nor Recordando algo que ya hab=E9is dicho, que en el interfaz RS232 la l=F3gica es negativa Aunque la norma dice que el 0 l=F3gico +3
Reply to
PepeRdguez

Con ese esquema estas invirtiendo la logica. Ademas, salvo que uses diodos schottky, el transistor no trabajara bien, tienes en el diodo una caida similar a la de base-emisor. Ademas dependes mucho de la tension negativa del puerto serie, una variacion de +- 0.5 V ya decide si anda o no.

Reply to
Eduardo

Eduardo ha escrito:

y
a

=BFQue quieres decir?

- =BFQue el 1 es el negativo? As=ED es en el puerto serie

- =BFQue es una puerta or negada?

.=2E. y adem=E1s la de colector-emisor de a entrada anterior Se me ocurre pasar Rc a emisor y re-calcular valores Lo pensar=E9, que me tengo que ir ahora

Ademas

Entre +/- 3V no es ni 1 ni 0, no deber=EDa afecta esos 0,5V

se

Reply to
PepeRdguez

Eso mismo, es una NOR, con las dos entradas en -12V el transistor va al corte -> +12V a la salida.

Como el transistor de seguidor si funcionara.

No estoy del todo seguro, pero creo que la norma especifica distintos requisitos de corriente para vaores positivos y negativos, y la mayor capacidad debe ser a negativo (1 logico), en ese caso convendria usar un PNP.

+12-----------+ | .-. | | | | '-' +------ Salida | |< ->|-----+-------| | |\ ->|-----+ | | | .-. | | | | | | | '-' | | | -12 -+--------+

Saludos. Eduardo.

i se

Reply to
Eduardo

Grrr... es 'con cualquiera de las dos entradas -12V"

Reply to
Eduardo

Otra vez! debe ser culpa de ese aleman de mierda (Alzheimer)

es 'con cualquiera de las dos entradas en -12V'

Eduardo.

Reply to
Eduardo

"Eduardo" escribió en el mensaje news: snipped-for-privacy@m73g2000cwd.googlegroups.com...

Hoy tendria que haberme quedado durmiendo y no escribir nada, un solo parrafo y fue un error tras otro... tampoco es una NOR, es una NAND.

Reply to
Eduardo

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.