- MOTIVACIONES
Una de mis primeras aficiones fue la de jugar con trenes a escala que aunque no siempre la he practicado
siempre a estado hay, debido a que hace ya algunos años me oriente profesionalmente a el desarrollo de sistemas electronicos
y especialmente al trabajar en el Instituto de Magnetismo Aplicado "Salvador Velayos" desarrollando diversos sistemas para el
mundo ferroviario se me volvio a despertar el interes por los trenes y poco a poco fui retomando el hobby de los trenes, pero
con la particularidad de compartirla con mi gran pasion por el desarrollo de sistemas electronicos.
Por lo que este proyecto me permite disfrutar de ambas aficiones al mismo tiempo.
El proyecto esta dividido en varias partes, por un lado hay un software en el PC que es el tratado en este apartado, por otro
lado y tratado en otros apartados hay hardware de control, de potencia y un firmware que lleva el control de toda la electrónica.
Con todo esto consigo crear un sistema de gestion de maquetas ferroviarias a escala.
- PLANTEAMIENTO DEL PROYECTO
El proyecto presenta varios retos bien diferenciados ya que me he impuesto que mi sistema sea
compatible con los sistemas comerciales y que además disponga de una cierta calidad para en un futuro poder compartir
con otros aficionados.
- Estándar DCC. Para poder usar este software con otros
software o hardware comerciales
uso este estándar que define los protocolos que debe de tener para poder comunicarse con los decoders instalados
en la vía, como son los instalados en locomotoras o accesorios como
desvíos, semáforos etc.
- Interfaz grafico de usuario. Esta parte del programa se encarga de visualizar el
estado de la maqueta, las locomotoras, semáforos, desvíos, etc.
Además de dispone de los mandos necesarios para que el usuario
pueda configurar todos los parámetros de control que requiera la maqueta.
- Para organizar y gestionar todos los recursos de los que dispone el software se usa un
modelo de programación adecuado y además que se ofrezca a un fácil mantenimiento.
- OBJETIVOS
Los objetivos que me propongo en este proyecto no son solo son los concernientes a su
implementación sino también a otros como son el estudio de normativas:
- Estudio del estándar DCC.
- Diseño del programa con Visual Basic. La
decisión de usar VB es que es un entorno de
programación orientado a la programación de interfaces de usuario.
- Estudio de sistemas de
localización de trenes. Para que el software pueda
ubicar trenes en la maqueta debe de definirse algún sistema, esto da como resultado el uso de sensores
ópticos que realizan la función de balizas.
- Comunicación con hardware. El software que corre en el PC se comunica con el hardware diseñado a
través de un puerto serie, intercambiando información en ambas direcciones.
- DESARROLLO DEL PROYECTO
En primer, lo primero que hago es documentarme sobre el
estándar DCC, ya que es la parte que me
va ha permitir poder usar este software con decoders comerciales. Una vez dispongo de los conocimientos
necesarios
paso a hacer las primeras pruebas del software para que envíe datos al modulo de control, este modulo es el que energiza
la via con la señal que manda el software.
Cuando ya consigo controlar los trenes desde el software, se amplia el software para que contenga las funciones mas importantes
como son selección de locomotora (decoder), maniobras de las locomotoras (sentido, velocidad,
etc.).
Después, paso a implementar la parte de localización de los trenes en la
vía, para ello uso otro proyecto llamado "Gestor de
balizas" que entrega a el modulo de control el estado de las balizas, este modulo
envía al software que he diseñado el estado
de las balizas (o sensores) que indican cuando pasa un tren sobre ellas.
Llegado a este punto, puedo controlar trenes desde el PC y
además saber cual es la posición en la maqueta de cada tren. En este
punto se amplia el software con varias funciones como por ejemplo control de
desvíos, control automático de trenes, etc.
- IMÁGENES DEL PROYECTO
Panel de control de las locomotoras
Esta imagen muestra el panel del control con el que se pueden configurar y conducir locomotoras. Dispone de accesos
rápidos a
todo los controles del interfaz, pudiendo seleccionar la locomotora a controlar, el sentido de
conducción, la velocidad, las luces de la locomotora,
el freno de emergencia de la loco o el general de la maqueta entre otros.
También, esta pantalla nos da información sobre el estado
de la locomotora seleccionada como es si esta parada o en marcha, si esta en
conducción manual o automática, la velocidad actual, etc.
Panel central de la maqueta
Este es el panel que representa mi maqueta, desde el, visualizo todos los recursos de los que dispone, como son las estaciones
con sus andes, semáforos, desvíos, balizas, etc. Esta primera
versión de panel, visualiza el estado de las balizas, es decir, al pasar una locomotora por encima
de ellas, estas se vuelven de color morado.
2º version del panel central de la maqueta
Pues poquito a poquito en ratos libres voy ampliando la funcionalidad, en esta segunda version han sido varias cosas;
- He habilitado el control de los semaforos, asi puedo visualizar el estado en el que esta (rojo o verde) y ademas pulsando sobre el semaforo
deseado lo conmuto de color.
- Control de los desvios y visulizacion, al igual que los semaforos, tambien visualizo el estado en el que esta el desvio y ademas pulsando sobre
el mismo lo puedo cambiar.
Ventana de configuración de las locomotoras
Desde el menú principal que esta en el panel de control de locomotoras se puede
acceder a esta ventana donde se puede
configurar determinados parámetros de cada locomotora como son
- Imagen de la locomotora
- Nombre de la locomotora
- El tipo de servicio para el que se configura la locomotora
- El lugar de la maqueta donde esta situada la locomotora, como nota aclaratoria de este
parámetro, es usado para que la inteligencia
que gestiona la maqueta sea capaz de administrar los recursos (desvíos,
semáforos, cantones, etc.) para que tanto en modo de
conducción manual o en
automático la locomotora llegue al destino de una ruta.
- Numero de decorrer asignado a la locomotora. Es el numero que tiene asignado el decodificador que lleva la locomotora en su
interior y es único.
- Toda esta configuración es guarda en un fichero y puede ser usada cada vez que se inicia una nueva
sesión de juego.
Imagen de como se visualiza el interfaz completo en la pantalla
Podeis observa como se ven los dos interfaces de control en la pantalla. Un interfaz sirve para conducir locomotoras y el otro para
ir visualizando y controlando el estado de la maqueta.
Videos de ejemplo
Para que veáis como se maneja este software, he subido algunos videos en GIF.
- CONCLUSIONES
Aunque todavía es muy pronto para hablar de conclusiones, ya que esta
todavía en una fase inicial de desarrollo puedo llegar a unas conclusiones:
-
El cumplimiento de los estándares o normativas existentes permiten a este software a
través de un hardware de diseño especifico, poder manejar diversos
decodificadores de distintos fabricantes, esto era al inicio del proyecto uno de mis mas importantes objetivos.
-
Este software esta basado en el diseño modular y en el uso de
autómatas de estado, asi con estas técnicas me facilito la
depuración del código y la
ampliación del código con nuevas funciones.
-
- LÍNEAS FUTURAS
Puesto que este proyecto es un diseño a medida, es decir, lo hago a mi gusto,
podré ir ampliándolo tal como vaya viendo nuevas necesidades, algunas de
ellas podían ser las siguientes.
-
Ampliación de código con nuevas funciones, como por ejemplo la
gestión de rutas, etc. Este tipo de ampliaciones daría mas juego a la maqueta
pudiendo así automatizarla con rutas pre-programadas y a su vez conducir trenes de un modo manual.
-
Sustitución del puerto serie de comunicación usado entre el software y el hardware por un puerto USB, no supone una mejora en las funcionalidades
del software pero seria un reto interesante de realizar.
-
Comunicación e interacción del software con el multiMAUS de ROCO, ya que es el que tengo y no
estaría mal poder usar los controles, el teclado
del ordenador y la botonera de ROCO.
|