Valid HTML 4.0!
Valid CSS!


 

Nixie Klok 1 versie 2

Vanwege een aantal probleempjes met versie 1 van deze klok, is er nu een versie 2 gemaakt.
Om verise 1 te bekijken, klik dan hier: 'Nixie Klok 1 versie 1'

Elektronica

Versie 2 van deze klok bestaat uit een microcontroller aansturing en voeding geïntegreerd op 1 print. Deze print is zelf ontworpen, en is voorzien van voornamelijk SMD onderdelen. De printplaat is gemaakt bij Seeedstudio.

De microcontroller is geprogrammeerd met een Arduino programma. De voeding is gebaseerd op een recent Elektuur ontwerp.
De tijd word bijgehouden door een RTC, en is instelbaar met 2 drukknopjes. Een DCF-77 optie is voorbereid.

Het schema:

Schema

De print:

Lege print
Lege print

Print opgebouwd voorkant
Print opgebouwd voorkant

Print opgebouwd voorkant
Print opgebouwd voorkant

Print opgebouwd achterkant
Print opgebouwd achterkant

De Nixiebuizen:

Nixiebuizen zijkant
Nixiebuizen zijkant

Nixiebuizen voorkant
Nixiebuizen voorkant

Bedrading
Bedrading

Arduino code:

  1. // Nixie Klok
  2. // Jos van Dijken
  3. // 30 Augustus 2012
  4.  
  5. #include <Bounce.h>
  6. #include <Wire.h>
  7. #include "RTClib.h"
  8.  
  9. RTC_DS1307 RTC;
  10. Bounce HoursButton = Bounce( 13,10 );
  11. Bounce MinutButton = Bounce( 12,10 );
  12.  
  13. long previousMillis = 0;
  14. long interval = 60000;
  15. int hours = 0;
  16. int minutes = 0;
  17. int seconds = 0;
  18. int days;
  19. int months;
  20. int years;
  21.  
  22. void setup()
  23. {
  24.      pinMode(0,OUTPUT);
  25.      pinMode(1,OUTPUT);
  26.      pinMode(2,OUTPUT);
  27.      pinMode(3,OUTPUT);
  28.      pinMode(4,OUTPUT);
  29.      pinMode(5,OUTPUT);
  30.      pinMode(6,OUTPUT);
  31.      pinMode(7,OUTPUT);
  32.      pinMode(8,OUTPUT);
  33.      pinMode(9,OUTPUT);
  34.      pinMode(10,OUTPUT);
  35.      pinMode(11,OUTPUT);
  36.      pinMode(A0,OUTPUT);
  37.      pinMode(A1,OUTPUT);
  38.      pinMode(A2,OUTPUT);
  39.      pinMode(A3,OUTPUT);
  40.      pinMode(12,INPUT);
  41.      pinMode(13,INPUT);
  42.      
  43.      Wire.begin();
  44.      RTC.begin();
  45.      StartUpRoutine();
  46.      WriteNixies();
  47. }
  48.  
  49. void loop()
  50. {
  51.      HoursButton.update();
  52.      MinutButton.update();
  53.      HoursButton.rebounce(500);
  54.      MinutButton.rebounce(500);
  55.  
  56.      unsigned long currentMillis = millis();
  57.      if(currentMillis - previousMillis > interval)
  58.      {
  59.           previousMillis = currentMillis;    
  60.           WriteNixies();
  61.      }
  62.      
  63.      if(MinutButton.fallingEdge())
  64.      {
  65.           DateTime now = RTC.now();
  66.           seconds  = now.second();
  67.           minutes  = now.minute();
  68.           hours    = now.hour();
  69.           minutes = minutes+1;
  70.           if(minutes >59)
  71.           {
  72.                minutes = 0;
  73.           }
  74.           RTC.adjust(DateTime(years,months,days,hours,minutes,seconds));
  75.           WriteNixies();
  76.      }
  77.  
  78.      if(HoursButton.fallingEdge())
  79.      {
  80.           DateTime now = RTC.now();
  81.           seconds  = now.second();
  82.           minutes  = now.minute();
  83.           hours    = now.hour();
  84.           hours = hours+1;
  85.           if(hours >23)
  86.           {
  87.                hours=0;
  88.           }
  89.           RTC.adjust(DateTime(years,months,days,hours,minutes,seconds));
  90.           WriteNixies();
  91.      }
  92. }
  93.  
  94. void WriteNixies()
  95. {
  96.      DateTime now = RTC.now();
  97.      seconds  = now.second();
  98.      minutes  = now.minute();
  99.      hours    = now.hour();
  100.  
  101.      int hours_t = hours/10;
  102.      int hours_e = hours-(hours_t*10);
  103.      int minutes_t = minutes/10;
  104.      int minutes_e = minutes-(minutes_t*10);
  105.  
  106.      int seconds_t = seconds/10;
  107.      int seconds_e = seconds-(seconds_t*10);
  108.  
  109.      digitalWrite(A2,(  1&minutes_e)!=0?HIGH:LOW);
  110.      digitalWrite(A3,(  2&minutes_e)!=0?HIGH:LOW);
  111.      digitalWrite(0,(  4&minutes_e)!=0?HIGH:LOW);
  112.      digitalWrite(1,(  8&minutes_e)!=0?HIGH:LOW);
  113.  
  114.      digitalWrite(A0,(  1&minutes_t)!=0?HIGH:LOW);
  115.      digitalWrite(A1,(  2&minutes_t)!=0?HIGH:LOW);
  116.      digitalWrite(2,(  4&minutes_t)!=0?HIGH:LOW);
  117.      digitalWrite(3,(  8&minutes_t)!=0?HIGH:LOW);
  118.  
  119.      digitalWrite(11,(  1&hours_e)!=0?HIGH:LOW);
  120.      digitalWrite(5,(  2&hours_e)!=0?HIGH:LOW);
  121.      digitalWrite(4,(  4&hours_e)!=0?HIGH:LOW);
  122.      digitalWrite(6,(  8&hours_e)!=0?HIGH:LOW);
  123.  
  124.      digitalWrite(9,(  1&hours_t)!=0?HIGH:LOW);
  125.      digitalWrite(10,(  2&hours_t)!=0?HIGH:LOW);
  126.      digitalWrite(7,(  4&hours_t)!=0?HIGH:LOW);
  127.      digitalWrite(8,(  8&hours_t)!=0?HIGH:LOW);
  128. }
  129.  
  130. void StartUpRoutine()
  131. {
  132.      DateTime now = RTC.now();
  133.      for(int i=9; i>=0; i--)
  134.      {
  135.           digitalWrite(A2,(  1&i)!=0?HIGH:LOW);
  136.           digitalWrite(A3,(  2&i)!=0?HIGH:LOW);
  137.           digitalWrite(0,(  4&i)!=0?HIGH:LOW);
  138.           digitalWrite(1,(  8&i)!=0?HIGH:LOW);
  139.  
  140.           digitalWrite(A0,(  1&i)!=0?HIGH:LOW);
  141.           digitalWrite(A1,(  2&i)!=0?HIGH:LOW);
  142.           digitalWrite(2,(  4&i)!=0?HIGH:LOW);
  143.           digitalWrite(3,(  8&i)!=0?HIGH:LOW);
  144.  
  145.           digitalWrite(11,(  1&i)!=0?HIGH:LOW);
  146.           digitalWrite(5,(  2&i)!=0?HIGH:LOW);
  147.           digitalWrite(4,(  4&i)!=0?HIGH:LOW);
  148.           digitalWrite(6,(  8&i)!=0?HIGH:LOW);
  149.  
  150.           digitalWrite(9,(  1&i)!=0?HIGH:LOW);
  151.           digitalWrite(10,(  2&i)!=0?HIGH:LOW);
  152.           digitalWrite(7,(  4&i)!=0?HIGH:LOW);
  153.           digitalWrite(8,(  8&i)!=0?HIGH:LOW);
  154.           delay(100);
  155.      }
  156. }

Het resultaat:

De behuizing:

Deze nixieklok is ondergebracht in de behuizing van een oude klok:

Het uurwerk:

Behuizing gestript:

De gaten zijn gemaakt, en de constructie om de nixie's op de goede plaats te houden is ook klaar:

Ook de netentree is gemaakt en ingebouwd

De klok is zo goed als klaar! Alleen de cijferplaat nog even monteren:

Klaar!

 

Reacties:

Adam - 06-11-2011 13:50

Dag Jos. Kende je deze al? http://www.electricstuff.co.uk/nixmantel.jpg

Rene - 13-07-2009 20:47

Een ouderwetse klok in een nieuwerwets jasje. Grappig! Complimenten voor de maker van de printplaatjes ziet er gelikt uit!
    Jos van Dijken - 15-07-2009 22:48: Dankje.

Rudolf Verelst - 28-09-2008 18:38

In uw schema zie ik een aansluitpunt"JP8" waar wordt dit aangesloten?
    Jos van Dijken - 06-10-2008 23:39: JP8 word in dit schema niet gebruikt, maar daarmee is het mogelijk om de klok stil te zetten (soort pauze stand)


proceed-marketing proceed-marketing