miércoles, 22 de junio de 2011

Firmware

Las pruebas con la Loco IO han llegado a su fin. He encontrado en Internet el sitio www.locobuffer.com que es donde fue creado el loco buffer y el Loco IO por primera vez. El autor John Jabour fue el creador original de locobuffer y del Loco IO, mas tarde, Hans deLoof continuo el desarrollo del firmware y fue añadiendo nuevas placas.
Explico toda esta historia porque después de algunas pruebas, he logrado determinar que el fallo esta el Firmware del PIC. He descargado el firmware original de la pagina de John que es la versión 1.35 y he conseguido programarlo con el Decoder Pro JMRI, pero no he conseguido todas las funcionalidades que actúen de forma correcta. Por ejemplo, las bobinas no consigo apagarlas en un determinado tiempo, y siempre se mantienen activas, En las pruebas he usado resistencias para simular las bobinas y de esta forma no dañarlas. Ahora entiendo que me llevaría mucho tiempo conseguir determinar y arreglar el problema y ademas no podría modificar este firmware si encuentro el fallo en esta versión de software.
Después de estas pruebas he enviado algunos emails a Hans DeLoof. En estos emails, él me decía que parecía probable que el PIC estuviese dañado pero le dije que había probado con 3 chips diferentes con el mismo resultado.
Luego me dijo que había diferencias con el firmware que estaba cargando con el que tenia en su web. Hice una minuciosa comprobación y he visto que son iguales. Por ultimo le he pedí alguna versión anterior pero no conseguí que me la enviase.
Comprar una nueva loco IO montada no me parece una buena opción y tampoco comprar un PIC grabado, no porque sea mas caro si no porque no estoy convencido de que esta sea la solución. Finalmente he decidido volver a Arduino y fabricarme yo mismo la placa multi-IO controlada por esta plataforma. Ya he encontrado mucha información en Internet para el desarrollo y ahora estoy en ello, explicaré mis progresos en futuras entradas.

domingo, 5 de junio de 2011

Vuelta al cole

Después de un largo periodo sin escribir ninguna entrada en mi blog, por fin he encontrado un poco de tiempo para poder volver a hacerlo.
Sigo con el circuito de Test que quería construir y que he construido. He decidido utilizar una madera con unas dimensiones más reducidas, para poder transportarlo de forma más fácil

 
El diseño es el mismo, esto es, un ovalo con un par de desvíos en una de sus rectas que une a otra recta paralela a esta. Este diseño me permite probar los módulos electrónicos que he estado construyendo. La idea de tener un escenario de Test es conseguir aprender a controlar el funcionamiento de todos los dispositivos electrónicos que después formaran parte de la maqueta final. Aquí además puedo conocer sus limitaciones, descubrir nuevas aplicaciones que a lo mejor puedo pasar por alto y también si surgen problemas intentar resolverlos antes de gastarme el dinero en placas, que más tarde pueden no funcionar de la forma correcta. Cuando todo esto lo tenga probado, puedo pasar a la fase del diseño de la maqueta final. Tendré un mejor conocimiento, más en detalle de lo que puedo hacer y de que elementos utilizar.

 Loconet es una red de área local (LAN) del tipo “peer to peer” esto se puede traducir como de vecino a vecino. Cada “peer” o vecino de esta red,envía a través de ella sus mensajes hacia la central digital que los esta esperando. La central en el momento que recibe uno de estos mensajes lo ejecuta inmediatamente Como tenemos una red “peer to peer” y estos vecinos a su vez son independientes en el acceso al medio, esto nos permite añadir nuevos “peer” o dispositivos de forma fácil.
El acceso al medio de los dispositivos en este tipo de red se denomina “event driven” esto significa que los diferentes "peer" solo acceden si tienen un evento que enviar y como hemos explicado la central esta esperando estos eventos. De esta forma, en esta red y con este tipo de acceso conseguimos un volumen pequeño de tráfico, por lo que no es necesario una red con una velocidad considerable. Esto es otra ventaja, porque podemos usar un cable normal, como el cable plano de 6 hilos y se pueden terminar con conectores RJ-12.

Los elementos electrónicos que he construido en placas de HDL, son el locobuffer, que me da comunicación serial con mi PC y la red Loconet, el loco IO que une el módulo de conmutación llamado driver module con Loconet y el PC.
Loco IO es una placa con 16 entradas/salidas y con conexión a Loconet, básicamente se puede usar los 16 puertos como entrada/salida y tu decides como quieres programarlos. Simplificando podemos decir que lo que hace este módulo es convertir señales de 0 V o de 5 V en mensajes Loconet.
En mi caso he programado las salidas 9,10,11 y 12 para controlar las 4 bobinas de dos desvíos Marklin. Para programarlo he usado el software que ha desarrollado HDL. El software ofrece muchas posibilidades de configuración En mi caso he configurado las salidas mencionadas y las he asignado una direcion a cada una de ellas.
El siguiente punto a tener en cuenta es como quieres que sea el tipo de señal que enviamos a los desvíos La elección han sido pulsos de una duración muy corta para activar la bobina del desvío. Estos pulsos pueden ser del tipo soft reset o de hard reset, pero en mis pruebas no he visto la diferencia entre ambos.
En la placa driver module que es donde están los transistores que reciben la señal de la LocoIO he colocado unos leds con dos colores para poder ver como el pulso activa el transistor que controla cada bobina del desvío He puesto leds amarillos y azules para cada par de bobinas, de esta forma puedo ver como se activa cada bobina cuando recibe el pulso enviado por el software de control.


Una vez que has configurado las salidas se deben escribir y leer en el PIC. Después de leerlas y para comprobar que se han escrito de forma correcta en el PIC. En la placa Loco IO se activan unos botones en cada una de las salidas programadas. Estos botones sirven para comprobar el funcionamiento de cada salida. Al pulsar sobre cada botón con el ratón, puedes observar como se activan las bobinas del desvío y se encienden los leds de colores durante un pequeño tiempo.


En el siguiente video se muestra como conmutan las bobinas de un desvío pulsando alternativamente sobre los botones que he explicado.


>

Ahora necesito comprobar el funcionamiento dentro de un software de control de trenes. Como soy un entusiasta del software libre, me he ido a la pagina web de JMRI y me he descargado su software y me lo he instalado en mi PC.

 JMRI es un proyecto que desarrolla software como herramientas de control de trenes por ordenador para los aficionados a este hobby. Quieren que sea usado por una gran cantidad de aficionados y esta escrito en Java porque desean que sea multiplataforma y pueda correr en cualquier sistema operativo. JMRI se define como un grupo informal de open-source software, esto significa que el desarrollo de sus herramientas de software es gratuito y no quieren obtener ningún tipo de beneficio económico.
Sus versiones que mantienen en su web están muy actualizadas y tienes una gran cantidad de centrales digitales soportadas donde poder elegir.
Después de instalarlo en mi PC y hacer algunas pruebas, he sido capaz de re-programar el decoder de mi locomotora, y controlar la Loco con su software. También he podido controlar los desvíos de una forma rápida y fácil.

 
Para hacer la prueba del control de mis desvíos solo fue necesario colocar la dirección del desvío y pulsando sobre los botones mostrados en la imagen y de esta manera se podía conmutar cada bobina. Quizás parezca algo trivial, pero para mi significo un gran logro.

También he probado el software Train Controller, este si es un software comercial y tiene un gran prestigio entre los aficionados. También he conseguido sin problemas, tener control sobre la locomotora cambiar las diferentes velocidades, y realizar cambios de dirección. Estoy empezando y me parece un hecho importante conseguir todo esto, en mis primeros pasos.


 
Pero como estamos en un escenario de test, todo no podía ser perfecto.
Entonces he tenido el primer problema. Durante el control de la locomotora, a los pocos segundos de rodaje, la loco se detiene de forma misteriosa Haciendo diferentes pruebas he visto que el causante era precisamente la placa Loco IO.
Para poder tener más luz sobre el problema he vuelto a usar una herramienta muy útil de JMRI. Esta herramienta es el Loconet Monitor. Con esta herramienta puedo ver todos los mensajes que se envían por la red loconet.

 
Veo que cada 20 segundos aparece un mensaje del tipo Emergency Stop y que detiene la loco. Si envías un mensaje Global Power ON hacia la central, la loco se vuelve a poner en marcha pero a los 20 segundos se vuelve a detener. He tocado parámetros en la central digital y en el software que programa la Loco IO pero sin ningún resultado positivo.
Estoy buscando en los foros y en Internet información, y también me he puesto en contacto con el creador de la placas HDL, que amablemente ya me ha ayudado en otras ocasiones.
En mis próximas entradas contaré como evoluciona la búsqueda de la solución.