Hola,
Ya se ha comentado en otros hilos la cuestión del mapeo de funciones y la dependencia de programadores comerciales específicos de cada fabricante, para poder realizarla sin volverse loco. Hace tiempo que vengo dándole vueltas a la posibilidad de emplear decodificadores estándar en locomotoras como la 7200 y 7700 de Electrotrén para obtener prestaciones similares a las que incorporan de fábrica. Sin sonido.
Y a esta locomotora quería iluminarle además las matrículas y las cabinas.
Como el tema del mapeo no lo controlo, pedí ayuda a mi amigo Antonio que tiene varios trabajos muy ingeniosos sobre el control separado de las luces de locomotoras en el foro escalaN (Ktna-2100), que probablemente ya conoceréis los que trabajáis esa escala. Se puso a ello y en poco tiempo me dictó los valores a programar en las cvs apropiadas para conseguir un funcionamiento similar.
Lo primero fue seleccionar un decoder barato con seis salidas de función y conector de 21 pines, NEM660, como el Doehler&Haass DH21A-4.
A continuación desciframos el circuito de luces de la locomotora que es sencillo, en una placa amplia. De forma genérica:
Como las seis salidas del DH21A-4 están amplificadas, hubo que anular los transistores que están en la placa, para lo cual en principio hice cortes en la pista que sale del colector para puentearla hacia el terminal correspondiente del conector de 21 pines… Al final opté por desoldar los transistores, cosa que, de haberla hecho desde un principio, me habría evitado el hacer los cortes en las pistas.
Las prestaciones deseadas se resumen en el siguiente cuadro:
Tirando de manual, y supliendo la escasez de explicaciones en el mismo con la experiencia de Antonio en estas lides, obtuvo los valores a programar en las cvs indicadas en los cuadros siguientes (las CV33 y CV34 vienen asignadas por defecto a los pilotos blancos y esas no se tocaron)
Curiosamente, la prestación switch-off no está prevista para las salidas AUX3 y AUX4 (¿?) por eso no se pueden activar simultáneamente los pilotos blancos y rojos.
Por mi parte sigo encontrando caprichosa y arbitraria la asignación de estas operaciones, que creo podría ser más sencilla (quizás esto me lo inspira la ignorancia y la pereza de leer los manuales).
En el pdf que adjunto al final, que hay que agradecer a Antonio, su autor, se comentan un poco más las prestaciones principales de este decoder.
Saludos,
Germán
...continúa...
7702 con DH21A-4 y auxiliar para matrículas y cabinas
- Rfe7747
- Usuario avanzado
- Mensajes: 211
- Registrado: 09 May 2013 09:45
- Ubicación: Asturias
- Edad: 73
- Estado: Desconectado
7702 con DH21A-4 y auxiliar para matrículas y cabinas
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
- Rfe7747
- Usuario avanzado
- Mensajes: 211
- Registrado: 09 May 2013 09:45
- Ubicación: Asturias
- Edad: 73
- Estado: Desconectado
Re: 7702 con DH21A-4 y auxiliar para matrículas y cabinas
...
Matrículas
Es una desconsideración por parte del fabricante el no haber dotado de iluminación a las matrículas de este modelo, al contrario que con las 1600/1800, 2100…, ya que durante la mitad de su vida activa estuvieron iluminadas, especialmente en esta “original” de época III.
Mi primera intención era reducir el espesor cuanto fuera necesario hasta que la luz traspasase desde el interior, pero en las pruebas que hice no lo vi factible y desistí. Intenté levantar la pegatina, pero también me fue imposible sin romperla. Opté por fotografiarlas para reproducirlas posteriormente como comentaré.
Perforé el hueco con una broca de 1 mm, a mano y esta vez no rompí nada (solo algunos rayajos leves).
Al presentar las matrículas por el interior comprobé que quedaban excesivamente hundidas, lo que, además de irreal, las hacía casi invisibles. No quedó más remedio que rebajar el espesor de la carcasa con la Dremel y diversas fresas y piedras hasta dejar un espesor del orden de 1 mm. Mejor sería llegar hasta el borde, pero de eso no soy capaz sin provocar un desastre.
De esa manera el aspecto ya es un poco más aceptable. Repasé en negro la pintura imitando el burlete (como se puede notar).
Una vez pegadas las matrículas por el interior quise imitar los cristales con “mikro Kristal klear” pero lo que hizo fue pegarse al papel y echar a perder el trabajo. Vuelta a empezar…
Los números los obtuve fotografiando la máquina al principio, y retocando con simple “paintshop” para luego imprimirlos al tamaño apropiado desde el Word.
Para simular el cristal pegué cinta transparente por la parte visible, a continuación los recorté y volví a pegar, esta vez por la cara posterior sobre la cinta adhesiva para luego pegarlas en su sitio, como esquematizo en el montaje siguiente
La pinza como “auxiliar” en el pegado fue imprescindible porque con las pinzas no conseguía que quedara depositada en su sitio (no se despegaba de ellas…, hábil que es uno) y para conseguir depositarla en el extremo de la pinza tuve que recurrir a salivilla… Seguro que hay procedimientos mejores.
El siguiente paso fue montar los LEDs. Su ubicación la marqué a través del hueco de las matrículas y los instalé sobre unas tiras de pcb; su tamaño 0603, sunny light. Van montados en serie y con una resistencia limitadora de 6K8, y aún así encuentro un poco alta su luminosidad (las matrículas no eran iluminadas con reflectores precisamente). Se alimentarán desde el positivo rectificado de la vía.
Cuando hice la prueba de iluminación, encontré que el mecanizado de la carcasa alrededor de los huecos dejaba pasar la luz; tuve que pintar de negro el interior.
...continúa...
Matrículas
Es una desconsideración por parte del fabricante el no haber dotado de iluminación a las matrículas de este modelo, al contrario que con las 1600/1800, 2100…, ya que durante la mitad de su vida activa estuvieron iluminadas, especialmente en esta “original” de época III.
Mi primera intención era reducir el espesor cuanto fuera necesario hasta que la luz traspasase desde el interior, pero en las pruebas que hice no lo vi factible y desistí. Intenté levantar la pegatina, pero también me fue imposible sin romperla. Opté por fotografiarlas para reproducirlas posteriormente como comentaré.
Perforé el hueco con una broca de 1 mm, a mano y esta vez no rompí nada (solo algunos rayajos leves).
Al presentar las matrículas por el interior comprobé que quedaban excesivamente hundidas, lo que, además de irreal, las hacía casi invisibles. No quedó más remedio que rebajar el espesor de la carcasa con la Dremel y diversas fresas y piedras hasta dejar un espesor del orden de 1 mm. Mejor sería llegar hasta el borde, pero de eso no soy capaz sin provocar un desastre.
De esa manera el aspecto ya es un poco más aceptable. Repasé en negro la pintura imitando el burlete (como se puede notar).
Una vez pegadas las matrículas por el interior quise imitar los cristales con “mikro Kristal klear” pero lo que hizo fue pegarse al papel y echar a perder el trabajo. Vuelta a empezar…
Los números los obtuve fotografiando la máquina al principio, y retocando con simple “paintshop” para luego imprimirlos al tamaño apropiado desde el Word.
Para simular el cristal pegué cinta transparente por la parte visible, a continuación los recorté y volví a pegar, esta vez por la cara posterior sobre la cinta adhesiva para luego pegarlas en su sitio, como esquematizo en el montaje siguiente
La pinza como “auxiliar” en el pegado fue imprescindible porque con las pinzas no conseguía que quedara depositada en su sitio (no se despegaba de ellas…, hábil que es uno) y para conseguir depositarla en el extremo de la pinza tuve que recurrir a salivilla… Seguro que hay procedimientos mejores.
El siguiente paso fue montar los LEDs. Su ubicación la marqué a través del hueco de las matrículas y los instalé sobre unas tiras de pcb; su tamaño 0603, sunny light. Van montados en serie y con una resistencia limitadora de 6K8, y aún así encuentro un poco alta su luminosidad (las matrículas no eran iluminadas con reflectores precisamente). Se alimentarán desde el positivo rectificado de la vía.
Cuando hice la prueba de iluminación, encontré que el mecanizado de la carcasa alrededor de los huecos dejaba pasar la luz; tuve que pintar de negro el interior.
...continúa...
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
- Rfe7747
- Usuario avanzado
- Mensajes: 211
- Registrado: 09 May 2013 09:45
- Ubicación: Asturias
- Edad: 73
- Estado: Desconectado
Re: 7702 con DH21A-4 y auxiliar para matrículas y cabinas
...
Decoder auxiliar para matrículas y cabinas
Las matrículas podrían iluminarse a partir de la función F0, por ejemplo, en cualquiera de los dos sentidos, pero como también pensaba iluminar las cabinas de forma similar a como hice con las otras dos 7700, aprovecho otra salida disponible en el ATtiny85 y le asigno esta función, con un transistor como amplificador y adaptador al voltaje de la vía rectificado.
El siguiente paso era, por tanto, preparar el decodificador auxiliar. Dado que en el conector NEM660 está disponible el voltaje de 5V (pin 12) y masa (GND pin 20) el circuito se limita al microcontrolador, las resistencias limitadoras y el transistor amplificador.
Va montado en una placa con pistas de cobre separadas 1’27 mm de ledbaron, por lo que resulta muy sencillo de preparar
Las cabinas se iluminan con LEDs 0401 blancos de ledbaron que tienen cables esmaltados soldados a sus terminales.
El programa es similar al de las cabinas anteriores, aunque aquí la operatividad de las funciones es:
F5 enciende la cabina delantera en el sentido de la marcha; si la locomotora está en marcha se atenúa progresivamente su luminosidad a un mínimo.
F6 enciende la cabina trasera en el sentido de la marcha.
F7 enciende las matrículas.
Todas las funciones, de F0 a F8 son independientes entre sí, en la medida en que el DH21A-4 lo permite. En el vídeo que se adjunta se muestran una variedad de las posibilidades.
http://www.youtube.com/watch?v=YVTj_GCs9gY
Y otro fichero adjunto al final contiene el código en lenguaje c del programa y el código hexadecimal.
Y esto es todo por ahora. Saludos,
Germán
Decoder auxiliar para matrículas y cabinas
Las matrículas podrían iluminarse a partir de la función F0, por ejemplo, en cualquiera de los dos sentidos, pero como también pensaba iluminar las cabinas de forma similar a como hice con las otras dos 7700, aprovecho otra salida disponible en el ATtiny85 y le asigno esta función, con un transistor como amplificador y adaptador al voltaje de la vía rectificado.
El siguiente paso era, por tanto, preparar el decodificador auxiliar. Dado que en el conector NEM660 está disponible el voltaje de 5V (pin 12) y masa (GND pin 20) el circuito se limita al microcontrolador, las resistencias limitadoras y el transistor amplificador.
Va montado en una placa con pistas de cobre separadas 1’27 mm de ledbaron, por lo que resulta muy sencillo de preparar
Las cabinas se iluminan con LEDs 0401 blancos de ledbaron que tienen cables esmaltados soldados a sus terminales.
El programa es similar al de las cabinas anteriores, aunque aquí la operatividad de las funciones es:
F5 enciende la cabina delantera en el sentido de la marcha; si la locomotora está en marcha se atenúa progresivamente su luminosidad a un mínimo.
F6 enciende la cabina trasera en el sentido de la marcha.
F7 enciende las matrículas.
Todas las funciones, de F0 a F8 son independientes entre sí, en la medida en que el DH21A-4 lo permite. En el vídeo que se adjunta se muestran una variedad de las posibilidades.
http://www.youtube.com/watch?v=YVTj_GCs9gY
Y otro fichero adjunto al final contiene el código en lenguaje c del programa y el código hexadecimal.
Y esto es todo por ahora. Saludos,
Germán
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
- Norber
- Usuario avanzado
- Mensajes: 130
- Registrado: 08 Jun 2014 23:50
- Ubicación: Salamanca
- Edad: 54
- Estado: Desconectado
Re: 7702 con DH21A-4 y auxiliar para matrículas y cabinas
Asombroso Germán, realmente asombroso.
Y qué cantidad de instrucciones has dado!!
Enhorabuena por tu trabajo.
Yo tengo una noticia también que aportar:
He conseguido incorporar en Arduino el brillante algoritmo que usas para la decodificación del DCC. Que te copio el código que ofreces ahí arriba, vamos!
Como todo, cuando finalmente se sabe cómo hacerlo, resulta sencillísimo. Pero me ha costado un poquito llegar, ja, ja, ja.
Ahí va:
Con esto ponemos a punto:
Este es tu algoritmo, un poquito cambiado, pero casi nada:
Y con esto hago que se vean "cosas" en la pantalla del Mac:
Nada más. Se pone 'to' junto y se mete a un Arduino normalito (el UNO por ejemplo, pero vale el Mini o el Nano también), y sale esto nada más encender y cambiar a directo y desviado el accesorio nº0002 del Multimaus:
Se ve que el 128 es el código que dice que se trata de instrucción para accesorio, y que el 250 significa "nº2 ponte desviado" y el 251 significa "nº2 ponte recto". El resto son ceros a veces, otras no, pero es que ahora que puedo leer me toca aprender el "idioma".
A los pobres decóders los debe aburrir con tanto código, y eso que el Multimaus está recién encendido. Si se toca la mínima cosa empieza a salir de todo!! Ja, ja, ja.
Muchísimas gracias Germán por compartir tu código. Me has ayudado muchísimo. A partir de aquí, a ver qué cosas van saliendo.
Gracias otra vez.
Y qué cantidad de instrucciones has dado!!
Enhorabuena por tu trabajo.
Yo tengo una noticia también que aportar:
He conseguido incorporar en Arduino el brillante algoritmo que usas para la decodificación del DCC. Que te copio el código que ofreces ahí arriba, vamos!
Como todo, cuando finalmente se sabe cómo hacerlo, resulta sencillísimo. Pero me ha costado un poquito llegar, ja, ja, ja.
Ahí va:
Con esto ponemos a punto:
Código: Seleccionar todo
void setup () {
pinMode(2, INPUT_PULLUP); // Conectar al pin2 la señal DCC adaptada según www.mynabay.com
attachInterrupt(0, dcc_int, CHANGE);
cli();
TCCR1B = 0; // El registro que controla parte del Timer 1 (TCCR1B)
TCCR1B |= (1 << CS11); // Y ahora le enciendo el bit CS11 para subdividir por 8 la frecuencia del contador (prescaler)
sei(); // Activar interrupciones
Serial.begin(9600); // Activo puerto serie para ver en el Mac qué es lo que sale
}
Este es tu algoritmo, un poquito cambiado, pero casi nada:
Código: Seleccionar todo
void dcc_int() { // ISR(INT0_vect) External interrupt routine for signal on pin2
static int tmp_pulso;
static byte bit_dcc;
static byte preamb;
static byte aux_dcc, x_or, idx, num_bits;
if (PIND & (0x04)) TCNT1 = 0; // pin2 esta HIGH
else { // cuando pasa a nivel bajo
tmp_pulso = TCNT1; // lee los microsegundos (byte bajo)
TCNT1 = 0; // pone a cero el timer
if (tmp_pulso > TICKS) bit_dcc = 0; // duración mayor de XX us => cero
else bit_dcc = 1; // y menor uno
if (preamb == SI) { // preámbulo
if (bit_dcc) { // otro '1'
if (num_bits) num_bits--;
}
else {
if (!num_bits) { // el '0' de inicio de datos
preamb = NO;
num_bits = 9;
x_or = 0;
idx = 0;
}
else num_bits = 10; // no se cumple la trama, vuelta a inicio
}
}
else { // recepción de los bytes
if (--num_bits) aux_dcc = aux_dcc * 2 + bit_dcc;
else { // el separador de bytes
if (!bit_dcc) { // cero, a por el siguiente byte
buf_dcc [idx++] = aux_dcc;
x_or ^= aux_dcc; // actualiza la x_or
num_bits = 9;
}
else { // uno, fin del paquete
preamb = SI;
num_bits = 10; // vuelta a empezar
if (x_or == aux_dcc) // paquete correcto
{
comandoRecibido = true;
}
}
}
}
}
}
Y con esto hago que se vean "cosas" en la pantalla del Mac:
Código: Seleccionar todo
void loop() {
if (comandoRecibido == true) {
Serial.print(".");
if (buf_dcc[0] != 255) {
for (int i = 0; i < 5; i++) {
Serial.print(" - ");
Serial.print(buf_dcc[i]);
buf_dcc[i] = 0;
}
Serial.println("");
}
comandoRecibido = false;
}
}
Nada más. Se pone 'to' junto y se mete a un Arduino normalito (el UNO por ejemplo, pero vale el Mini o el Nano también), y sale esto nada más encender y cambiar a directo y desviado el accesorio nº0002 del Multimaus:
Se ve que el 128 es el código que dice que se trata de instrucción para accesorio, y que el 250 significa "nº2 ponte desviado" y el 251 significa "nº2 ponte recto". El resto son ceros a veces, otras no, pero es que ahora que puedo leer me toca aprender el "idioma".
A los pobres decóders los debe aburrir con tanto código, y eso que el Multimaus está recién encendido. Si se toca la mínima cosa empieza a salir de todo!! Ja, ja, ja.
Muchísimas gracias Germán por compartir tu código. Me has ayudado muchísimo. A partir de aquí, a ver qué cosas van saliendo.
Gracias otra vez.
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
Última edición por Norber el 19 Sep 2015 22:26, editado 1 vez en total.
Saludos
[Multimaus + z21f + GenLi-S88 + RocRail (MacOsX 10.8)]
H0 Renfe, sin catenaria
[Multimaus + z21f + GenLi-S88 + RocRail (MacOsX 10.8)]
H0 Renfe, sin catenaria
- Norber
- Usuario avanzado
- Mensajes: 130
- Registrado: 08 Jun 2014 23:50
- Ubicación: Salamanca
- Edad: 54
- Estado: Desconectado
Re: 7702 con DH21A-4 y auxiliar para matrículas y cabinas
Aprender el "idioma", esa es la cuestión!!
Corrijo lo anterior:
Resulta que el 128 identifica a los 4 primeros desvíos/señales/accesorios del Multimaus (num. 0001, 0002, 0003 y 0004).
Los 4 siguientes se "llaman" 129, ja, ja, ja.
Corrijo lo anterior:
Resulta que el 128 identifica a los 4 primeros desvíos/señales/accesorios del Multimaus (num. 0001, 0002, 0003 y 0004).
Los 4 siguientes se "llaman" 129, ja, ja, ja.
Saludos
[Multimaus + z21f + GenLi-S88 + RocRail (MacOsX 10.8)]
H0 Renfe, sin catenaria
[Multimaus + z21f + GenLi-S88 + RocRail (MacOsX 10.8)]
H0 Renfe, sin catenaria
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 17 invitados