網站首頁 趣味美術 生活小製作 兒童製作 親子互動 陶藝製作 傳統手工 民間手藝 歲月綻放 創意與設計

看極光,不用去北極手工電子DIY教程

欄目: 電子DIY / 發佈於: / 人氣:2.43W

看極光,不用去北極

DIYer:ledartist 製作時間:一星期 製作難度:★★★★★ GEEK指數:★★★★☆

視頻中這個閃爍的美麗光輪就是“極光”——我設計製作的二極管藝術品。對發光二極管和電子技術的癡迷是我完成這個作品的主要動力。極光的電路中有162個RGB發光二極管,每圈的顏色變換都是由一個微型控制器用一種改進過的脈寬調製方式控制。

 

雖然我採用的控制器本身只有一個脈寬調製模塊,但是極光能同時展示27種獨立的亮度。以下的內容將爲你展示極光的整個設計製作過程。

1   概念

RGB發光二極管(也被叫做全綵發光二極管),可以發出各種顏色的光,涵蓋的色彩範圍一點兒也不比彩虹少。這個效果聽起來很複雜,但原理其實很簡單:把紅綠藍三原色的三個小發光二極管裝在一起,通過改變三原色的亮度比例,混合出各種顏色。

大部分亮度控制電路都用到一種叫做脈寬調製的技術來控制亮度。目前許多微型控制器都內嵌了一個或更多脈寬調製模塊,但通常少於5個。當需要控制9個不同亮度的發光二極管時,我就得用多個控制器或者外置電路,如果這9個都是全綵發光二極管,則需要多達27個脈寬調製器。

於是我在試驗過程中以不同的配置,做了各種類型的嘗試,試圖減少脈寬調製控制器的使用量。 除此之外,我還試圖讓亮度在變化時更加平滑。現在大部分PIC微型控制器提供的都是8~10位的脈寬調製分辨率,在這樣的分辨率下,二極管燈光在比較暗時的光亮變化不是漸變的,會有階梯感。因爲人眼對光強屬於非線性響應,所以需要對亮度變化曲線做gamma修正來給人以亮度均勻變化的視覺體驗。總之,根據我的計算,要實現平滑的視覺效果需要至少12位的脈寬調製分辨率。

如果只是按此原理做個簡單的電路,使每個發光二極管都由12位以上的獨立脈寬調製控制器控制,我就需要用到某種特製的發光二極管控制IC。

不過這樣的特製IC的解決方案既不微型也不便宜,對我沒有吸引力,最終我決定把脈衝調製和多工驅動結合起來:把每個脈寬調製的循環拆成多個脈衝,再分別驅動三原色二極管,於是三原色二極管就一個脈衝調製循環裏被分別點亮數次(大概有點像脈衝寬度調製和脈衝增量調製的混合吧),而整個全綵二極管的平均亮度輸出與這段時間內的脈衝次數成正比。這樣做不僅能通過以不同頻率點亮三原色來減少發光二極管的可見閃爍,還能通過結合多個脈寬調製的脈衝增加脈衝調製分辨率。

不過減少可見閃爍後的發光二極管閃爍頻率還是很高的,讓極光看上去的刷新率比123Hz高的多。

看一下時序表,我取了7個發光二極管的R/G/B總線信號來說明我的概念。正如你所見,R/G/B通道間隔着輪流點亮,這些脈衝控制着發光二極管確切的點亮時段。當R/G/B總線中任意一個處在高電平時,LED就會點亮。總的點亮時段和顏色則取決於R/G/B總線的高電平組合。

比如說,圖中:

LED1只點亮在1級(最低的亮度)紅LED2會點亮到2級綠LED3會亮到3級藍LED4會點亮到3級黃(紅+綠)LED5會點亮到3級紫(紅+藍)LED6會點亮到3級青色(綠+藍)LED7會點亮到255級(最高的亮度)白
從1到255的時間大概爲8.1毫秒,所以時續表看起來似乎是由暗到明點亮的,但是其實肉眼看只是有亮度差異而已。

希望這足夠解釋極光的LED控制原理。

相關資料

PWM的維基詞條

PDM的維基詞條

 

2   電路

查看完整電路圖

極光有18個全綵二極管在9個迴路裏。總共有162個發光二極管。每圈都是分隔開來控制的。所有有9個LED電路需要控制。

我採用 PIC24F08KA101 作爲控制器,這個芯片是16位的,已經足夠控制電路,所以並不需要佔地方的外部設備來達到運算峯值32Mhz

電路本身很簡單,微型控制器連着一個搖桿式的開關(其中有5個觸點開關),用3個MOSFET(場效應管)和12個BJT(雙極性管)控制着通過LED的電流。3.3V的線性穩壓器給PIC供電,LED迴路則用5V的電源驅動。

這個電路其實就像9*3的矩陣變換電路,但是3列被全綵LED的3原色替代。所以三路三原色是多工驅動的,分別點亮而不是一起亮。通常我不喜歡做多工驅動的東西,但有時必須對簡單性和節省空間兩方面妥協自己的喜好嘛。

因爲這個微型控制器只有一個脈衝寬度調製模塊,我需要把這個脈寬信號擴展到三原色發光二極管。我用一個“與門”解決這個問題。R-BUS只在R-DRV爲低電平且PWM爲高電平時爲高電平,G-BUS只在G-DRV爲低電平且PWM爲高電平時爲高電平等等。這個簡單環節的電路工作很正常,節省了節省了成本更節省了PCB板上寶貴的空間。我的高邊開關用到了MOSFET,因爲我找到的BJT無法承受162個發光二極管並聯的電流(高達3A!)。MOSFET( DMP3098L )承受電流的能力值得推薦。

低邊開關電路就很簡單了,用BJT的共射極組態。

發現電路中有許多1KOhm的電阻接在輸出端上了麼?也許你會不明白它們的作用。這些電阻能幫助晶體管在沒有點亮LED時也能快速關斷。因爲晶體管工作時間是納秒級的,所以啓動和關斷的時間很重要。總的來說,這些電阻會讓脈寬調製運行的更快,能減少肉眼可見的閃爍。

 

3   PCB

我想把極光做的越小越好,所以設計PCB板費了很大功夫,實際上,我除了反覆調整PCB設計還反覆調整了電路設計,基本把元件數量也控制在最少了。

 

我在 DorkbotPDX 訂做了這個PCB板,他們有一個我很喜歡的交互式PCB設計程序(有點像BatchPCB)。做好的PCB板很好看,美國製造,阻焊漆是暗紫色的。

 

4   元件

元件列表,或者後面的BOM文件中也有元件列表:

162x 150Ohm (0603) 9x 220 Ohm (0603) 13x 1k Ohm (0603) 3x 470 Ohm (0603) 1x 10k Ohm (0603) 2x 10uF (0603) 1x 1uF (0603) 1x AP7333-33 3x DMP3098L 12x MMBT2222A 1x PIC24F08KA101 1x 4向搖桿開關(Panasonic EVQQ7) 162x 5mm全綵LED 1x 5V直流電源或4x鎳氫電池和電池盒

部分元件來源:

LED是直接從中國快遞過來的,花了幾天時間,不過元件質量很好,別的元件在Digi-Key有賣(北京的朋友應該都知道,這些中發都有賣)。你可以用其他元件替代晶體管:比如BJT可以用多種其他元件替代,但是找到替代MOSFET的元件應該不容易。

無論如何,如果你有更經濟的元件搭配,請告訴我。

BOM文件下載 (1kb)

 

5   工具和材料● 放大鏡

● 焊膏(裝在注射器裏備用)

● 鑷子

● 電烤箱

● 紅外/激光溫度計

● 電烙鐵

● 線剪

○ 焊錫(去買最好的藥芯焊絲吧)

○ PIC編程器(支持PIC24F08KA,並且可以通過標準6腳ICSP連接器進行ICP燒錄)和電腦

 

6   準備組裝

由於元件數量特別多、分佈特別密集、佈局特別罕見,組裝過程需要特別精湛的焊接技巧和一顆特別淡定的心。

由於多數元件都是貼片的,我用的是“塗焊膏、放元件、烤!”的貼片焊接技巧,如果你以前做過貼片電路,應該明白我在說什麼了。當然,焊接貼片電路有許多辦法,你可以選擇你擅長的。我這裏只演示一下我的方法。

準備工作當然是數清並準備好所有的貼片元件。我建議預先把貼片元件按位置整理好,這樣你把焊膏塗在PCB上後就可以馬上找到元件並且安上去。

 

7   塗焊膏

這一步我本想用鋼網模板做的,但是很不幸,便宜的鋼網模板不支持相互之間呈非直角擺放的元件。所以我只能手工把焊膏用一隻注射器塗在需要焊膏的位置。相信我,這是個極爲糾結的過程,看了視頻就知道。

 

8   安置元件

讓人神經麻木的佈置焊膏完成了後,你就可以開始把貼片元件都擺放到適當的位置去了,當然這也不是什麼輕鬆活,同樣你看了視頻就知道了……

由於元件很多,我們需要個計劃,可以按照我準備的 元件位置指南 進行。其實爲了美觀,我沒有在PCB上標明元件位置,所以你也只能按我的指南來做。按照先中央再四周的順序進行擺放。

 

同時你還要小心身上的靜電擊穿元件,如果有防靜電桌墊最好了,沒有的話像我一樣把鋁箔鋪在PCB板下面進行工作吧。特別要注意那個四向搖桿開關的方向,這個開關方向如果錯了你就沒法給PIC編程,然後就得用熱風槍把它吹掉重焊了(嗯,其實我就是因爲犯了這個錯誤纔買了一套熱風槍工具……)。還有也別把PIC的方向弄錯了。

PS:做以上這些事情之前不要攝入大量咖啡因,因爲咖啡因能讓你手抖從而讓這些事加倍困難。

元件位置指南 (1 MB)文件下載

 

9   烤!

接下來我就要把PCB放進電烤箱了,正是廚房的那種,而且很老很破舊,事前我甚至祈禱希望它能足夠的熱。這時有一個紅外/激光溫度計幾乎是必須的,除非你已經熟練到能用心去感受烤箱溫度。

放在一個托盤上的PCB

小心的把PCB板放在烤箱裏,不要碰亂了貼片元件的位置,我是放在烤箱的中間,因爲我覺得那裏溫度比較穩定。打開開關,把烤箱溫度開到最高,然後監測PCB附近的溫度,等到溫度逼近160攝氏度時就調低烤箱溫度,反覆調節烤箱溫度使得這個溫度保持1到2分鐘,然後繼續調高溫度到200攝氏度以上。這時你就會看到焊膏都融化了,也許還會冒一點菸。

 

焊膏太多的地方過會就得用吸錫帶整理啦。

等到所有的焊膏都融化就可以把烤箱關掉了。有些人把PCB放在烤箱裏冷卻,但是我沉不住氣戴着隔熱手套就把PCB拿出來了,無論如何不要冷卻的過快(比如放在一個冷的表面上)就可以了。

在PCB冷卻到能用手摸時,就該進行檢查工作了,戴上放大鏡觀察所有的細節,元件、焊點什麼的。除非你特別棒,(或者我還不夠棒)不然肯定會發現一些要修復的地方。比如SSOP(PIC24F)的引腳很接近,要仔細檢查有沒有橋接的情況,我總是要用吸錫帶來修復這個問題。

 

10   電器檢查和編程 

在繼續進行之前,先用萬用表測試一下,確保電源和ICP相關的部分沒有短路的元件。

 

接下來打開電腦,啓動Microchip IDE,用提供的HEX文件給PCB板上的PIC微型控制器編程。

 

這時你需要一個5V的電源供應,這裏我用一個兩腳的插針連接電源(注意電源的極性),以及一個5腳的插針連接編程器。我的編程器是ICD2,你的編程器如果也是這種老式的,記得把高電壓編程模式的電壓設置低於9V。

 

另外說明書建議在MCLR針腳使用高速並聯穩壓器來穩定電壓,這有點誇張了,我把一個8.2V的穩壓二極管連接在MCLR和GND之間也正常完成了編程。

沒什麼意外的話,你就能看到IDE報編程成功了,如果有問題就還得回頭逐步慢慢檢查。

HEX文件下載 (14 KB)

 

11   測試LED

鑑於任何零件都有次品率,並且焊上PCB後再發現這點的感覺真是糟透了,我在焊接前會把全部162個LED都檢查一遍。

1.4MHz下工作的PIC16F627 

每個全綵LED需要測試的其實是三個發光二極管,而市面上沒有賣這樣的測試器,所以我自己做了一個(製作過程就改天另寫了,有興趣的同學請繼續關注)。很簡單,用到了一個8位的微型控制器(PIC16F627),5分鐘就能裝好。這個測試器能測試7種不同的RGB混合顏色,所以你能輕易發現有缺陷(我自己確實檢出了幾個不亮或者光亮暗淡的)的全綵二極管。你每次可以同時測試3個LED,它們相互之間的對比也能讓你更容易發現異常。

把次品從PCB上取下來很麻煩的,所以這樣的檢測完全不是浪費時間,磨刀不誤砍柴工嘛。

 

12   焊接LED這個小飯盒放PCB正合適。 

 

 

 

臨時電源 

擦擦汗鼓勵自己一下吧,因爲馬上就要大功告成了。再保險起見最後做個測試,把9個發光二極管插進孔裏(注意極性啊),按兩條豎線徑向安好,接通電源。看下視頻你會明白我在說什麼,如果你看到顏色變化的話,你就真的馬上要大功告成了。

如果沒問題那麼先冷靜一下,把9個發光二極管再拿出來,因爲你得如圖中那樣把過長的引腳剪掉再把它們裝上PCB。

從中間的一圈孔開始裝,裝好一圈翻轉過來焊接完畢後打開電源測試一下,如果全部發光二極管都亮的話再裝下一圈。直到所有LED都裝好爲止

 

13   供電Molex插針,DC 5V, 4A

PCB板上有一個2腳的插針用來接電源。供電的就是普通的5V電源,至少要有1A的輸出電流。可以像我這樣直接把直流輸出口換成插口,好插在針腳上,也可以直接用焊錫把電源和PCB上的針腳焊在一起。

 

還可以用4節鎳氫電池來爲極光供電。4節鎳氫電池串聯的電壓剛好5V左右,適用各種要求5V電壓的電路,給極光用的話也可以持續供電幾個小時。

 

14   操作極光 

希望你和我一樣喜歡這種洗腦感強烈的色彩變幻,電路中還設計了五個可以調節的變量:上下撥動搖桿可以改變色彩變幻模式,左右撥動可以改變變幻速度,按下搖桿可以暫停/繼續色彩變幻,長按兩秒就可以把它關掉了。

鑑於編程空間還非常富裕,整個操作系統的功能完全可以繼續擴展。編程器5個腳中的兩個都可用來輸入模擬信號,所以也許還可以增加些基於模擬信號輸入的互動環節,比如聲控什麼的,歡迎黑客/創客們繼續幫我完善設計啊。