jueves, 30 de abril de 2020

13) Diseño de Reloj con tubos Nimo. Reloj Retro P31


Introducción al Proyecto Reloj P31


              Este proyecto se trata de diseñar y construir un Reloj Retro Vintage con tubos de rayos catódicos (CRT) marca IEE modelo NIMO BA0006-P31 (ó IEE NIMO 6000-31-0006), en adelante llamados Tubos.
Estas son joyas electrónicas  de los años 50 y 60, anteriores aún a los tubos Nixie, con sus placas originales recuperadas desde el fondo de alguna tienda de antiguedades.

Aquí algunas fotos de los Tubos, aún con sus componentes de control, su fuente de poder de 3.500 Voltios y  polvillo originales:








Algunas fotos mas...


































Diseño del prototipo de testeo de los Tubos Nimo


Fig.13.1 Prototipo de test de los tubos Nimo



Para comenzar el testeo y pruebas de los Tubos Nimo disponibles en la placas vistas arriba y su fuente de alimentación, efectuaré la distribución de componentes que se ve en la Fig.13.1
En el ángulo inferior derecho del prototipo de test está dispuesta la fuente de alimentación original de los tubos , marca IEE modelo 14549 (con su cubierta en la foto de arriba)
El diagrama de circuito de esta fuente de alimentación es muy simple y se ve en la Fig 13.2.
Cuenta con dos transformadores que dado su origen americano ingresan con 11o Voltios AC, el primero con salida de 1,1 Voltios AC para alimentación del filamento catódico de los Tubos con punto medio para permitir su polarización catódica; y el segundo de 1500 Voltios seguido de un doblador de tensión que suministra entre 3 y 3,5 KiloVoltios D.C. para la polarización anódica de los Tubos, que puede contar con una resistencia de salida en el camino de la alta tensión para regular la corriente de Ánodo.


Fig.13.2 Diagrama de fuente de alimentación Tubos



Como se ve en la Fig. 13.1,  para alimentar todo el prototipo con 220 VAC usaré un transformador reductor de 22o Voltios a 110 Voltios para ingresar a la fuente de poder de los Tubos, y también dispongo de una fuente de alimentación de 12 Voltios D.C. y un regulador de 5 Voltios D.C. cuya función se verá al analizar el circuito de control.


Estudio de los Tubos IEE NIMO BA0006-P31

NIMO fue la marca comercial de una familia de Tubos de Rayos Catódicos (CRT) muy pequeños y no estandarizados, fabricados por IEE (Industrial Electronics Engineers de USA) a mediados de 1960.
En este caso estudiarenos el Tubo modelo BA0006-P31 disponible en las placas vistas arriba, que cuenta con 10 cañones de electrones con plantillas que dirigen y dan forma de dígito o caracter alfanumérico al haz de electrones que se proyecta e ilumina su pantalla superior.
Estos Tubos son de diseño interno artesanal y complejo pero de operación simple ya que proyectan un sólo dígito entre 10, normalmente de 0 a 9. Los hay más complejos de proyección multiple que cuentan con deflexión magnética especial pero este no es el caso.
Este Tubo posee 3 tipos de electrodos, un filamento catódico, un ánodo y 10 grillas o rejas de control que activan los 10 haces electrónicos con sus cuadrículas correspondientes.
Las ventajas de los Tubos NIMO respecto de los Nixie es su mejor ángulo de visualización, incluso el dígito proyectado se ve desde atrás del tubo, y su color y brillo variable (dimmerizable). Sus desventajas es su mayor complejidad de alimentación y mayor consumo. El tubo requiere mínimo 1750 Voltios de tensión DC de ánodo, 1.1 voltios de tensión AC para los filamentos, y cierta polarización catódica como se verá luego en el circuito de control.
Los datos del Tubo BA0006-p31 pueden verse aqui

En la Fig.13.3 puede verse como varía el brillo o luminancia del Tubo en función de la tensión de Ánodo, lo que hace variable (dimmerizable) el brillo del tubo. Normalmente el control de brillo de un display numérico construido con estos Tubos se lograba con un reostato en el circuito primario del transformador de su fuente anódica, hoy con una alimentación switching variable se lograría el mismo efecto.



Fig. 13.3 Luminancia vs Tensión de Ánodo



En la Fig.13.4 se muestra el circuito típico de testeo del Tubo NIMO.
Como en todo tubo de rayos catódicos, la corriente de haz se controla con la tensión del electrodo Grilla o reja. Como se ve en la figura, una tensión de Grilla de -6 Voltios respecto del Cátodo producirá la repulsión de los electrones del haz, llevando la corriente del Tubo al corte y apagando el brillo de la pantalla. En cambio una tensión de Grilla de +4 Voltios respecto del Cátodo permitirá el paso pleno de los electrones del haz y el brillo máximo de la pantalla del Tubo.
Cuando la Grilla de control sea negativa, su efecto de repulsión electrónica hará que la  corriente de haz de su cañon catódico sea nula. Cuando la Grilla sea positiva tomará unos pocos microamperes de corriente del haz, por lo cual debe usarse una resistencia de limitación de corriente de Grilla de un valor mínimo de 1 MegaOhms.


Fig.13.4 Circuito de control típico de un Tubo



El circuito de Control utilizado en la plaqueta original



Fig.13.5 Ciruito de Control en la placa original



Fig.13.6 Diagrama de circuito de Control parcial de la placa

 



En la Fig.13.5 se muestra la sección de la placa que controla un Tubo (un dígito) y en la Fig.13.6 se ve su diagrama de circuito parcial (para una sola Grilla de 10). En la Fig.13.5  se ve el decodificador BCD a decimal tipo SN7441  cuyo funcionamiento ya se analizó en Entradas anteriores, y las resistencias de polarización de las 10 Grillas del Tubo soldadas directamente en el zócalo de este. El resto de la electrónica se encuentra del otro lado de la placa y debajo del zocalo del Tubo.
En la Fig.13.6 se muestra el circuito parcial de control para un Tubo y una sola Grilla. El mismo circuito se repetirá para las 10 Grillas de un Tubo y para los 5 Tubos.

El funcionamiento del circuito es sencillo. Por las entradas ABCD del decodificador SN7441 ingresa el código BCD del dígito a mostrar en el Tubo, este código como ya se vio activará la salida correspondiente (1 entre 10) del decodificador llevando su tensión a 0 Voltios (masa o tierra), esto llevará al corte de corriente del transistor T1 colocando una tensión de 12 Voltios en la Grilla correspondiente, activando así el haz de electrones y haciendo visible el dígito correspondiente al código BCD ingresado, en la pantalla del Tubo.
Mientras tanto, las 9 restantes salidas del deco que no corresponden al código BCD ingresado, se mantienen desactivadas a potencial de 5 Voltios, haciendo que sus transistores Tx se mantengan en saturación colocando un potencial de 0 Voltios en las 9 Grillas restantes anulando sus haces electrónicos, por lo cual en el Tubo sólo se verá el digito activado por el código BCD ingresado.
Como también se ve en la Fig.13.6, el circuito utiliza Polarización por Cátodo por medio del punto central del circuito secundario del transformador de alimentación de filamento del Tubo.  En este punto como se ve, se ingresa con una tensión DC de 6 Voltios provista por el divisor R1/R2 que mantendrá el Cátodo del Tubo en +6 Voltios respecto de 0 Voltios, (masa o tierra) del circuito.
Esto permite que  una Grilla en 0 Voltios (transistor T1 conduciendo corriente) presente -6 Voltios respecto del Cátodo y lleve su corriente de haz electrónico del Tubo al corte;  mientras que una Grilla con +12 Voltios (transistor T1 en corte de corriente) presente +6 Voltios respecto del Cátodo, active  su corriente de haz catódico  y haga visible su dígito correspondiente.


A continuación un video con más detalles de este proyecto






En breve el diseño completo con microcontrolador uC...

martes, 28 de abril de 2020

12) Configuración y programación del μC . Reloj Retro IN0012

Asignación de registros y memoria en el microcontrolador uC

Como en el diseño anterior, en este proyecto se utilizará un uC de rango medio de la linea MicroChip, tipo 16F628, de 8 bits de longitud de registros internos, memoria, y dos puertas de entrada/salida RA(RA0-RA7) y RB(RB0-RB7) que se asignarán según la Fig.10.7
Las referencias y datos para el diseño pueden verse aquí:

De acuerdo a lo visto en el punto 9) Sincronizando Relojes con Señal GPS , respecto a las Fig. 9.9 y Fig. 9.10, se aplicarán dichos conceptos en este diseño.
Entonces, en forma similar en el uC se dispondrán 12 registros o lugares de memoria de 8 bits donde se almacenarán los dígitos a mostrar en el display del Reloj

La asignación de los registros para almacenar y mostrar Horas, Minutos y Segundos; y Dia, Mes y Año; será la siguiente:


 Nombre
 Función Rango utilizado Rango máximo (8 bits)
 HD Decenas de Horas
 0-1 0-255
 HU Unidades de Horas
 0-9 0-255
 MD Decenas de Minutos
 0-5 0-255
 MU Unidades de Minutos
 0-9 0-255
 SD Decenas de Segundos
 0-5 0-255
 SU Unidades de Segundos
 0-9 0-255
 AD Decenas de Año
 0-9 0-255
 AU Unidades de Año
 0-9 0-255
 ED Decenas de Mes
 0-1 0-255
 EU Unidades de Mes
 0-9 0-255
 DD Decenas de Dia
 0-3 0-255
 DU Unidades de Dia
 0-9 0-255


También se asignarán otros registros de memoria auxiliares para Back Light, contadores y retardos que se definirán en el código de programación del uC


Programación del microcontrolador, diagramas de flujo simplificados

Aquí tambíen se aplica lo visto en la Entrada 9) Sincronizando Relojes con Señal GPS
El programa PPal será similar al utilizado en el proyecto anterior del Reloj ZM1022 como se describió en la Entrada 6) y la ISR o Rutina de Servicio responderá al diagrama de flujo y descripción de la Fig. 9.9.


Análisis del módulo USART del uC

En el capítulo 12 de la referencia de arriba se detalla la programación del módulo USART del uC, con sus registros exclusivos y tablas de velocidades.
Los detalles de configuración para este diseño específico se pueden consultar en el código fuente ASM del Reloj.



Fig.12.1 Configuración de USART en Rx
Fig.12.1 Resumen de Configuración USART en Rx


Fig.12.2 Resumen de Configuración USART en Tx




Recibiendo la Hora UTC, mostrando la Hora Local

Al utilizar un módulo GNSS (GPS) para obtener la información de Hora y Fecha desde los sistemas satelitales, aparece el problema de la corrección a la Hora Local que deberá ser mostrada en el Reloj.

Los sistemas de satélites GNSS ya vistos (GPS, GLONASS, Beidou, Galileo) son globales y transmiten sus señales a todo el mundo, por lo cual envían con alta presición exclusivamente el tiempo UTC (Coordinated Universal Time) ó GMT (Greenwich Mean Time) como se analizó en la Entrada 9) Por lo cual el país o región que reciba y procese dicha señal, deberá realizar las correcciones necesarias a su Hora Local, que dependerá de su posición geográfica y factores estacionales (países que adelantan su hora en invierno, etc.)

Este problema de corrección de tiempo que parece trivial, puede complicarse por ciertas pautas que deben tenerse en cuenta.

Por ejemplo los países americanos que se encuentran al Oeste de Greenwich o Meridiano Cero tienen correcciones de tiempo negativas, p.e. para Argentina la corrección o Offset horario es (-3), esto significa que cuando la Hora UTC es p.e. 09:17 en Argentina es Hora Local 06:17. La solución de este corrimiento o Offset horario en principio parece facil, sólo basta restar 3 a la Hora UTC y queda la Hora Local corregida, pero no siempre es tan sencillo.

Los problemas aparecen cuando la Hora UTC es p.e. 02:36 entonces la Hora Local será 23:36 y la resta debe hacerse en el sistema sexagesimal para obtener el resultado correcto, y además si el Reloj muestra Fecha como es el caso de este diseño, la Fecha UTC ya estará un día adelantada a la Fecha Local y también deberá corregirse mostrando el dia anterior.

Esta corrección al día anterior que debe mantenerse en las tres últimas horas del día corriente en un país con Offset ( -3) como Argentina se complica un poco más el primer día del mes, ya que el día anterior al 1ro de mes depende de cual fue el mes anterior que puede contar con 28, 30 o 31 días, y se deberá mostrar además el mes anterior en ese caso. También además en un reloj que muestra Mes y Año como en este caso, deberá corregirse el Mes mostrado y el año mostrado en las tres últimas horas del 31/12, ya que el tiempo UTC ya estará en año y mes nuevo, mientrás que el país todavía en año y mes viejo. Otra complicación adicional son también los años bisiestos que deberán tenerse en cuenta para una corrección de Hora y Fecha correcta a lo largo de los años.


Es de notar además que los módulos GNSS como el NEO-M8N aquí utilizado, no incluyen corrección por posición geográfica en su programación ni en la información de Hora y Fecha provista en sus mensajes de protocolo que ya fueron analizados.

En diseños sofisticados que utilicen programación de alto nivel (lenguajes C, Basic, VB.NET, etc.) se pueden implementar bases de datos de calendarios o códigos complejos que realicen una corrección correcta de Hora, Dia, Mes y Año en cualquier posición geográfica del mundo y en cualquier año.


Pero en el caso de programación de bajo nivel como es el código ASM de los microcontroladores, que además manejan sumas y restas en numeración binaria básica, una corrección de tiempo que tenga en cuenta todas las variantes aquí señaladas puede complicarse.
Por ejemplo la instrucción de resta binaria (SUB, Capitulo 15 Instruction Set de la referencia de arriba) que se usaría para realizar la resta del Offset horario no daría el resultado esperado en forma directa y habría que corregirlo en algunos casos. Por ejemplo para Hora UTC=17 implica Hora Local=17-3=14 pero la intrucción SUB daría como resultado 0x0E (Exa) y no 14

Para resolver este problema existen algunas alternativas en el código de los uC. Se puede encarar conversiones del sistema binario al sexagesimal, tomas de desición anidadas (Case) que analicen todos los casos de Hora, Dia, Mes y Año, y también está el método de combinación de Algoritmos y Tablas de Conversión que será el aquí utilizado.



Entonces, para resolver el Offset horario en la programación de este Reloj se utilizará la siguiente combinación de algoritmo y tabla
   
    Constante - Offset + Hora UTC = Índice,   Tabla(Índice) = Hora Local

La Constante se adopta en 8 y el algoritmo funciona en principio para Offsets de -3, -4, -5 y -6
El uC resolverá la Ecuación en binario y la Tabla utilizará la combinación de instrucciones CALL/RETLW
El código ASM para lograr la conversión horaria será el siguiente:

 Instruccion ASM (nemónico)
 Parámetro Comentario
 movfw OFFSET Cargar el OFFSET(3)
 subwf CONSTANTE (8)
 Resolver (CONS. - OFFSET)
 addwf
 HoraUTC
 Sumar Hora UTC
 call TablaHoraria
 Índice = CONS. - OFFSET + HUTC Entrar a la Tabla con el Índice
 retlw HoraLocal
 Obtener Hora Local
   

La Tabla de conversión horaria, que se accede con Call TablaH  es la siguiente:

 Ïndice 00  01  02  03  04  05  06  07  08  09  0A  0B  0C  0D  0E  0F
 00 99  99  18  19  20  21  22  23  00  01  02   03  04   05   06   99
 10 99  99  04  05  06  07  08  09  10  11  12   13  14   15   16   99
 20 99  99  14  15  16  17  18  19  20  99  99   99  99   99   99   99


Aqui algunos ejemplos de como funciona la conversión horaria para distintas Horas y distintos Offsets

 Ejemplo Hora UTC País Offset Operación uC
 Índice Tabla
 Valor Tabla
 Hora Local
 1 00 Arg./Brasil -3 8-3+00=05 05 21 21
 2 09 Arg./Brasil -3 8-3+09=0E0E
 0606
 3 17 Arg./Brasil -3 8-3+17=1C 1C 14 14
 4 00 Chile/Bolivia -4 8-4+00=04 04 20 20
 5 11 Chile/Bolivia -4 8-4+11=15 15 07 07
 6 16 Canadá/USA -5 8-5+16=19 19 11 11
 7 08 Canadá/USA -6 8-6+08=0A 0A 14 14


Tabla de Dia Anterior.
Se usa en el caso que el Dia UTC ya sea el dia siguiente pero el Día Local a mostrar en el Reloj todavía deba ser el Día anterior. En este caso no hay algoritmo previo y se accede directamente a la tabla

 Dia UTC
 00  01  02  03  04  05  06  07  08  09  0A  0B  0C  0D 0F
 00 99  99  01  02  03  04  05  06  07  08  99   99   99  99  99
 10 09  10  11  12  13  14  15  16  17  18  99   99   99  99  99
 20 19  20  21  22  23  24  25  26  27  28  99   99   99  99  99
 30 29  30


Tabla de Dia Anterior al 1ro. de mes
Se usa en el caso que el Dia UTC ya sea el dia siguiente y además primer día del Mes, pero el Día Local a mostrar en el Reloj todavía deba ser el Día anterior. En este caso no hay algoritmo previo y se accede directamente a la tabla.
  
 Dia UTC
 00  01  02  03  04  05  06  07  08  09  0A  0B  0C  0D  0E  0F
 00 99  31  31  28  31  30  31  30  31  31  99   99  99   99   99  99
 10 30  31  30

El valor 99 si es leido y mostrado en el Diplay en el proceso de alguna de las Tablas, indicará error de Tabla o de proceso.
Los demás detalles de uso de estas tablas para este diseño específico se pueden consultar en el código fuente ASM del Reloj.



Desarrollo del código de programación del uC en lenguaje ASM


El código completo de programación del uC se encuentra disponible en este enlace:
código ASM reloj retro IN0012

Y aquí algunas pantallas de IDE con parte de ese código:


Fig.12.3 Código de Inicialización del Módulo USART de acuerdo a las Fig.12.1 y 12.2




Fig.12.4 Código de la ISR del módulo USART




Fig.12.5 Código parcial de la Tabla de Corrección Horaria y sus Algoritmos





Como en el diseño anterior, los programadores  PICKit2 y PICKit3 de MicroChip  que se usarán para flashear el uC se ven en las Figs. 7.9 y 7.10

En la próxima entrada continuamos con el próximo proyecto. Un saludo...





viernes, 24 de abril de 2020

11) Armado y Primeras Pruebas. Reloj Retro IN0012



Armado y cableado de las plaquetas del Reloj IN0012




Fig.11.1 Cableado de la plaqueta del Display Nixie

En la Fig.11.1  puede verse el comienzo del cableado de la plaqueta vertical del Display donde se instalan y  conectan los 6 tubos Nixie Mini IN0012.  Cada válvula de vacio lleva los 10 cables de los 10 Cátodos de Dígito,  más la conexión del Ánodo con los resistores de limitación de corriente de 30Kohms (18K+12K), en total son 11 cables por válvula Nixie siendo 66 cables para las Nixies en la plaqueta Display.
Además la plaqueta lleva un orificio que puede verse en el centro de la base de cada tubo, donde ira colocado el LED de Back Light que iluminará la ampolla de cristal del tubo correspondiente. Cada LED RGB lleva 4 cables, el Ánodo común y los tres Cátodos de Color RGB. Esto lleva la cantidad de cables en el zócalo de cada Nixie a 15, y el total de cables en la plaqueta Display a 90.






Fig.11.2 Prueba de cada válvula Nixie  en la plaqueta Display


En la Fig.11.2 se muestra la prueba de cada dígito de cada tubo en la plaqueta Display con la fuente de 200V y el resistor de limitación de 30Kohms. Cada dígito y su cable correspondiente es probado para asegurar su funcionamiento y brillo correcto. La reparación o resoldado de algún cable fallado entre otros 90 cables en el espacio tan reducido de la plaqueta Display sería bastante engorrosa.







 
Fig.11.3 Cableado de la plaqueta vertical Display Nixie a la plaqueta controladora


En la Fig.11.3 se muestra el cableado entre la plaqueta Display y la plaqueta Controladora. Los 60 (6x10) cables que van entre los Cátodos Nixies y las salidas Driver de los SN74141  (los 6 zocalos verticales en la placa controladora) utilizan 30 pares trenzados formados por un cable negro y uno de color siguiendo el código de colores de los resistores. Entonces el par 1 será Negro con Marrón, el par 2 será Negro con Rojo, el 3 Negro/Naranja, etc.
El cableado de los 6 Ánodos se realiza por medio de los resistores de 30Kohms a un cable común rojo que trae los 200V desde la fuente correspondiente






Fig.11.4 Cableado completo de las plaquetas con Nixies y Back Light encendido

En la Fig.11.4 se muestran ambas placas con el cableado completo y las primeras pruebas de los tubos Nixies y los LEDs de Back Light




Fig.11.5 Primeras pruebas del uC, la fuente de 200 Voltios y el módulo NEO-M8N con su cable de conexión


 







Fig.11.6 Distribución de Componentes en la Placa de Control


En la Fig.11.6 se muestra la distribución de componentes en la Plaqueta de Control que contiene los decodificadores/drivers SN74141, los registros SN74164, el adaptador de nivel CD40106 y el microcontrolador uC, en este caso un 16F628.
También se ven los 4 LEDs indicadores , el preset de control de brillo de Back Light, los conectores del módulo GPS y de programación del uC y demás componentes miscelaneos.


Fig.11.7 Diagrama de Fuentes de Alimentación

En la Fig. 11.7 se muestra el diagrama de las fuentes de alimentación que ya se vieron en la Fig.10.2.  La fuente o convertidor AC-DC de 12 Voltios es externa y se conectará al gabinete del Reloj.
La fuente de 200 Voltios para los tubos Nixies y el regulador de 5 Voltios son internos en el Reloj. Cuando esté listo el gabinete agregaré fotos de su disposición.

En la próxima entrada continuamos con la programación del uC...