TODOPIC

FORO TÉCNICO => Foro Técnico => Mensaje iniciado por: Agustina en 20 de Marzo de 2009, 20:25:33

Título: RS485 y cable
Publicado por: Agustina en 20 de Marzo de 2009, 20:25:33
Buenas! estoy desarrollando un proyecto en el cual debo comunicar varios dispositivos en una red RS485. He podido hacer el hardware y software correctamente. Se comunican correctamente con un cable CORTO, pero cuando coloco un cable largo (mas de 15 metros) telefonico (no es trenzado, pero varios me han dicho que funciona) no puedo comunicar. No recibo NADA.

alguna sujerencia? utilizo 2 max485 de cada lado para evitar colocar una pata manejando el ENABLE del TX y RX.  Las lineas estan terminadas con una R de 120 ohms.

gracias! :g)
Título: Re: RS485 y cable
Publicado por: MLO__ en 20 de Marzo de 2009, 23:03:21
Pues, la impedanciasi que es importante debe ser de 120 ohms. Es ley que solo puede haber un solo MASTER habilitado y los demas deben estar en alta impedancia, de caso contrario no te funcionara.

No te recomiendo el cable telefonico, a grandes distancias cobra caro en el valor de la capacitancia, el estandar 485 exige el par trenzado para las lineas de transmision y un cable para GND.

Es muy recomendable ajustar bien la acometida a tierra cuando las distacias son grandes y las fuentes de poder son diferentes.

Mira este hilo: Control para un malacate - RS485 (http://www.todopic.com.ar/foros/index.php?topic=23175.0)

Saludos
Título: Re: RS485 y cable
Publicado por: dawaherjesus en 21 de Marzo de 2009, 14:50:41
como te va agustina, porque no usas cable de red utp yo estoy haciendo un proyecto muy parecido pero aun tengo muchas dudas para la transferencia de datos ya que no se programar muy bien, lo hiciste en CCS o en que? me lo pasa si no es mucha molestia gracias
Título: Re: RS485 y cable
Publicado por: Agustina en 21 de Marzo de 2009, 16:03:39
no tiene ninguna complicacion, solo uso RS232 y lo convierto a 485 con el max485. Uso CCS, solamente defino un puerto RS232 y la funcion Printf, nada mas que eso por el momento ya que esoty probando si funciona la interface.

Lo que he hecho en el hardware es colocar un max485 para TX y uno para RX, los dos habilitados permanentemente y ambos colocados sobre un mismo par de transmision, puede ser que aqui este el problema?

Tampoco estoy usando el mismo GND en el circuito TX y RX, creo que tambien podria ser ese elproblema.

chau! :g) :g)
Título: Re: RS485 y cable
Publicado por: sanpic en 21 de Marzo de 2009, 18:49:47
Hola Agustina.
He probado el ejemplo de Diego  (http://www.todopic.com.ar/foros/index.php?topic=19057.msg135398#msg135398)  , con el conversor de Todopic (http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=19057.0;attach=7529) y realmente funciona perfecto sobre cable utp categoria 5 de 300 mts a 57600 bps.

Saludos a todos.
Título: Re: RS485 y cable
Publicado por: MLO__ en 22 de Marzo de 2009, 01:31:25
Hola.

No has leido el hilo que postee.  :?

El GND debe ser el mismo en todos los circuitos, y la impedancia de la red si que se ve afectada cuando hay mas de un transmisor habilitado.

Saludos.
Título: Re: RS485 y cable
Publicado por: Agustina en 22 de Marzo de 2009, 02:19:43
si, lo lei MLO, gracias. Voy a modificar los circuitos entonces. Muchas gracias por la ayuda.

Una pregunta, puedo utilizar un solo pin como TX y luego como RX? ya que tengo solo 2 pines disponibles para la comunicacion, entonces usaria uno para controlar el MAX485 para usarlo como tx y otro para hacer la transmision o recepcion.

Gracias!
Título: Re: RS485 y cable
Publicado por: AKENAFAB en 22 de Marzo de 2009, 09:20:12
Estas usando full duplex  :-)

o por lo menos la conexion.


los receptores lo puedes dejar todos habilitados , excepto los transmisores que esos te afectaran la señal si tienes 2 ó más activados.

Saludos!
Título: Re: RS485 y cable
Publicado por: MLO__ en 22 de Marzo de 2009, 12:58:22
Una pregunta, puedo utilizar un solo pin como TX y luego como RX? ya que tengo solo 2 pines disponibles para la comunicacion, entonces usaria uno para controlar el MAX485 para usarlo como tx y otro para hacer la transmision o recepcion.

Pues de poderse se puede, solo que el hard te cambiaria mucho y en el firmware del micro se deberia definir la soft-USART de esa manera: con un solo pin para Rx y Tx. Para el RS485 se necesitan 3 pines del PIC; Tx, Rx y Enable si estas usando mas de 3 modulos.

Saludos
Título: Re: RS485 y cable
Publicado por: Agustina en 22 de Marzo de 2009, 23:31:30
La placa es una de pruebas, asique no tendria problemas en cambiarla. El soft tampoco.

Como deberia definir para utilizar el mismo pin como TX y RX?

#use rs232(baud=9600, xmit=PIN_A5, rcv=PIN_A5)

asi??

o definirlo asi:

#use rs232(baud=9600, xmit=PIN_A5)


y cuando deseo recibir, cambiar a esto:

#use rs232(baud=9600,  rcv=PIN_A5)



gracias por la ayuda! :g) :g)
Título: Re: RS485 y cable
Publicado por: MLO__ en 23 de Marzo de 2009, 00:36:39
Hola.

No que yo sepa, la vaina ahi es un poco mas compleja. Debes definir tu misma las funciones de recepcion y de transmision. Creo que es mejor usar los dos pines independientemente, a menos que tengas una restriccion en el hard, pero como tu dices son unas placas de prueba ....
Título: Re: RS485 y cable
Publicado por: MGLSOFT en 23 de Marzo de 2009, 08:40:38
La placa es una de pruebas, asique no tendria problemas en cambiarla. El soft tampoco.

Como deberia definir para utilizar el mismo pin como TX y RX?

#use rs232(baud=9600, xmit=PIN_A5, rcv=PIN_A5)

asi??

o definirlo asi:

#use rs232(baud=9600, xmit=PIN_A5)


y cuando deseo recibir, cambiar a esto:

#use rs232(baud=9600,  rcv=PIN_A5)



gracias por la ayuda! :g) :g)

Si vas a utilizar RS485, el CCS trae en su comando de comunicacion serial, en el setup, la opcion de manejar en forma automatica el pin de enable.
Solo debes definirlo asi:

Código: C++
  1. // emplea USART, luego ver RS485, velocidad inicial 9600,8,E,1
  2. #use rs232(baud=19200, PARITY=N, BITS=8, xmit=PIN_C6,rcv=PIN_C7,enable=PIN_C5,stream=Comm)

A mi me funciona de maravillas, hace mucho tiempo... :mrgreen: :mrgreen:
Título: Re: RS485 y cable
Publicado por: Agustina en 23 de Marzo de 2009, 09:56:40
el problema no es el pin del ENABLE, esto lo entiendo perfectamente. Lo que necesito es usar solo un pin para TX y RX, osea, el mismo pin para enviar como para recibir y otro para activar el enable.

Gracias por la ayuda, el problema era el TX que estaba permanentemente activado.

Algo curioso, anda con o sin el mismo GND. Si uso los cables A , B y GND anda perfectamente y si uso solo A y B tambien anda perfectamente.
Título: Re: RS485 y cable
Publicado por: MLO__ en 23 de Marzo de 2009, 10:41:50
Hola.

No te confies  :mrgreen: cuando las distacias son muy largas, se usan fuentes independientes por lo que es necesario conectar las 3 terminales: Tx, Rx y GND.
Título: Re: RS485 y cable
Publicado por: MGLSOFT en 23 de Marzo de 2009, 12:18:24
Prueba a tirar los 1600 metros de cable de la norma, colocar hasta 32 esclavos con alimentaciones diferentes y despues nos cuentas el resultado con o sin GND... :mrgreen: :mrgreen:
Título: Re: RS485 y cable
Publicado por: dawaherjesus en 23 de Marzo de 2009, 15:12:04
Disculpen alguno de ustedes me puede dar un ejemplo en CCS de lo que quiero hacer¿?

Lo que quiero hacer es esto: presionar un pulsador que esta conectado a un PIC, el PIC al recibir la señal del pulsador, manda por MAX485 una instrucción el PIC SLAVE recibe la instrucción y activa un rele

La parte del PIC SLAVE ya la tengo echa pero la del PIC MASTER no sep aun como
Título: Re: RS485 y cable
Publicado por: MGLSOFT en 23 de Marzo de 2009, 15:15:13
Revisas el estado del pulsador con Input(pin) y la comunicacion la envias o en forma ciclica aunque nada cambie (creo que es lo recomendable) o cuando el pulsador cambia de estado... :mrgreen:
Título: Re: RS485 y cable
Publicado por: AKENAFAB en 24 de Marzo de 2009, 19:28:35
Recuerdo algun circuito qu eposteron en rs485 para usar solo 2 pines , TX y RX.

ENtonces cunado cuando cambia de estado TX habilita la transmision.

mm se me ocurre esta charreria. :D

Usar un temporizador , Cuando TX del el bit de inicio (logico 0) active el temporizador que a su vez habilita TX durante X tiempo, y no interferira si TX cambia de 0-11010101-1  con su bit de inico ,8bits de datos , 1 bit de stop.

Asi que si TX pasa a 0 ya sea dato o bit de inicio , reinicia el temprizador.

espero haberme explicado .

SEguro hay otra cosa mejor.

Un Saludo!
Título: Re: RS485 y cable
Publicado por: dawaherjesus en 26 de Marzo de 2009, 00:20:01
disculpa MGLSOFT me puedes poner un ejemplo como tal si no es mucha molestia osea una parte del programa lo que es la parte del pulsador con el comienso de la trasmicion de datos porfa y de verdad disculpa la molestia
Título: Re: RS485 y cable
Publicado por: MLO__ en 26 de Marzo de 2009, 00:48:25
Podria ser asi:

Código: C#
  1. if(input(pin_a1))
  2. {
  3.  delay_ms(40);
  4.  if(input(pin_a1))
  5.  {
  6.   printf(...);//segun como tengas implementado tus comandos
  7.   while(input(pin_a1));
  8.  }
  9. }