Estoy tratando de construir una "cadena de margaritas" usando varios transceptores Arduinos y MAX485. Todas las placas tienen un sensor de temperatura adjunto. Una batería de 9V alimenta todos los tableros de la cadena.
Estoy tratando de encontrar una forma de identificar la ubicación física de las diferentes placas en la cadena, por ejemplo, placaA = primera, placaD = segunda, placaB = tercera, etc.
Podría hacer esto manualmente sabiendo dónde conecto cada tablero en 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 las placas en la red, podría crear un bucle de consulta en la placa maestra para llamar a todos los nombres posibles y obtener una respuesta de las placas conectadas. Lo que busco también es una respuesta de dónde están ubicados en la red.
Estaba pensando en medir la caída de voltaje/corriente como indicador de qué tan cerca/lejos están del maestro. Sin embargo, no estoy seguro de 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 preparados para esto. No soy ingeniero electrónico, lo siento por mi conocimiento limitado.
Editar, 2018-10-14
Más aclaración; digamos que tienes el siguiente ejemplo:
Todas las tarjetas esclavas están configuradas en modo "escuchar" y esperan a ser llamadas por el maestro. El maestro ejecuta un ciclo de consulta para identificar qué esclavos están en el bus. Pregunta por 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 estoy colocando 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 los otros tableros esclavos.
¿Es esto algo similar a Maxim DS28EA00 ? Tenga en cuenta que no es solo la temperatura lo que me interesa. Uso sensores de temperatura como mi prueba de concepto. Podría usarlo para medir presión, aceleración, etc.
@Transitor En este caso, conexión en cadena = línea compartida 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 por ellos? Esto tiene la desventaja de que si una placa esclava muere, el resto de la línea también lo hace.
@stark ¿Puedes elaborar más la idea del pin digital? Tenga en cuenta que todas las tablas están separadas entre 1 y 3 metros.
@Andy alias ¿Puedes elaborar más? ¿Podría funcionar esto en topología de bus?
@TimWescott Es una topología de bus. ¿Tal vez usé mal el término cadena de margaritas? ¿Es posible hacer una verdadera conexión en cadena con RS-485?
Es una estructura de autobús. Por definición, no importa dónde se coloque físicamente cada dispositivo.
Si necesita un direccionamiento geográfico, puede probar este enfoque:
Conecte el nodo maestro en uno de los extremos del bus
Cada nodo debe tener un cable adicional (es decir, un cable de entrada y uno de salida) que va a sus nodos vecinos (un simple GPIO servirá).
Cuando ese cable tiene un estado específico (predeterminado), el nodo permanece en silencio e ignora todo el tráfico.
En el encendido, cada nodo no tiene una dirección. El maestro tira del cable extra hacia abajo (o hacia arriba) habilitando 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.
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.
El maestro envía nuevamente un comando de "establecer dirección" (que es ignorado por el nodo 1, porque ya tiene una dirección) que establece la dirección del dispositivo 2.
Enjuague y repita para todos los nodos.
¡Busque 1Wire si está interesado en medir la temperatura, con muchos sensores aquí y allá! https://www.maximintegrated.com/en/app-notes/index.mvp/id/148 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 tiene una tabla de ID físicos versus lógicos, por supuesto que 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, dicha tabla explicada se construya en el maestro.
Transistor
rígido
Andy alias
Tim Wescott
usuario76844
gabriel
gabriel
usuario76844
gabriel