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 之類的。

沒有留言:

張貼留言