當前位置:製作窩 >

創意生活 >電子DIY >

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

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

看極光,不用去北極

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個腳中的兩個都可用來輸入模擬訊號,所以也許還可以增加些基於模擬訊號輸入的互動環節,比如聲控什麼的,歡迎黑客/創客們繼續幫我完善設計啊。

 

  • 文章版權屬於文章作者所有,轉載請註明 https://zhizuowo.com/shenghuo/dianzidiy/6ywrl.html