2018年10月27日 星期六

自幹世界線變動率探測儀(Nixie Tube Clock):後記

世界線變動率探測儀系列文終於接近尾聲了,能看到這邊想必大家也煩了,做一趟電路自己也學到很多,覺得非常值得;如果能讓看系列文的大家也學到東西,我想這前後加起來 8 篇快 14000 字的文章就有寫的價值。
是說自從我發了文之後,好像真的有不少人覺得世界線變動率探測儀是不是真的在探測什麼東西XDDD,其實它就只是個輝光管做的時鐘而已 (._.),真的很想知道它為什麼叫這個名字…就請去看 Steins;Gate

從8月左右開始動工,動工到現在連 Steins;Gate 0 都已經演完了,東西才做出來。

若說這次學到最大的教訓,就是:限流電阻很重要,限流電阻很重要,限流電阻很重要。說來漸愧,上路之前都沒好好看 spec 或是看人做的東西,有些地方一定要加限流電阻的都忘了加XDD。
例如 nixie tube 限流是 3 mA ,剛拿到高壓電路一時興起就給它直接打下去,當然 nixie tube 是沒壞啦(俄國管子真耐操www),但就高電流把管子內打出一堆電漿,還在疑惑怎麼拍起照來都是一團糊糊的,後來看看才發現要加 22K 限流電阻,小數點則是實驗後發現要 75 K 限流電阻。
然後 TLP521 也是,沒加 220 ohm 限流電阻 5V 直接灌下去,馬上就超過 arduino 的限流 40 mA,然後疑或為啥 arduino 電壓輸出到不了 5 V。
另外也不要偷懶,每個元件例如 LED, nixie tube ,限流電阻該加的每個元件都要加一個,共用電阻是絕對 NG,如同這裡說的:那是因為每個元件會有不同的特性,調小電阻的同時,就可能有元件吃到過大的電流導致燒毀,畫 layout 的時候一度把所有 nixie tube 的電阻用同一個,幸好有一天睡前躺在床上突然大徹大悟把它改掉了。

然後功率的部分也要認真對待,為了這個 project 久違的把我的工程計算機拿了出來,幾個元件電阻的功率都要算一下,不過 IN-14 相對來說,1.5 mA 的電流不算大,這上面所有的電阻都能用 0603 解決,比較危險的只有陽極驅動的 470k 電阻。
所有設計都在 github ,主要就是 code 跟電路板 gerber layout,高興的話拿去跟板廠說要洗板他就會幫你洗板子出來,買個元件插一插,就能做出自己的世界線變動率探測儀,或者其實我有多洗一些板子,要的話也可以跟我買(誤。
最終整體成本大概如下:電路板 4000 元,輝光管 2000 元,元件加一加約莫 800 元吧,當然跟外面賣的產品比還是便宜一半,花自己時間就是了。

其實這版 1.01 問題不少,包括先前提過的:
  • 腳太近:控制 180 V 的 MPSA42/92 選了 TO-92 的 footprint,它的腳位間距只有 0.25 mm,不及 180 V 建議需要的 0.4 mm,某種程度上可能會有危險。
  • 看錯輝光管的腳位,導致數字 1-9 全部反過來,該打屁股。
  • LED 關不掉又太亮了,這個可能是最輕微的啦,而且可以再買電阻修正。
  • Layout 不夠緻密,浪費面積
以上未來可能出一個 v1.02 來修正吧,但我說真的沒實際驗證過,出個 v1.02 做錯了害大家噴錢我又不能負責(yay,而且 easyEDA 改 layout 好麻煩,想到就不想做XDDD。

如果未來哪天我想不開,也許有可能會做個第二版,不過我是覺得不會這麼快啦,我目前給自己第二版的目標,包括至少要有:
  • 雙層板,下層控制上層放燈管,挑戰總面積最小,不然像這版寬度達到 10 幾公分,根本不能像動畫裡面那樣拿起來。
  • 使用 MC34063 以外,高頻一點的開關電路,做到更高頻、效率更好的升壓方式,例如網路上有人販售的高壓電路板,可以做到非常小,效率又高,用電池就能推得動一堆管子。
  • 嘗試使用 SMT 的晶片,元件能用平面的就用平面,縮小面積。
我猜至少要幾年以上吧,現下有第一版就非常滿意了,有機會的話想找人做個木盒跟壓克力盒把它裝在裡面www。

本作品的完成,有許多要感謝的人:
  • 強者我同學 小新大大 起了頭,讓我們有動力完成製作。
  • 強者我同學 強強林大大 在過程中給予幫助,出借工具、焊接空間。
  • 戀戀科技的 Marten 大大給予硬體電路板製作的指導。
  • 強者我學妹 昱廷大大 幫買淘寶高壓電路板。
  • JKL 代購幫助我買到 ebay nixie tube。
  • 在製作過程中大量參考 復古咖啡大大 的製作。
  • 工作狂人大大 的網站助我學到許多 PCB 相關的知識,有一次整個週末都在刷大大的網站。
還有瀏覽了許多網站,幫助我解除設計上疑惑,像是 Arduino 官網、論壇,都多少幫了點忙,在此不一一介紹。

回首開工的日子,果然能好好做好一件事,會需要時間,但回頭來看,也非常值得,我想就用一張藍光的 Steins;Gate 世界線來收個尾吧。

這張超明顯的顯示 LED 太亮的問題呀(yay

自幹世界線變動率探測儀(Nixie Tube Clock):寫 code

到了這邊木已成舟(無誤,電路板沒做好的話,程式寫再多都沒有用www,只能硬著頭皮去修或者認命掏銀子出來重洗了),再來就是不斷的寫 code 跟燒 code,在洗板的時候已經預留了燒錄程式碼的接點,只要把對應的針腳從作為燒錄器的 Arduino 板子接到電路板上就能燒錄了。
寫Code的時候要注意,如果一不小心把所有的燈管都打開,高壓電路有可能會推不動,淘寶上買的高壓電路板是推得動,我的不行,我猜跟電感的好壞有關;這版電路因為有用上 74HC238跟 74CD4514,原則上來說是不會發生這種事。

建議可以先從低壓的部分先測試,因為我們在 78M05 輸出到所有需要 5V 的電路上有斷路器,這樣就可以先斷路,用外接的 5V 驅動整個電路了。
測試 LED,把 LED 腳位輪流打開就行了:

靠北,超級炫砲……
LED 5050 RGB,我藍、紅是用 270 歐姆,綠色用 620 歐姆,結果他爸還是超級亮…我個人是覺得有點太亮,測程式的時候都快被閃瞎了,有點妨害看燈管,如果可以的話應該要再換大一點的電阻,把光度調小一點。
Github 裡面有附上 74HC238 跟 74CD4514 的測試程式,可以執行後一個一個量測兩個晶片的輸出,看看有沒有正常動作。

軟體中燈管要顯示的數字存在 Byte 裡面,0-9 對應 0-9,左點跟右點分別是 10 跟 11,照著 Byte 的位元寫給 74CD4514,12-15 則是會把 74CD4514 的 INH 降下來把燈管關掉。
void writeNum(byte num) {
  if (num >= 12) {
    digitalWrite(DISPLAY_E, HIGH);
  } else {
    byte mappedNum = mapNum(num);
    digitalWrite(DISPLAY_E, LOW);
    digitalWrite(DISPLAY_3, (mappedNum >> 3) & 0x1);
    digitalWrite(DISPLAY_2, (mappedNum >> 2) & 0x1);
    digitalWrite(DISPLAY_1, (mappedNum >> 1) & 0x1);
    digitalWrite(DISPLAY_0, (mappedNum >> 0) & 0x1);
  }
}
這裡要特別注意一下,如果要取出數字裡某個 bit 的時候,要用的運算符號是 & bitwise and ,不是 ^ bitwise xor 噢 ^.<
為什麼會有那個 mapNum ,其實是我 v1.01 的 layout …畫錯了,不確定是不是用的 footprint 的問題還是我自己蠢,總之陰極控制的接線是錯的,從 1-9 的接線完全反過來了,幸好這個 bug 可以用軟體修正回來,寫一個函式去轉數字就好了,這個也是 v1.02 修正。我覺得機率最高的原因,是我在看參考資料的圖的時候,沒有注意到它是 Bottom view,在設定 schematic to layout 的時候寫反了,最後 layout 也就錯了。
燈管的選擇 writeTube 和這裡一樣,0-7 各 bit 送給 74HC238 的三個腳位,就能開關某一支燈管,很簡單可以打包成一個函式來選擇燈管,首先我們就先寫一個掃描的程式,用 for loop確認每個燈管每隻腳位都有正常運作。
正常。
有了這兩個小函式,可以把燈管的值保存在全域變數陣列 display,然後用一個函式來更新它,只要這個函式在 loop() 中,燈管就會不斷顯示 display 的值;delay 只能是 delay(1) 或 delay(2) ,算是實驗得到的經驗值,不放 delay 的話切換速度太快,所有管子的數字會混在一起,delay(3) 的話則是看得出有點在閃。
void updateTube() {
  for (int tube = 0; tube < NTUBE; tube++) {
    writeTube(tube);
    writeNum(display[tube]);
    delay(2);
  }
}

使用 DS1307 記錄時間:

知道如何顯示數字之後,再來就是去接 RTC 時間,這裡我是使用別人包好的 DS1307RTC,照著範例把 library 引入之後,在 setup 呼叫 setSyncProvider(RTC.get);
即可和 DS1307 同步,之後就可以很方便的用 year(), month() 等函式拿到現在的時間值,非常方便。

DS1307 Interrupt:

DS1307 的 SQW 腳位能設定穩定輸出方波,搭配 arduino interrupt 就能每秒呼叫函式做點事情,我們已經把 DS1307 的 SQW 腳位接給 ATmega328p 的 digital pin 2,只要透過 Wire 向 ds1307 設定(請參考 ds1307 datasheet),其中 DS1307_ADDR 是 DS1307 的 I2C 位址 0x68,再對偏移 0x7 的位址寫入設定 0x10 即可,DS1307 可以設定輸出 1kHz, 4.096 kHz, 8.192 kHz 和 32.768 kHz 的方波:
Wire.begin();
Wire.beginTransmission(DS1307_ADDR);
Wire.write(0x07);
Wire.write(0x10);  // Set Square Wave to 1 Hz
Wire.endTransmission();
設定完 ds1307 就會輸出頻率 1Hz 的方波,我們可以把這個方波接給 ISR 來做計算開機秒數的工作:
void ISR_RTC() {
  toggle = !toggle;
  ++secCount;
}
attachInterrupt(digitalPinToInterrupt(RTC_SQW), ISR_RTC, RISING);
後來發現算秒數好像不能幹嘛XDDD

使用 DS1307 NV RAM 記錄資訊:

為了記錄世界線的資料,我們要用 DS1307 上面 56 bytes 的 NVRam 記錄資訊,不知道為什麼 DS1307 library 都不支援這功能,參考 arduino 論壇包了兩個函式來讀寫 NVRam,RAM_OFFSET 是 0x8,這樣就能把世界線的資料記錄在 NVRam 裡面了。
 void writeNVRam(byte offset, byte *buf, byte nBytes) {
  Wire.beginTransmission(DS1307_ADDR);
  Wire.write(RAM_OFFSET + offset);
  for (int i = 0; i < nBytes; i++) {
    Wire.write(buf[i]);
  }
  Wire.endTransmission();
}

void readNVRam(byte offset, byte *buf, byte nBytes) {
  Wire.beginTransmission(DS1307_ADDR);
  Wire.write(RAM_OFFSET + offset);
  Wire.endTransmission();
  Wire.requestFrom( (uint8_t)DS1307_ADDR, nBytes);
  for (byte i = 0; i < nBytes; i++) {
    buf[i] = Wire.read();
  }
}
剩下的好像就是把上面的 code 猛攪一陣,就可以做出各種不同功能了。
要讀取按鈕的動態,可以參考官方文件 Debounce
整個 loop 裡面的流程,大概就是保存一個 state 的變數:然後依序
檢查 button 1 有沒有按下,有的話做一點事 -> 檢查 button 2 有沒有按下,有的話做一點事;再來依不同的 state ,設定 LED 跟輝光管顯示值的 display 陣列,最後呼叫 updateLED() 跟 updateTube() 顯示資訊。
我是設計有五個模式:自動切換/時間HH.MM.SS/日期YYYYMMDD/世界線顯示/全關省電模式,詳情請參考 github repository,這樣把自己寫的爛 code 展現在大家眼前感覺真是羞恥。

整體 code 差不多就是這樣啦,硬體能動之後改軟體什麼的都不算太難了,想玩的話可以弄一些,像是發送第一封 D-Mail:

2018年10月25日 星期四

自幹世界線變動率探測儀(Nixie Tube Clock):焊接

靜候三天,板子終於送到了,我在等的週末去光華把 BOM 表印出來去光華搬了一批元件,最貴的還是 LED 跟 BJT,其他買一堆電阻不過小錢…。
空板照,我是選藍色的阻焊,如果照動畫設定應該是黃色的,不過不管啦我喜歡藍色。

正面照:
背面照:

板子回來發現意外的順利,所有插件的腳位都沒問題可以直接穿過。
另外也有一些錯誤,中間高壓陽極的控制電路,MPSA92 的 footprint,我不小心用成 TO-92 腳位,以致焊點間的距離只有 0.25 mm,應該要用 TO-226 的腳位會比較好;第一個是焊接的時候很容易不小心就糊在一起,第二是高壓離這麼近其實有點危險,我覺得某幾個地方是真的有點漏電,即便管子控制全關的時候,還是會看到管子有很微弱的發光,可能升到 v1.02 的時候改進吧。
在焊接的時候有一位神級大大幫忙,才知道原來不小心焊錫糊在一起,用助焊劑一抹就開了,太神啦,對助錫劑刮目相看。

銲接之前工具要準備好,除了必備的烙鐵之外,推薦要買一隻好的尖頭鑷子,尖到可以刺人穿刺傷害 +20% 的那種,因為我們用的零件如 0603 尺寸都非常小,要好好的焊它就需要一支尖頭鑷子才行。

因為是二手管的關係,我們要對付的就是那該死的針腳,不知道到底是從哪裡拆/怎麼拆的,可以拆成這樣每支腳的長度都不一樣?甚至還有一支腳短到不能用的,因為我們沒有管座可用(它那腳位的狀況大概也不能用管座),我這裡的解法是去買 1 * 40 圓孔排針長腳,可以一支一支用鉗子剪開來,再一支一支,這樣我們就可以隨意插拔輝光管。
不能用普通的排母,輝光管的針腳太細,在排母裡面無法固定,圓孔排針裡面的彈簧才固定得住;也有人會用杜邦端子,用夾的把針腳夾住也是可以,只是杜邦端子要解開也沒那麼容易,不符合我們快速插拔的本意。


總之就是先把輝光管像上圖一樣插滿排針,接著將圓孔 IC 座一一插進 PCB 孔中,很不巧圓孔 IC 座的尺寸,跟我畫的 PAD 大小 0.914mm 超接近,然後這批管腳又塗了某種膠,讓它不像一般的元件一樣好折,在那邊用尖嘴鉗喬啊喬的,光插管子就插了快 1 hr 左右吧,說實在 Nixie Clock 愈做愈覺得這東西真是淘汰的好呀,要高壓驅動、浪費電、體積大、腳位又多又呈圓形很難安裝,真的還是懷古就好。
好不容易插好之後,一樣將 IC 針腳焊到電路板上,本來是不想焊的,不過發現不焊多少有點接觸不良。

其他部分大概都沒什麼,焊接只有一個要點就是:焊錫會黏在熱的東西上面,我的操作一般的拿烙鐵、焊點、焊錫三點相對位置呈三角,烙鐵頂住焊點加熱,焊錫輕碰烙鐵融化後就會自然流到焊點上了,如果是 SMD 元件的話簡化的步驟大概如下:
  • 在要放元件的一端先上一點焊錫。
  • 用鑷子夾起元件一端插入剛才上好的焊錫內(重新加熱焊錫讓它包住元件),拿開烙鐵,焊錫冷卻之後元件就被固定住;切記一定要先拿開烙鐵再放開鑷子,如果先放開鑷子,元件就會因為焊錫的表面張力而立起來或歪掉
  • 接著焊元件另外一端,因為元件已被固定這裡簡單焊就好了。
如果有助焊劑的話,上點助焊劑可以焊的比較漂亮一點,但也比較花時間。
還有一個常見的…直覺?一般而言通常是由烙鐵融化焊錫,讓焊錫自然流到焊點上,不過有時候,因為角度之類的關係,焊錫就是不會流過去,只會一直留在烙鐵上面;這時候的直覺反應就是不斷的給焊錫,但其實愈給只是停愈多在烙鐵上面,它不上到焊點只是角度不對而不是焊錫不夠多,這時候把烙鐵抹乾淨換角度重來會比較好。

這樣全焊完大概兩個工作天,趁著國慶假日借強者我同學強強林的實驗室把元件都焊完,全部粗估大概有 600 個焊點吧 (yay),幸好回家上電之後:
拿鱷魚夾夾二極體的輸出點,高壓電路正常動作:


用外接 5V 測試,LED 電路正常動作,也可以用 TX/RX 介面燒 code 進去跑:


測試過後,高壓電路、5V 電路、控制電路、LED 電路、RTC 電路都有正常運作,兩天的辛苦都值得了。

自幹世界線變動率探測儀(Nixie Tube Clock):電路板實作

下面就真的要開始用 easyEDA 畫 Layout 了。
EasyEDA 能做簡單的模擬,不過基本上功能非常的弱,只能模擬一些節點的電壓,大部分的元件也沒有模型可供模擬,所以請放棄在 easyEDA 模擬的念頭。

第一步:畫 schematic,調整 footprint

是在 easyEDA 上面畫 schematic ,如前幾篇文章出現的高壓電路的 schematic;在畫 schematic 的時候,就可以想想 Layout 大概要用什麼元件,簡單的元件如電阻、電容、電感、二極體等等會出現在左邊的選單裡,並且可以選擇所要的型號,像電阻就有 0201, 0402等平面元件跟插件 Axial 0.3-1.2 等 16 種可選。
比較複雜的元件可以從上面的選單 Place -> Component,打入關鍵字,插入找到的元件,通常同一個元件都能搜尋到 SMD 跟 DIP 兩種版本,記得要插入正確的;插入元件之後要取一個好的名字,方便在 Layout 跟焊接的時候,能夠快速知道是哪一個元件。

編輯中也能在上面的選單找到 Footprint Manager,裡面可以編輯每一個元件對應的 footprint,還有元件符號跟 footprint 腳位的對應,來跟真實元件對應;例如不知道為什麼,我買到一批 5050 RGB LED,腳位跟預設的腳位就是不一樣,因此用 footprint manager 調整過;另外像是0603的電阻因為預設的 footprint 有一個 silk 框,我想畫得密集一點就換了個沒有 silk 的 footprint。

建議上每畫一個區塊的 schematic ,就定時按一下 Update to PCB,讓 easyEDA 把 schematic 上的元件放到 PCB 上,然後安排一下 layout footprint 的位置;因為如果等畫完再一次轉換,會造成所有的 footprint 都擠在一起,讓你分不出誰是誰,一次轉一些安排位置,或至少分個群,之後在 layout 會方便很多。

第二步:擺放 footprint 

在 Layout Editor 上面畫 PCB,進到 Layout Editor 之後,首先先設定 Design Rule 跟網格等資料。
網格可以用 mm 或是 mil 當單位(用 inch 當單位是有一點太大了),easyEDA 預設是用 mil 當單位,如果要用 mm 當單位的話記得一定要把 grid size / snap size 從 0.254 mm 換成比較好看的數字,如 0.1mm
Design Rule 請參考廠商給的資料,例如下面是我選用的 JetPCB 的製程資料;easyEDA 畢竟是免費軟體,提供的規則檢查只有線寬、線距、鑽孔大小、線長;不像 kicad 除了這些,還能做更多的像是各層獨立規則。
只截取 DRC 部分的規範:
  • 線寬 0.25 mm
  • 線距 0.25 mm
  • Via 直徑 0.5mm
  • Via 鑽孔直徑 0.3mm
畫好 schematic 之後,Layout Editor 上面應該已經有所有元件的 footprint,先做好放好位置、調整方位等,如果看到有 footprint 不是自己想要的,也可以隨時回 schematic 修改然後再 update。
個人經驗是,因為 easyEDA 功能不全的關係,一但畫了走線之後如果又修改 footprint 的腳位對應,要再改走線就非常費工,所以畫走線之前,一定要確認好 footprint 腳位跟 schematic 都已經是正確的。

第三步:畫 Layout 走線

放好位置之後就能開始畫走線,雖然 easyEDA 有提供 auto router,但我個人不建議使用,它只會儘量畫最短路徑畫,反而沒什麼規則,例如我的輝光管部分,因為輝光管的陰極同數字是全部接在一起的,它就真的給我照最短路徑畫得亂七八糟。
不過 auto router 也可以當一個指標,如果你的 layout 開了 auto router 跑不到 90% 以上,表示你的 layout 還不夠簡單,可以看看 auto router 都是哪裡繞不出來一直在重試;簡而言之:easyEDA 的 AutoRouter 只會繞出一堆垃圾,請還是乖乖用手畫。

在 easyEDA 裡面用 track 畫走線,照著 ratlines 用走線連起來就行了,在輝光管部分的畫線要點在於分開上下板,我是下板走垂直線、上板走水平線,這樣子上下板的線就不會打架,如下圖所示:

另外有一些其他 layout 的注意事項:
  • 為了燒錄,要把 5V, GND, TX, RX, Reset 拉出來
  • 用個 jumper 隔離外接 5V 跟 78M05 的輸出,這樣可以單獨測試所有控制電路的功能。
  • 這個是我做的時候沒想到的,在通往 LED 的 5V 電源線上加上 jumper ,這樣覺得 LED 太亮的時候,可以用硬體的方式關掉 LED。
  • 電阻、電容、LED 可以的話儘量選 0603 省空間,我覺得 0603 是覺得可以輕鬆焊的極限,0402 或更小就很抖了。
  • 在 MC34063 那邊的限流電阻,因為在最大電流下,功率可能會升到 100 多 mW,所以我是用 1206 的電阻;我也是現在才知道原來電阻的尺寸是跟它能承受的功率有關。
  • 高壓電路的地方,依這個論壇所言,讓電感與二極體還有MOS位置最短。
  • 所有的晶片,在 VCC 的接點前都保留一個 0603 約 100n 的電容做為穩壓。
  • 依照晶體振盪器 datasheet 的建議,在振盪器周圍一個範圍要鋪地,避免信號線出現,以免影響時脈的準度。
JetPCB 也有提供一些參考規範,我大致整理一下這次畫 Layout 的規則:
  • 電源線寬為︰1 mm - 1.2 mm,如果有更大電流的應用,請參考線寬計算機
  • 信號線寬建議為︰0.2-0.3 mm,我是用 0.4 mm;其實 PCB 承受電流的能力很大,1oz 的銅、0.25 mm 差不多就能走 1A 了,所以畫細一點是沒差的。
  • Via 有兩種,外徑/內徑為 1mm/0.5mm 跟 1.6mm/1mm ,分別用在訊號線跟電源線的 via。
  • 鋪銅間距:因為我們的電路板會走高壓電,在網路上找到一款間距計算機,我們最高的電壓應該是200 伏特,算出來的安全間距是0.4 mm ,因此我是用 0.6 mm 作為鋪銅間距。

第四步:鋪銅與 DRC, LVS 與他

Layout Editor 左邊的 Design Manager 打開,裡面有三個選項:Components,Nets 跟 DRC Errors
Component 方便你找元件用,比較沒這麼重要;Nets 跟 DRC Errors 分別是 LVS 跟 DRC;完成走線的時候, Nets 裡面應該只有 GND 是錯誤的,因為我們還沒有鋪銅,把整個地連起來。
鋪銅選擇工具的 Copper Area,把要鋪銅的部分框起來,easyEDA 就會自動完成鋪鋼,正反兩面都需要鋪銅,鋪完之後再從工具列選 Copper Area Manager 去調整鋪銅間距。
鋪完銅的時候,LVS 就要可以通過了;DRC 的話在鋪銅前跟鋪銅後都要跑過一次,第一次是要修掉走線的錯誤,第二次的是要確認整個 layout 沒有問題,畫完大概會像這樣:

上板走線:

下板走線:

上下板走線:

基本上我是畫的超寬鬆的,寬度因為受限於輝光管比較難縮,高度其實可以再縮一點,元件排更密一點,我覺得縮 1-2 cm 不是問題,不過第一次畫 layout 自然是小心為上。
個人經驗是不要讓焊點間的距離小於 0.7 mm 左右,再小第一個焊的時候容易短路,烙鐵也可能不小心戳到不該戳的地方。

第五步:收尾下單

做完這些,就可以匯出 layout 成 Gerber 檔下單製造了,最後還有一些,像是留下未來打銅柱的鑽孔,留一些文字等等。
在真正下單之前一定要再次檢查,把 Top Layer 跟 Bottom Layer 匯出成 pdf,用印表機 1:1 分別印出,對照有沒有哪裡有問題,手邊買好的元件是否能正確的對到印出來的穿孔,畢竟板子做了就是做了,做壞要用暴力修的難度也很高,多檢查幾次不吃虧,我就有對照的時候發現 schematic 的地方有畫錯,差點整塊板子變廢物,Board is dead, mismatch
洗板選用戀戀科技 Marten 大大推薦的 JetPCB,好到連日本人都來用?(雖然說他們的問答版上,有一個回答就是不服務台灣以外的顧客owo),不過他們的網站需要先註冊為會員才能下線。

easyEDA 下載好的 gerber 檔,裡面的 PasteMask 可以直接刪掉沒關係,其他的打包送給 JetPCB,工程人員會再次幫你檢查電路板,看看有沒有太大的問題,我是選三天到貨的方案, 電路板尺寸 264 mm X 104 mm,總價是 4200 NTD。
可…可惡,早知道當年在學校的時候就該來做 nixie clock,在學校就能用學校的洗板機免費自己洗驗證板了,現在都要花大錢去外面洗板子,畫錯錢就直接噴飛QQQQ。

總之電路板最後終於成功下線,之後就是靜待三天,等電路板寄到就可以開始焊電路啦。

2018年10月23日 星期二

自幹世界線變動率探測儀(Nixie Tube Clock):電路板基礎

介紹了這麼多,我們終於要進到電路板了,之前介紹的許多東西在這邊一口氣要全部發揮出來,我是沒有很確定輝光管用洞洞板會不會有問題,不過要整合起來還是洗電路板比較潮。

電路板 - 也就是 Layout - 這種東西一定要用軟體幫忙輔助,例如小畫家,專業人士跟企業可能會用 altium ,我們沒錢的當然也有沒錢的玩法:例如開源軟體 kicad、網路的電路板軟體 easyEDA(需要註冊,可用 Google 帳號)、Eagle(需要註冊),其他兩個都要註冊,真正開源自由使用的其實是 kicad。

在這裡我是選用 easyEDA 來進行 layout,原因很簡單,因為 easyEDA 允許大家自由分享他們畫的元件跟 layout,我用的輝光管 IN-14 已經有人畫好插孔的 layout,我可以直接引入使用,不像 Kicad 還要自己下載其他人分享的描述檔匯入,方便性上比 Kicad 高一些。
當然 easyEDA 也是有壞處的,相比 Kicad 它的功能少了不少,像是 DRC,能檢查的只有基本的線寬、線距、鑽孔大小,用 electron 實作的網頁介面,進行一些大量操作的時候速度會明顯慢下來(例如大量元件 lock/unlock 會很明顯的頓一下),我個人的體驗是 Firefox 跑得明顯比 chrome 還要快跟穩www。

Layout 就請參考這個連結,裡面有完整介紹 pcb layout 的詳細步驟。
Layout 有兩種可能的設計:放在一塊板子或是把控制板跟插管板分成兩塊,我最後是選擇縮在一塊板子裡面,這樣只要洗一塊比較便宜(yay),不過相對來說也畫得沒那麼漂亮,從上面看除了輝光管之外還有一堆電子零件會比較醜,其實我不確定能不能兩塊畫在同一塊然後請板廠幫我切開,如果板廠是算面積計價,這樣對他們來說應該也沒差太多才對。

下面簡單介紹一下 easyEDA 在 Layout Editor 層的設定,還有跟 Layout 共同的概念,下一章再來提真正的實作,其實這篇我一直在考慮怎麼分成兩篇,畢竟內容太相關了,但合在一章內容好像又太多了:
  • Top/Bottom Layer
走線的部分,分別是正面金屬跟背面金屬,用這兩層畫連線。
隨著大家對小型化的要求,像我這樣單層、雙層的 layout 已經無法再微縮,市面的產品就有更多層…我查到最多六層的板子,easyEDA 也有支援 4 個 inner layer,不過我們只要雙層板就很夠啦。
  • Top/Bottom Silk Layer
正面文字/背面文字,用來寫字、元件名稱等,通常都是把元件集中在正面,背面文字是不需要用的。
  • Top/Bottom Paste Mask Layer
  • Top/Bottom Solder Mask Layer
Paste Mask 跟 Solder Mask 分別是焊膏防護層跟阻焊層
看到 Mask 這個關鍵字城鎮中心的鈴鐺就要噹噹一下,這表示這兩個東西畫的是負片,跟上面幾個正片相反,正片是哪裡畫東西,哪裡有東西;負片是哪裡有畫東西,就表示哪裡沒東西。
阻焊層應該比較好理解,哪裡有畫東西,哪裡就不會上阻焊層。
焊膏防護層它的目的是要在機器生產的時候貼 SMD 用的,因為我們是手焊所以可以不要管它,這層是在上錫膏的時候,依照這層的負片做成鋼板,把鋼板放在電路板上面之後塗錫膏再移除鋼板,所以造成錫膏層是正片的結果,詳細可以參考這部影片

  • RatLines:

這個是畫完 schematic 的時候 easyEDA 自動幫你產生的,標示哪個節點要走去哪個節點,理論上再畫完所有走線之後,應該只有 GND 的 Ratlines 會顯示出來;上完鋪銅之後則是完全不會有 RatLines。

  • BoardOutline

標示整個電路板的製造邊界。

  • MultiLayer

在 easyEDA 裡面,有三種不同的孔:Pad, Via 跟 Hole,這幾個有機會用到 MultiLayer。
相關內容可以參考工作狂人(這個網站幾乎找 PCB 資料一定會找到,超專業的硬體生達達人),我猜這純粹是用詞不統一的關係,總之他們的關係是這樣的:
Hole:正式名稱是(NPTH,Non Plating Through Hole,非電鍍通孔):單純的用鑽針在電路板上鑽一個洞,不做任何事,洞裡只有玻璃纖維,上下層亦不導通,事實上 easyEDA 最後鋪銅的時候,會自動繞過 Hole 以免短路,它的用途也就只有鎖銅柱固定電路板。
Pad:可選擇 Top/Bottom/Multi layer,如果選 Top, Bottom 的話就是一塊裸露沒上 solder mask 的金屬,easyEDA 會在 Solder Mask Layer 加上 Pad 的部分,讓這塊最後不上阻焊層;如果是 Multi layer 的話,則是正式名稱的 PTH(Plating Through Hole,電鍍通孔),鑽孔之後會在內部鍍鋼導通上下層,所有 DIP 元件的腳位都是走 Multi Layer 的 Pad,因此焊接只要焊背面,畫走線的時候無論 Top/Bottom 都能導通。
Via:Via 只有 Multi layer 的選項,和 Multilayer Pad 的差別,在於 Via 不會有 solder mask 的對應,也就是說它最後會被 solder mask 的綠漆蓋住,如果是高價位一點板子還會用把 Via 塞起來以免焊錫流進去,因此不能在 Via 焊東西,它只是用來導通電流的。
如果是多層板,還會有如埋孔跟盲孔等東西,不過這已經超出本文的範圍了。

我們上面提了這麼多,其實 easyEDA 在帶入元件的 footprint 的時候,他就幫我們畫好元件接腳 MultiLayer 的 Pad,只要用上下層金屬把各接點連起來就好,所以真正要編輯的層,其實也就只有 Top/Bottom Layer 連線,打一些 Via 來連接走線,加上 Top/Bottom Silk Layer 的註解;其他包含阻焊層、PTH、NPTH 鑽孔資訊,easyEDA 都會在匯出 Gerber 的時候幫我們處理好,除非有特別設計不然在 easyEDA 上阻焊層是留空就好。

整個電路板實作的流程大概是這樣:

  1. 依照元件,畫 schematic。
  2. 將 schematic 轉成 layout ,代入元件 footprint。
  3. 擺位置,各元件放到容易繞線不打架的位子上。
  4. 畫走線,鋪銅,上元件之外其他說明文字
  5. 列印 layout 檢查,匯出 gerber 檔下線製作

下篇文章就來走一次這個流程吧。

2018年10月22日 星期一

自幹世界線變動率探測儀(Nixie Tube Clock):控制電路

現在我們進到本作品除了輝光管之外最貴的部分了,輝光管貴是因為它老舊了,用一支少一支,控制電路的部分就是在買它智慧財的價格了。
買電子零件的時候,平常用量最大的電阻電容那種,都是稱斤論兩一條 10 個 5 元在賣的,更貴一點的是二極體跟 LED,大約 5-10 元左右,最貴的就是晶片了,愈複雜的愈貴,一般邏輯晶片 74HC238: 20,74CD4514: 40,DS1307 跟 ATmega328p 就衝到 120 跟 150 了。

電源:

首先要先處理電源的部分,我所用的晶片基本上都是用 5V 驅動。
產生 5V 的方法也很簡單,用一顆 78M05 的穩壓 IC ,輸入 12V 輸出 5V,外接接地的 10K 電阻和穩壓 104 陶瓷電容;真的進到晶片的地方設一個 jumper ,這樣我們可以在測試的時候先用外部的 5V 來供電;每個晶片的 Vcc 之前,也都加上一顆 100n 的 0603 電容作為穩壓。

控制:

自從 2014 年 arduino 橫空出世,開始攻佔台灣之後,幾乎成了微控制器的第一首選,低階到高階全包;我們手頭邊沒有熱風槍、錫膏等工具的話,要焊接 SMT 封裝的元件難度太高,最適合的控制器自然是 ATmega328P 了,arduino 的標準晶片,DIP 封裝容易安裝,軟體工具鏈也很完備。
請參考下面這個網址,讓 ATmega328p 可以吃內部的 8MHz 晶體振盪器(裡面的 8MHz bootloader 下載點只有到 1.6,雖然現在都 1.8 了但燒 1.6 的還是會動)。畫個晶體振盪器的位子也不會太複雜,如果喜歡外接振盪器的,就自己在 layout 上留個晶體振盪器的位子,不過 16 MHz 運作下也會比較耗電就是。
在 layout 上,記得要把 pin 1-3, 5V, GND 拉出來,未來只要用排線接上去就可以從外部,利用拔掉晶片的 arduino 進行燒錄,或者可以(不確定)保持在燒錄 bootloader 時的接線,在 upload sketch 的時候用 upload using programmer 來燒錄。

RTC:

RTC 的功用是在 Arduino關機的時候,能用電池供電計算時間,這個時鐘應用下 RTC 是必須的,不然一關機時間就重設了;精密設計下,RTC 晶片維持時間所需要的電力非常少,如我選的(也是最常見的) DS1307 為例,只需要 500 nA 的電流就能維持時間,正常使用,隨便一顆鋰電池都能撐到 10 年以上,買兩顆就能撐到 2036 年了
RTC 也可以直接買 DS1307 的 arduino 模組,不過他會吃掉全部的 analog 腳位,不然就參考下面這個網頁,在 layout 上面加上 DS1307 所需的元件;和這裡不同的是,我 DS1307 SQW 腳位有拉出來接給 ATmega328p 的 pin4 作為未來 interrupt 控制使用。
如果要求精準的話,可以用高精度的 DS3231 ,跟 DS1307 吃外部 32.768 kHz 晶體振盪器不同,DS3231 把整個晶體振盪器放到晶片裡,以達到高精確度。相對的 DS1307 如果晶體振盪器 layout 跟焊接不夠好,就會影響到精確度。
我這裡是用 DS1307,因為 DS3231 一顆要 16 支腳,比 DS1307 多了八支 NC 腳位不知道是幹嘛用的,何況我這個只是一般的時鐘,不是要做 GPS。

腳位:

一切問題在於腳位,像是復古咖啡那樣用 LPC1343 這種含著金湯匙出生的晶片,光 GPIO 就有42 隻當然隨便拉,ATmega328p 上了 arduino 只有 14 個數位 pin ,加上 analog 也只有 20 隻,自然不能亂來,這也是為什麼我們會需要 74HC238 跟 74CD4514,用來減少控制輝光管需要的 pin 腳,不然陽極 8 隻陰極 12 隻就超過 ATmega328p 的數量了,如果方便的話,也可以直接上一顆 PLD 代替這兩顆很難買的邏輯晶片。

以下是設計的腳位表,搭配下面 schematic 的截圖跟網路上找來的 ATmega328p 腳位圖給大家參考:
一般必要:
Pin 7, 20:VCC, AVCC。
Pin 8, 22:GND。
Pin 2, 3:TX, RX 保留給燒晶片使用。

開關,這裡請接一個 5K-10K 的電阻到 5V,並接開關到 GND,按下開關就能把腳位的電壓拉下來。
Pin 1 Reset:Reset Button。
Pin 23, 24:Analog Pin 接拿來作為設定用的開關。
Reset,5V,GND,TX,RX 五支腳要拉去一個排母,之後就能插線燒錄了。

RTC:
Pin 4:SQW for interrupt control,注意 interrupt 只能裝在 Pin4, 5 兩個 INT 腳位。
Pin 27, 28:I2C SCL, SDA

LED:
Pin 5, 6, 11:管子背光 LED G, R, B,接 2N2222 的 Base。
Pin 25:用來顯示 ATmega328p 狀態用的 LED,例如收到信號的時候閃一下之類的,無論如何至少都接一顆,不然 ATmega328p 在幹嘛你都無法知道,別忘了限流的 270 歐姆電阻。

輝光管:
Pin 12 - 14:陽極控制搭配 74HC238 需要 3 隻腳。
Pin 15 - 18:搭配 74CD4514 ,陰極控制需要 4 隻腳位。
Pin 19:多留一隻腳位給 Enable (CD4514 的 INH),才能把管子給關掉,做到更多樣的控制。

除了 Pin 26 Analog 腳位沒用之後,可以用的腳位都用上啦(yay,當然我把晶體振盪器去掉,等於多加了 Pin 9, Pin 10,我是沒用就是,也沒預留晶體振盪器的位子,所以就是浪費掉了,要的人可以多接幾個 LED 來幫助 debug 之類的。

2018年10月21日 星期日

自幹世界線變動率探測儀(Nixie Tube Clock):驅動電路

有了高壓電源之後下一步是驅動電路,如何控制 180 伏特的高壓電源開關?

查資料的時候發現有些人是用 TLP521 光耦合器,不過我看 spec 之後是不建議用這顆,第一是它很貴,光華商場一顆單價 15 元,甚至有 30 元的;第二是它 VCEO 只有 55 V,實測的時候 TLP521 關掉還是會吃到 130 V,遠超過 VCEO,實際上是沒有怎麼樣,但不知道用久了會不會有問題,到如壽命減短,或是漏電愈來愈大最後關不住之類,搞不好也是沒有問題只是多漏一點電。
我個人是保險一點,同樣參考復古咖啡,用 MPSA42 跟 MPSA92 兩顆對稱的高壓 BJT 來控制,這兩顆單價只要 3 元,便宜得多,耐壓高達 300 V 絕對夠。

設計的部分我基本上和復古咖啡是一樣的,下圖分別是控制接地的 NPN 跟控制高壓的 PNP:
陰極驅動的 MPSA42 比較簡單控制接基極,就可以控制集極的電流。

MPSA92 要搭配另一個 MPSA42,MPSA42 是關的時候,MPSA92 基極會由 1M 的電阻拉到 180 V 而關閉,打開 MPSA42 就會讓 MPSA 打開,把集極拉到高壓。

驅動電阻的部分,在陰極驅動的地方,要驅動的電流是 1.5 mA,MPSA42 的 β 值大約是 50-100,保守一點算 50 基極電流只需要 0.03 mA 就夠了,加上我用的控制器 ATmega328p 的驅動電壓又是 5V 而不是 3.3V,扣掉 Vbe = 0.9V,用 100K 的電阻就足夠打開 MPSA42 了,我在設計上是用 51K 的電阻;陽極驅動電路也是,只要驅動 0.38 mA 的電流的話,電阻用到 500K 都沒有問題,我為了採購方便還是買 51K 的電阻就是。

高壓的部分有些人也許買得到蘇聯制的K155ID1 之類的高壓 BCD to decimal 驅動 IC 之類的也是可以,但我是覺得沒什麼必要,一方面它也只是個 BCD-to-Decimal 的晶片,要控制小數點還是要靠高壓 BJT,而且要買個 K155ID1 也不容易,不像高壓 BJT 電子零件行隨便買,這也是難得 IC 反過來被離散元件取代的地方呢。

IN14 操作的電流是 1.5 mA 左右,限流電阻大約是 22k;左、右小數點的限流電阻則是 75k 左右,所以我是在陽極上一顆共用的 22k 電阻,左、右小數點的陰極加上一顆 51k 的電阻,schematic 畫起來像這樣:

74HC238 跟 74CD4514 (如果有 74HC4514 當然是最好啦)是網路上搜尋找到的邏輯閘,分別是 3-8 demultiplexer 跟 4-16 demultiplexer,要注意他們跟 HC138,HC4515 很像,但其實完全不一樣,一個是選到的輸出 high 一個是 low,小心不要買錯了。

另外還有一部份是操控 LED 的驅動電路,現下流行在管子下面放 LED 打光,看起來就會很潮,潮到發光(X。
LED的部分我是選用 5050 RBG SMD LED,也可以用 3528 尺寸會比較小,參考 5050 的電路圖,RGB 分別要接 270, 680, 270 歐姆的限流電阻,測試的電流我記得是 10 mA 左右,不必到規格要求的 20 mA,就已經可以發出滿亮的光了(而且綠色的特亮,為了讓它暗一點才把電阻調大了),真的要 20 mA 的話電阻可能會小到 180 歐姆左右,我在想那個光度應該足以閃瞎人的眼睛,甚至現在這個亮度我都覺得太亮,可以再選大一點的電阻。

另外還有一個問題是控制的驅動能力,因為我們選用的控制 IC ATmega328p,數位 Pin 腳的電流最大只有 40 mA ,總和最大是 200 mA,一支腳位不太可能驅動得了 8 個 LED,我們也不可能生得出 8 支 Pin 腳來控制 LED。
在這裡我們選用簡單的 NPN 2N2222 控制大電流,參照 datasheet,在我們的條件下,2N2222 的電流增益可以到 100-200,基極只需要大概 1-2 mA 就夠了,用 2.2k 的限流電阻應該非常安全,用到 5 K 左右也還是 OK 的,用 2.2k 單純因為控制電路那邊有 2.2k 的可以用,一起買比較方便。

2018年10月20日 星期六

自幹世界線變動率探測儀(Nixie Tube Clock):自組高壓電路

一般自組輝光管時鐘都要配高壓電源,當然從 110V 變壓到 180V 再經過整流、穩壓也是一招,但這樣很難調整電壓,自己繞變壓器其實也比直流升壓麻煩,體積跟重量也都大得多。
我們之前買的高壓電板板,要直接用也是 OK,只要在最後 layout 的時候,依照板子的規格在上面鑽洞來接銅柱,接線的地方預留接腳即可。
我的設計是自己接 MC34063 的直流升壓電路(因為好玩),MC34063 算是非常…古老的晶片,它年紀可能足夠當我老爸,網路上一搜可以搜到許多不同人的實作,不過通常蠻簡略的,也會用到一些比較不常見的元件。
這裡是參考強者我同學小新大大所找到的復古咖啡(一)的內容,自己接一個 MC34063 的高壓電路。

這是電路圖:

Boost Converter 的原理請大家自己上 Wiki 說明頁(當初好像是在電機機械實驗遇到這玩意兒),簡單來說我們在電路上加上一個開關,開關接通的時候會對電感充電,關閉的時候則由電感放電到負載,利用電感釋放能量把電壓飆上去,利用二極體把高壓鎖在負載,輸出放一個電容在開關打開的時候維持電壓。
這個開關必須的高速開關,與 boost converter 搭配的,就是 555 或是我們所用的 MC34063 晶片,其實 MC34063 的設計非常簡單:

它做的事情也很簡單,MC 34063 內部會產生 1.25 V 的電源,不斷和 5 腳位的輸入比較,如果輸入低於 1.25 V,就會將內部震盪訊號送出去,使開關不斷開關(這什麼饒口的說法)。
震盪訊號的頻率是由 3 腳位接的電容決定,可以從幾 10 KHz 可以到最高 100 KHz 左右,我接 2.2n 的電容,頻率大約是 20 kHz。
MC 34063 有一個安全機制,因為對電感充電的時候,當電感充電完成時電流會急遽增大(電感變導線了,等於電源直接接地),MC34063 (推測)會用 7 腳位去偵測電壓,如果電壓相比 6 腳位的 VCC 掉太多的時候,表示電感已經飽和,MC34063 就會提早結束充電;這個偵測電壓是 330 mV,使用 330 mV 除以限流就能得到限流電阻值,規格書上的建議最小電阻是 0.2 歐姆(意即限流是 1.65 A),因為市面上買不到小於 1 的電阻,我在這裡就用並聯五個 1 歐姆做到 0.2 歐姆,如果希望限流小一點,可以不要並聯這麼多個電阻。

與 MC34063 搭配的是 MOS 外部開關,讓 MC34063 壓力不會這麼大,這邊就是照復古咖啡的建議選元件,MOS 開關選 IRF840,往高壓的二極體用 FR104;開關 MOS 的二極體要選速度快的,例如 1N914;輸出電容用 250V, 10u 的電解電容。
復古咖啡有提到,增加一路 PNP 2N2907 放電路徑的重要性,我在電路板上驗證的時候有測試過,在輸出 170 V, 1.7 mA 在狀況下,有放電路徑的電路只需要 12V, 62 mA 的輸入,沒放電路徑的電路卻需要 100 mA。

這裡使用的電感千萬不能用色碼電感(電阻式電感),我曾經試過結果它就冒煙了XDD,一定要選銅線繞的電感,在光華也只有一家地下室的源達有在賣,或者也有人用軸向的電感(?),我最後是選銅線繞的電感,感覺比較保險(光華商場買不到參考設計的大顆軸向電感,工字電感有點小顆怕怕的)。
感值的部分應該用 68 - 100 uH 的電感,就可以推動兩到三支管子(沒實際測試過,至少 68 uH 是 OK 的),和直覺相反的,如果這裡要推更大的電流,其實電感要用更小,利用小電感快速放電的特性跟高頻率的振盪把電流逼上去,但因為 MC34063 100 kHz 的振盪頻率不算太快,用太小顆的電感沒事就會飽和,因此 MC34063 的升壓跟輸出電流都有一定限度。

回授電路的部分就是用 511K 和 3.3K 電阻分壓,加上 2k 的可變電阻,這樣分壓的可調範圍是 511K/3.3K -> 511K/5.3K,也就是 193V - 120V,這裡對電阻值比較敏感,因此選用誤差值 1% 的五環精密電阻。

最後在電路板上的完成照,其實我 lay 得滿稀鬆的,外購的高壓板同樣的 48 x 41 mm^2 裡,在麵包板上測試的版本則是忘了照了XDD:

除了 MC34063 之外,下面這個連結也有人有其他效率更高的設計,不過因為他沒有提到更詳細的設計內容,只能當個參考;當然裡面提到的一些 Layout 技巧還是用得上。
我在插麵包板測試的時候,我的電路效率不知道為什麼一直上不去,大約卡在 40 %,外購的高壓板效率可以到 68% 左右;雖然有點懷疑是不是電感品質的問題,或者是 layout 的問題,只要到 PCB 上就解決了?但我在 PCB 上沒有預留量電流的地方,也因此無從驗證了。

2018年10月19日 星期五

自幹世界線變動率探測儀(Nixie Tube Clock):材料取得


一般材料表:

請參考 Github 連結,hardware 下有直接從 layout 軟體匯出的 BOM 表跟我手記錄的表格,注意兩份內容是有出入的,手記錄的應該是比較完整一點,因為像 IC layout 軟體就只會匯出 IC ,手記錄就會記上還要 IC 座,然後匯出的 BOM 表有些元件如 0603 電阻,選擇不同的 footprint 導致同樣阻值的電阻沒有在同一列,也要注意一下,省掉採購時的麻煩。
基本上零件都是光華商場買得到的東西,元件除了電阻跟一些電容外,都是以 DIP 的為主(其實光華商場也買不太到 SMD 的晶片元件),如果在 layout 上想要簡單一點,或者畫小一點,可以自己上…例如貿澤電子之類的電子元件網購,我是有點懶,家裡也沒有適合上 SMD 晶片的工具,就直接畫 DIP 版本了。
手記錄表格裡,有些元件是測試需要,但如麵包板、單芯線、焊錫之類的,如果你家有的話也可以不用買。

另外, 74HC238 跟 74CD4514 兩個晶片,光華商場跑遍了都沒有在賣,反而在高雄的長明街一家店 - 應該是禾樺電子 - 買到了,證明我海港市大長明街才是真正的電子一條街,另外台北車站裡面的台灣金電子也有看到在賣,光華商場根本廢物ㄏㄏ。

下面是比較特殊的東西:

輝光管:

我是在 ebay 上訂的 IN-14 輝光管,12 支要價 48 USD,因為沒 ebay 帳號,從 ptt helpbuy 版上選一個看得順眼的 JKL 代購,含運費等等公道價八萬一新台幣兩千多元,平均一支管子比七段顯示器貴個十倍吧。
會選 IN-14 是因為它有小數點,因為是二手管,大概從某些神祕儀器上拆下來的,一大問題是每支座腳不等長,上面還黏有奇怪棕色的膠,也不知道怎麼處理,總不能丟去洗吧。

如果大家想要做個高端的時鐘,或是你真的要做世界線變動率探測儀的話,也是可以買新管,通常價格會再翻一倍不止;在製作過程中也有看到下面這個網站 daliborfarny,有一位捷克的人兄還有在持續生產新管,但他的管子也沒有小數點,一根新管單價就要 145 USD(也可能是其他幣值,但機率不高),這個還是給有錢的大大去買就好OwO

高壓電源:

這應該是輝光管取得管子之後的頭號問題,取得管子簡單,但誰家裡沒事會出現 180 V 的直流電源?
強者我同學強強林是在淘寶上買了一片升壓電路板:「辉光管直流升压电路,MC34063方案,12V输入,大电流,带5V输出」,大家應該把這個標題拿去搜就可以搜到連結了,回來把它的電路翻一翻看一看畫一畫,其實就是標準的 MC34063 的升壓電路(不然勒,人家標題都寫了),5V 則是用 78M05 從 12V 轉下來。
我覺得買升壓電路板是有好處的啦,買回來再買點線材就能先讓管子亮起來,之後專注在控制上面就好,總比管子都買好了卻缺個高壓電路什麼都不能做好,不然光想到高壓電路就懶,然後就會沒進度。

如果決定直接要用高壓電路板當高壓電源的話,材料表裡面的高壓電路部分的材料就可以不用買了,相對來說,用高壓板的問題就是最後板子後面會有一塊凸起的小電路板,能不能接受就看個人了。
全部材料買起來,扣掉輝光管其實也要 400-500,完全就是積少成多(yay),下一步馬上來自組 MC34063 升壓電路。

2018年10月18日 星期四

自幹世界線變動率探測儀(Nixie Tube Clock):前言

總之先秀個成品:



看過 Steins;Gate 一直想自幹一個世界線變動率探測儀,這個點子其實有點久了,不過也就只是一直放著而已,畢竟學生時代沒什麼錢也沒什麼時間下手。
直到最近因為 Steins;Gate 0 開始播送,強者我同學小新大大跟強強林大大也生出想來做一個的念頭,手頭上也比較寬裕了些,於是三人一起怒做一陣,所以整個九月跟十月初除了看書之外都沒有在寫 code,功力退步十年 QQQQ,這裡也沒在發文都要長草了。
不過大家放心,接著就是開發過程記錄的 N 連發,保證把這裡的草都除到連基岩都露出來。

輝光管(nixie tube,或譯數碼管,好像沒有統一的譯法,但我覺得輝光管比較符合它的發光原理)總之就是個1950年代的玩意,現在大概只有懷舊狂會去用它,都買不太到了,ebay 上有一些舊蘇聯國家的賣家在賣,大部分都是拆下來的二手管,價格都貴到靠北,我買的已經算比較便宜的,如果是新管會貴上一倍。
細看輝光管的內部,會看到許多數字型狀的細金屬線,中間以陶瓷材料隔開,作用是當作陰極,陽極則是網狀包在陰極外。陰極不像日光燈一樣會被加熱射出熱電子,而是在兩極上加上170-180 伏特的高壓使氣體游離,離子再撞擊其他氣體跟電極而發光,電極溫度會保持在40度左右,有人覺得這樣發光挺迷人的。
輝光管要高壓驅動,相較現今成熟的顯示技術,消耗功率大、體積大、可視角度窄、還要高壓驅動,七段顯示器出來之後都被淘汰光了,可預期這東西的價格會一路走高(其實我很懷疑2036年還買得到這種東西)。在找相關資料的時候,是有在 kickstarter 上看到有人要製造新的輝光管,但出貨之後似乎沒有持續製造販售。

做這個會遇到一籮筐的問題,決定就在這裡記錄一下開發流程,按照所謂的開源慣例,本作品所有內容都公開在 Github 上面,包括硬體的 Layout Schematic、Layout Gerber 檔跟軟體的 Arduino 程式碼,歡迎大家來提意見,如果有什麼問題也歡迎提出。

下面是本系列所有文章的連結:
1. 材料取得
2. 自組高壓電路
3. 驅動電路
4. 控制電路
5. 電路板基礎
6. 電路板實作 layout
7. 焊接
8. 寫 code
9. 後記