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:
(Als de enable hoog is stopt de schakeling.)
De foto's:
De printlayout: PDF met componten; PDF zonder componenten
Gisteren heb ik de nixies binnengekregen (Bedankt Robert en Pascal!!) en vandaag maar meteen mee aan het experimenteren gegaan:
Gegevens:
De buisvoet:
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:
Pcb layout:
Als je de eagle file's wil van deze layout dan kan je me mailen op Nixieklok@elektronicastynus.be
Foto van de opgebouwde 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.
Datum: 18 Augustus 2007, 15:56
hallo
mag ik de layout hiervan hebben zodat ik hem ook kan maken?
Datum: 18 Augustus 2007, 15:57
Staat er toch bij.
Vanonder onder de laatste foto.
Mvg,
Stynus
Datum: 18 Augustus 2007, 16:01
aarg ik zit niet op te letten
Datum: 02 September 2007, 19:30
Ga je de behuizing uit hout maken?
Datum: 02 September 2007, 19:36
Jep.
Grenen of mahonie.
mvg,
Stynus
Datum: 25 September 2007, 20:07
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.
Datum: 26 December 2007, 23:55
he, jammer dat hij nog niet af is...
Datum: 21 Februari 2008, 19:57
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.
Datum: 21 Februari 2008, 22:00
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
Datum: 17 Juli 2008, 17:30
Hallo stynus,
Met welk programma heb je die behuizing getekend ?
Ziet er namelijk erg strak uit
Datum: 17 Juli 2008, 17:33
Hoi,
Die is met solidworks getekend.
Mvg,
Stynus
Datum: 28 Augustus 2008, 22:26
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
Datum: 28 Augustus 2008, 22:47
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
Datum: 29 Maart 2009, 19:55
Staat ook in mijn verlanglijstje, maar eerst mooie nixiebuizen vinden. Mooi!
Datum: 01 April 2009, 12:48
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)
Datum: 01 April 2009, 13:02
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















