Search

2012年1月21日 星期六

Arduino - Nixie Tube

前言:


    因為線不夠所以只有接上秒數的個位數,然後接法也很簡單(如下圖),首先把升壓模組(Nixie Power Supply)的正極接到電阻然後接地要跟Arduino共接,這顆電阻的選用要這樣計算:假設升壓模組調到200v的電壓然後Nixie Tube用IN-16這根,他的驅動電壓是140v電流建議2mA因此公式 (200v - 140v) / 2mA = 30k,所以選用30k左右而且2W~3W的電阻即可,然後這個電阻在接到TLP521的4號腳而TLP521的3號腳接到Nixie Tube的白色腳,在將TLP521的1號腳接到220ohm的電阻在接到Arduino digital pin 2以及將TLP521的2號腳接地,然後將SN74141(BCD碼IC)的5號腳接上Arduino的5v,而12號腳接地然後相對應的數字0~9(下圖沒把線畫出)接到Nixie Tube,最後將SN74141的3、4、6、7號腳分別接到Arduino digital pin 5、8、6、7,一樣四個腳都要串上一個220ohm的電阻。






實驗:



程式:

    程式很簡單當要顯示個位數就取除以十的餘數,而要顯示十位數就取除以十的商數,時、分、秒都是這樣,然後將得到的數字丟到SetPlate和0x8、0x4、0x2、0x1這四個位元都做AND運算輸出BCD碼結果,至於時間請參考Arduino - DS1307時鐘IC



#include <WProgram.h>
#include <Wire.h>
#include <DS1307.h>

int plate_pin[4] = {5,6,7,8};

void SetPlate(int value)
{
  digitalWrite(plate_pin[3],(value & 0x8));
  digitalWrite(plate_pin[2],(value & 0x4));
  digitalWrite(plate_pin[1],(value & 0x2));
  digitalWrite(plate_pin[0],(value & 0x1));
}

void setup()
{
  //Serial.begin(9600);
  RTC.stop();

  RTC.set(DS1307_SEC,1);
  RTC.set(DS1307_MIN,25);
  RTC.set(DS1307_HR,9);
  RTC.set(DS1307_DOW,4);
  RTC.set(DS1307_DATE,21);
  RTC.set(DS1307_MTH,1);
  RTC.set(DS1307_YR,12);

  RTC.start();

  pinMode(2,OUTPUT);
  digitalWrite(2,HIGH);
  for(int i = 5;i < 9;i++){
    pinMode(i,OUTPUT);
    digitalWrite(i,LOW);
  }
}

void loop() {
  /*
  Serial.print(RTC.get(DS1307_YR,true));
  Serial.print(" ");
  Serial.print(RTC.get(DS1307_MTH,false));
  Serial.print(" ");
  Serial.print(RTC.get(DS1307_DATE,false));
  Serial.print(" ");
  Serial.print(RTC.get(DS1307_HR,false));
  Serial.print(" ");
  Serial.print(RTC.get(DS1307_MIN,false));
  Serial.print(" ");
  */
  int sec = RTC.get(DS1307_SEC,true);
  /*
  Serial.print(sec);
  Serial.print(" ");
  Serial.print(RTC.get(DS1307_DOW,false));
  Serial.print(" "); Serial.println();
  */
  SetPlate(sec % 10);
  delay(500);
}


DEMO:



    至於要怎麼用一個SN74141輸出六個不同的數字給六個Nixie Tube呢?其實這很簡單首先一次只點亮一根管子,因為速度夠快所以會有視覺殘留的現象,會讓人誤以為六根管子是同時亮著的!這技巧就叫多工掃描,另外六根管子要用六個光耦合器(TLP521)然後Arduino一個時間點只導通一個光耦合器然後記得將上一個關閉,用光耦合器速度才夠快!

=============2013/04/09===============
根據keisuke大的實驗可以用這個方法檢查光耦的正常與否:光耦合怎樣測好壞/光電耦合IC檢測



9 則留言:

  1. 你好!!

    我想請問你那個管子裡面會發亮,那個是什麼東西@@?
    好吸引人的的裝置。

    在下google的時候,無意間在makershed.com發現一個產品:http://www.makershed.com/product_p/mkad16.htm

    就聯想到你的那個裝置,他這個是真空螢光顯示器(VFD),不知道跟你的是不是同樣一個東西,也搞不懂他如何控制,好想來玩看看卻又不知道去哪買XD

    回覆刪除
  2. http://zh.wikipedia.org/zh-tw/%E6%95%B8%E7%A2%BC%E7%AE%A1

    VFD我之前想玩但是找不到有人賣,控制原理就跟七段顯示器感覺一樣,只是每一段都是一個數字而已。

    回覆刪除
  3. 你好
    我是arduino 初學者,
    請問你畫電路圖的軟體適用哪一套

    回覆刪除
  4. 曝光電路圖?我都用Eagle。

    回覆刪除
  5. 你好,我又有問題了
    由NIXIE POWER SUPPLY可以直接點亮燈管(180V)
    但經過TLP521後,用電表量電壓只剩下32V
    TLP的接腳分別為
    1. 5v
    2. Gnd
    3. Vout(32v)
    4. Vin(180v)
    請幫我看看是不是TLP521接法是否有問題?!

    回覆刪除
  6. pin 1 = Digital Output
    pin 2 = GND
    pin 3 = Nixie的白色腳
    pin 4 = 高電壓

    回覆刪除
    回覆
    1. 這樣看起來應該是沒錯阿...Orz
      因為數字真空管無法WORK,所以把TLP521拔到麵包版做測試
      pin1 因為digital output=HIGH的時候是5V,所以我直接插5V的pin腳
      但180V輸入,輸出只有32V,無法把燈點亮,所以搞不懂阿

      刪除
    2. 目前已經OK了
      我後來用這個網頁的方式測試...
      http://s90304a123.pixnet.net/blog/post/38331197-%E5%85%89%E8%80%A6%E5%90%88%E6%80%8E%E6%A8%A3%E6%B8%AC%E5%A5%BD%E5%A3%9E
      結果那幾顆竟然是壞的...囧rz,10顆竟然只有6顆能用

      刪除