¿Comunicación ATmega con el extensor I2C + o con el módulo Ethernet ENC28J60?

0

Quiero comunicarme entre ATmega328P µC a través de 'larga distancia'. Los ATmega µC estarán separados entre 5 y 20 m, y la longitud total de la cadena será de alrededor de 50 m, con hasta 10 ATmega en una cadena.

¿Cuál sería la mejor opción? ¿Hacer un bus I2C con los extensores de bus P82B715P o P82B96P o hacer un bus Ethernet con módulos ENC28J60?

El costo y el espacio son importantes. Todos los módulos también deben recibir alimentación a través del cable de datos.

Al principio pensé en ir a por los módulos P82B715P, conectados con el cable 4x2 Cat5e, pero después de leer muchas publicaciones de blog negativas sobre I2C de larga distancia, empecé a dudar. De ahí mi pregunta.

    
pregunta mvermand

2 respuestas

2

Si no es necesario que sea un enlace de alta velocidad, RS485 o CAN serían su mejor opción. Para RS485, los transceptores son baratos y fáciles de conectar eléctricamente, pero necesitan un poco de trabajo en el lado del protocolo para que sean confiables, mientras que los transceptores CAN son un poco más caros, pero asumen el trabajo de arbitraje de bus para usted.

Obtendría un controlador CAN que se puede conectar a ATmega a través de SPI. Asegúrese de que el / CS para el controlador tenga una resistencia de pull-up (desplegable si está activo-alto, pero no lo estará), de modo que esté inactivo mientras programa el ATmega, ya que también usa los mismos pines.

Ambos utilizan la señalización diferencial para minimizar el impacto de la interferencia, que es probable que sea grave en un cable tan largo.

Usaría un cable de cuatro hilos, con un voltaje de suministro demasiado alto (por ejemplo, 12V) y reguladores individuales de modo de conmutación en cada unidad para obtener los voltajes de suministro necesarios; de esa manera, minimiza la caída de voltaje en el cable y le da bastante espacio para que el dispositivo en el otro extremo del cable aún tenga suficiente voltaje.

    
respondido por el Simon Richter
1

Hoy en día, 10/100/1000 Mbps Ethernet NO es un motor que se puede instalar, tiene que implementar dos interfaces separadas en cada dispositivo y eso es mucho trabajo adicional en su AVR.

Sin embargo, podría usar un conmutador de 16 puertos y ejecutar un cable Etherenet separado para cada unidad. Esto te lleva a una interfaz en cada AVR.
Si usa POE, entonces podría fácilmente alimentar todas las unidades. El costo de esto es algo alto, por lo que no creo que sea una solución ideal para usted. I2C tiene una longitud máxima de cable de 10 metros, por lo que de nuevo tendría que crear múltiples interfaces que almacenan por separado las longitudes de los cables.

Quizás la mejor manera de abordar esto sería intentarlo:

  1. ESP8266 con un conector de antena coaxial externo. Estos podrían estar conectados a un cable coaxial como su cadena. La alimentación podría alimentarse a través del cable coaxial, siempre y cuando compruebe los circuitos de acoplamiento para el ESP8266. Debe acoplar cualquier resistencia de terminación y es posible que necesite perlas de ferrita en las conexiones de alimentación.

  2. Use un NRF24L01 + con un PA y un conector de antena externa. Esto funciona bien con un cable coaxial entre unidades tanto para la alimentación como para la señal (aunque no olvide acoplar las resistencias de terminación que usa).

respondido por el Jack Creasey

Lea otras preguntas en las etiquetas