Autor Tema: Red rs485 para muchos esclavos  (Leído 8490 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado fonsecapia

  • PIC10
  • *
  • Mensajes: 1
Red rs485 para muchos esclavos
« en: 22 de Marzo de 2011, 15:33:07 »
Hola, que tal:

Estoy haciendo un pequeño proyecto, donde es importante adquirir datos de varios PICs. Necesito hacer una red, donde 1 maestro toma la informacion de varios esclavos, 1 a la vez, pero no se como hacerlo. Intente i2c, pero no me funciona. Me comentaron que por medio de rs485 se puede hacer. Podrían ayudarme?

Desconectado Chipcon

  • PIC12
  • **
  • Mensajes: 63
Re: Red rs485 para muchos esclavos
« Respuesta #1 en: 23 de Marzo de 2011, 12:34:09 »
Que tal fonseca claro que se puede mediante RS485 y la UART de tu micro puedes utilizar el transceiver SN75176 y también checa en la pagina de www.ti.com puedes bajar notas de aplicación sobre el bus RS485 lo que te dejara mas claro como utilizarlo saludos.

Desconectado wannaky

  • PIC12
  • **
  • Mensajes: 92
Re: Red rs485 para muchos esclavos
« Respuesta #2 en: 11 de Mayo de 2011, 06:57:45 »
Hola, que tal:

Estoy haciendo un pequeño proyecto, donde es importante adquirir datos de varios PICs. Necesito hacer una red, donde 1 maestro toma la informacion de varios esclavos, 1 a la vez, pero no se como hacerlo. Intente i2c, pero no me funciona. Me comentaron que por medio de rs485 se puede hacer. Podrían ayudarme?

hola fonsecapia, si que se puede hacer, yo ahora estoy haciendo una entre varios esclavos, un master y un PC mediante RS-485.
Como lo llevas?!?!?! Que es lo que necesitas?!?!?!

La conexión es muy sencilla mediante MAX485 o como dice Chipon con el SN75176. Has de poner unas resistencias al final del cable de 120 ohms.

Piensa que el que ha de iniciar la comunicación siempre es el maestro, y el esclavo solo puede contestar, de esta forma tendrás controlado que dos dispositivos no puedan enviar datos a la vez.

Yo me he hecho (con la ayuda del foro...  :lol: :lol: :lol: ) un protocolo que mas o menos me va bien...

saludos...

Desconectado javierdavid2006

  • PIC10
  • *
  • Mensajes: 15
Re: Red rs485 para muchos esclavos
« Respuesta #3 en: 23 de Junio de 2011, 12:50:58 »
Hola, tengo un gran problema que no se que puede ser. Paso a explicarlo

Tengo que hacer para la universidad 5 modulos (puerta) que leen tarjetas RFID y que se encuentran comunicados via rs485, la comunicacion es bidirecional, de los modulos a una computadora, en un sentido los modulos envian el codigo de la tarjeta que pasan los profesores para abrir las puertas a la computadora, y en el otro la computadora envia informacion para hacer que cada modulo me envie la letra "X" y asi probar comunicacion a los modulos (como hacer un ping), tambien enviar los horarios de clases, nombre de los profesores, fecha y hora a los modulos y estos se mantengan actualizados, por si las dudas para grabar toda esta informacion, lo hago a traves de pendrives que tiene cada modulo puerta.

Especifico tambien que tengo un sn75176 (rs485) conectado a un 16f877a (modulo base) para que maneje los pines de control del sn75176, y asi controlar la transmision y recepcion, y este pic es simplemente un espejo de lo que manda la computadora.

El problema es:

Tengo 1 modulo puerta armado y el modulo con el sn75176 armado en la misma proto, y me funcionan bien con un solo modulo, pero si le pongo otro modulo que lo tengo armado en otra proto con otra fuente de voltaje en paralelo, ya no me prestan atencion los pic a la computadora pero los numeros que le mando le llegan y solo envian el numero de la tarjeta y solo 1 modulo, el otro ya no pasa la informacion a traves de sn75176.

Cabe recalcar que le puse una resistencia de 120ohm como dice arriba y no funciono para nada, para que funcione unidirecionalmente tiene 2 resistencias de 1Kohm alos pines Ra y Rb del sn75176.

Si tienen alguna duda, me preguntan numas.

David Nunez M

Desconectado Cody_higlander

  • PIC10
  • *
  • Mensajes: 1
Re: Red rs485 para muchos esclavos
« Respuesta #4 en: 18 de Agosto de 2011, 11:40:20 »
Tengo un problema.
No funciona¡¡¡¡

RS485 con varios esclavos.. 2 en este ejemplo:

MASTER:
program RS485_MASTER
dim dat as byte[20]
dim rs485_rxtx_pin  as sbit at RC5_bit
dim rs485_rxtx_pin_direction as sbit at TRISC5_bit

sub procedure interrupt()
  GIE_bit = 0
  RS485Master_Receive(dat)

  if dat[6] = 3 then
     PORTD = dat[0]
  end if
  if dat[6] = 2 then
     PORTB = dat[0]
  end if
  RCIF_bit = 0
  GIE_bit = 1
end sub


main:
CMCON = 7
ADCON1 = 7
TRISB  = 0
PORTB  = 0
TRISD  = 0
PORTD  = 0
UART1_Init(9600)                 
delay_ms(100)
RS485Master_Init()

RCIE_bit = 1
TXIE_bit = 0
PEIE_bit = 1
GIE_bit = 1
Delay_ms(1)


while TRUE
dat[0] = 0x01
dat[1] = 0x00
dat[2] = 0x00
dat[4] = 0
dat[5] = 0
dat[6] = 0
RS485Master_Send(dat,3,2)
Delay_ms(100)
dat[0] = 0x02
dat[1] = 0x00
dat[2] = 0x00
dat[4] = 0
dat[5] = 0
dat[6] = 0
RS485Master_Send(dat,3,3)
PORTD.6 = not portd.6
wend
end.



1er ESCLAVO:

program RS485_SLAVE_01
dim dat as byte[20]
dim valor as byte[5]
dim rs485_rxtx_pin as sbit at RC2_bit
dim rs485_rxtx_pin_direction as sbit at TRISC2_bit

sub procedure interrupt()
  RS485Slave_Receive(dat)
end sub

main:
CMCON = 7
ADCON1 = 7
UART1_Init(9600)
Delay_ms(100)
TRISB = 255
RS485Slave_Init(2)
RCIE_bit = 1
TXIE_bit = 0
PEIE_bit = 1
GIE_bit = 1

while true
   if dat[0] = 1 then
     dat[0] = 0
     valor[0] = PORTB
     RS485Slave_Send(valor, 1)
   end if
wend
end.


2do Esclavo:

program RS485_SLAVE_02

dim dat as byte[20]
dim valor as byte[3]
dim rs485_rxtx_pin as sbit at RC2_bit
dim rs485_rxtx_pin_direction as sbit at TRISC2_bit

sub procedure interrupt()
  RS485Slave_Receive(dat)
end sub

main:
CMCON = 7
ADCON1 = 7
UART1_Init(9600)
Delay_ms(100)
TRISB = 255
TRISD = 0
RS485Slave_Init(3)
RCIE_bit = 1
TXIE_bit = 0
PEIE_bit = 1
GIE_bit = 1

while true
  if dat[0] = 2 then
     dat[0] = 0
     PORTD.0 = not PORTD.0
     valor[0] = PORTB
     RS485Slave_Send(valor, 1)
  end if
wend
end.


Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Red rs485 para muchos esclavos
« Respuesta #5 en: 04 de Septiembre de 2011, 13:15:47 »
el rs485 se utiliza mediante el rs232 de un pic por ejemplo, lo unico que hace el rs485 es adaptar los voltajes en modo diferencial para evitar que los ruidos distorsionen los datos.

Para usar el rs485 unicamente debes activar el modo envio o recepcion (mediante los pines del max485) y entonces enviar o recibir, es importante que todos esten en modo recepcion, para que cuando el maestro envie un dato, los esclavos los reciban, y ahora mediante una direccion decir a que esclavo le quiere pedir informacion. Una vez el maestro envia, se pone en modo escucha, el esclavo se pone en modo envio y este envia los datos al maestro.

Con este procedimiento no tendras ningun problema, ya que no tendras problemas de colisiones.

Exactamente no se que hacen las funciones rs485 que pones en el codigo, por eso es algo dificil ayudarte.

Desconectado darezca

  • PIC10
  • *
  • Mensajes: 1
Re: Red rs485 para muchos esclavos
« Respuesta #6 en: 20 de Mayo de 2014, 01:20:31 »
el rs485 se utiliza mediante el rs232 de un pic por ejemplo, lo unico que hace el rs485 es adaptar los voltajes en modo diferencial para evitar que los ruidos distorsionen los datos.

Para usar el rs485 unicamente debes activar el modo envio o recepcion (mediante los pines del max485) y entonces enviar o recibir, es importante que todos esten en modo recepcion, para que cuando el maestro envie un dato, los esclavos los reciban, y ahora mediante una direccion decir a que esclavo le quiere pedir informacion. Una vez el maestro envia, se pone en modo escucha, el esclavo se pone en modo envio y este envia los datos al maestro.

Con este procedimiento no tendras ningun problema, ya que no tendras problemas de colisiones.

Exactamente no se que hacen las funciones rs485 que pones en el codigo, por eso es algo dificil ayudarte.


Amigo perdon la pregunta
existe algún limite en el numero de dispositivos ?
es decir si tengo los 2 cables d comunicación TX yRX
podría conectar un numero X de integrados ?
por ejemplo 1 pic maestro y 100 esclavos   

no he logrado conectar mas de 10 dispositivos :( de alguna forma dejan de funcionar ....

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4919
Re: Red rs485 para muchos esclavos
« Respuesta #7 en: 20 de Mayo de 2014, 01:50:46 »
100 Esclavo, claro que se puede, pero debe tener muy en cuenta que los micro o pics , tenga las el mismo BAUDRATE, seria mejor usar cristal externo y con 0% de errores, usando esclavos a larga distancia, es recomendable poner un TERMINATOR. osea una resistencia de 120 OHM al ultimos esclavo, eso es para compensar las impedancia del BUS y evitar ruido, ojos el Cable para muchos esclavos debe ser de buenas calidad.

Saludos

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Red rs485 para muchos esclavos
« Respuesta #8 en: 20 de Mayo de 2014, 06:47:30 »
El numero maximo depende del transceptor.

Lo normal es 32 maximo, pero hay algunos que soportan hasta 128.

Mirate esto:
http://datasheets.maximintegrated.com/en/ds/MAX1487-MAX491.pdf

En el pie de la primera pagina te viene un recuadro con las caracteristicas, ahi puedes ver el numero maximo de receptores. En este caso necesitarias el max487 para 128 receptores