Elektronica Stynus
 

Nixie-klok

Ik heb een tijd geleden besloten een nixie klok te gaan bouwen. Het ontwerp van de klok neemt Robert voor zijn rekening. Bedankt Robert!! De klok zal werken met een AVR daarom heb ik alvast een programmer gebouwd.

Op dit moment heb ik de hoogspanningsvoeding gebouwd voor te testen:

Schema:

Schema

(Als de enable hoog is stopt de schakeling.)

De foto's:

Nixie_Sup

Nixie_Sup

De printlayout: PDF met componten; PDF zonder componenten

Top

Update 26/08/07

Gisteren heb ik de nixies binnengekregen (Bedankt Robert en Pascal!!) en vandaag maar meteen mee aan het experimenteren gegaan:

Nixie vooraanzicht

Nixie zijaanzicht

Nixie met ledje naast

voorkant

Gegevens:

gegevens

De buisvoet:

buisvoet

Top

Update 02/09/07

Vandaag heb ik een behuizing getekend:

Behuizing

Behuizing

Behuizing

 

Top

Update 29/03/09

Ik heb beslist om niet op Robert te wachten voor de code enzo. Dus heb ik zelf wat ontworpen en gemaakt. De klok werkt nu met een pic16f628a. De tijd wordt bijgehouden door een DS1307 en de temperatuur wordt gemeten door een TC74. Omdat de 16f628a niet genoeg uitgangen heeft heb ik er 4 74HC595 schuifregisters bijgezet, zo kan ik alle nixies en neonlampjes met 3 uitgangen aansturen.

 

Schema:

schema

 

Pcb layout:

pcb

Als je de eagle file's wil van deze layout dan kan je me mailen op Nixieklok@elektronicastynus.be

 

Foto van de opgebouwde print:

print

 

Filmpje van de schakeling in werking:

 

De code:

Device  16F628A
Config  INTRC_OSC_NOCLKOUT, WDT_off, PWRTE_off, LVP_off, MCLRE_on
ALL_DIGITAL     TRUE 
PORTB_PULLUPS   = On
'In en uitgangen
    'Nixies en neons
        Symbol  klok      = PORTA.1
        Symbol  ZetVast   = PORTA.0
        Symbol  Data_Pin  = PORTA.2
    'Temperatuursensor en RTC
        Symbol  SDA       = PORTB.4
        Symbol  SLC       = PORTB.3
    'Knoppen
        Symbol  KnopR     = PORTB.7 : TRISB.7 = 1
        Symbol  KnopM     = PORTB.6 : TRISB.6 = 1
        Symbol  KnopL     = PORTB.5 : TRISB.5 = 1

'Variabelen declareren
    Dim     Teller          As Byte
    Dim     Temp1           As Byte
    Dim     Temp2           As Byte 
    Dim     BCD_Opt         As Byte   
    Dim     index           As Byte
    Dim     Seconden        As Byte
    Dim     Minuten         As Byte
    Dim     Uren            As Byte
    Dim     Datum           As Byte
    Dim     Maand           As Byte
    Dim     Jaar            As Byte
    Dim     Temperatuur     As Byte
    Dim     neon            As Byte
    Symbol  Reg_Seconden    =  $00 
    Symbol  Reg_Minuten     =  $01
    Symbol  Reg_Uren        =  $02
    Symbol  Reg_Dag         =  $03
    Symbol  Reg_Datum       =  $04
    Symbol  Reg_Maand       =  $05
    Symbol  Reg_Jaar        =  $06
    Symbol  Lezen           =  %11010001
    Symbol  Schrijven       =  %11010000

    Clear

    While 1 = 1 
        Tijd:
            For index = 0 To 50
                I2CIN  SDA, SLC, Lezen, Reg_Uren, [Uren]     
                I2CIN  SDA, SLC, Lezen, Reg_Minuten, [Minuten]
                I2CIN  SDA, SLC, Lezen, Reg_Seconden, [Seconden] 
                neon = %01111001
                
                SHOut Data_Pin, klok, msbfirst, [neon \ 8]
                DelayUS 20
                SHOut Data_Pin, klok, msbfirst, [Uren \ 8]
                DelayUS 20
                SHOut Data_Pin, klok, msbfirst, [Minuten \ 8]   
                DelayUS 20
                SHOut Data_Pin, klok, msbfirst, [Seconden \ 8]   
                High ZetVast
                DelayUS 20
                Low ZetVast
                If KnopR = 0 Or KnopM = 0 Or KnopL = 0 Then
                    GoSub TijdInst
                EndIf
                DelayMS 200
            Next
        Date:
            For index = 0 To 10
                I2CIN  SDA, SLC, Lezen, Reg_Jaar, [Jaar]
                I2CIN  SDA, SLC, Lezen, Reg_Maand, [Maand]
                I2CIN  SDA, SLC, Lezen, Reg_Datum, [Datum] 
                neon = %01111010
                    
                SHOut Data_Pin, klok, msbfirst, [neon \ 8]
                DelayUS 20
                SHOut Data_Pin, klok, msbfirst, [Datum \ 8]
                DelayUS 20
                SHOut Data_Pin, klok, msbfirst, [Maand \ 8]   
                DelayUS 20
                SHOut Data_Pin, klok, msbfirst, [Jaar \ 8]   
                High ZetVast
                DelayUS 20
                Low ZetVast
                If KnopR = 0 Or KnopM = 0 Or KnopL = 0 Then
                    GoSub DatumInst
                EndIf 
                DelayMS 200
            Next       
        Temp: 
            For index = 0 To 10
                I2Cin SDA, SLC,$91,[Temperatuur] 
                Temp1 = Temperatuur / 10
                Temp2 = (Temperatuur - (Temp1 * 10))
                Temperatuur = Temp2
                Temperatuur.7 = Temp1.3 
                Temperatuur.6 = Temp1.2
                Temperatuur.5 = Temp1.1
                Temperatuur.4 = Temp1.0
                   
                neon = %00100100
                
                SHOut Data_Pin, klok, msbfirst, [neon \ 8]
                DelayUS 20        
                SHOut Data_Pin, klok, msbfirst, [$FF \ 8]
                DelayUS 20
                SHOut Data_Pin, klok, msbfirst, [Temperatuur \ 8]   
                DelayUS 20
                SHOut Data_Pin, klok, msbfirst, [$FF \ 8]   
                High ZetVast
                DelayUS 20
                Low ZetVast
                DelayMS 200
            Next
    Wend  

TijdInst:
    I2CIN  SDA, SLC, Lezen, Reg_Uren, [Uren]     
    I2CIN  SDA, SLC, Lezen, Reg_Minuten, [Minuten]
    I2CIN  SDA, SLC, Lezen, Reg_Seconden, [Seconden] 
    neon = %01111001
    While 1 = 1 
        SHOut Data_Pin, klok, msbfirst, [neon \ 8]
        DelayUS 20
        SHOut Data_Pin, klok, msbfirst, [Uren \ 8]
        DelayUS 20
        SHOut Data_Pin, klok, msbfirst, [Minuten \ 8]   
        DelayUS 20
        SHOut Data_Pin, klok, msbfirst, [Seconden \ 8]   
        High ZetVast
        DelayUS 20
        Low ZetVast
        DelayMS 200
        Inc Teller
        If KnopR = 0 Then
            BCD_Opt = Seconden
            GoSub bcd_tellen
            Seconden = BCD_Opt
            Teller = 0
        EndIf
        If KnopM = 0 Then
            BCD_Opt = Minuten
            GoSub bcd_tellen
            Minuten = BCD_Opt
            Teller = 0
        EndIf
        If KnopL = 0 Then
            BCD_Opt = Uren
            GoSub bcd_uur
            Uren = BCD_Opt
            Teller = 0
        EndIf
        DelayMS 250
        If Teller = 12 Then Break
    Wend
    'Wegschrijven
    I2COUT SDA, SLC, Schrijven ,Reg_Seconden, [Seconden]
    I2COUT SDA, SLC, Schrijven ,Reg_Minuten, [Minuten]
    I2COUT SDA, SLC, Schrijven ,Reg_Uren, [Uren]

Return
bcd_tellen:
    Temp1 = BCD_Opt & %00001111 'Xor
    Temp2 = BCD_Opt - Temp1
    Temp2 = Temp2 >> 4
    Inc Temp1
    If Temp1 > 9 Then
        Temp1 = 0
        Inc Temp2
        If Temp2 > 5 Then
            Temp2 = 0
        EndIf
    EndIf  
    Temp2   = Temp2 << 4   
    BCD_Opt = Temp2 + Temp1

Return   
bcd_uur:
    Temp1 = BCD_Opt & %00001111 'Laagste bits doorlaten 
    Temp2 = BCD_Opt - Temp1
    Temp2 = Temp2 >> 4
    Inc Temp1
    If Temp1 > 9 Then
        Temp1 = 0
        Inc Temp2
        If Temp2 > 5 Then
            Temp2 = 0
        EndIf
    EndIf  
    Temp2   = Temp2 << 4   
    BCD_Opt = Temp2 + Temp1
    If BCD_Opt > 23 Then
        BCD_Opt = 0
    EndIf
Return    

DatumInst:
    I2CIN  SDA, SLC, Lezen, Reg_Jaar, [Jaar]
    I2CIN  SDA, SLC, Lezen, Reg_Maand, [Maand]
    I2CIN  SDA, SLC, Lezen, Reg_Datum, [Datum]
    neon = %01111010
    While 1 = 1 
        SHOut Data_Pin, klok, msbfirst, [neon \ 8]
        DelayUS 20
        SHOut Data_Pin, klok, msbfirst, [Datum \ 8]
        DelayUS 20
        SHOut Data_Pin, klok, msbfirst, [Maand \ 8]   
        DelayUS 20
        SHOut Data_Pin, klok, msbfirst, [Jaar \ 8]    
        High ZetVast
        DelayUS 20
        Low ZetVast
        DelayMS 200
        Inc Teller
        If KnopR = 0 Then
            BCD_Opt = Jaar
            GoSub bcd_jaar
            Jaar = BCD_Opt
            Teller = 0
        EndIf
        If KnopM = 0 Then
            BCD_Opt = Maand
            GoSub bcd_Maand
            Maand = BCD_Opt
            Teller = 0
        EndIf
        If KnopL = 0 Then
            BCD_Opt = Datum
            GoSub bcd_Datum
            Datum = BCD_Opt
            Teller = 0
        EndIf
        DelayMS 250
        If Teller = 12 Then Break
    Wend
    'Wegschrijven
    I2COUT SDA, SLC, Schrijven ,Reg_Jaar, [Jaar]
    I2COUT SDA, SLC, Schrijven ,Reg_Maand, [Maand]
    I2COUT SDA, SLC, Schrijven ,Reg_Datum, [Datum]

Return
bcd_jaar:
    Temp1 = BCD_Opt & %00001111 'Xor
    Temp2 = BCD_Opt - Temp1
    Temp2 = Temp2 >> 4
    Inc Temp1
    If Temp1 > 9 Then
        Temp1 = 0
        Inc Temp2
        If Temp2 > 9 Then
            Temp2 = 0
        EndIf
    EndIf  
    Temp2   = Temp2 << 4   
    BCD_Opt = Temp2 + Temp1

Return  
bcd_Maand:
   Temp1 = BCD_Opt & %00001111 'Laagste bits doorlaten 
    Temp2 = BCD_Opt - Temp1
    Temp2 = Temp2 >> 4
    Inc Temp1
    If Temp1 > 9 Then
        Temp1 = 0
        Inc Temp2
    EndIf  
    Temp2   = Temp2 << 4   
    BCD_Opt = Temp2 + Temp1
    If BCD_Opt = $13 Then
        BCD_Opt = 1
    EndIf    
    If BCD_Opt = 0 Then
        BCD_Opt = 1
    EndIf
Return

bcd_Datum:
   Temp1 = BCD_Opt & %00001111 'Laagste bits doorlaten 
    Temp2 = BCD_Opt - Temp1
    Temp2 = Temp2 >> 4
    Inc Temp1
    If Temp1 > 9 Then
        Temp1 = 0
        Inc Temp2
    EndIf  
    Temp2   = Temp2 << 4   
    BCD_Opt = Temp2 + Temp1
    If BCD_Opt = $32 Then
        BCD_Opt = 1
    EndIf
    If BCD_Opt = 0 Then
        BCD_Opt = 1
    EndIf
Return
End

 

De hex file: Link.

 

Nu nog iemand zoeken om de behuizing te frezen uit een blok hout en het project is af.

Top

Reactie's

Naam: riktw
Datum: 18 Augustus 2007, 15:56
Bericht:
hallo

mag ik de layout hiervan hebben zodat ik hem ook kan maken?
Naam: Stynus
Datum: 18 Augustus 2007, 15:57
Bericht:
Staat er toch bij.
Vanonder onder de laatste foto.

Mvg,
Stynus
Naam: riktw
Datum: 18 Augustus 2007, 16:01
Bericht:
aarg ik zit niet op te letten
Naam: robin
Datum: 02 September 2007, 19:30
Bericht:
Ga je de behuizing uit hout maken?
Naam: Stynus
Datum: 02 September 2007, 19:36
Bericht:
Jep.
Grenen of mahonie.

mvg,
Stynus
Naam: Hans Schouenberg
Datum: 25 September 2007, 20:07
Bericht:
Project Nixi klok.
Ik loop al langer met dit idee. Ik heb ooit eens een giga hertz teller gebouwd met nixi buisjes, alles op TTL niveaux, grote voeding, alles wordt zeer warm. Ik ben benieuwd en geinteresseerd hoe je alles gaat aansturen, succes Hans uit Belfeld nederland.
Naam: fabian
Datum: 26 December 2007, 23:55
Bericht:
he, jammer dat hij nog niet af is...
Naam: Hans Schouenberg
Datum: 21 Februari 2008, 19:57
Bericht:
Hallo Stijn, het project Nixie klok heeft mijn interesse al over meerdere jaren. Ik heb nu mijn ontwerp gemaakt op TTl niveau, seconden, minuten en uren afzonderlijk instelbaar, een reset naar nul en clockpuls vanaf een horloge X-tal via delers naar 1 Hz. De schakeling vraagt 300mA. De Nixie buisjes worden aangestuurd door een 74141, er is een schema maar geen print layout. Laat mij eens weten of je interesse hebt. Oh ja, de hoogspanning wil ik eens naar jouw ontwerp bouwen, dan wordt het nog kleiner.
Naam: Stynus
Datum: 21 Februari 2008, 22:00
Bericht:
Hoi,

Ik wil dat er ook de datum opkomt en via dcf77 automatisch alles wordt goed gezet.
Dus er zit niks anders op dan een microcontroller gebruiken.

De schakeling zal(zonder de nixie's) volgens dit ontwerp een 20mA op 5V verbruiken schat ik.

Mvg,
Stynus
Naam: Nathan
Datum: 17 Juli 2008, 17:30
Bericht:
Hallo stynus,

Met welk programma heb je die behuizing getekend ?
Ziet er namelijk erg strak uit
Naam: Stynus
Datum: 17 Juli 2008, 17:33
Bericht:
Hoi,

Die is met solidworks getekend.

Mvg,
Stynus
Naam: Roland
Datum: 28 Augustus 2008, 22:26
Bericht:
hoi Stijn

Heb je toevallig ook een schema voor IN14 nixiebuizen
het liefst met een 16f628a of een 16f877a sturing ?

groeten roland

ps je site ziet er goed uit met leuke onderwerpen
Naam: Stynus
Datum: 28 Augustus 2008, 22:47
Bericht:
Hoi,

Nee zo een schema heb ik niet. Misschien dat ik dat is ontwerp als ik tijd overheb maar dat zal niet voor de eerste maanden zijn vrees ik.

Mvg,
Stynus
Naam: Reddevil
Datum: 29 Maart 2009, 19:55
Bericht:
Staat ook in mijn verlanglijstje, maar eerst mooie nixiebuizen vinden. Mooi!
Naam: Jasper
Datum: 01 April 2009, 12:48
Bericht:
Ik ben aan het kijken voor een voeding voor m'n al bestaande nixie-klok. Op het moment richt ik namelijk de netspanning gelijk, maar ik gebruik liever een 12v adapter als voeding.

Ik heb echter geen verstand van van upconverting DC-DC.
Is de waarde van C4 (4.7u) kritiek? Of mag dit bijvoorbeeld ook 68u zijn? (de enige die ik heb liggen voor die spanningen)
Naam: Stynus
Datum: 01 April 2009, 13:02
Bericht:
Hoi,

Dan wordt het wat gevaarlijker (maar nog altijd niet zo gevaarlijk als je het nu hebt :p).

De regeling zal ook wel trager worden. Ik zou zeggen probeer het.

Mvg,
Stynus
Naam*:
Email: (Wordt niet weergegeven)
  Waarschuw me als er reacties op deze pagina zijn
Tekst*:
 
Powered by Scriptsmill Comments Script

Top

© 2002-2010 Elektronica Stynus.
Valid XHTML 1.0