Central digital DCC++ (DCCPlusPlus)


¿Quien no ha pensado en una central DCC totalmente funcional y compatible con la mayoría de los estándares DCC por unos pocos Euros? Pues estas en la página adecuada ya que en esta entrada vamos a ver las posibilidades que nos ofrece el proyecto Open Source DCC++ Base Station. Con esta central DCC podremos controlar locomotoras, funciones, accesorios, programación, etc... prácticamente todo de nuestra maqueta digital. En la web original (en ingles) podéis encontrar información de las características de esta central pero aquí tenéis las más destacadas:

Características:

  • Direcciones de locomotoras de 2 y 4 bytes.
  • Velocidad de 128 pasos.
  • Programación en pista principal.
  • Control simultaneo de múltiples locomotoras.
  • Control de todas las funciones de cabina F0-F28.
  • Activación y apagado de todas las direcciones de accesorios 0-2048.
  • Programación en vía de programación.


El código del proyecto lo tenéis para la su descarga en la web de github. Por mi parte he traducido parte de los comentarios de BaseStation1.2.1 y se puede descargar desde este enlace. En principio la traducción es de la carpeta DCCpp_Unoiré traduciendo poco a poco. En mis primeras pruebas con Rocrail he comprobado el sistema DCC++ con varias locomotoras y una pequeña pista y todo ha ido como la seda!

conexion Rocrail_DCCpp

Otra de las pruebas que quiero realizar es la conexión mediante un modulo Bluetooth conectado en TX/RX. El proyecto usa como base una placa Arduino UNO con un coste de menos de 3€ o MEGA por unos 8€ junto con un Motor Shield basado en un chip L298P que dependiendo del modelo podemos encontrar desde unos 3,50€, así que el coste máximo no superaría los 11,50€.

En este caso he optado por el Arduino UNO y un motor Shield "Ardumoto" con el driver L298P.

Arduino Uno con Motor Shield para central DCC++

Comandos y comunicación:

La comunicación se lleva a cabo con el protocolo serial estándar vía cable USB conectado a un sistema Linux, Windows o MAC. Este sketch configura el baudrate serial del UNO en un valor máximo de 115200 baudios. Este Baudrate se puede cambiar a uno inferior pero recuerda que tienes que cambiar es mismo valor en el programa serial que se utilice para comunicarse con la central DCC++. Un ejemplo de la estructura de comandos y datos mandados y recibidos del sistema DCC++ puede ser el siguiente:

 < C P1 P2 ... PN>

Donde "C" es un único comando alfanumérico y "P1" hasta "PN" son parámetros alfanuméricos opcionales. El espacio en blanco entre la apertura "<" y el comando "Cesta permitido, pero no es requerido. El espacio en blanco entre el comando "C" y el primer parámetro "P1" esta permitido pero no es requerido. El espacio en blanco entre el ultimo parámetro "PN" y el cierre ">" esta permitido pero no es requerido. El espacio en blanco entre parámetros "P1 P2" es requerido.

Instalando y usando DCC++ Base Station:

El sketch DCC++ Base Station está almacenado en una carpeta llamada DCCpp_Uno y consiste en una serie de 6 archivos C++ y 6 cabeceras asociadas (*.h) Los archivos son los siguientes:
  • DCCpp_Uno.ino: Entrada principal del sketch. Declara las variables globales, configura Timers y contiene las subrutinas requeridas setup() y loop().
  • SerialCommand.cpp: Paso y procesamiento de los comandos de texto recibidos por el puerto serial.
  • CurrentMonitor.cpp: Mide el consumo de corriente en ambas vías de operaciones y la vía de programación y monitoréa los cortocircuitos.
  • Accessories.cpp: Para la creación de una lista de desvíos controlados por decodificadores DCC fijos. La dirección de los desvíos especificados en esta lista son actualizados y almacenados en la memoria EEPROM del UNO antes de apagarse.
  • Sensor.cpp: Para la creación de una lista opcional de sensores "detectores de tren" que estén conectados a los pines que no se usen en el UNO.
  • PacketRegister.cpp: Contiene todo el código para crear los paquetes NMRA DCC basándose en los comandos que le pasa SerialCommand.cpp.

La lista de comandos (Sin lista de parámetros):

  • <t> : Sitúa la velocidad del decoder de una locomotora usando una velocidad de 128 pasos.
  • <f> : Controla las funciones del decoder de una locomotora F0-F28.
  • <a> : Control de decoders de accesorios fijos.
  • <T> : Control de desvíos conectados a decoders de accesorios.
  • <w> : Escribe la configuración de una variable Byte en un decoder de locomotora en la vía de operaciones.
  • <b> : Sitúa/limpia la configuración de una variable Byte en un decoder de locomotora en la vía de operaciones.
  • <W> : Escribe la configuración de una variable Byte en un decoder de locomotora en la vía de programación.
  • <B> : Sitúa/limpia la configuración de una variable Byte en un decoder de locomotora en la vía de programación.
  • <R> : Lee la configuración de una variable Byte en un decoder de locomotora en la vía de programación.
  • <1> : Enciende alimentación a las vías.
  • <0> : Apaga la alimentación a las vías.
  • <c> : Lee la corriente consumida de las vías de operaciones.
  • <s> : Devuelve los mensajes de estado, incluido el estado de alimentación, estado de los desvíos y versión del sketch.

Y este sería el sistema DCC++ Base Station, un sistema compacto totalmente compatible con la mayoría de los decodificadores del mercado. Con un software totalmente escalable tanto por la central como por los diferentes accesorios que se le pueden añadir como mandos de control, pantallas con información del estado de la centra, software de control, etc...

Descargar DCC++ Base Station con comentarios traducidos al español

   

Estos son los enlaces en los que podéis encontrar mucha información y muy útil sobre el tema DCC: