Índice general Foros Digital, Electricidad e Informática Decodificador para luces de cola universal

Decodificador para luces de cola universal

Moderador: 241-2001



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

hoy presento otro circuito (aunque se puede decir que es el mismo, sólo cambia el programa) basado en el microcontrolador ATtiny85 para tener el control de encendido/apagado de las luces de cola del tren. Lo llamo universal porque permite el control de las luces a destellos, fijas o simulando los faroles de petróleo (con efecto fuego). Si hay algún tipo más, agradecería la información sobre él para incluirlo, si es posible, aunque en el mundo digital pocas cosas no lo son.

Un video de presentación:



En él se muestran por encima las principales características, que no detallo para evitar que sea demasiado largo. El "panel de pruebas" es un tanto casero. Las cámaras digitales no captan los colores tal como los vemos al natural (o no sé hacerlo yo) y el "efecto fuego" tampoco se aprecia con claridad en sus variaciones; realmente consiste en una modulación aleatoria del nivel de intensidad.

Las principales características:

posibilidad de direcciones cortas o largas muy sencillas de programar: cv1 y cv2 forman la dirección decimal (cv1 unidades y decenas y cv2 centenas y unidades de millar); por ejemplo cv1=2 y cv2=0 => dirección corta 2; cv1=0 y cv2=1 => dirección larga 100; cv1=99 y cv2=99 => dirección larga 9999. Interpreta correctamente las direcciones que emita la central digital.

mapeo simple de las funciones basta con escribir el número de la función deseada en una variable de configuración.

configuración de los tipos de faroles que pueden ser destelleantes, incandescentes o con efecto fuego.

programas predefinidos con configuraciones habituales para simplificar la configuración del circuito.

Todos los parámetros son programables mediante variables de configuración: la intensidad luminosa de los faroles laterales, la del inferior, el tiempo entre destellos (período) desde 0'5 a 2'55 s, el apagado progresivo, y la profundidad del efecto fuego (tanto por ciento de la luminosidad) tanto para los faroles laterales como para el inferior.

...continúa...


Desconectado
Mensajes: 625
Ubicación: Asturias
Registrado: 15 Nov 2012 19:16
...
El esquema electrónico es el mismo empleado en otros decodificadores sencillos: puente rectificador, condensador de filtro, regulador de voltaje de 5V y microcontrolador.

Utiliza los tres pwm de que dispone el ATtiny85 para regulador la intensidad luminosa de los faroles; además con el terminal sobrante incluí la posibilidad de alimentar otro circuito, pensando en la iluminación interior de un furgón de cola, por ejemplo. Todos los LEDs se alimentan desde el microcontrolador a 5V y baja corriente (a través de una resistencia de 1K), dado que los LED tienen cada vez mejores prestaciones y para esta aplicación no se necesita que sean reflectores, sino puntos rojos visibles con claridad.

El pcb es prácticamente el mismo utilizado en otras ocasiones:

pcb.png
pcb.png (3.56 KiB) Visto 2898 veces

Lo incluiré, por supuesto, en el adjunto con los demás documentos.

El software también es muy similar al de otros decodificadores. Muy por encima, porque veo que somos muy pocos los que nos liamos en esto, consiste en: una interrupción detecta los cambios de nivel de la señal DCC en la vía; en el flanco de subida inicializa una variable, y en el de bajada lee el tiempo transcurrido desde entonces para detectar si corresponde a un cero o a un uno.

Como consecuencia de unas charlas con Norber a propósito de un proyecto muy interesante en el que está trabajando, esta interrupción solamente forma los paquetes y activa un bit si verifica que es correcto. La decodificación se hace en la función main(); así la subrutina de interrupción es más rápida.

Los dos pwm de los faroles laterales se generan empleando el timer0 y el del farol inferior el timer1; además el timer0, que no se detiene, se utiliza para tener una referencia de tiempo de casi 10 ms.

En la función main() se hace la decodificación para obtener el estado de las funciones desde F0 a F12 y, cada 10 ms, se chequean para actuar en consecuencia. El efecto flash se hace encendiendo los LEDs de un solo paso al brillo programado, permaneciendo 50 ms con él, y apagándolos en los pasos programados más o menos lentamente. El efecto fuego emplea, por una parte, un número aleatorio obtenido con un contador de 8 bits que se incrementa con cada flanco de la señal DCC, y por otra unas variables de configuración que definen el porcentaje del brillo que variará según el número aleatorio.

Si alguien tiene interés en algún detalle lo expondré con gusto, como ya sabéis.

...continúa...
Última edición por Rfe7747 el 07 Oct 2015 17:10, editado 1 vez en total


Desconectado
Mensajes: 2228
Ubicación: Asturias
Registrado: 16 Jul 2008 12:51
Rfe7747 escribió:
...
El esquema electrónico es el mismo empleado en otros decodificadores sencillos: puente rectificador, condensador de filtro, regulador de voltaje de 5V y microcontrolador.

Utiliza los tres pwm de que dispone el ATtiny85 para regulador la intensidad luminosa de los faroles; además con el terminal sobrante incluí la posibilidad de alimentar otro circuito, pensando en la iluminación interior de un furgón de cola, por ejemplo. Todos los LEDs se alimentan desde el microcontrolador a 5V y baja corriente, dado que los LED tienen cada vez mejores prestaciones y para esta aplicación no se necesita que sean reflectores, sino puntos rojos visibles con claridad.

El pcb es prácticamente el mismo utilizado en otras ocasiones:

pcb.png

Lo incluiré, por supuesto, en el adjunto con los demás documentos.

El software también es muy similar al de otros decodificadores. Muy por encima, porque veo que somos muy pocos los que nos liamos en esto, consiste en: una interrupción detecta los cambios de nivel de la señal DCC en la vía; en el flanco de subida inicializa una variable, y en el de bajada lee el tiempo transcurrido desde entonces para detectar si corresponde a un cero o a un uno.

Como consecuencia de unas charlas con Norber a propósito de un proyecto muy interesante en el que está trabajando, esta interrupción solamente forma los paquetes y activa un bit si verifica que es correcto. La decodificación se hace en la función main(); así la subrutina de interrupción es más rápida.

Los dos pwm de los faroles laterales se generan empleando el timer0 y el del farol inferior el timer1; además el timer0, que no se detiene, se utiliza para tener una referencia de tiempo de casi 10 ms.

En la función main() se hace la decodificación para obtener el estado de las funciones desde F0 a F12 y, cada 10 ms, se chequean para actuar en consecuencia. El efecto flash se hace encendiendo los LEDs de un solo paso al brillo programado, permaneciendo 50 ms con él, y apagándolos en los pasos programados más o menos lentamente. El efecto fuego emplea, por una parte, un número aleatorio obtenido con un contador de 8 bits que se incrementa con cada flanco de la señal DCC, y por otra unas variables de configuración que definen el porcentaje del brillo que variará según el número aleatorio.

Si alguien tiene interés en algún detalle lo expondré con gusto, como ya sabéis.

...continúa...



Yo de mayor...quiero ser como tú!!!! :lol: :lol: :lol:

Fenomeno!!!!!
HO, Renfe epocas IV y V y del resto, lo que me guste (cada vez mas vapor)

Diseños 3D

https://www.facebook.com/3DTren


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

¡pues todavía te queda para ser como yo!... de cumplir años, que en lo demás... jejeje.

Seguimos:

Todo lo que es configurable se resume en la tabla de las variables de configuración empleadas:

Tabla cvs.png
Tabla cvs.png (24.57 KiB) Visto 2860 veces

Las cv1 y cv2 forman la dirección como expliqué al principio. Su valor debe programarse en decimal para mayor sencillez del usuario, pero no afecta para nada en la lectura de la señal DCC; es decir, si forman un valor menor de 100 se leerá como dirección corta, y si es mayor, como larga, según lo ponga en la vía la central.

cv3 (luces de cola) y cv4 (luz interior) deben contener el número correspondiente a las funciones con que queramos controlarlas. Preveo hasta la F12 porque para un furgón de cola me parecen suficientes, pero no hay ningún problema para llevarlas hasta F28. Y en esto consiste todo el mapeo. Ya he expuesto en algún hilo que trató de ello, mi opinión sobre los endiablados sistemas que nos imponen los fabricantes.

Podría haber incluido alguna dependencia del sentido, pero luego pensé que no resultaría muy realista un vagón en cola con luces en los dos extremos luciendo según el sentido de marcha.

Con cv5 se configura el tipo de alumbrado y puede tomar los valores: 0 para el formato a destellos; 1 para iluminación incandescente, y 2 para los faroles antiguos, de petróleo, con efecto fuego.

cv6 contiene programas predefinidos. Si se programa con valores de 1 a 5 opera con los efectos indicados, con prioridad sobre cv5; si se deja a cero, opera como se defina en cv5.

cv7 y cv8 son las definidas en las normas NMRA (cv8 = 13 es DIY o sea casero).

cv9 contiene el valor deseado para el pwm (intensidad luminosa) de los faroles laterales, y cv10 el del farol central inferior. Recuerdo aquí que la luminosidad de los LEDs no sigue una proporcionalidad lineal, y hay que ir a valores bastante bajos para simular las luces atenuadas de los años de la época III. Es cuestión de probar; podemos configurarlo a medida.

cv11 define en unidades de 10 ms el tiempo entre destellos (período); permite un mínimo de 0'5 s (excesivamente corto) y máximo de 2'55 s.

cv12 y cv13 controlan la profundidad del efecto fuego en los faroles de petróleo laterales e inferior, respectivamente. El efecto fuego lo realizo variando la luminosidad aleatoriamente sobre el valor definido en cv9 y cv10. El cálculo es muy simple: se obtiene el cv12 (cv13)% de cv9 (cv10)

porcentaje = cv9 * cv12 / 100

y con ese valor como cociente se calcula el resto de dividir entre él el valor del número aleatorio (nro_rnd en el programa), que estará comprendido entre 0 y el porcentaje calculado.

variación = nro_rnd % porcentaje significa: resto de dividir el número aleatorio (que varía entre 0 y 255) entre el porcentaje calculado

Variando este porcentaje se varía la modulación: si es muy pequeño apenas se apreciará parpadeo (con valor cero la luminosidad no cambia) y si es muy grande (hasta 100%) el efecto será una intermitencia rápida entre encendido y apagado.

El código en c, los ficheros hexadecimales con el código y el contenido de la EEPROM (cvs) y el pcb de la placa están en el .zip adjunto.

Gracias por aguantarme el rollo (prometo seguir contando mis ocurrencias) y un saludos a todos,

Germán
Deco luces cola universal.zip
(14.62 KiB) 172 veces


Desconectado
Mensajes: 85
Registrado: 23 Abr 2011 19:29
Aquí, como siempre, ¡¡boquiabierto!!
Un saludo Germán; yo también quiero ser como tú... solo que ya soy igual de mayor.
Bueno, como todavía no me jubilo (casi un año aún) pues sigo sin tiempo para nada y conformándome con seguir el foro y asistir a los encuentros que puedo. Y tus intervenciones no me las pierdo. Ni las de Norber y otros colegas que gustan de cacharrear. Tengo destripados 8 ó 9 coches para meterles tu iluminación... y así sigo. Casi me da vergüenza recordarlo. Prometo enviarte pronto unas fotos de otra iluminación que hice las pasadas navidades, sobre unos coches de dos pisos (unos Bombardier canadienses) donde el vagón de cola lleva puesto de conducción y quizá éste último circuito que presentas pueda adaptarse a lo que quiero. Lo haré por privado hasta que pueda hacer un pdf en condiciones.
Dentro de unos días, a finales de este mes, voy con un amigo a Rodgau (cerca de Frankfut) a ver la US Convention (23,24 y 25 octubre). Espero poner unas fotos de lo que vea allí. Un afectuoso saludo a todos.
José Antonio


Desconectado
Mensajes: 625
Ubicación: Asturias
Registrado: 15 Nov 2012 19:16
Hola José Antonio,

...y yo quiero ser como vosotros, capaces de hacer maravillas con muchísima habilidad, pero como dijo el sabio "zapatero a tus zapatos" y me quedo en mis "escurrencias". Esta afición es atemporal, en el sentido de que uno acomete algo cuando tiene tiempo; afortunadamente con la jubilación puedo disfrutar del tiempo un poco a mi antojo sin apenas otros condicionantes, pero son bastantes los hilos que se quedan dormidos y un buen día su autor empieza con aquello de que "ahora que tengo tiempo he podido avanzar..." Pues en tu caso veo que parecido.

Con Norber tengo una buena sintonía en estos asuntos y es un gusto también charlar con él e inventar soluciones.

No te preocupes por tus avances; aquí más que ningún sitio el objetivo no es la meta; es el viaje (aunque sea como los trenes de los cincuenta que llegaban cuando llegaban). Estaré encantado de que podamos seguir charlando de tus canadienses y su iluminación. Y, como digo de lo digital, casi cualquier cosa que uno se imagine se puede realizar; es decir si este circuito precisa alguna adaptación dímelo y preparamos lo que se pueda, que eso es lo divertido.

Esperamos tus fotos. Saludos,

Germán


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

siguiendo el consejo de mi amigo Antonio, el efecto fuego se aprecia mejor filtrando la luz de los LEDs a través de una simple hoja de papel, de manera que su luz no dé directamente a la cámara.

Intenté añadir el vídeo al anterior en YouTube, pero no lo conseguí:



Saludos,

Germán


Desconectado
Mensajes: 2277
Registrado: 21 Mar 2014 12:52
¡¡ que pasada !!
voy a tener que dejar el arduino y pasarme a los Tyni, está claro (aunque sólo sea por tamaño)

Que preciosidad.

Y supongo que si le programas la CV1 la misma de la locomotora encenderás o apagarás luces al mismo tiempo en la loco que en el furgón de cola, ¿no?

Un saludo.


Desconectado
Mensajes: 625
Ubicación: Asturias
Registrado: 15 Nov 2012 19:16
Hola 'El Matao',

me alegro de que te guste. Y sí: el mapeado de las funciones busca precisamente el poderlas encajar entre las de la locomotora y que sirva la misma dirección (como con las luces de los coches).

Realmente es más bien un juguete o capricho curioso, porque en realidad para esta función es más directo hacerlo a medida, pero como venganza del calor de este verano que me quitó las ganas de todo, y ya metidos en harina..., salió así.

Respecto a arduino y tamaño, me pasó lo mismo por eso cuando vi accesible el programar estos micros en formato smd ya me metí en este jardín. Para aspectos exteriores como iluminar, controlar, manejar en general elementos como estaciones, pueblos, calles... y casi todo los arduinos (nano, micro...) tienen terreno abonado: por cuatro perras tienes un sistema muy accesible de programar, capaz de hacer lo que se te ocurra y que te permite probar, modificar, repetir lo que quieras. Creo que cada cosa tiene un sitio y totalmente compatibles.

Te animo a seguir. Saludos,

Germán


Desconectado
Mensajes: 23
Ubicación: Valencia
Registrado: 26 Oct 2013 18:54
Hola

No tengo palabras al ver lo que hacéis, no llevo mucho en esté mundillo y me dejáis maravillado con vuestros conocomientos y sobre todo por la paciencia para compartirlo con el resto de compañeros de hobby.

Felicidades y gracias.


José Manuel


Desconectado
Mensajes: 261
Registrado: 07 Sep 2012 14:57
Enhorabuena Germán, me resulta fantástico el sistema que has desarrollado. Espero poder emplearlo en uno de mis coches de época II.

Edito para añadir que muchísimas gracias a ti y a todos los que como tú comparten en los foros genialidades como estas para todos los aficionados.

Un saludo.


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

muchas gracias; yo también aprendí y me inspiré mucho como lector de los foros; por eso el compartir para la afición fue una de las razones que me llevó a registrarme. Ahora, además tengo buenos amigos colegas, así que todos salimos ganando.

El circuito es casi un juego porque su utilidad es relativa ya que sólo se precisa uno de los sistemas, pero muestra cómo en el mundo digital casi todo es posible (los milagros, como decía el chiste..., ya tardan un poco más).

Si quieres que te pase algo de lo expuesto (placa, componentes o el circuito ya montado) dímelo en un privado con la dirección a que quieras que te lo envíe. En época II se lucirán los faroles de petróleo y un soporte como el kit de cola que anuncia Mabar, trabajando los pilotos laterales para incluirles uno de los LEDs de tamaño 0401 puede llegar a tener mucho encanto (incorporar la luz blanca hacia adelante de esos pilotos ya sería la bomba...).

Saludos,

Germán


Desconectado
Mensajes: 383
Ubicación: Ibarra
Registrado: 20 Abr 2009 06:02
Aprovecho el post para preguntar si para programar los Attiny valdría alguno de los programadores tipo AVR, me voy empapando poco a poco de estos sistemas.
Saludos Luis.


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

yo programo los ATtiny mediante el circuito USBASP (muy barato en ebay) que se conecta a un USB y como programa grabador el "eXtreme Burner" que toma el fichero hexadecimal y lo vuelca sobre el ATtiny; este programa, además, puede tomar el fichero de la EEPROM y grabarlo en ella y también programar los fusibles. Puedes verlo en:

http://extremeelectronics.co.in/avr-tut ... ogrammers/

Desde el entorno de arduino también se pueden programar; existen muchas páginas que hablan de ello; lo que no sé es cómo se pueden volcar, desde arduino, ficheros hexadecimales.

Estoy programando en lenguaje c en AtmelStudio porque en arduino no lograba decodificar las señal DCC correctamente con estos micros pequeños.

Si en algo te puedo ayudar, dímelo. Saludos,

Germán


Desconectado
Mensajes: 383
Ubicación: Ibarra
Registrado: 20 Abr 2009 06:02
Muchas gracias Germán iré investigando también por ese lado, a ver si lo controlo y puedo grabar y probar tus decos y algo más.
Saludos Luis.


Desconectado
Mensajes: 261
Registrado: 07 Sep 2012 14:57
Gracias por tu amabilidad, Germán. En cuanto tenga un poco de tiempo libre me pondré en contacto contigo para hacerte unas cuantas preguntas :lol: .

Un saludo,
Juan Antonio.


Desconectado
Mensajes: 383
Ubicación: Ibarra
Registrado: 20 Abr 2009 06:02
Bueno Germán ya te dije que te daría la tabarra, ya tengo el programador y el Extreme-burner, para ir practicando, en el programa no logro ver los Attiny85 no sé si se utiliza otra configuración, los drivers del programador ya los tengo también instalados.
Esperando tu paciente respuesta, saludos Luis.
Pd no tendrías la distribución de componentes de la placa, la estoy ajustando un poco y me pierdo con algún componente gracias.


Desconectado
Mensajes: 625
Ubicación: Asturias
Registrado: 15 Nov 2012 19:16
DIC40 escribió:
Bueno Germán ya te dije que te daría la tabarra, ya tengo el programador y el Extreme-burner, para ir practicando, en el programa no logro ver los Attiny85 no sé si se utiliza otra configuración, los drivers del programador ya los tengo también instalados.
Esperando tu paciente respuesta, saludos Luis.
Pd no tendrías la distribución de componentes de la placa, la estoy ajustando un poco y me pierdo con algún componente gracias.

Hola Luis,

tabarra ninguna, no te preocupes. Aclaremos todo lo que podamos.

No recordaba que me encontré el mismo problema; el caso es que acabo de descargar la última versión y me machacó el archivo donde tenía puesto el ATtiny85. Ahora no puedo entrar en más detalles; de momento copia el archivo incluido en el .zip en el subdirectorio 'Data' reemplazando el que tiene (simplemente está añadido el 85 que es similar al 84) y empieza a jugar.

Mañana o pasado ya estaré con más tiempo. Saludos,

Germán
Adjuntos
chips.zip
(800 Bytes) 126 veces


Desconectado
Mensajes: 383
Ubicación: Ibarra
Registrado: 20 Abr 2009 06:02
Muchas gracias Germán a mí también me ha extrañado que no estuviera el 85 pero bueno a ver si puedo probar hoy algo, por lo de los componentes cuando se pueda.
Saludos Luis.
Edito, ya ve los chip y me imagino que a la hora de cargar los archivos si tiene archivo la eeprom también hay que grabarlo no?
Voy acertando?
Adjuntos
modificando .jpg
modificando .jpg (1.82 MiB) Visto 2436 veces


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

primero mis disculpas; no había incluido la distribución de componentes en la placa, aunque el circuito es casi idéntico a otros anteriores:

Componentes.png
Componentes.png (30.15 KiB) Visto 2424 veces

Creo que no omito nada. Los valores de los condensadores electrolíticos no son críticos (sólo en el voltaje de trabajo). El 78L05 que vengo utilizando tiene 8 patillas; observar la posición de la patilla 1, y lo mismo con el ATtiny85. Todo el área de cobre es para que sirva de disipador de calor, pero como no se calienta apenas, puede recortarse por la izquierda si se necesita reducir su tamaño.

Por otra parte, sobre el programador, ya creo recordar que "inventé" el ATtiny85 como te lo puse en el archivo: si lo abres verás su estructura; copié el del ATtiny84 que es similar en elementos internos y puse la signatura correcta del datasheet. Hasta ahora no he tenido ningún problema en la programación. En la página web le piden ese chip, pero hasta ahora no lo ha incluido.

Para cargar el fichero de la EEPROM, en el menú "File" lo seleccionas:

EEPROM file.png
EEPROM file.png (26.82 KiB) Visto 2424 veces

y para abrirlo, asegúrate de que es el de extensión .eep:

EEPROM file extension.png
EEPROM file extension.png (7.36 KiB) Visto 2424 veces

Otra cosa importante que no quiero olvidar es la cuestión de los fusibles: de fábrica viene con su oscilador interno de 8 MHz y un divisor por 8 y otras cosas. Hay varias páginas para obtener los valores a programar. Para nuestro propósito los valores en el programador son los indicados:

ATtiny85 programacion fuses.png

De la experiencia con los primeros decodificadores (de vez en cuando 'se colgaban') deduje lo que señalo en rojo porque parece que la causa de quedarse bloqueados era que al bajar mucho la alimentación (en los malos contactos) el micro se bloqueaba. Con el valor que pongo en azul, cuando la tensión de alimentación baja de 2'7V, se resetea; y no he vuelto a tener ese problema. Para grabarlos hay que tener marcada la casilla correspondiente 'Write'. Marca esas dos cuando quieras programarlos, pero nunca las demás; la de la derecha contiene el valor de fábrica para la calibración de la frecuencia del oscilador RC interno.

Si recuerdo algún detalle más de importancia, te lo diré, y si tienes alguna otra cuestión en que pueda ayudar, no dudes en plantearla, porque sirve también para otras personas. Echo de menos el que no haya más aficionados también a esta faceta del hobby.

Saludos,

Germán

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