本文作者李王,創客馬拉松深大站參賽選手,中國深職院大二學生。本文詳細介紹了他自己DIY的一款「8X8X8」點陣3D顯示器(下圖)的全部製作過程。
3Dcube8(光立方)是一個由LED組成的3D顯示器,是一個集實際型 、經濟型、性價比高的藝術品, 它不僅僅局限於裝飾,更是能夠説明更好的學習C語言實際應用、滿足單片機愛好者對單片機的研究的個好工具。
3Dcube8有多種規格,常見的有單色4*4*4、單色8*8*8、RGB全彩光立方等。其中前者是這之中最簡單的,製作難度和成本最高的是採用RGB的全彩光立方,這裡我選擇製作單色8*8*8。
1、專案材料簡介:
Led的選擇:市面上有很多種發光二極體,按形狀分方形和圓形草帽狀、按效果又有高亮霧面等區別。考慮到美觀和降低製作難度,我選擇了3mm長腳高亮霧面發光二級管,長腳的最大優勢就是可以作為支架,省時省力。
驅動方式利用人眼視覺暫留特性,利用逐層掃描的方式,來達到顯示各種圖案的目的。常見的 CMOS鎖存器(CMOS發熱低,優先選擇)有74hc573和74hc595,前者為併入,後者串入。因為不需要光立方的級聯設計,所以採用573鎖存器。
主控晶片選擇較多,有常見的AVR、STC、Arduino 等。根據之前學過的課程,我們決定採用STC系列的STC89c5A60S2增強型單片機作為主控晶片。之所以不選89C52等晶片,不是因為他們的運算速度不夠,主要原因是它們的片上flash太小,難以滿足需求,其次是因為自己有閒置的STC89C5A60S2,片上記憶體大,運算速度1T,即充分利用資源節省成本,又可以實現所需要的功能需求。
最後就是附屬配件 USB轉TTL串口的STC下載線。選擇採用cp2102作為USB轉串接晶片方案,下載STC單片機完勝PL2303方案,最高下載速度可達115200串列傳輸速率。
2、詳細製作步驟
一. 電路設計
1. 軟體部分
實驗環境:AD13,
該部分我們在altlium designer 13上完成,及用 altlium designer 13畫出所有原理圖,然後生成PCB,最後將PCB圖發給工廠,製造出對應的電路板.
a. 控制模組——單片機最小系統
b. 驅動電路——p口接8片573le端
在驅動電路上,圖中的電阻都是150r的限流電阻,限流電阻130r為理論值.大於這個小於這個都可以。限流電阻r=(vcc-vf)/i,Vcc電源電壓,Vf為led的正向電壓降,I為LED的工作電流,I大了,就亮,小了就會偏暗。
到此,光立方的原理部分就結束了,接下來就該做PCB部分了.全部原理圖如下圖所示:
c. PCB圖的生成
我們將完成的原理圖(圖4)導入到PCB專案裡,並進行合理的佈局,然後開始佈線,最後覆銅(如圖5,圖6)保存檔並將檔發給PCB板製造工廠。接下來就是短暫的等待。
在此期間我們可以進行下一步的製作。
2. 硬體部分
a. 顯示電路 ——led點陣屏的製作
現將選定的LED燈彎曲成圖7的樣子,再按照圖8將LED燈焊接在一起,一共需要焊接512個,共8片,每片64個。單片焊接完成如圖9,圖10,8片焊接結束如圖11 圖12。將8片LED按照8X8X8排列在一起,如圖13圖14。
將LED燈焊接完成後,相信我們定做的PCB板也完成了,那麼接下來我們開始焊接電路板,因為電路板上都是貼片,元器件非常小,所以在焊接過程中我們可以選用鑷子夾住元器件,先在電路板上固定一只管腳,在逐一將其焊接……
3.軟體部分
所需軟體:keil4.0、STC-ISPv4.80
這裡主要是將程式燒錄到單片機內,當然,這需要經過很多次的調試才能完成,呈現出自己想要的效果,感覺這是一個巨大工程,不過只要有恒心,一切都不是事,哈哈……下圖是程式中的一小小小部分
補充:程式的設計分為4部分
1. 初始化部分
主要是設置對應的中斷,定時工作方式。
2. 顯示部分
把立方體看作8位數位管,每個面即為一個數位管,每個面的顯示原理是和8X8點陣是完全一樣的,保證這段程式正確的,可以直接調用。查表的方式是自0起遞增的,每次加1,每個畫面查表64次。當然,實際的情況是要小於65536的,控制程式的代碼也會佔用ROM空間,就會導致了畫面次數減少,所以,要想在有限的空間內顯示更多的畫面,就得儘量把程式寫的簡短。c語言可以直接定義16位元變數。
3. 中斷部分
為了達到動畫效果切換時間可準確調節性,畫面的切換用中斷方式。把時間通過一個變數來表示,這樣每次只需修改一個變數,就可以設置動畫的速度了。每次發送中斷後,查表的變數就加64(i=i+64),然後返回顯示程式繼續顯示,中斷程式只做變數的計算,改變的是查表的位址。
4. 循環
程式循環,循環的條件是i變數不滿足動畫顯示的上限值。比如做八個畫面,那麼i的的值不滿足8X64時,就繼續顯示,滿足就清零從新開始。
顯示循環
主題的顯示程式,應該是一個閉環,一直在顯示一個畫面,只有中斷產生的時候,改變了查表的變數,才切換一次動畫。每個畫面都顯示後,注意修正變數,能使其顯示同一個畫面,不管是查表的變數還是Z軸,Y軸的控制變數,都要進行初始化,直到中斷的產生才改變查表的變數數值。
經過多次反復的調試,終於成功了,達到了我們想要的結果,可是那麼高大上的東西,總要有個外殼吧,為了方便,實惠,我們選用3D印表機自己做咯,首先我們3D建模軟體(這裡使用Soildwork,也可以使用其他,如3DMax等)畫出相應尺寸的模型(如圖19然後使用cura設定列印參數,最後將檔導入印表機,開始列印,幾個小時之後,就可得到我們想要的模型了,如圖20)
到了這裡,我們的單色8*8*8光立方也就結束了,套上外殼並插上電源,期待已久的畫面瞬間亮瞎了我的眼睛 好咯,接下來讓我們一起來欣賞那動人的畫面
項目補充:
1. 測試方案
a、在8片點陣螢幕搭建完成之後,採用點陣螢幕整面點亮方式,檢查每一面LED的通電情況,有過亮、過暗或者完全不亮的及時拆換。
b、檢查電路板的焊點和飛線是否有虛焊或者漏焊情況,元件正負極有無顛倒情況。
c,、電路組裝採用整體組裝整體測試方式。
d、燒錄測試程式,檢查光立方的全亮狀態下有沒壞點。
2. 注意事項
a、搭建LED一定要主要,焊接溫度和靜電問題!
以上情況,會照成LED損壞,和LED微亮的情況。
(距離LED燈頭 3mm左右 電烙鐵 放在上面加錫。5-10秒LED就會壞的,儘量焊接一個點在3秒左右,就算一次不成功也沒事等他冷卻了,在焊接)。電烙鐵接地處理裡沒有地的,在電烙鐵頭鐵殼上綁一根電線,腳踩在水泥地板上線踩在腳下。
b、 LED的間距
LED間距為20M,就是剛剛好標準洞洞板9個孔間距。
3.後期製作
在後期,我們將繼續對光立方進行更深入的研究與製作,做出更大更絢麗的光立方。
0 comments:
張貼留言