collapse

* Links de Robótica

* Posts Recentes

Ideias para construir um quadrúpede simples por dropes
[Ontem às 21:03]


Ajuda com TRIAC por senso
[17 de Novembro de 2017, 18:00]


TV LG White Screen por almamater
[15 de Novembro de 2017, 08:37]


Pergunta sobre prototipagem ( Pesquisa ) por luisjustin
[14 de Novembro de 2017, 23:22]


Medir Agua que está no Poço por Njay
[14 de Novembro de 2017, 13:28]


Amplificador audio por beirao
[12 de Novembro de 2017, 23:43]


Power_OK Enermax por edeweld
[12 de Novembro de 2017, 17:15]


Driver motor por beirao
[11 de Novembro de 2017, 17:40]


Preciso de uma fonte de corrente constante ? por samc
[09 de Novembro de 2017, 14:18]


Pressoestato 0-10V por artur36
[07 de Novembro de 2017, 23:22]

Autor Tópico: Conversão de níveis lógicos  (Lida 1190 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline jmiguelff

  • Mini Robot
  • *
  • Mensagens: 204
Conversão de níveis lógicos
« 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

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.164
  • NERD!
Re: Conversão de níveis lógicos
« Responder #1 em: 19 de Outubro de 2016, 11:23 »
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.

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?





« Última modificação: 19 de Outubro de 2016, 11:25 por jm_araujo »

Offline jmiguelff

  • Mini Robot
  • *
  • Mensagens: 204
Re: Conversão de níveis lógicos
« Responder #2 em: 19 de Outubro de 2016, 11:55 »
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.   

 

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.164
  • NERD!
Re: Conversão de níveis lógicos
« Responder #3 em: 19 de Outubro de 2016, 12:42 »
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.

Offline jmiguelff

  • Mini Robot
  • *
  • Mensagens: 204
Re: Conversão de níveis lógicos
« Responder #4 em: 19 de Outubro de 2016, 13:54 »
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]

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.135
    • Tróniquices
Re: Conversão de níveis lógicos
« Responder #5 em: 19 de Outubro de 2016, 15:12 »
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 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.

Offline jmiguelff

  • Mini Robot
  • *
  • Mensagens: 204
Re: Conversão de níveis lógicos
« Responder #6 em: 19 de Outubro de 2016, 15:18 »
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 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

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.164
  • NERD!
Re: Conversão de níveis lógicos
« Responder #7 em: 19 de Outubro de 2016, 15:25 »
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.

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.164
  • NERD!
Re: Conversão de níveis lógicos
« Responder #8 em: 19 de Outubro de 2016, 16:34 »
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!

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.135
    • Tróniquices
Re: Conversão de níveis lógicos
« Responder #9 em: 19 de Outubro de 2016, 17:12 »
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.
« Última modificação: 19 de Outubro de 2016, 17:23 por Njay »

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.135
    • Tróniquices
Re: Conversão de níveis lógicos
« Responder #10 em: 19 de Outubro de 2016, 17:44 »
Assim um tiro à balda no escuro: será que não tens o Tx+ e o TX- trocados?

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.164
  • NERD!
Re: Conversão de níveis lógicos
« Responder #11 em: 19 de Outubro de 2016, 18:03 »
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.

Offline jmiguelff

  • Mini Robot
  • *
  • Mensagens: 204
Re: Conversão de níveis lógicos
« Responder #12 em: 19 de Outubro de 2016, 19:39 »
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.

Offline jmiguelff

  • Mini Robot
  • *
  • Mensagens: 204
Re: Conversão de níveis lógicos
« Responder #13 em: 24 de Outubro de 2016, 22:21 »
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.