Autor Tema: Reloj con tubos Nixie  (Leído 118960 veces)

0 Usuarios y 12 Visitantes están viendo este tema.

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Reloj con tubos Nixie
« Respuesta #285 en: 15 de Septiembre de 2010, 17:31:32 »
Otro precioso reloj con tubos in12; compacto, multiplexado total, con dimming en el cambio de dígito, con iluminación posterior mediante LEDs que cambian de colores y con la fuente de alimentación basada en el MC34063.

http://nixiekits.eu/



En las instrucciones del reloj está incluido el esquema, que se basa en un pic16f628 y, curiosamente, no usa ningún RTC. Sí incluye un supercondensador de 1F... con el que no sé durante cuánto tiempo aguantará el PIC sin alimentación.

En esta otra dirección hay un review del producto en vídeo: http://www.tubeclockdb.com/nixie-clocks.html

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Reloj con tubos Nixie
« Respuesta #286 en: 10 de Octubre de 2012, 11:20:34 »
Ahí va uno minimalista. Por no tener, no tiene ni PCB


Desconectado jorgenuviola

  • PIC16
  • ***
  • Mensajes: 148
    • rat argentina!!
Re: Reloj con tubos Nixie
« Respuesta #287 en: 28 de Febrero de 2013, 01:29:51 »
les dejo mi experiencia con las nixies gracias a este post. Me hice la fuente para mi variedad de nixies.









ahora el tema es que el IRF740 calienta como el demonio, a tal punto que hacia fallar la fuente, tuve que separarlo de la placa y lo atornille a un cooler de micro de pc, ahi calmo, pero el inductor empezo a fallar, largaba humo, le puse una mas grande que tenia dando vueltas pero que no tengo idea de su valor, asi quedo andando hoy le hice una prueba de 6 horas constantes con 3 nixies prendidas y no hubo problema, se ve  que tienen problemas de temperatura este tipo de fuentes.

Desconectado Wirry85

  • PIC10
  • *
  • Mensajes: 11
Re: Reloj con tubos Nixie
« Respuesta #288 en: 28 de Agosto de 2013, 14:16:45 »
Hola a todos,

He vuelto a retomar este fantástico proyecto.

Incluyo el codigo:
Código: [Seleccionar]
#include <16F1518.h>
#fuses XT,NOWDT,NOLVP,NOPROTECT
#use delay (clock=4000000)
#use i2c (Master, sda=PIN_C4, scl=PIN_C3)
//#include <_ds1307.c>
#BYTE TRISA = 0x85   //Variable TRISA en 85h
#BYTE PORTA = 0x05   //Variable PORTA en 05h
#BYTE TRISB = 0x86   //Variable TRISB en 86h
#BYTE PORTB = 0x06   //Variable PORTB en 06h

          
int ano,mes,dia,dia_set,hor,hor_2,min,min_2,sec,sec_2;


/******************************************************************************
                              DS1307
******************************************************************************/




void tiempo (byte &ano, byte &mes, byte &dia, byte &dia_set, byte &hor, byte &hor_2, byte &min, byte &min_2, byte &sec, byte &sec_2)
{
//ds1307_init(DS1307_OUT_1_HZ);

//set_tris_A (0x00);   // 8 terminales de salida
//set_tris_B (0x00);   // 8 terminales de salida

   i2c_start();                        //Escritura
   i2c_write(0xD0);                    //Código de escritura
   i2c_write(0x00);                    //Puntero a la primera dirección
   i2c_start();                        //Lectura
   i2c_write(0xD1);                    //Código de lectura
   //sec =i2c_read()&0x7f;               //prueba
   //sec = BCDaBIN (i2c_read()&0x7f);    //Lectura de los 7 bits de los segundos
  
   sec = (i2c_read()&0x7f);     //Lectura de los 4 bits de los segundos
   sec_2 = sec>>4;
   min = (i2c_read()&0x7f);    //Lectura de los 7 bits de los minutos
   min_2 = min>>4;
   hor = (i2c_read()&0x3f);    //Lectura de los 6 bits de los horas
   hor_2 = hor>>4;
  
   dia_set = (i2c_read()&0x7);   //Lectura de los 3 bits de los dias
   dia = (i2c_read()&0x7f);    //Lectura de los 6 bits de los dias
   mes = (i2c_read()&0x1f);    //Lectura de los 5 bits de los meses
   ano = (i2c_read(0)&0xff);   //Lectura de los 8 bits de los años
   i2c_stop();
}
/******************************************************************************
                              PROGRAMA PRINCIPAL
******************************************************************************/
                   void main()
                   {
                  
                  
                   while(1)
                     {              
                    
                     tiempo(ano,mes,dia,dia_set,hor,hor_2,min,min_2,sec,sec_2);    //Lee tiempo del DS1307
                    
                     delay_ms(100);
                     OUTPUT_A(sec_2);
                     OUTPUT_B(sec);
                     output_high(PIN_C7);
                     output_high(PIN_C2);
                     delay_us(1000);
                     output_low(PIN_C6);
                     output_low(PIN_C1);
                     output_low(PIN_C5);
                     output_low(PIN_C0);
                    
                     delay_ms(100);
                     OUTPUT_A(min_2);
                     OUTPUT_B(min);
                     delay_us(1000);
                     output_high(PIN_C6);
                     output_high(PIN_C1);
                     output_low(PIN_C7);
                     output_low(PIN_C2);
                     output_low(PIN_C5);
                     output_low(PIN_C0);
                     delay_ms(100);
                    
                     OUTPUT_A(hor_2);
                     OUTPUT_B(hor);
                     delay_us(1000);
                     output_high(PIN_C5);
                     output_high(PIN_C0);
                     output_low(PIN_C7);
                     output_low(PIN_C2);
                     output_low(PIN_C6);
                     output_low(PIN_C1);
                     delay_ms(100);
                    
                     }
                   }

El programa lo que hace es enviar en BCD los segundo, minutos y horas.
Lo hace de la siguiente manera:
Envía los segundos, desglosados en 2 partes, la parte alta y la parte baja.
Estas 2 partes van a unos led que se iluminaran acorde con los segundos, para que se iluminen pongo dos bits a 1 que lo que van ha hacer es que el transistor conduzca y así los led se iluminaran.

•La multiplexión de los tubos no es consecutiva, sino alterna, es decir, en un grupo están el 1,3 y 5, y en el otro el 2, 4 y 6. Lo he hecho así para que no se noten diferencias de iluminación entre los dígitos de las horas, minutos, segundos, respectivamente. Entonces en un mismo integrado hay 3 tubos con lo cual envió la información del tubo 1 y los otros tubos el 3 y el 5 también la reciben, pero el ánodo lo controla el PIC, es el PIC el que se encarga de encender y apagar los ánodos de cada tubo para así actualizar la datos.

Hago todo esto igual para los minutos y horas.

El problema es que lo hace tan rápido que en la simulación funciona mal, se mezclan las cosas

Mi nivel de programación como pueden ver es baja sobre todo en I2C.

Subo el esquema del proteus.
Muchas gracias por todo.
« Última modificación: 28 de Agosto de 2013, 14:40:05 por Wirry85 »