7702 con DH21A-4 y auxiliar para matrículas y cabinas

Todo lo relacionado con el control digital, la electricidad, electrónica e informática.
  • Advertisement

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

7702 con DH21A-4 y auxiliar para matrículas y cabinas

Mensajepor Rfe7747 » 18 Sep 2015 12:45

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:

Esquema placa 7702.png

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.

Placa - cortes y puentes.png

Las prestaciones deseadas se resumen en el siguiente cuadro:

Cuadro funciones.png

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)

Function mapping.png

Switch-off.png

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



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

Re: 7702 con DH21A-4 y auxiliar para matrículas y cabinas

Mensajepor Rfe7747 » 18 Sep 2015 12:50

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

Mecanizado.png

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.

Rebajar espesor.png

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…

Matricula instalada.png

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

Proceso pegado - 2.png

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.

Pletinas LEDs.png

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.



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

Re: 7702 con DH21A-4 y auxiliar para matrículas y cabinas

Mensajepor Rfe7747 » 18 Sep 2015 12:55

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

Esquema aux.bmp

Va montado en una placa con pistas de cobre separadas 1’27 mm de ledbaron, por lo que resulta muy sencillo de preparar

Placa auxiliar.png


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

Digitalizacion-7700-Electrotren-LucesIndependientes.pdf

85_7702.zip
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: 49
Estado: Desconectado

Re: 7702 con DH21A-4 y auxiliar para matrículas y cabinas

Mensajepor Norber » 19 Sep 2015 20:44

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:

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:
Mirando_Lo_Que_Dice_El_Multimaus.png

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

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

Re: 7702 con DH21A-4 y auxiliar para matrículas y cabinas

Mensajepor Norber » 19 Sep 2015 22:22

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.


Saludos
[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 1 invitado