Índice general Foros Digital, Electricidad e Informática Decodificador para coche piloto

Decodificador para coche piloto

Moderador: 241-2001



Desconectado
Mensajes: 621
Ubicación: Asturias
Registrado: 15 Nov 2012 19:16
Hola,

a propósito de algunas consultas en otros hilos (y charlas previas con el colega 7700), retomé un tema que tenía tocado de hace tiempo, actualizando y mejorando prestaciones. Primero:



Se trata de un circuito decodificador cuyo corazón es muy similar a los que vengo exponiendo y a los decodificadores de funciones, esta vez dedicado específicamente a la función de auxiliar en la cabina de conducción de coches piloto y automotores. Un circuito así sencillo evita el poner un decodificador más completo y más caro (mucho más caro).

Permite el control de los faros blancos y rojos, según el sentido de marcha; los blancos separando el foco principal de los pilotos inferiores. Una salida auxiliar permite iluminar la cabina o el departamento de viajeros.

En todos los faros se utiliza pwm en el control, lo que permite programar su intensidad luminosa mediante variables de control. El foco principal dispone de dos intensidades: una baja cuando la velocidad es inferior a un determinado paso de velocidad (especificado en una cv) y otra alta cuando es superior; estableciendo el paso de corte en valor cero se tiene control continuo a máxima intensidad. Cada intensidad se controla con una función. El paso de una a otra, así como el encendido y apagado es progresivo, pudiendo establecer su velocidad de cambio en otra cv.

Para la iluminación de cabina, otra cv define si se simula en forma de lámpara incandescente o fluorescente. En esta misma cv un bit define si el sentido es el normal o invertido (similar al que lo define en la cv29 de la NMRA).

Finalmente tres funciones permiten modificar los niveles de intensidad luminosa de los faros sobre la vía principal, sin necesidad de hacerlo en la de programación.

Todas las funciones son mapeables por el sistema directo que ya expuse en otros decodificadores; es decir, escribiendo su valor en la cv correspondiente, y su dirección puede ser tanto larga como corta, programándose en decimal en las cv1 y cv2 desde 01 a 99 como dirección corta y 00-01 a 99-99 como dirección larga.

Dado el modo particular en que se utilizan las variables de control, es imprescindible hacer su programación independiente del coche motor, cuando se haga en la vía de programación. Lo natural será dar a las funciones el mismo valor que en el coche motor, de modo que, por ejemplo, con F0 se enciendan los pilotos del coche motor cuando vaya en cabeza o del coche piloto en sentido contrario.
Adjuntos
Deco coche pìloto.zip
(71.67 KiB) 272 veces
Última edición por Rfe7747 el 20 Oct 2015 22:11, editado 1 vez en total


Conectado
Mensajes: 378
Ubicación: Ibarra
Registrado: 20 Abr 2009 06:02
No paras me dejas alucinado.
Saludos Luis.


Desconectado
Mensajes: 2191
Registrado: 21 Mar 2014 12:52
DIC40 escribió:
No paras me dejas alucinado.
Saludos Luis.

No eres el único :shock:


Desconectado
Mensajes: 751
Ubicación: Salamanca
Registrado: 12 Ene 2012 14:44
Qué buen invento y qué buen vídeo!!
Diste en el clavo con el decodificador DCC y ahora cualquier cosa es posible.
Si hasta se me ha antojado ponerle esto de las luces a mis viejas 333 de Electrotrén. Con sus motores de CD y los condensadores contra paradas intempestivas, estas luces las pueden convertir en una maravilla.

Tendrías que ir pensando ya en los decos con sonido. Venden unos chips con tarjeta microSD que... Mmmmmm.....¿Lo vamos pensando? Ja, ja, ja. Enhorabuena!!
Saludos

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


Desconectado
Mensajes: 621
Ubicación: Asturias
Registrado: 15 Nov 2012 19:16
Hola,

gracias por vuestros comentarios. Esto es casi una venganza contra el calor de estos meses pasados que me secaron la neurona y me quitaron las ganas de todo... :)

Norber, no soy muy amigo del sonido, pero quién sabe... Sí es verdad que una vez decodificada la señal DCC, ya podemos hacer casi todo lo que se nos ocurra, y eso que la normativa no ha dejado una puerta abierta al usuario para que pudiera generar comandos propios desde las centrales; entonces sí sería posible hacer maravillas (o simplezas) al gusto de cada uno, pero... eso es harina de otro costal.

Voy a tratar de completar la exposición a continuación. Saludos,

Germán


Desconectado
Mensajes: 621
Ubicación: Asturias
Registrado: 15 Nov 2012 19:16
circuito:

el circuito es clásico: puente rectificador, condensador de filtro, regulador para 5V y microcontrolador con sus salidas amplificadas con transistores digitales para ocupar menos espacio y alimentar los LEDs desde el común.

Esquema.png
Esquema.png (24.65 KiB) Visto 5051 veces

Los transistores de las salidas tienen una capacidad de corriente de 500 mA, pero no es deseable que pase de unos 100. En nuestro circuito van a controlar corrientes de unos pocos miliamperios.
Las capacidades de los condensadores de filtro no son críticas: cualquier valor pequeño es suficiente para filtrar una corriente que tiene una velocidad de conmutación rápida como se le exige a la señal DCC. Lo que sí es importante respetar es la tensión de trabajo. En el de entrada, C1, debe ser de un mínimo de 25V, mientras que en C2, que está a 5V puede ser de cualquier valor por encima de ellos: 6'3V, 16V...
Las resistencias limitadoras de corriente de las salidas permiten luminosidades de los LEDs muy elevadas, con los de alto rendimiento utilizados para estos fines.
La resistencia de 22K empleada como detector de la señal DCC, debe ir conectada al raíl derecho en el sentido de marcha principal, con el objeto de que las luces blancas y rojas se enciendan de acuerdo con la polaridad de la vía si se utilizara en analógico.

He utilizado un regulador 78L05 de 8 patillas; puede emplearse cualquier otro (aunque el pcb está realizado para éste) porque no hay parámetros críticos: suministra la baja corriente que precisa el ATtiny85, lo que no le producirá calentamiento.

Las salidas van a consumir también valores bajos de corriente, por lo que el puente rectificador empleado, de unos 500 mA es suficiente.


Desconectado
Mensajes: 621
Ubicación: Asturias
Registrado: 15 Nov 2012 19:16
hardware:

la placa de circuito impreso tiene unas dimensiones de 31x15 mm

pcb.png
pcb.png (1.14 KiB) Visto 5050 veces

y estará incluida en un archivo .pdf para poder hacerla por procedimientos caseros. Distribución de los componentes:

Distribucion de Componentes.png
Distribucion de Componentes.png (18.16 KiB) Visto 5050 veces

y conexiones a los circuitos:

Conexiones.png
Conexiones.png (14.34 KiB) Visto 5050 veces

La línea que he dibujado como CORTE permite dividir la placa en dos partes para poder pegarlas entre sí soldando solamente las tres pistas que corta, con un hilo, de manera que ocupe un espacio menor. Por otra parte está indicado en el post anterior que el regulador no precisa un gran disipador ya que no se calienta apenas; por lo tanto puede recortarse la superficie de cobre cuanto sea necesario para reducir el tamaño.


Desconectado
Mensajes: 621
Ubicación: Asturias
Registrado: 15 Nov 2012 19:16
software:

es un pequeño contrasentido hablar del programa sin haberlo publicado aún. Esto se debe a que he pensado hacer una ampliación sobre lo comentado en el post inicial, permitiendo al usuario que anule la operatividad de las funciones de variación de potencia luminosa en la vía principal para que esas funciones puedan ser asignadas a otras operaciones. Lo he pensado porque los muchos amantes del sonido probablemente tengan la mayoría de las funciones ocupadas por los efectos que nos proponen los fabricantes de decodificadores de sonido. Cuando pueda incluirlo en el código ya adjuntaré un archivo .zip con los archivos correspondientes a este proyecto, en el primer post.

De manera breve para quienes estén interesados en la programación. El código está escrito en lenguaje c, en el entorno Atmel Studio. Su operación se basa en detectar la señal DCC para decodificarla. Una interrupción por cambio de nivel detecta los cambios en la vía de negativo a positivo. En ese momento anota el valor del timer0 que es un contador de 0 a 255 que cuenta microsegundos de manera continuada. Cuando se detecta un cambio contrario, de positivo a negativo, se lee de nuevo el contador y la diferencia con la anterior lectura dice el tiempo que la señal DCC estuvo a nivel alto. Si ese tiempo es de 58 microsegundos corresponde a un bit uno, y si es superior a 100 microsegundos, a un bit cero. El programa pone la divisoria en 90 microsegundos (porque las centrales sólo pondrán en la vía unos y ceros, luego no es necesario buscar una gran precisión).

La sucesión de unos y ceros recibidos debe corresponder a alguno de los "paquetes" previstos en la normativa; así en la interrupción se van detectando el preámbulo (más de diez bits a uno) y los bytes que forman cada comando y almacenándolos en memoria. Cuando se completa un comando correcto, activa un bit.

En la función main() se consulta este bit y se procede a la decodificación. Esta decodificación puede hacerse sin problemas de tiempo en la propia función de la interrupción, como se venía haciendo en otros proyectos, pero a propósito de un proyecto en que estoy colaborando con Norber, donde la interrupción debe ocupar el mínimo tiempo posible, vemos que también se puede hacer aquí.

Las salidas PB0 y PB1 del esquema, para el control de los pilotos blancos y rojos se programan como pwm (por esta razón el timer0 que emplean no se detiene) y su registro de comparación puede ajustarse en función de las condiciones de funcionamiento.

Para el control del foco principal se utiliza la salida PB4, que también es posible programar como pwm. Los efectos de mayor o menor intensidad luminosa se consiguen también modificando el contenido de un registro de comparación.

Cada vez que el timer0 pasa de 255 a 0, otra interrupción lleva cuenta del tiempo real y cada 10 milisegundos lo indica poniendo un bit a uno. Asimismo lleva cuenta del tiempo que transcurre sin señal DCC (cada flanco de la señal DCC, un contador es cargado con un valor de 200). Si el contador llega a cero (al cabo de 2 segundos) significa que en la vía no hay DCC, sino DC.

Si en el main() se detecta que este contador está a cero, se enciende los faros en función del sentido, que es conocido si las conexiones a la vía se hacen como se indicó.

...


Desconectado
Mensajes: 621
Ubicación: Asturias
Registrado: 15 Nov 2012 19:16
...
A continuación, cada 10 ms, se exploran las funciones asignadas a los circuitos para ver si están activas y operar en consecuencia. En primer lugar las funciones que modifican la intensidad luminosa: apagan todas las demás (independientemente de que estuvieran o no activadas) y pone valores crecientes del pwm en el circuito seleccionado. Cuando se desactiva la función, ese valor se graba en la cv correspondiente.

Luego se escanea la función que activa cada circuito en el sentido definido y actúa en consecuencia, activando o desactivando la salida correspondiente.

En el caso del foco principal se chequea además el paso de velocidad para que si es menor que el configurado su intensidad se reduzca. Se hace en relación la velocidad establecida en 28 pasos; si detectara que la velocidad esta configurada para 128 pasos, simplifica este valor, dividiéndolo por 4 (utilizando estos 128 pasos, el valor límite deseado debe grabarse dividido por 4).

Y la salida prevista como "iluminación" se hace parpadear, al conectarla, en caso de estar configurada como incandescente, con valores aleatorios que se obtienen de contar los cambios de nivel de la señal DCC en la interrupción.


En otro próximo post comento el funcionamiento con la tabla de las cvs y ya no os doy más la lata.

Saludos,

Germán


Desconectado
Mensajes: 85
Registrado: 23 Abr 2011 19:29
De 10 sobre 10 Germán, ¡qué bárbaro!
José Antonio


Desconectado
Mensajes: 621
Ubicación: Asturias
Registrado: 15 Nov 2012 19:16
Gracias José Antonio. Seguiremos...

funcionamiento:

En la tabla siguiente se presentan todas las variables de configuración empleadas:

Tabla cvs.png
Tabla cvs.png (45.22 KiB) Visto 5010 veces

Con los valores iniciales el encendido del foco principal puede hacerse con F1 para máxima intensidad, que se atenúa automáticamente al bajar la velocidad por debajo del valor especificado por la cv14 (para el formato de 28 pasos; para el 128, el paso se divide por 4 para asemejarlo al de 28). Con F2 se controla el encendido con baja intensidad; F1 tiene preferencia sobre F2. En cualquier caso cuando el coche cabina circule en cabeza.

F0 enciende los pilotos blancos, F3 los rojos (cuando esta cabina circule en cola) y F4 es una función auxiliar con control de encendido/apagado sin control de potencia. Configurando el bit cero de la cv16 a 1 simula el encendido fluorescente, mientras que a cero simula incandescente.

Con las cv10 a cv13 se establece la relación cíclica del pwm que define la intensidad luminosa del circuito correspondiente. Para el foco principal se definen la potencia máxima y la de atenuación. Hay que recordar una vez más que la iluminación no guarda proporción lineal con la potencia aplicada.

Finalmente las cvs 17 a 19 permiten modificar el nivel de luminosidad sin estar en la vía de programación; operan encendiendo solamente la luz del circuito a programar y aplicando una potencia que varía linealmente del mínimo al máximo; al desactivar la función el nivel de potencia se graba en la cv correspondiente.

Una vez más recuerdo que la programación en vía de programación debe hacerse separada para el coche piloto del coche motor porque sus cvs tienen asignadas funciones distintas.

Y esto es todo. Si alguien quiere algún detalle más, estaré encantado, como siempre, de tratarlo. Disculpad por el rollo.

Quiero expresar mi agradecimiento al colega 7700, cuya manifiesta creatividad fue quién inspiró hace ya bastante tiempo una aplicación como ésta.

Saludos,

Germán
P.D. En el primer post ya adjunto los archivos principales del tema


Conectado
Mensajes: 378
Ubicación: Ibarra
Registrado: 20 Abr 2009 06:02
Estoy preparando las placas y tengo una duda en vez de los transistores BCR512 se puede utilizar algún equivalente NPN.
Saludos y gracias Luis.


Desconectado
Mensajes: 621
Ubicación: Asturias
Registrado: 15 Nov 2012 19:16
Hola Luis,

no puede valer cualquier transistor NPN porque los del esquema son transistores digitales, lo que quiere decir que llevan integradas las resistencias necesarias en el circuito de base. Suelo utilizarlos porque ocupan menos espacio.

Para utilizar un transistor no digital podrías intercalar una resistencia en serie con el terminal de base, de un valor de 4K7, por ejemplo.

Si tienes alguna duda, no lo dudes, pregunta. Si no vieras solución factible, ponme un privado y te mando los transistores.

Saludos,

Germán


Conectado
Mensajes: 378
Ubicación: Ibarra
Registrado: 20 Abr 2009 06:02
Gracias por la respuesta German algún truco tenía que tener, ya he localizado por internet no creo que haya problema y si no intentare poner una R en la base.
Gracias y saludos Luis.


Conectado
Mensajes: 378
Ubicación: Ibarra
Registrado: 20 Abr 2009 06:02
Otra pregunta German, se puede utilizar este transistor BCR512 para amplificar las AUX 3-4 de los ESU sin resistencia de base para hacer esto?
http://espacerails.free.fr/modelisme/ht ... fb_npn.pdf
Saludos y gracias Luis.


Desconectado
Mensajes: 621
Ubicación: Asturias
Registrado: 15 Nov 2012 19:16
Hola Luis,

sí; cualquier transistor digital puede servir, pero para ese circuito también es muy utilizado el MOSFET BS170, que puede reemplazar a los transistores del esquema sin necesidad de la resistencia de base, y este se encuenrta con facilidad en tiendas de componentes electrónicos.

Saludos,

Germán


Conectado
Mensajes: 378
Ubicación: Ibarra
Registrado: 20 Abr 2009 06:02
Gracias German ya he visto que se pueden utilizar los Mosfet, estoy esperando que me lleguen los SMD era por ir salseando un poco.
Gracias por la respuesta y saludos Luis.


Conectado
Mensajes: 378
Ubicación: Ibarra
Registrado: 20 Abr 2009 06:02
Hola German otra vez preguntando, estoy haciendo pruebas para grabar los Attiny 85 con el Extreme Burner y bueno todo va bien me lee los chip parece sin problema, los problemas empiezan cuando intento cargar el Hex del deco de coche piloto y me dice “Hex file not found y lo siguiente cant open hex file in func AVRprogFrm load hex file y lo mismo con la eprom”.
Con el de luces de cola universal no me pasa eso y con el deco ventilador tampoco pero con el resto sí.
Para programar por lo que entiendo se lee el chip primero, se cargan los archivos, los fuses se cambia el valor por los que dijiste y la incógnita es si hay que marcar la casilla escribir para programar o se deja desmarcada.
Un saludo y gracias Luis a ver si me voy enterando.
Edito:
Bueno me he liado la manta a la cabeza y he descargado una versión más antigua y parece que ya carga los ficheros bien.
Con respecto a los fuses en todos los chip que he leído me da en todos “62 y DF en LOW y HIG” estando programados de antes, eran de alguna prueba con Arduino, y otros sin grabar es normal?.


Desconectado
Mensajes: 621
Ubicación: Asturias
Registrado: 15 Nov 2012 19:16
Hola de nuevo Luis,

Los valores 62 y DF en los "fuses" creo que son los que vienen por defecto, de fábrica. Los que pongo en los circuitos (E2 y D5 respectivamente) son para que no divida internamente la señal de reloj por 8, y genere un reset cuando la tensión de alimentación caiga por debajo de 2'7 voltios (si quieres te explico la razón, para no alargarme ahora).

Cuando cambias sus valores, debes marcar las casillas de escribir para que los grabe; supongo que es una mejora de la seguridad para evitar cambios accidentales.

Doy por hecho que ya has conseguido que se carguen los ficheros.

Saludos,

Germán


Conectado
Mensajes: 378
Ubicación: Ibarra
Registrado: 20 Abr 2009 06:02
Gracias por la respuesta German lo voy entendiendo dentro de un rato lo pruebo.
Pues lo de los ficheros me volvió loco por qué unos cargaban y otros no, estaba utilizando la última versión de Extreme Burner en W7 y XP y nada me lie la manta a la cabeza y busque una versión anterior, la 1.2 y con esta parece que ya los carga bien.
Espero no dar más la tabarra saludos y gracias Luis.

Siguiente

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