22

Decodificadores DCC baratos con Arduino

Buenas a todos!!!  Ya está listo mi primer decodificador DCC de bajo coste realizado con Arduino.

Arduino_nano_shield

Arduino nano con Shield para servos

Al fin termine mi primer decodificador DCC basado en Arduino. Aunque ya existían programas para esta misma función y como soy un poco “metomentodo” y no me terminaba de convencer el resultado final, decidí hacer mi propio programa. Una de las diferencias más notables de mi programa es que a diferencia de los que ya había visto descargado y probado y aunque funciona perfectamente hay una cosa que no he podido “arreglar” y es el movimiento de los servos, que si, van a su sitio, pero el servo se queda haciendo un ruido bastante molesto sobre todo cuando tienes más de uno.

 

Para eliminar el ruido de los servos he tenido que cambiar algunas cosillas… buenos más que algunas. Para ello he utilizado la función servox.detach(); Con esto hacemos que el servo no se quede “agarrado” una vez hemos movido el servo, es decir, lo apaga. Creo que esto es algo bastante importante a la hora de consumo energético, ya que el servo al no recibir ninguna señal, tiene un consumo mínimo.

Arduino más instalación de unos transistores para alimentar los reles para hacer los cambios de luces de los semaforos

Arduino más instalación de unos transistores para alimentar los reles para hacer los cambios de luces de los semáforos

Esta es la parte de abajo del garaje para locomotoras S4 es el servo que mueve la puerta y ACC5 son las luces del garaje

Esta es la parte de abajo del garaje para locomotoras S4 es el servo que mueve la puerta y ACC5 son las luces del garaje

Instalación de un decoder de funciones Arduino

En las fotos se puede ver que es un circuito sencillo y el coste total del decodificador es absolutamente ridículo si lo comparamos con los decoficadores que hay en el mercado voy a intentar poner el coste total de los componentes

  • Arduino nano :      2€ aprox en Ebay.com
  • Shield Arduino :    2€ aprox en Ebay.com
  • 4 servos 9g :          8€ (2€ unidad) en Ebay.com
  • Interface 6n137 :   0,5€ aprox en Ebay.com
  • Transistores :         0,2€ aprox en Ebay.com

Si sumamos todo esto nos da un total de 12,7€ es decir para motorizar 4 desvíos, nos saldría el desvío a unos 3€!!! y eso que estoy tirando por encima.

Para conectar el Arduino con nuestro programa necesitamos este circuito:

Una de las cosas que he notado usando este circuito es un problema con la central DCC++ cuando esta se alimenta a 12V que misteriosamente no funciona, en contra usando la central Prodigy Express en la que el transformador entrega 15V funciona perfectamente y incluso con DCC++ y una fuente de 9V. Para el próximo sustituiré R1 de 1K por una algo más grande de 2K2. Subiré el resultado cuando haga más pruebas. Ahora estoy actualizando los módulos y estoy con la fuente de 9V y sin problemas, pero cuando este todo terminado pondré una de 12V a 16V para alimentar todo el conjunto y poder tener 3 o 4 locomotoras funcionando sin problemas.

conexión 6N137 con shield de Arduino NANO

Este es el esquema de como vamos a conectar los decodificadores al circuito de vías:

conexion_central_dcc-_y_decodificadores

Comprobando lectura del 6N137 con la central DCC++ y Sniffer

Bien este programa en particular es para el control de 3 desvíos, unas puertas para el garaje y las luces del mismo.

Si alguien más esta interesado en que tenga alguna función más podemos hacer un programa a medida de sus necesidades.

Descargar Decodificador de accesorios 4 servos + semáforos

Descargar Decodificador accesorios 4 servos + 3semaforos + 2luces + soldadura con arco

Descargar NmraDcc Loco Decoder V1 

Y aquí un par de vídeos de como funciona:

 

También podéis encontrar información muy útil en las siguientes Webs:

(Visitado 3.994 veces, 1 visitas hoy)

22 comentarios

  1. Hola,
    Desde una interface JMRI y a través de una estación dcc++ quiero controlar dos desvíos . Mediante un Sniffer pinchado en la vía puedo ver que los comandos aparecen correctamente indicando la dirección de cada uno de ellos, pero sólo se activa el de la dirección más baja, al enviar la orden de nuevo desde la JMRI entonces se activa el segundo desvío. Lo mismo pasa al cerrar los desvíos.. Alguna sugerencia?

    • Buenas Miguel!!! Puedes comprobar que dirección esta recibiendo el decoder con el monitor serial del IDE de Arduino. No conozco JMRI pero parece como cuando se programa una secuencia… o si mandara la orden más de una vez… También mira como funciona el tema de Direcciones/Subdirecciones en JMRI en Rocrail, las Subdirecciones van desde la 1 a 4 y en DCC++ son de 0 a 3. Puede que este por ahí la cosa, Saludos!!!
      Perdonad si tardo en publicar los comentarios, debido al “Spam” van con un sistema automático que hasta el 3 comentario aceptado, no los publica directamente.

      • Hola de nuevo, no parece que sea de direccionamiento, ya que cuando desde JMRI abro y cierro individualmente los desvíos, responden correctamente y en el puerto serie aparecen las direcciones que corresponden. El problema aparece cuando los dos desvíos están incluidos en una ruta y la activo. En mi opinión podría ser cuestión de algún delay dentro del sketch.
        Voy a experimentar a ver si concluyo alguna cosa y te la comento. Gracias!

        • Buenas Miguel, es posible que haya algún fallo en la configuración o, como dices, en algún delay o en otra parte del programa, ahora estoy dedicando más tiempo para actualizarlos, por que, como dices, es mejor usar millis() tal y como aparece en el sketch original ya que creo es más efectivo, pero aun esto haciendo pruebas ya que casi siempre tengo “tembleque” en los servos cuando antes todo me funcionaba sin problemas, la fuente de alimentación me tiene un poco “mosca”. Ahora ya tengo las cosas un poco más organizadas y creo que podre dar un avance a la maqueta e incluir nuevas animaciones, como por ejemplo esta: Animación DCC paso a nivel. Espero poder tener una solución a todo esto próximamente!! Saludos Miguel!!

          • Sigo sin avanzar. Me he tomado un paréntesis para hacer pruebas con Rocrail y volver en unos días con JMRI. Te he leido del “tembleque”, pero en mi caso no me ha ocurrido. Lo del paso a nivel pinta muy bien. Estaré pendiente.

          • He localizado el problema y la solución. Cuando activo una ruta para que se establezcan los desvíos y las señales, en la vía aparece correctamente la la codificación de direccionamiento y acciones que corresponden, pero en el puerto serie del decodificador (Nano) sólo aparece la dirección y el estado del primer desvío. Si intercalo un retraso de 1 sg. entre desvíos todo funciona correctamente. Parece que o bien JMRI o el Sketch del Arduino no se ajustan a los estándares de la NMRA. De momento salgo del paso. Lo del tembleque, no sé si será lo mismo citabas tú, pero he reproducido un ruido que parece “tembleque” aumentando el tiempo del servotimer. Con un valor entre 20 y 40 los servos se desplazan completamente y no hacen el ruido. Saludos.

  2. No soy muy ducho en el tema, tengo un enchufe a 12v, con Jack. Osea que tan solo, lo conecto al enchufe de la SHIELD y ya,no?

    • Buenas Miguel!! si, puede que reciba tan rápido el dato que no le tiempo a procesarlo por eso me pase tiempo después a uno con temporizador millis() para que pueda hacer varias cosas al mismo tiempo, lo que es muy útil para las animaciones. Pero aun lo tengo que pulir un poco por el tema de los detach(); por que no se quedan todos quietos :/ ¿puedes incluir el código que has añadido por si alguien tiene el mismo problema? por cierto estas en H0 o N? Saludos!!!

  3. Buenas Ricardo! Puedes conectarlo sin problemas según especificaciones:
    -Voltaje de entrada (recomendado) 7-12 V
    -Voltaje de entrada (límites) 6-20 V
    Vigila las polaridades!!! es lo único que haría de tu Arduino una plaquita para piezas…. Saludos!!!

  4. Si alimento a 12v tengo que hacer algo o simplemente conecto a 12v? Es por si quemó el Nano

  5. Buenas tardes, magnifico trabajo el que realizas.
    Una pregunta, tengo pedido un Nano y la placa shield, y ya tengo hecho la interfaz de arduino, y voy a controlar solo 4 servos. Respecto a la interfaz, esta claro que dos cables van a las vías, pero la duda que tengo es la conexión del cable GND, el cable del Pin2 y del cable 5V, la realizas a la placa Shield?.y no al Nano, verdad?.
    Gracias

    • Buenas Ricardo, si, como dices, van al SHIELD, en él, hay una línea solo para GND y otra para +5v junto a todos los pines E/S del SHIELD, así puedes conectar servos directamente, o como he hecho, conectar un sensor que necesite alimentación. Luego cuando lo instalas en la maqueta solo alimentas el SHIELD con 5 o 12v y el alimenta al NANO, super cómodo!!!

  6. Hola, gracias y felicitaciones por mostrar tu trabajo.
    Tengo una central DCC ++ y acabo de montar un Decoder basado en el proyecto Mynabay con el 6N137. He conectado una fuente de alimentación de 12V, ya he conectado una de 15V y no puedo que el Arduino Serial Monitor detecte movimiento. Ya reemplaza el R1 por uno de 2K y nada.

    Me puede ayudar a averiguar cuál debería ser el problema?

    gracias

    Miguel

    • Buenas Miguel, imagino que habrás comprobado que funcione correctamente los trenes. Prueba a cortar el Vin que va desde el Shield del motor a Arduino teniendo que alimentar el Arduino desde el USB y el Shield con el transformador. Arduino no funciona con más de 12V, es muy probable que si alimentas Arduino con la alimentación del Shield durante mucho tiempo el regulador de tensión termine quemándose (ya me paso con uno que tenia en el coche, con el alternador 14,1V termino por quemar el regualdor). Si esto no funciona prueba con uno de 9V al menos para comprobar que el circuito esta bien.
      En el shield del DCC++ que aparece en las fotos no tiene Vin para cortar en la placa, así que cuando estoy probando puedo quitarlo y ponerlo.
      Espero haber sido de ayuda, si sigue sin funcionar podemos ver otras opciones.
      Saludos!!!

  7. Hola, fenomenal la información y los enlaces que provees.
    En la foto del decoder no consigo identificar por donde alimentas (+5v) la shield.
    Los cables rojo y negro son el Bus DCC y loc ables verde/blanco/amarillo que salen de la foto van a un posible servo de desvío en paralelo con el S3. Correcto?
    Muchas gracias por compartir.

    • Buenas Miguel, en esa foto la shield no esta alimentada, el cable de alimentación iría en el jack hembra del shield. lo demás es todo correcto, los rojos y negros son el BUS y los otros, verde/blanco/amarillo alimentan otro servo para un cruce. Si tienes cualquier otra duda aquí sera un placer contestarla. Saludos!!!

    • Buenas Carlos!!! no entiendo muy bien tu pregunta del sketch, El Scketch que hay en la sección de descargas de esta pagina para el DCC Comand Station es simplemente una pequeña traducción del programa original, pero en esencia es exactamente igual que el original, no hay ninguna modificación.
      Los Sketchs de los decodificadores son para arduinos independientes de la central DCC conectados a la linea DCC. A ver si encuentro un rato y hago un pequeño esqueña de como irían conectados para que se pueda entender mejor.
      Hay un booster para el el sistema DCC++??? No lo sabia, me puedes pasar el link para que le eche un vistazo???

      Muchas Gracias por tus comentarios, si tienes más preguntas no dudes en consultarlas, intentaremos responderlas todas y cada una de ellas.

  8. Hola, yo no utilizo digital sino analógico, ¿esto serviría para analógico?
    Muchas gracias.

    • Buenas Francisco! Pues valdría para todo el tema de accesorios o automatizaciones, pero no para locomotoras, es decir podrías controlar desvíos, luces, efectos etc con un Arduino y rocrail por ejemplo. Ese bus de datos no iría conectado a las vías sino a un cable que conectaría todos los decodificadores Arduino. O si ya tienes una central digital manejar todos los accesorios desde ahí. En resumen, tendrías que tener los dos sistemas, analógico para las locomotoras y digital para accesorios.
      Lamento haber tardado en responder!!!
      Saludos!!!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *