Índice general Foros Digital, Electricidad e Informática Interface programable XpressNet

Interface programable XpressNet

Moderador: 241-2001



Desconectado
Mensajes: 630
Ubicación: Salamanca
Registrado: 12 Ene 2012 14:44
Hola splasma

En efecto, el foro general de Presentaciones está para dejar ahí una nota amable de introducción a esta no ya pequeña comunidad de Forotrenes. Nos gustaría saber de tus aficiones, capacidades e intereses, así que anímate a presentarte. Gracias.

Sobre migrar a C el código XbusTCO, me encantaría que lo compartieras subiéndolo aquí mismo. Yo estoy sobre algo muy parecido pero no avanzo al ritmo que debiera, y ver el código de otros suele dar ideas para progresar. Intento crear un panel de control de las siguientes características (así quedaron definidas ayer tras una puesta en común con los compañeros):

A) Panel físico con pulsadores y leds:
- 1 solo pulsador por desvío (para moverlo en caso de maniobras)
- 1 pulsador por vía de estación (para habilitarla con un solo click, una especie de itinerario que mueve todos los desvíos necesarios)
- 2 leds por desvío (verde: paso habilitado - apagado: paso no habilitado)
- 1 pulsador por señal
- 2 leds por señal (rojo, verde)


B) Sólo 4 hilos hasta el panel (un cable de teléfono, vamos):
- Los de +12V y 0V del XpressNet
- Los de Rx Tx del XpressNet


C) Lógica sobre Arduino AT328P y numerosas salidas/entradas a través de registros de desplazamiento encadenados


D) Programación en C++ con comentarios en español para que cada uno adapte el código a su panel y estaciones fácilmente


La idea es la misma que en el XbusTCO: hablar y escuchar en el bus XpressNet desde el panel para enviar comandos de cambio (pulsadores) o de petición de información, y escuchar las respuestas para actualizar el panel (leds).
Saludos

[Multimaus + GenLi-S88 + +z21f. + RocRail (MacOsX)]
H0 Renfe, sin catenaria


Desconectado
Mensajes: 17
Registrado: 12 Feb 2012 11:44
Sobre las estensiones de entrada y salida mediante registros de desplazamiento encadenados, ¿no has pensado en utilizar micros I/O con comunicacion spi (MCP23S17) o I2c (MCP23017)?


Desconectado
Mensajes: 630
Ubicación: Salamanca
Registrado: 12 Ene 2012 14:44
Claro. Cuestan aproximadamente el doble que los registros de desplazamiento (1.00 € frente a 0.50 € más o menos :D ) pero te dan también el doble de pines entrada / salida ocupando, en general, menos espacio.

mcp23017ss.jpg
Expansor del número de entradas / salidas
mcp23017ss.jpg (52 KiB) Visto 3227 veces


Son una excelente opción también. Y el uso es muy similar. Lo pensaré.
Gracias.
Saludos

[Multimaus + GenLi-S88 + +z21f. + RocRail (MacOsX)]
H0 Renfe, sin catenaria


Desconectado
Mensajes: 630
Ubicación: Salamanca
Registrado: 12 Ene 2012 14:44
Acabo de encontrar lo que me estoy preparando, que ya existe desde hace 4 años más o menos pero para el bus Loconet. Sería esto: el DTM30 Tower Master
http://www.cmlelectronics.co.uk/index.php/dtm30
Según el manual de instrucciones se pueden programar muchísimas cosas y el panel de control queda profesional, usando un solo cable (el Loconet). Las prestaciones son increíbles. Alguna idea he tomado, pero no puedo llegar a tanta sofisticación. Sigo intentando crear un buen controlador de panel óptico, para el XpressNet, y ya muevo desvíos con pulsadores y los señalizo con leds. Ahora me estoy construyendo el hardware. Todavía no tengo nada que se pueda enseñar. :oops:
Saludos

[Multimaus + GenLi-S88 + +z21f. + RocRail (MacOsX)]
H0 Renfe, sin catenaria


Desconectado
Mensajes: 630
Ubicación: Salamanca
Registrado: 12 Ene 2012 14:44
Ya tengo algo que merece la pena mostrar.

He preparado un montaje con un Arduino Uno, dos pulsadores y dos leds, de manera que cada pulsador conmute el estado de un accesorio (desvíos en este caso) y los leds se enciendan cuando su correspondiente accesorio está en uno de los dos estados posibles (vía desviada en en mi caso).

He añadido un pequeño integrado para llevar la señal del bus XpressNet al Arduino, según el esquema de Nicolas Zin siguiente:

arduino.wiring.png
La conexión al Xbus de N. Zin que yo también uso
arduino.wiring.png (20.66 KiB) Visto 3128 veces


Este es el aspecto del conjunto:

NOR_Arduino_Xbus.jpg
Mi montaje, con dos pulsadores y sus dos leds


El código está en el archivo siguiente. Lo he editado un poco para que se pueda seguir. Es una adaptación del original que encontré y que ya di a conocer hace algunas semanas (en unos mensajes algo más atrás de este mismo hilo). Se me mezcla un poco el inglés, pero aún así el programa se puede seguir. Ahora que cada uno lo adapte como más le convenga.

NOR_XpressNet_TCO2.ino.zip
El código en C++
(4.98 KiB) 168 veces


Yo voy a intentar hacer un gran panel de control para Mina del Rey, la estación principal de ObeTrén (mi maqueta). Serán unos 30 pulsadores y 60 leds, así que usaré los expansores de puertos MCP23017 de más arriba. Hasta que no lo consiga no daré más la lata, pero si alguien mejora, amplia o modifica el código, por favor, que lo comparta con todos. Gracias.
Saludos

[Multimaus + GenLi-S88 + +z21f. + RocRail (MacOsX)]
H0 Renfe, sin catenaria


Desconectado
Mensajes: 330
Ubicación: Malaga
Registrado: 25 Sep 2009 15:41
Hola.
El montaje lo has hecho con un arduino UNO, si e quieres evitar los expansores, hazlo con un arduino MEGA, que tiene 53 puertos de salida.
Saludos.
Saludos desde Malaga


Desconectado
Mensajes: 76
Ubicación: Madrid
Registrado: 06 Ago 2012 21:46
Muy interesante seguiré tus avances, también se lo he pasado a un compi del curro que es también aficionado como nosotros, está montando una supermaqueta en su casa y controla un poco el tema este del Arduino, si se nos ocurre algo te lo comunicaremos.

Saludos.


Desconectado
Mensajes: 20
Registrado: 14 Dic 2015 17:19
Hola, buenas tardes
Estoy intentando simular el montaje de la interfacce en proteus.
Un par de dudas:
El pin 2 creo que es el que controla al max485
Los pulsadores como se conectan?
[url]
http://www.tecnosalva.com/arduino-pr%C3 ... pulsadores
[/url]

de esta manera?
Un saludo


Desconectado
Mensajes: 30
Registrado: 06 Dic 2010 17:09

Muy buenas.

Estoy pensando en conectar un Multimouse a un Arduino que actuara de "DISPATCHER".
Este dispatcher es es el que manejará un TCO por un lado, para mostrar el estado del circuito, y por otro lado a través del bus I2C de Arduino, comandar los servos de los desvíos, señales semafóricas, controladores de cantones (compuestos por otros arduinos), etc. El fin es poder controlar de forma automática un sistema de acantonamiento tipo Cab Control. Los "switches", serán los arduinos (uno por cantón), pero de forma lógica, no física. Esto es, el arduino conectado al cantón X, recibirá una orden de que se ponga a velocidad "V", que será la asignada a la Cab que le toque. En realidad se trata de hacer lo que ha hecho Ignacio de la Fuente (ifuval), pero con Arduinos. Su web la podeis buscar por algo así como mimaquetaz, en google.

Norberto, me gustaría saber si has avanzado algo y también preguntarte qué cambios has tenido que realizar para comunicarte con un Arduino Uno, ya que si no estoy equivocado, se necesitaría un Arduino Mega ya que el protocolo XpressNet precisa de 9 bits, en lugar de los 8 que implementa el SDK de Arduino.

También preguntarte si podrías colgar el código original sin tus aportaciones/modificaciones. No es por nada, es para saber de donde has partido.
Muchas gracias.
Zafariles, el sueño a escala o cómo construir una gran maqueta de trenes.
Síguelo en: http://zafariles.blogspot.com


Desconectado
Mensajes: 630
Ubicación: Salamanca
Registrado: 12 Ene 2012 14:44
zafariles escribió:
Estoy pensando en conectar un Multimouse a un Arduino que actuara de "DISPATCHER".
Este dispatcher es es el que manejará un TCO por un lado, para mostrar el estado del circuito, y por otro lado a través del bus I2C de Arduino, comandar los servos de los desvíos, señales semafóricas, controladores de cantones (compuestos por otros arduinos), etc. El fin es poder controlar de forma automática un sistema de acantonamiento tipo Cab Control

No estoy seguro de entenderte pero me parece más práctico el enfoque tradicional y comunicar sólo con la central DCC para que sea ella la que ordene los cambios de semáforos y servos con sus descodificadores DCC, y luego un sencillo bus S88 de retroseñalización. Es el que estoy siguiendo y no me va nada mal.

zafariles escribió:
me gustaría saber si has avanzado algo y también preguntarte qué cambios has tenido que realizar para comunicarte con un Arduino Uno, ya que si no estoy equivocado, se necesitaría un Arduino Mega ya que el protocolo XpressNet precisa de 9 bits, en lugar de los 8 que implementa el SDK de Arduino.

Estoy descodificando sin problemas la señal del bus XpressNet con un Arduino Uno, como puedes ver en la foto del montaje un poco más atrás. No necesitas un Mega para ello. Lo de los 9 bits lo solucionas configurando directamente el UART del micro procesador del Arduino, siguiendo las instrucciones de Atmel para los AVR 328. Se encuentran en internet. Los requerimientos de la señal en el XpressNet encajan perfectamente con las prestaciones de esos micros de todos los Arduinos, incluso los más pequeños.

Sobre si he avanzado, pues me equivoqué hace meses cuando acometí el proyecto de un panel de control TCO con 58 señales/pulsadores al utilizar expansores de puertos de Microchip en un Arduino Uno, y paralicé el proyecto del panel: leerlos con el código que todo el mundo utiliza me ralentiza demasiado el sistema, perdiendo paquetes de datos del bus, etc. Probablemente pueda hacer un código nuevo para los expansores, pero no tengo tiempo, así que abandono ese montaje y me paso a un Arduino con muchos pines (el Mega), que eso sí que funcionará bien.
MinaDelRey.png
MinaDelRey.png (280.33 KiB) Visto 2789 veces

Este es el aspecto del panel por delante, sin el sinóptico de arriba.
NOR_Panel_MinaDelRey.jpg
NOR_Panel_MinaDelRey.jpg (97.25 KiB) Visto 2789 veces

Y estos son los expansores de puertos. Lo bonito es que todo el panel interactúa con la la maqueta gracias al cablecito que sale hacia arriba, uno de teléfono con cuatro hilos de nada (el bus XpressNet).
NOR_Expansores_De_Puertos.jpg
NOR_Expansores_De_Puertos.jpg (128.8 KiB) Visto 2789 veces


zafariles escribió:
También preguntarte si podrías colgar el código original sin tus aportaciones/modificaciones. No es por nada, es para saber de donde has partido

El código que uso está ya subido a este mismo hilo, en la página anterior: viewtopic.php?f=7&t=63679#p523144

Y en el hilo de cabecera tienes otras alternativas que también funcionan. Ya dirás a dónde llegas!
Saludos

[Multimaus + GenLi-S88 + +z21f. + RocRail (MacOsX)]
H0 Renfe, sin catenaria


Desconectado
Mensajes: 30
Registrado: 06 Dic 2010 17:09

Muchas gracias !

Olvidé decir que lo que no quiero es DCC por ningún lado. Simplemente es un control tradicional al estilo Cab-Control con Arduinos.
Lo único es que me gustaría poder utilizar el mando del Multimouse para mover señales, desvíos. Lo que quiero es interceptar los comandos del Multimouse con un Arduino, y que ese Arduino, sea el que realmente mande las órdenes por el bus I2c a otros dispositivos I2c (arduinos o no), con solo 2 cables. El TCO vendría después en una segunda fase, y prácticamente sería para saber el estado de los accesorios, sin ninguna funcionalidad, pero tambien comunicado con el resto por I2C.

Edito:
Lo que sigo sin entender es lo de los 9 bits... Como configuro eso ?
Saludos
Zafariles, el sueño a escala o cómo construir una gran maqueta de trenes.
Síguelo en: http://zafariles.blogspot.com


Conectado
Mensajes: 150
Registrado: 28 Oct 2015 09:35
Hola a todos, llevo bastante tiempo siguiendo el foro pero nunca he intervenido, me llamo Pablo, la maqueta la tengo conectada a un multimaus.
Estoy trabajando también con el Arduino y ahora mismo tengo controlado una estación oculta con unos servos y relés, automatizada con un Mega.
He estado leyendo el post y hay algunas cosas que me pierdo, Norber el TCO que has realizado puedes controlar todos los desvíos y luces desde el arduino, enviar la Información a los diferentes dispositivos que quieras, es tu objetivo?. En mi caso, el siguiente paso es conectar el multimaus al arduino y con las ordenes del multimaus activar o desactivar algún dispositivo, me falta orientación (ayuda).
El montaje que has hecho Splasma es también muy interesante, una consulta aparte de controlar la velocidad puedes leer la CV de los deco?.
De todo esto la conclusión que debemos tener que ahora mismo tenemos todos o casi todos los dispositivo que nos hace falta para controlar nuestra
maqueta a unos precios muy bajos, tenemos placas con infrarrojos, sensores hall, placas relé, regulador de alimentación…etc., por muy poco.

Un saludo.


Desconectado
Mensajes: 51
Registrado: 23 Nov 2008 09:46
Hola.
Yo tengo la central de Paco cañadas DCC-GEN la cual conecto al PC mediante un adaptador bluetooth conectado al puerto serie de la central. Funciona perfecto. Leyendo este post se me ha ocurrio conectar mi telefono android con dicho adaptador bluetooth. Para ello primero probé con un programa de chat y se conectaba pero no reconocia las
ordenes xpressnet que le mandaba aunque si que me contestaba coasas ininteligibles. Lo bueno era que contestaba. Después he probado con otro programa capaz de mandarle los códigos en hexadecimal y ver las respuestas también en hexadecimal y la cosa funciona.
Hasta aqui la exposicion. El problema que tengo, y de ahí mi consulta, es que una vez conectados los dos dispositivos le mando la orden 212405 o , preguntando por el status de la central, o cualquier otra, y hasta que contesta correctamente se la/s tengo que mandar unas cuantas veces. Una vez que contesta ya todo va fluido y contesta siempre sin problemas. Pregunto: Hay alguna secuencia de inicialización o tiempo de espera en el protocolo xpressnet para inicializar las comunicaciones?
Aclaro que con el programa railroad&co las respuestas , por bluetooth también, son inmediatas desde el principio.

Perdonad por el tostón y gracias

P.D. La idea es controlar cosas básicas de la central,sobre todo cambios, con el teléfono y a la vez meterme en la programación android.


Desconectado
Mensajes: 630
Ubicación: Salamanca
Registrado: 12 Ene 2012 14:44
segovia escribió:
tengo la central de Paco cañadas DCC-GEN la cual conecto al PC mediante un adaptador bluetooth conectado al puerto serie de la central. Funciona perfecto. Leyendo este post se me ha ocurrio conectar mi telefono android con dicho adaptador bluetooth.. y una vez que contesta ya todo va fluido y contesta siempre sin problemas. Pregunto: Hay alguna secuencia de inicialización o tiempo de espera en el protocolo xpressnet para inicializar las comunicaciones?
Aclaro que con el programa railroad&co las respuestas , por bluetooth también, son inmediatas desde el principio


Lo que se integra en el bus XpressNet es la interface con la central, y eso dices que funciona perfecto. De manera que el problema está en el programa de Android que usas para hablar con la interface. Eso me parece evidente porque corrobora la última afirmación sobre que el Railroad&Co no te da problemas.

El protocolo XpressNet es público. Te lo adjunto para que no tengas que buscarlo por ahí.
Adjuntos
xpressnet.pdf
(450.86 KiB) 90 veces
Saludos

[Multimaus + GenLi-S88 + +z21f. + RocRail (MacOsX)]
H0 Renfe, sin catenaria


Desconectado
Mensajes: 51
Registrado: 23 Nov 2008 09:46
Gracias Norber. Tambien por compartir tus proyectos
Un saludo


Desconectado
Mensajes: 30
Registrado: 06 Dic 2010 17:09

Retomo el hilo, ya que he estado un tiempo con este tema parado.

Norber escribió:
No estoy seguro de entenderte pero me parece más práctico el enfoque tradicional y comunicar sólo con la central DCC para que sea ella la que ordene los cambios de semáforos y servos con sus descodificadores DCC, y luego un sencillo bus S88 de retroseñalización. Es el que estoy siguiendo y no me va nada mal.


Precisamente lo que me quiero ahorrar es el tener que colocar decodificadores DCC para desvíos, por dos causas. La primera es que utilizo servos para mover los desvíos. La segunda es que con un decoder de servos de Adafruit https://learn.adafruit.com/16-channel-pwm-servo-driver, puedo controlar 16 desvíos, con lo cual me sale mucho más barato. Y no necesitaría una central, ya que los cantones se van a alimentar de forma tradicional, con sus transformadores clásicos. en una primera fase...

Norber escribió:
Sobre si he avanzado, pues me equivoqué hace meses cuando acometí el proyecto de un panel de control TCO con 58 señales/pulsadores al utilizar expansores de puertos de Microchip en un Arduino Uno, y paralicé el proyecto del panel: leerlos con el código que todo el mundo utiliza me ralentiza demasiado el sistema, perdiendo paquetes de datos del bus, etc. Probablemente pueda hacer un código nuevo para los expansores, pero no tengo tiempo, así que abandono ese montaje y me paso a un Arduino con muchos pines (el Mega), que eso sí que funcionará bien.


Yo lo que quiero implantar, antes que el TCO, es el control de los desvíos por el MultiMause.

Es decir, lo que quiero es:


[MULTIMAUSE]------------>[ARDUINO]-------------->[DECOD.DE SERVOS.]

Entiendo que es factible, no ? Es por aprovechar el mando del multimaus, que me parece muy ergonómico y sencillo. La otra opción que tengo es comprarme un teclado, un panelito LCD, controlarlo todo con un segundo arduino y que se comuniquen los dos arduinos entre sí...

Muchas gracias por anticipado...
Zafariles, el sueño a escala o cómo construir una gran maqueta de trenes.
Síguelo en: http://zafariles.blogspot.com


Desconectado
Mensajes: 630
Ubicación: Salamanca
Registrado: 12 Ene 2012 14:44
zafariles escribió:
...Y no necesitaría una central, ya que los cantones se van a alimentar de forma tradicional, con sus transformadores clásicos. en una primera fase... Yo lo que quiero implantar, antes que el TCO, es el control de los desvíos por el MultiMause.
Es decir, lo que quiero es:
[MULTIMAUSE]------------>[ARDUINO]-------------->[DECOD.DE SERVOS.]
Entiendo que es factible, no ? Es por aprovechar el mando del multimaus, que me parece muy ergonómico y sencillo.


El sistema que se conoce como Multimaus es una central DCC: no se trata solo del mando rojo con botones y pantalla, sino que ese mando ya es una central DCC, si bien la fuente de alimentación a las vías (booster) la lleva aparte; pero esa fuente proporciona también 12 Vcc al mando rojo, luego es imprescindible... En suma, el mando rojo más la fuente negra (booster) son una auténtica central DCC.

Esa central además genera un bus XpressNet. Mediante ese bus se puede transmitir y recibir información desde y hacia la central. Sería a ese bus donde únicamente se podría conectar un descodificador para controlar desvíos desde el Multimaus que no usara la solución convencional (la señal DCC de la vía). No tengo presente ahora todos los detalles del protocolo XpressNet pero creo que habría que hacer bastante 'trampa' para lograr algo parecido: el protocolo está diseñado para que los accesorios le pidan a la central que actúe, y ésta lo hace siempre mediante la señal DCC. Creo que no hay manera de que sea la central la que le pida acciones a un accesorio a través del XpressNet...
Saludos

[Multimaus + GenLi-S88 + +z21f. + RocRail (MacOsX)]
H0 Renfe, sin catenaria


Conectado
Mensajes: 150
Registrado: 28 Oct 2015 09:35
Hola zafariles.
As probado ya esa controladora de servos?, que tal te funciona.
Yo, los estoy controlando directamente con el arduino, pero de vez en cuando tiene unas
vibraciones que no me gusta, lo tengo casi controlado pero…..
Saludos.


Desconectado
Mensajes: 30
Registrado: 06 Dic 2010 17:09

Norber escribió:
zafariles escribió:
...Y no necesitaría una central, ya que los cantones se van a alimentar de forma tradicional, con sus transformadores clásicos. en una primera fase... Yo lo que quiero implantar, antes que el TCO, es el control de los desvíos por el MultiMause.
Es decir, lo que quiero es:
[MULTIMAUSE]------------>[ARDUINO]-------------->[DECOD.DE SERVOS.]
Entiendo que es factible, no ? Es por aprovechar el mando del multimaus, que me parece muy ergonómico y sencillo.


El sistema que se conoce como Multimaus es una central DCC: no se trata solo del mando rojo con botones y pantalla, sino que ese mando ya es una central DCC, si bien la fuente de alimentación a las vías (booster) la lleva aparte; pero esa fuente proporciona también 12 Vcc al mando rojo, luego es imprescindible... En suma, el mando rojo más la fuente negra (booster) son una auténtica central DCC.

Esa central además genera un bus XpressNet. Mediante ese bus se puede transmitir y recibir información desde y hacia la central. Sería a ese bus donde únicamente se podría conectar un descodificador para controlar desvíos desde el Multimaus que no usara la solución convencional (la señal DCC de la vía). No tengo presente ahora todos los detalles del protocolo XpressNet pero creo que habría que hacer bastante 'trampa' para lograr algo parecido: el protocolo está diseñado para que los accesorios le pidan a la central que actúe, y ésta lo hace siempre mediante la señal DCC. Creo que no hay manera de que sea la central la que le pida acciones a un accesorio a través del XpressNet...


No me explico a no me entiendes...
Si se puede este esquema:

[MANDO MULTIMAUS]---(XpressNet)--------->[ARDUINO]-------------->[LED Y PULSADORES] (Esto es lo que tu has conseguido, si no me equivoco)

Se debe poder este:

[MANDO MULTIMAUS]---(XpressNet)--------->[ARDUINO]-------------->[DECOD.DE SERVOS.]------------->[SERVOS...]

¿ O es que estoy confundido y lo que tú has conseguido (según este hilo) es con lo que llamas/mos fuente o booster: ?

[MANDO MULTIMAUS]---(XpressNet)--------->[FUENTE MULTIMAUS]-----DCC------>[ARDUINO]-------------->[LED Y PULSADORES] ???

(Alimentar el MANDO con 12 v independientemente no es ningún problema, evidentemente...)



Por cierto, para el compañero que me ha preguntado sobre el decoder de servos, decirle que va de maravilla, ningún servo tiembla ni nada parecido, y en las pruebas que he hecho ha sido alimentando con cargadores de móvil (uno para el arduino y otro para el decoder)... Lo compré en Aliexpress, bastante más barato.
Zafariles, el sueño a escala o cómo construir una gran maqueta de trenes.
Síguelo en: http://zafariles.blogspot.com


Conectado
Mensajes: 150
Registrado: 28 Oct 2015 09:35
Muchas gracias por el comentario.
Si no te entiendo mal, uno de tu objetivo es desde el multimaus controlar los servos.

Si es así, mírate el hilo sobre Decodificar DCC para 8 señales con Arduino, ya que con el programa que Norver colgó y unas pequeñas modificaciones puedes conectar el multimaus con el arduino tanto el nano como el mega. A partir de aquí, ya vas a tener un estado lógico en tu placa y vas a poder hacer lo que tú quieras con ese estado, encender luces, control de los semáforos, servos etc., lógicamente programando un poco esos estados. En el caso mío, el Deco Servo como los defines, yo me lo he saltado, ataco todo directamente desde el arduino, servo, los relés para los semáforos...etc
Una consulta, como ajustas el desplazamiento y la velocidad con esa placa, es complicado?

Un saludo..

AnteriorSiguiente

Volver a Digital, Electricidad e Informática

Síguenos en Facebook Síguenos en Youtube Síguenos en Instagram Feed - Nuevos Temas
©2017   -   Información Legal