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:
Er zijn nog geen reacties op deze pagina.

beast-nylons beast-nylons