29-06-2015, 12:27
En otro foro me han preguntado por el uso concreto que le he dado a los cinco Arduinos. Creo que la respuesta, que he dado allí, puede ser también útil para mis compañeros de aquí, así que copio y pego.
Los dos Arduinos MEGA256, que tienen más pines de entrada/salida se encargarán de gestionar las dos estaciones ocultas de tres vías de la siguiente forma.
Cuando un tren entra en una vía dispara un sensor HALL que pone dentro del Arduino un indicador de vía ocupada y enciende un LED piloto en el panel de mando. Luego espera un tiempo aleatorio para evitar la salida del tren en forma inmediata del próximo tren que elige entre una vía que tenga las siguientes condiciones: No estar inhabilitada por una llave en el panel de mando y estar ocupada por un tren. Hace un barrido de cada una de las vías empezando por la siguiente a la recién ocupada y terminando en esta misma si no hay ninguna otra ocupada. Esto permite operar con todas las vías, quitar alguna/s si no nos interesa tener tantos trenes circulando o tener una reservada a la que le daremos salida cuando nos convenga. Esto lo obtenemos con las llaves y pulsadores que cada una de las vías tiene en el panel de mando.
Una vez seleccionada la vía pone la señal correspondiente en verde y espera unos segundos antes de dar tensión al tramo aislado de la vía. Esto es así por dos motivos, primero por el hecho de que resulta más realista que el tren arranque unos segundos después de encenderse la señal de paso y no en forma simultánea con esta. Segundo, que aunque es una estación oculta en la que no se ve la señal el programa sirve igual para las estaciones a la vista. Una vez que el tren arranca también espera unos segundos para poner la señal a rojo y luego de otra pequeña espera quita el indicador de vía ocupada. También manda el estado de la señal a un LED bicolor testigo en el panel de mando.
Una vez la vía liberada modifica la posición de los desvíos para que sea esta la próxima vía de entrada.
Además del disparo de los sensores HALL admite otro, de un pulsador puesto en cada vía en el panel de mando, con el cual podemos liberar directamente un tren en caso de tenerlo en una vía reservada. Con esto podemos gestionar la estación a nuestro gusto, automática, semiautomática o manualmente.
Los dos Arduinos UNOR3 más pequeños en la cantidad de entradas/salidas hacen exactamente lo mismo pero con cada una de las dos estaciones a la vista que tienen sólo dos vías. En estas estaciones las demoras introducidas entre las diversas acciones tienen mucho más protagonismo para dar una mayor realidad.
El quinto de los Arduinos también es una MEGA256 y se encarga de la gestión de los cantones de la siguiente forma.
Cada cantón tiene al final un tramo aislado y la señal correspondiente que protege la entrada al siguiente cantón. A su vez cada cantón tiene a al principio un sensor HALL para detectar la entrada de un tren en el mismo.
Cuando se detecta la entrada de un tren en un cantón se pone en el Arduino un indicador de cantón ocupado y se enciende un LED testigo en el panel de mando. Al mismo tiempo se pone la señal precedente en rojo y quita la tensión al tramo aislado correspondiente. Se espera un tiempo prudencial para permitir que todo el tren abandone el cantón anterior y se pone la señal en verde del cantón dos veces más atrás. La secuencia de demoras entre la señal en verde y el arranque del tren es igual que para las estaciones. Esto ocurre en los cuatro cantones.
A su vez hay unos mandos generales para la gestión de todo el circuito de cantones. Un interruptor elimina los disparos de los HALL de loc cuatro cantones. Un pulsador pone a rojo y quita la tensión de también los cuatro cantones a la vez. Por último, otro botón hace la inversa de poner todo a verde. Por otra parte cada cantón tiene un pulsador que libera el tren detenido en el mismo. El juego de estos tres mandos generales más los pulsadores individuales permite varias cosas. Por ejemplo la más sencilla. Poder correr una composición sola como si no existieran los cantones. Otra, facilitar el poner en posición los tres trenes desde un sitio central sin que se disparen situaciones indeseadas al principio. Otra, frenar todos los trenes si queremos hacer una maniobra que invada la vía principal en una de las estaciones vistas.
El manejo de los desvíos, las señales y la corriente de tracción se manejan a través de relés. Estos los he utilizado de los disponibles dentro de componentes compatibles con Arduino y que pueden ser utilizados como biestables o no. Los sensores HALL también son componentes compatibles con Arduino.
Una consideración. Es probable que todo esto se pueda hacer con menos Arduinos explotando sus posibilidades a un nivel que yo desconozco. También, obviamente, es posible que se pueda hacer mejor. Espero que sea de utilidad y agradezco todos los comentarios que me permitan mejorar los programas.
Recordar que la programación que corre en los Arduinos puede ser modificada en cualquier momento para corregir errores, mejorarla o incorporar nuevas funcionalidades que ahora no se nos ocurren.
Juanma
Los dos Arduinos MEGA256, que tienen más pines de entrada/salida se encargarán de gestionar las dos estaciones ocultas de tres vías de la siguiente forma.
Cuando un tren entra en una vía dispara un sensor HALL que pone dentro del Arduino un indicador de vía ocupada y enciende un LED piloto en el panel de mando. Luego espera un tiempo aleatorio para evitar la salida del tren en forma inmediata del próximo tren que elige entre una vía que tenga las siguientes condiciones: No estar inhabilitada por una llave en el panel de mando y estar ocupada por un tren. Hace un barrido de cada una de las vías empezando por la siguiente a la recién ocupada y terminando en esta misma si no hay ninguna otra ocupada. Esto permite operar con todas las vías, quitar alguna/s si no nos interesa tener tantos trenes circulando o tener una reservada a la que le daremos salida cuando nos convenga. Esto lo obtenemos con las llaves y pulsadores que cada una de las vías tiene en el panel de mando.
Una vez seleccionada la vía pone la señal correspondiente en verde y espera unos segundos antes de dar tensión al tramo aislado de la vía. Esto es así por dos motivos, primero por el hecho de que resulta más realista que el tren arranque unos segundos después de encenderse la señal de paso y no en forma simultánea con esta. Segundo, que aunque es una estación oculta en la que no se ve la señal el programa sirve igual para las estaciones a la vista. Una vez que el tren arranca también espera unos segundos para poner la señal a rojo y luego de otra pequeña espera quita el indicador de vía ocupada. También manda el estado de la señal a un LED bicolor testigo en el panel de mando.
Una vez la vía liberada modifica la posición de los desvíos para que sea esta la próxima vía de entrada.
Además del disparo de los sensores HALL admite otro, de un pulsador puesto en cada vía en el panel de mando, con el cual podemos liberar directamente un tren en caso de tenerlo en una vía reservada. Con esto podemos gestionar la estación a nuestro gusto, automática, semiautomática o manualmente.
Los dos Arduinos UNOR3 más pequeños en la cantidad de entradas/salidas hacen exactamente lo mismo pero con cada una de las dos estaciones a la vista que tienen sólo dos vías. En estas estaciones las demoras introducidas entre las diversas acciones tienen mucho más protagonismo para dar una mayor realidad.
El quinto de los Arduinos también es una MEGA256 y se encarga de la gestión de los cantones de la siguiente forma.
Cada cantón tiene al final un tramo aislado y la señal correspondiente que protege la entrada al siguiente cantón. A su vez cada cantón tiene a al principio un sensor HALL para detectar la entrada de un tren en el mismo.
Cuando se detecta la entrada de un tren en un cantón se pone en el Arduino un indicador de cantón ocupado y se enciende un LED testigo en el panel de mando. Al mismo tiempo se pone la señal precedente en rojo y quita la tensión al tramo aislado correspondiente. Se espera un tiempo prudencial para permitir que todo el tren abandone el cantón anterior y se pone la señal en verde del cantón dos veces más atrás. La secuencia de demoras entre la señal en verde y el arranque del tren es igual que para las estaciones. Esto ocurre en los cuatro cantones.
A su vez hay unos mandos generales para la gestión de todo el circuito de cantones. Un interruptor elimina los disparos de los HALL de loc cuatro cantones. Un pulsador pone a rojo y quita la tensión de también los cuatro cantones a la vez. Por último, otro botón hace la inversa de poner todo a verde. Por otra parte cada cantón tiene un pulsador que libera el tren detenido en el mismo. El juego de estos tres mandos generales más los pulsadores individuales permite varias cosas. Por ejemplo la más sencilla. Poder correr una composición sola como si no existieran los cantones. Otra, facilitar el poner en posición los tres trenes desde un sitio central sin que se disparen situaciones indeseadas al principio. Otra, frenar todos los trenes si queremos hacer una maniobra que invada la vía principal en una de las estaciones vistas.
El manejo de los desvíos, las señales y la corriente de tracción se manejan a través de relés. Estos los he utilizado de los disponibles dentro de componentes compatibles con Arduino y que pueden ser utilizados como biestables o no. Los sensores HALL también son componentes compatibles con Arduino.
Una consideración. Es probable que todo esto se pueda hacer con menos Arduinos explotando sus posibilidades a un nivel que yo desconozco. También, obviamente, es posible que se pueda hacer mejor. Espero que sea de utilidad y agradezco todos los comentarios que me permitan mejorar los programas.
Recordar que la programación que corre en los Arduinos puede ser modificada en cualquier momento para corregir errores, mejorarla o incorporar nuevas funcionalidades que ahora no se nos ocurren.
Juanma