Decodificador para coche piloto

Todo lo relacionado con el control digital, la electricidad, electrónica e informática.
Avatar de Usuario
Rfe7747
Usuario avanzado
Usuario avanzado
Mensajes: 211
Registrado: 09 May 2013 09:45
Ubicación: Asturias
Edad: 74
Estado: Desconectado

Decodificador para coche piloto

Mensajepor Rfe7747 » 18 Oct 2015 20:49

Hola,

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

http://www.youtube.com/watch?v=z3OZkK5T7JQ

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.



Avatar de Usuario
Norber
Usuario avanzado
Usuario avanzado
Mensajes: 130
Registrado: 08 Jun 2014 23:50
Ubicación: Salamanca
Edad: 54
Estado: Desconectado

Re: Decodificador para coche piloto

Mensajepor Norber » 18 Oct 2015 23:31

Enhorabuena Maestro.
Otra faena magnífica!!

Y me da la impresión que este montaje no solo vale para los coches piloto, sino que puede instalarse ventajosamente en locomotoras grandes sin muchas prestaciones en cuanto a luces pero con espacio dentro. Como las 333 de Electrotrén, por ejemplo. Tengo unas cuantas. No sé si animarme...


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

Avatar de Usuario
Sponsh
Moderador global
Moderador global
Mensajes: 2250
Registrado: 21 Sep 2010 18:58
Ubicación: VNG
Edad: 58
Contactar:
Estado: Desconectado

Re: Decodificador para coche piloto

Mensajepor Sponsh » 19 Oct 2015 10:23

He de confesar que un "garrulo-electrónico" como yo no he entenido mucho la parte técnica que explicas, pero la pinta que tiene el resultado de prestaciones es buenísima.

Felicidades crack !!!

Saludos desde el móvil
(Disculpa posibles faltas)...


"Gracias a todos por vuestra colaboración y enseñanzas".

NUEVA WEB SPONSH : http://sponsh-tren.wixsite.com/inicio
Blog de mi maqueta : http://lamaquetadesponsh.blogspot.com/
Instagram maqueta : sponsh_tren

Avatar de Usuario
Rfe7747
Usuario avanzado
Usuario avanzado
Mensajes: 211
Registrado: 09 May 2013 09:45
Ubicación: Asturias
Edad: 74
Estado: Desconectado

Re: Decodificador para coche piloto

Mensajepor Rfe7747 » 20 Oct 2015 12:39

Hola,

gracias Norber. Este circuito está orientado a lo que dice el título, pero lo que propones es perfectamente factible. Como de momento no me he metido (con el éxito que quisiera) con el control de velocidad de los motores, puedes montar un decodificador sencillo en tus 333 asignándolo al control de la velocidad, sin emplear sus funciones y emplear el que te prometo 'a medida' para las luces, cabinas, etc. Aunque un decodificador estándar con seis salidas de función ya te da las mismas prestaciones, como por ejemplo el D&H que puse en la 7702, que está bien de precio y de prestaciones.

Gracias también Sponsh; no creo que seas lo que te aplicas; cada uno tenemos nuestro campo, en el que nos desenvolvemos más a gusto. Lo que llamas "parte técnica" viene a ser lo que nos cuentan en los manuales de los decodificadores.

Y ahora a ver si lo puedo completar, que estos días he estado un poco ocupado.

Saludos,

Germán



Avatar de Usuario
Rfe7747
Usuario avanzado
Usuario avanzado
Mensajes: 211
Registrado: 09 May 2013 09:45
Ubicación: Asturias
Edad: 74
Estado: Desconectado

Re: Decodificador para coche piloto

Mensajepor Rfe7747 » 20 Oct 2015 13:03

Seguimos con el

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

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.
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.



Avatar de Usuario
Rfe7747
Usuario avanzado
Usuario avanzado
Mensajes: 211
Registrado: 09 May 2013 09:45
Ubicación: Asturias
Edad: 74
Estado: Desconectado

Re: Decodificador para coche piloto

Mensajepor Rfe7747 » 20 Oct 2015 13:16

hardware:

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

pcb.png

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

Distribucion de Componentes.png

y conexiones a los circuitos:

Conexiones.png

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.
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.



Avatar de Usuario
Rfe7747
Usuario avanzado
Usuario avanzado
Mensajes: 211
Registrado: 09 May 2013 09:45
Ubicación: Asturias
Edad: 74
Estado: Desconectado

Re: Decodificador para coche piloto

Mensajepor Rfe7747 » 20 Oct 2015 13:48

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ó.

...



Avatar de Usuario
Rfe7747
Usuario avanzado
Usuario avanzado
Mensajes: 211
Registrado: 09 May 2013 09:45
Ubicación: Asturias
Edad: 74
Estado: Desconectado

Re: Decodificador para coche piloto

Mensajepor Rfe7747 » 20 Oct 2015 14:01

...
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



Avatar de Usuario
Rfe7747
Usuario avanzado
Usuario avanzado
Mensajes: 211
Registrado: 09 May 2013 09:45
Ubicación: Asturias
Edad: 74
Estado: Desconectado

Re: Decodificador para coche piloto

Mensajepor Rfe7747 » 20 Oct 2015 23:08

funcionamiento:

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

Tabla cvs.png

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. Adjunto aquí los archivos principales del tema porque no veo cómo incluirlos en el primer post.
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.



Avatar de Usuario
Norber
Usuario avanzado
Usuario avanzado
Mensajes: 130
Registrado: 08 Jun 2014 23:50
Ubicación: Salamanca
Edad: 54
Estado: Desconectado

Re: Decodificador para coche piloto

Mensajepor Norber » 22 Oct 2015 23:47

Rfe7747 escribió:funcionamiento:
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.


Por esta razón ¿no sería más práctico que las CVs de tu decóder no coincidieran con CVs habitualmente utilizadas? Me pregunto cómo podrían cambiarse los valores de un deco de estos instalado, no en un coche piloto no motor, sino en una locomotora para mejorar sus luces... Ahí no habría más remedio que abrirla y programarla desconectando previamente el deco principal...


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

Avatar de Usuario
Rfe7747
Usuario avanzado
Usuario avanzado
Mensajes: 211
Registrado: 09 May 2013 09:45
Ubicación: Asturias
Edad: 74
Estado: Desconectado

Re: Decodificador para coche piloto

Mensajepor Rfe7747 » 23 Oct 2015 10:21

Hola Norber,

¿y tu me lo preguntas? -haha

claro, tienes toda la razón. Pero sucede que en uno de los primeros que hice eché un vistazo a las funciones "disponibles para el usuario" según la NMRA; se trataba de un Digitrax con sonido y ¡no había libre ni una!. Después, viendo lo que nos enseñan otros foreros sobre los ESU y demás decoders con cvs de valores elevados, elevadísimos, he tomado la decisión de que los decoders que son independientes tengan sus propias cvs, ya que no interfieren con otros.

Cuando son complementarios de otros ya sí deben ser compatibles y se ajustan a la norma, si no sería tan engorroso como dices. Por ejemplo en el caso de tu 333 con un decoder estándar para el motor, uno complementario debería serlo en toda la configuración, anulando, por ejemplo, sus funciones y asignándolas al decoder auxiliar.

Saludos,

Germán




Volver a “MUNDO DIGITAL, ELECTRICIDAD Y ELECTRÓNICA”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 8 invitados