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.

martes, 10 de mayo de 2011

Noticias sobre Arduino.

Interesante vídeo que nos muestra el estado y el camino que están recorriendo estos pioneros del hardware libre y su fantástica plataforma.


domingo, 13 de marzo de 2011

Preparando Test1

Construir el ovalo con los desvíos no ha sido demasiado complicado. He utilizado una madera como base que hace un poco de barriga porque llevaba mucho tiempo sin usar y estaba algo humeda. Antes de montar y cablear los circuitos quería comprobarlos fuera, para que cuando los lleva a la madera esto todo funcionando.




He comenzado con el LocoBuffer que es la placa que conecta el PC con la red Loconet. Inicialmente no pude conseguir comunicación por ningún puerto COM, pero repasando el manual y los jumpers en la placa he visto el JP2 que le dice de donde debe tomar la alimentación. Una vez colocado el jumper en su posición la comunicación se ha hecho posible.


El siguiente paso es conectar la placa LocoIO. El programa que usaré para programarlo es el LocoHDL.Cuando he conectado el LocoIO no conseguía comunicarme con la placa. He quitado el PIC y lo he colocado en el grabador de PICs y he visto que no podía leerlo. Lo curioso de este PIC es que lo compre grabado porque no pensaba usar un grabador de PICs y ahora veo que no funciona. He puesto un nuevo PIC lo he grabado y he vuelto a probar. Esta vez si que funciona todo y puedo leer la config de la placa LocoIO y de todos sus puertos.


Con el programador del LocoIO tengo muchas posibilidades y puedo utilizar sus 16 puertos como quiera, esto es como entradas o como salidas. Cada módulo Loco IO se le puede programar una dirección única en la red Loconet, y se pueden colocar hasta 15,876 módulos. No creo que utilice tantos. También puedo conectar placas llamadas LocoServo para control de los servos y los Booster.
Seguiré aprendiendo y cuando tenga montado el circuito con los desvíos pondré mas fotos y seguiré explicando. 



viernes, 4 de marzo de 2011

Test 1

Me gustaría este fin de semana poder instalar los componentes necesarios para realizar el primer test con un circuito básico de solo dos desvíos. Aquí podré colocar dos locomotoras que circulen a la vez y controlarlas con el software TC. Lo interesante de este test es que me ofrecerá la posibilidad de aprender a conectar desvíos y controlarlos con la placa Driver Module. Cada una de estas placas es capaz de controlar hasta dos desvíos No tengo muy claro como tengo que programar las placas LocoIO, estas son las que conecten con el driver module que a su vez son las que envían la señal de 12 V para que las bobinas de los desvíos actúen. La Loco IO por un lado puede conectar con la red Loconet y por otro con las placas finales que controlan los dispositivos como los desvíos, señales etc.


El Loco Buffer es la interface entre el PC y la red Loconet. En el PC esta el software Train Controller que realizará el control de todos los dispositivos y de las locos. La idea es dejar el control de algunas partes de la maqueta al TC y otras pasarlas al control manual. Pero esto tengo que aprender a hacerlo.