Autor Tema: Sugerencia para comunicación entre microcontroladores.  (Leído 2633 veces)

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

Desconectado DominusDRR

  • PIC18
  • ****
  • Mensajes: 296
    • Solintece
Sugerencia para comunicación entre microcontroladores.
« en: 11 de Noviembre de 2015, 17:14:59 »
Saludos.

Tenemos en mente un proyecto el cual consiste en varias tarjetas electrónicas similares y una principal.

Es decir por decirlo así 4 PCBs “esclavos” y una principal o master.

Cada PCB tiene un microcontrolador.

La idea es que la tarjeta principal, envía órdenes hacia las tarjetas esclavo.

Nuestra intención es que dicha comunicación es mediante cables eléctricos con una longitud máxima de 30 cm.

El primer tipo de comunicación que se me viene a la mente es utilizar RS485, de esa manera mediante un solo bus de datos se comunican los microcontroladores.

La segunda idea es utilizar SPI. Tengo entendido que este tipo de comunicación es útil a cortas distancias entre los dispositivos y que están en el mismo PCB.

Mis preguntas son:

¿Alguien ha utilizado la comunicación SPI mediante cables eléctricos a poca distancia con buenos resultados?

¿Alguna otra idea o sugerencia?

Gracias

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2187
Re:Sugerencia para comunicación entre microcontroladores.
« Respuesta #1 en: 11 de Noviembre de 2015, 17:45:52 »
Si la comunicación es en anillo no te recomiendo ni SPI ni I2C. Yo usaría CAN.

Saludos!
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado DominusDRR

  • PIC18
  • ****
  • Mensajes: 296
    • Solintece
Re:Sugerencia para comunicación entre microcontroladores.
« Respuesta #2 en: 11 de Noviembre de 2015, 17:49:30 »
Si la comunicación es en anillo no te recomiendo ni SPI ni I2C. Yo usaría CAN.

Saludos!

También se debe considerar lo más económico. Pienso yo que CAN sería de mayor costo, seguido de R485 y finalmente SPI.

Además CAN no es algo común en todos los microcontroladores, es decir tendría que usar micros que posean dicho tipo de comunicación.
« Última modificación: 11 de Noviembre de 2015, 17:51:42 por DominusDRR »

Desconectado DominusDRR

  • PIC18
  • ****
  • Mensajes: 296
    • Solintece
Re:Sugerencia para comunicación entre microcontroladores.
« Respuesta #3 en: 11 de Noviembre de 2015, 18:09:21 »
Encontré un artículo interesante:

http://www.ti.com/lit/an/slyt441/slyt441.pdf

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re:Sugerencia para comunicación entre microcontroladores.
« Respuesta #4 en: 11 de Noviembre de 2015, 18:27:34 »
SPI es para usarlo en la misma placa, si lo quieres usar a distancia deberias unir las masas y alimentaciones, vamos que al final te juntas con demasiados cables. Lo ideal para lo que quieres es RS485. El SPI le afectara cualquier fuente de ruido y no funcionara bien.

Desconectado DominusDRR

  • PIC18
  • ****
  • Mensajes: 296
    • Solintece
Re:Sugerencia para comunicación entre microcontroladores.
« Respuesta #5 en: 11 de Noviembre de 2015, 18:30:51 »
SPI es para usarlo en la misma placa, si lo quieres usar a distancia deberias unir las masas y alimentaciones, vamos que al final te juntas con demasiados cables. Lo ideal para lo que quieres es RS485. El SPI le afectara cualquier fuente de ruido y no funcionara bien.

Como mencioné antes, no es en la misma placa, es con cables y me parece una buena idea utilizar el SN65C1167 de TI.

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2187
Re:Sugerencia para comunicación entre microcontroladores.
« Respuesta #6 en: 11 de Noviembre de 2015, 18:36:05 »
CAN llevan muchos pics y el transcreiver no es nada caro....
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado DominusDRR

  • PIC18
  • ****
  • Mensajes: 296
    • Solintece
Re:Sugerencia para comunicación entre microcontroladores.
« Respuesta #7 en: 11 de Noviembre de 2015, 18:36:42 »
Lo ideal para lo que quieres es RS485. El SPI le afectara cualquier fuente de ruido y no funcionara bien.

Creo que tienes razón, RS485 es lo mejor.

Desconectado DominusDRR

  • PIC18
  • ****
  • Mensajes: 296
    • Solintece
Re:Sugerencia para comunicación entre microcontroladores.
« Respuesta #8 en: 11 de Noviembre de 2015, 18:38:56 »
CAN llevan muchos pics y el transcreiver no es nada caro....

Los PICs que estamos pensamos utilizar no tienen CAN, como mencioné antes, creo RS485 es la mejor opción para no complicarme con los cables como sugiere MerLiNz.


Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5598
    • Picuino
Re:Sugerencia para comunicación entre microcontroladores.
« Respuesta #9 en: 11 de Noviembre de 2015, 20:15:39 »
¿Qué problema tiene el I2C?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8122
Re:Sugerencia para comunicación entre microcontroladores.
« Respuesta #10 en: 11 de Noviembre de 2015, 20:26:56 »
Yo estoy entre I2C y RS485.

CAN es tambien una opcion pero si no posee micros con CAN ya se vuelve algo menos viable, y por solo 30cm ... Tambien hay que ver el ruido.
I2C ya posee una forma de direccionar los datos, mientras que RS485 vas a tener que implementar el protocolo.

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2901
Re:Sugerencia para comunicación entre microcontroladores.
« Respuesta #11 en: 11 de Noviembre de 2015, 21:04:09 »
Yo, claramente, si se quieren hacer las cosas bien para esta aplicación bus can, muy robusto y es para una distancia no muy corta, ni muy larga. En mi opinión es claramente el mejor bus para este caso, además hay pic18 con can, no es nada inusual.

Si fuera mas larga rs485, y si fuera en el mismo hardware o mediante conector directo, i2c.

Con lo dicho anteriormente, que no se quiere can,  con el rs485 habría que desarrollar el protocolo, además de mas hardware,... entre el spi y en i2c me quedo con i2c con el spi tienes que tirar mas cables. Con I2C maximo 4 cables ,si además llevas el positivo, cosa que es mas que recomendable ya que hay que polarizar el bus y si no llevas el positivo debes polarizarlo en todas la placas y si es asi, contando la distancia y la poca diferencia entre referencias de tensión en las masas que exista, sumado a la tolerancia de los reguladores de cada placa, puede dar lugar a ruido.
« Última modificación: 11 de Noviembre de 2015, 21:07:29 por juaperser1 »
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado DominusDRR

  • PIC18
  • ****
  • Mensajes: 296
    • Solintece
Re:Sugerencia para comunicación entre microcontroladores.
« Respuesta #12 en: 11 de Noviembre de 2015, 21:36:01 »
¿Qué problema tiene el I2C?
El no poseer señal de reloj y la baja velocidad hace que sea menos confiable, creo yo.

Desconectado DominusDRR

  • PIC18
  • ****
  • Mensajes: 296
    • Solintece
Re:Sugerencia para comunicación entre microcontroladores.
« Respuesta #13 en: 11 de Noviembre de 2015, 21:40:52 »
Para mi, realizar un protocolo de comunicación no es problema alguno. Respecto a la I2C, es más simple y sencilla a nivel de hardware, pero me parece que es menos confiable y no tan eficaz frente al ruido.

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2901
Re:Sugerencia para comunicación entre microcontroladores.
« Respuesta #14 en: 11 de Noviembre de 2015, 21:51:58 »
¿Qué problema tiene el I2C?
El no poseer señal de reloj y la baja velocidad hace que sea menos confiable, creo yo.

La señal scl es la del reloj, también mientras mas baja sea la velocidad mejor para evitar fallos. Depende de la velocidad que necesites utiliza siempre la mas baja que te permita tu aplicación, es como el uso de la frecuencia, utiliza la menor para tu aplicación, así tu micro no trabaja en valde y metes menos ruido por la mas alta frecuencia de funcionamiento a otras partes del hardware

El spi es mas robusto pero por cada periférico tienes que lanzar un cable mas, con i2c 4 cables y tienes 255 dispositivos,  en esta aplicación no creo que notes la diferencia entre spi o i2c en tema de errores.

Si no te preocupa el cableado y van a ir conectados todos a una placa central, usa spi, si quieres un bus que se pueda conectar en estrella o en triangulo ( me refiero conectar todos a uno central o poder conectarlos  entre ellos) usa i2c.
« Última modificación: 11 de Noviembre de 2015, 21:54:54 por juaperser1 »
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw