LusoRobótica - Robótica em Português
Electrónica => Electrónica Geral => Tópico iniciado por: jmiguelff em 19 de Outubro de 2016, 11:05
-
Bons dias, eu tenho andando de volta de uma ligação RS-422 e estava com um problema estranho devido a diferentes níveis de tensão nas linhas de TX e de RX.
Explicando melhor, o equipamento a que estou a ligar envia os dados com os níveis de tensão que penso serem o standard para RS-422, -6V a +6V. Eu consigo receber esses sinais no meu computador utilizando um conversor de RS-422 para USB. O problema é que quando eu envio do meu computador dados para o equipamento os níveis de tensão utilizados pelo conversor USB para RS-422 são 0 e 5V. Por isso mesmo (espero eu) o equipamento não detecta qualquer mensagem nas linhas de recepção.
Questões:
- Já alguem experienciou este fenómeno?
- Alguma sugestão para fazer a conversão dos níveis lógicos (de preferência em modo de IC :))?
Obrigado a todos.
Cumprimentos,
João Ferreira
-
Tens que olhar à tensão diferencial no par.
Se no TX[ +] e TX[-] tiveres alternadamente [0;5V] e [5V;0V], que dão +/-5V diferenciais.
O Rx pela norma tem de ter uma sensibilidade de +/-0,2mV, pelo que não deverias ter problema
http://www.rs485.com/rs485spec.html (http://www.rs485.com/rs485spec.html).
O problema não é de outro lado?
A tua frase "equipamento a que estou a ligar envia os dados com os níveis de tensão que penso serem o standard para RS-422" deixa-me com dúvidas. O manual do equipamento ou label do porto o que diz? De certeza que acertaste na interface? Bit rate, stop, start e parity, LSB/MSB, tá tudo bem?
-
Penso que acertei nas configurações todas da porta série. Não consigo ter 100% certeza porque isto tem um bocado de reverse engineering pelo meio. :D
Portanto eu tenho uma consola de um lado ligada por RS-422 a um controlador de uma turbina eólica. A consola simplesmente apresenta as mensagens que o controlador envia no display alfanumérico e tem um teclado para enviar alguns comandos. Pelo que tive a "sniffar" é uma coisa tipo um terminal vt100. A ideia seria substituir a consola por um computador com ligação à internet de modo a poder ter acesso remoto.
Quando eu meço (colocar ponta diferencial do osciloscópio ) as linhas TX+ TX- da consola, (portanto a linhas que depois ligam aos pinos RX+ RX- do controlador) sempre que mando um comando vejo uma forma de onde (os bits) que vai de -5V a 5V. Do mesmo modo que se medir entre o TX+ e o Gnd vejo só os tais [0:5V]. O problema é que quando envio os mesmos bytes através do conversor USB - RS-422 se medir entre o TX+ e o TX- tenho [0:5V] se medir entre o TX+ e o Gnd tenho [0:2.5V].
Repara que o conversor não tem problema em ler as linhas RX+ e RX- porque o controlador envia os dados de [-5:5V] mas quando eu envio dados pelo conversor USB - RS-422 ponho nas linhas TX+ e TX- [0:5V] em vez de [-5:5V] que o controlador está à espera. Logo (suponho) que não passe o threshold e o controlador não consegue detectar mudanças na linha (bits).
Espero que dê para perceber. É um bocado difícil explicar isto por texto.
-
A ver se entendi. O TX- está sempre a 0, e o TX+ varia entre 0 e +5V?
Sinais diferenciais não devem ser medidos em relação ao GND, é fácil induzir em erro.
-
Na saída do conversor o Tx+ : GND está entre 2.5V e 5V e o TX- entre 0 e 2.5V. Logo entre o TX+ e o Tx- temos uma gama entre 0 e 5V.
Do lado do controlador temos entre o TX+ e GND 0 a 5V e entre o TX- e GND 0 e -5V.
Resultado medição entre os pares diferenciais [Tx+:Tx-]:
- Conversor: [0:5V]
- Controlador: [-5:5V]
-
Pelo que percebi, a zona de input diferencial entre -200mV e +200mV é de "transição", portanto "proibida" (http://www.ti.com/lit/an/slla070d/slla070d.pdf (http://www.ti.com/lit/an/slla070d/slla070d.pdf) figura 8 ). Ou seja com uma saída diferencial de 0 e 5V não te safas, o 0V tá mesmo no meio da zona de transição.
-
Pelo que percebi, a zona de input diferencial entre -200mV e +200mV é de "transição", portanto "proibida" (http://www.ti.com/lit/an/slla070d/slla070d.pdf (http://www.ti.com/lit/an/slla070d/slla070d.pdf) figura 8 ). Ou seja com uma saída diferencial de 0 e 5V não te safas, o 0V tá mesmo no meio da zona de transição.
Acho que é isso que está acontecer. Alguém conhece algum logic level shifter daqueles que se alimenta a uma tensão tipo 5V e consegue passar sinais de 0 a 5V para -5 a 5V. :D
-
Esse conversor deve estar marado.
Abre o mesmo e verifica qual o IC que está a fazer o drive da linha, saca datasheet e confirma se é apropriado/alimentações.
Para um sinal diferencial desses até te safavas com um simples usb-série, metes o TX+ à saída TX, e o TX- a 2.5V (ou trocados, não sei como é o mark e o space do 422). Ficavas com [-2.5V, +2.5V] que deve ser suficiente.
O RX também deve dar para fazer uma marosca.
-
Lembrei-me de outra cena: Como estás de ligações à terra? Portátil em bateria, ou a carregar e/ou desktop?
Como estás a medir o sinal diferencial? 2 pontas uma a cada sinal e fazes a diferença entre elas (a maneira correta), ou GND num sinal e ponta de medida na outra?
Muito cuidado senão podes estar a fazer passagem pela terra e ainda queimas qualquer coisa. Sinais diferenciais têm as suas manhas!
-
Se conseguires reduzir o Tx+ ... sei lá, tipo um PN em série e a seguir uma resistência à massa de forma a teres sempre aí 1mA (não sei se o driver dá isso) no PN, deve dar para abater a saída em pelo menos 0.5V (ou 2+ PNs em série), dando Tx+ entre 2V e 4.5V, aí já tens -0.5V diferencial que está fora da zona de transição quando o Tx- tá a 2.5V.
Mas que é estranho, isso é. Ou talvez não. Por exemplo no RS-232, alguns conversores antigos (baratuchos) metiam só 0 e 5V, que era a saída do chip USB -> "UART", e depois poupavam um conversor para tensões RS-232; talvez esse conversor que tens seja na mesma onda, o chip USB -> "RS-422" funca a 5V e só outputa um diferencial básico, e os gajos não meteram o conversor para tensões RS-422.
-
Assim um tiro à balda no escuro: será que não tens o Tx+ e o TX- trocados?
-
Mas que é estranho, isso é. Ou talvez não. Por exemplo no RS-232, alguns conversores antigos (baratuchos) metiam só 0 e 5V, que era a saída do chip USB -> "UART", e depois poupavam um conversor para tensões RS-232; talvez esse conversor que tens seja na mesma onda, o chip USB -> "RS-422" funca a 5V e só outputa um diferencial básico, e os gajos não meteram o conversor para tensões RS-422.
Com RS232 os níveis negativos são "obrigatórios" porque são referenciados à massa, e a sensibilidade do recetor é +/-3V, pelo que mesmo que ligues 2.5V à GND, num circuito alimentado a 5V ainda te falta 0,5V para chegares às specs, e ainda antes de meteres os VOH e VOL ao barulho.
Mas no RS422 sendo diferencial usar para o TX+ e TX- [0 ; 5V] e [5V ; 0V] desde que não desça a diferença para menos de 2V com uma carga de 100Ohm parece-me que estás completamente dentro da norma, pelo menos olhando para as specs do site que meti acima.
-
Estou a medir o TX+ e TX- com uma ponta diferencial. Isto é um contacto no TX+ e o outro no TX- não estou a olhar para o ground. Se bem que o ground está ligado entre o conversor e o outro equipamento.
Num caso mais extremo uso a linha TX GND de um conversor RS-232 que +10 -10V para enviar sinais para o equipamento e recebo na mesma pelo RX+ e RX-. Tenho de ter dois conversores um RS-232 para enviar sinais e RS-422 para receber.
-
Ok só para finalizar esta thread.
Obviamente e como sempre a culpa é do utilizador. :D
A questão do RS-422 é que pelo que o standard diz não pode ter dois equipamentos a tentar fazer o drive (enviar) de uma linha. Isto é TX+TX- liga sempre em pares RX+ e RX-. Ter dois pares TX na mesma linha levanta problemas e era o que estava acontecer. O setup que tinha era o seguinte:
CONSOLA(OEM) TX LINES: -------\
-------------------- AUTOMATO (OEM) RX LINES;
CONVERSOR TX LINES: -----------/
/------------- CONSOLA (OEM) RX LINES;
AUTOMATO (OEM) TX LINES: ---------------
\------------- CONVERSOR RX LINES;
Portanto o meu problema estava na primeira parte do sistema. Só pode haver um equipamento a tentar enviar dados para um barramento. Se for RS-485 existe um pino para meter o transceiver em modo de recepção mas no RS-422 isso não existe. Não confundir RS-422 com RS-485 a 4 fios.
Logo o que eu estava a ver no osciloscópio era o sinal do par TX do conversor somado com 5V. Como o sistema satura aos 5V e vez de ver de 0V a 10V via de 0 a 5V. Se eu desligar a consola do sistema já consigo utilizar o conversor USB para RS-422 sem problemas.
Isto é um bocado confuso mas espero que dê para perceber.