¿Cómo determinar la ubicación física en una topología de bus / cadena RS-485?

0

Estoy tratando de construir una "cadena margarita" usando varios transceptores Arduinos y MAX485. Todas las tablas tienen un sensor de temperatura conectado. Una batería de 9 V suministra a todas las tablas de la cadena.

Estoy tratando de encontrar una manera de identificar la ubicación física de las diferentes placas en la cadena de margaritas, por ejemplo, boardA = primero, boardD = segundo, boardB = tercero, etc.

Podría hacer esto manualmente sabiendo dónde conecto cada placa de la línea. Sin embargo, esto es propenso a errores humanos y quiero hacerlo automáticamente. Además, me gustaría tomar tableros al azar para construir redes cuando y donde quiera.

Para identificar los tableros en la red, podría crear un bucle de consulta en el tablero maestro para llamar a todos los nombres posibles y obtener una respuesta de los tableros conectados. Lo que estoy buscando es también una respuesta de dónde están ubicados en la red.

Estaba pensando en medir la caída de voltaje / corriente como un indicador de qué tan cerca / lejos están del maestro. Sin embargo, no estoy seguro si la caída es lo suficientemente grande o si el ADC en el Arduino es lo suficientemente preciso.

Supongo que alguien ha pensado en esto antes, tal vez incluso haya chips listos para esto. No soy un ingeniero electrónico, perdón por mi conocimiento limitado.

Editar, 2018-10-14

Más aclaraciones; diga que tiene el siguiente ejemplo:

Todaslastarjetasesclavasestánconfiguradasenmodo"escuchar" y esperan que el maestro las llame. El maestro ejecuta un bucle de consulta para identificar qué esclavos hay en el bus. Solicita A, B, C, D, E, etc. Los esclavos verificarán la llamada del maestro. Para que esto funcione, tendré que asignar un nombre / dirección único en el software a cada esclavo, lo cual está totalmente bien.

Lo que quiero evitar es verificar el nombre de cada esclavo cuando los coloco en el campo. Por lo tanto, la necesidad de averiguar su posición relativa en la línea de bus con respecto al maestro y las otras placas esclavas.

¿Es esto algo similar Maxim DS28EA00 ? Tenga en cuenta que no solo me interesa la temperatura. Utilizo sensores de temperatura como prueba de concepto. Lo podría usar para medir presión, aceleración, etc.

@Transitor En este caso, la cadena margarita = línea de partido o topología de bus. No sé si puedo conectar el RS-485 en serie. Si es así, ¿podría recopilar el nombre de cada dispositivo a medida que los datos pasan a través de ellos? Esto tiene la desventaja de que si una placa esclava muere, el resto de la línea también lo hará.

Guía de diseño de TI RS-485

@stark ¿Se puede elaborar más la idea del pin digital? Tenga en cuenta que todas las tablas están separadas entre 1 y 3 metros.

@Andy aka ¿Se puede elaborar más? ¿Podría esto funcionar en topología de bus?

@TimWescott Es una topología de bus. Tal vez usé el término de la cadena de margaritas mal? ¿Es posible hacer una verdadera conexión en cadena con RS-485?

    
pregunta Gabriel

2 respuestas

1

Es una estructura de bus. Por definición, no importa dónde se coloque físicamente cada dispositivo.

Si necesita direccionamiento geográfico, puede probar este enfoque:

  1. Conecte el nodo maestro en uno de los extremos del bus

  2. Cada nodo debe tener un cable adicional (es decir, una entrada y un cable de salida) que va a sus nodos vecinos (un GPIO simple será suficiente).

  3. Cuando ese cable tiene un estado específico (predeterminado), el nodo permanece en silencio e ignora todo el tráfico.

  4. En el encendido, cada nodo no tiene una dirección. El maestro tira del cable extra bajo (o alto) permitiendo el primer nodo en el bus. Envía un comando de "establecer dirección" en el bus (que no tiene una dirección de destino); por supuesto, solo el primer nodo actúa sobre este mensaje.

  5. El maestro envía una "línea de control de habilitación" al nodo 1 (que ahora tiene una dirección), esto hace que el nodo 2 escuche el bus.

  6. El maestro envía de nuevo un comando de "establecer dirección" (que el nodo 1 ignora, porque ya tiene una dirección) que establece la dirección del dispositivo 2.

  7. Enjuague y repita para todos los nodos.

respondido por el filo
0

Busque 1Wire si está interesado en medir la temperatura, ¡con muchos sensores aquí y allá! enlace No es RS485 pero es más fácil de implementar. Y use un pequeño programa para habilitar cada nodo 1Wire uno por uno y lea su ID, luego tendrá una tabla de Id. Físicas y lógicas, por supuesto, puede hacer lo mismo con RS485, ¡pero necesitará más cables! En este caso, debe tener un pequeño circuito al lado de cada sensor para que cada vez que encienda su circuito, la tabla explicada esté integrada en el maestro.

    
respondido por el sina rahbari

Lea otras preguntas en las etiquetas