<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        自己動手制作 “POV LED” 旋轉LED顯示屏

        作者:楊宇慶   來源:本站原創   點擊數:  更新時間:2014年04月26日   【字體:

         

        2012年5月1日11:46:09
        所有制作所需的零部件都已收集齊,開始改裝這個散熱風扇。打算用它做底座。由于這個無線供電傳輸效率就目前來說不是特別高,暫時打算用雙電源供電,原來繞制的線圈暫時作保留。

         

         

         

        2012年5月1日23:26:54

        基礎電路焊接完成。

        主電路使用我爸N年前的廢舊手機電池供電(電池還很耐用的,就是機子嚴重不行了),電池用普通膠布包在電路板上,并且做了引線方便以后使用萬能充充電。

        隨后用萬能表和燒寫一個循環點亮LED燈的程序來檢查,現象是CPU不立即發熱;每個LED燈都像程序寫的那樣按順序發光,無偏色、偏亮、偏暗;萬能表測得每個IO口的電流不超過40mA。結果表明電路焊接正確,芯片沒問題,電池功率足夠。

        主芯片仍是AVR單片機——ATmega16L。我的最愛,呵呵。由于對時鐘頻率要求不高,繼續使用片內8MHz晶振,得以簡化電路。 

         

         

         2012年5月2日13:53:24

        完成旋轉檢測電路的焊接。這里采用44E霍爾傳感器和磁鋼配合檢測是否已經轉過一圈。

         

         

        2012年5月5日12:20:46

        想了下,并且也實踐了下,雙電源供電方案我個人覺得效果不理想。

        原因是這個風扇是用無刷電機驅動的,加上原來別人只是為了最求大轉速而犧牲了電機力矩,別人是考慮到散熱風扇并不需要太大的力,只需要能把扇葉帶動就行。正是因為這樣,而且我上面還加了塑料板和電池,也是加重了扇葉的重量,而電機的力矩不夠大。起初我加大了電源功率,使用12V1A,也就是12W的電源,最多是可以轉動,但轉速并不能達到要求,而且這樣下去會加重電機負擔,可能會造成線圈過熱燒斷。

        為了追求無噪音,看來最好的辦法是得考慮無線供電方案了。

         

         

         

         

        2012年5月6日下午前,我將電池卸去,接通風扇電源。發現轉速仍是不理想,用手掂量下,或許是這增高的硬塑料板太重了。

         

        2012年5月6日下午,決定用氫氧化鈉溶液去除塑料板與風扇之間用于粘合的卡夫特AB膠。但家里沒有燒堿,于是打算用電解食鹽水制取。

         

        往塑料盆里加入五六勺我家的食鹽,差不多飽和了。

         

        用12V直流電電解,萬能表有示數,電流為6.6mA。反應發生了。負電極處的銅片有氣泡生成。因為有氫氣和有毒的氯氣生成,我放在陽臺上做,拍完照后我關門撤了。

         

         

        但是!第一次做的事總有錯誤。

        看完新水滸傳第三集后,回來一看。不對勁,原來想漏了一點,我用的是銅片做電極,辛辛苦苦制取得到的燒堿又發生反應了,這銅片

        把我的氫氧根吃了,出來像是氫氧化亞銅沉淀,真不該用銅片做電極。沒關系,想想下一步用什么做電極好。

         

         

         

         

         

         

        2012年5月17日22:44:03

        完成整體組裝。電源用7.5V1A的開關電源供電。而電路板上仍舊使用原來的3.7V手機電池供電。電機采用有刷減速電機。這電機是我以前推土機玩具里的一個電機,它帶有減速齒輪,所以扭矩足夠,而且轉速還可以。就是噪音大了點,這個對于我后面將要實現的功能稍微有點影響。

        相機暫時不在我這,過幾天再補上照片。

         

        對于上次那個問題,制取量小點的可以用石墨做電極。后來我同學給了我點NaOH,我直接溶解后放進去泡了。泡了幾天,外層多出來的膠水已經變軟可以撕去,但里面可能膠水多,溶液進不去,還是很難分離開來,用鋼鋸也難鋸開。

         

        另外,上次意外制取得到的氫氧化亞銅,我讓媽媽拿去實驗室過濾,得到一杯沉淀。敞口放置在空氣中,過了幾天,外層的氫氧化亞銅氧化為氫氧化銅,內層被保護著,沒氧化。透過玻璃杯的外壁看里面,顏色內外不同,也比較好看。

         

         

         

         

         

         

        2012年5月18日23:29:51

        AVR單片機的程序編寫完成?娠@示任意字符和文字的組合,一圈可以顯示8個全角字符左右。

         

         

        2012年5月19日21:29:26

        用程序測出轉速為5r/s 。感覺還是有點低,轉速太低會導致顯示閃爍,字符難識別。如果能有更合適的電機改進就好了。

         

         

         

         

        因為人眼感覺不到閃爍的相隔時間是0.1秒以下,即一秒至少要轉10圈,人眼才不會感覺到閃爍。那么電機就要求至少有10*60=600rpm的轉速了。這個電機不僅有噪音,而且轉速經程序測得只有300rpm。所以看上去會有閃爍,而且用相機拍也不會拍得好。

         

        努力尋求合適的電機和無線供電的解決方案……



        2012年10月22日23:31:20
        時隔半年,考進了欽州二中 ,在這第一學期,碰廣西新課程改革,多出了一個活動“研究性學習”。于是我打算以此作為研究對象。并拉上兩位同學組了個隊(其實我自己也能獨立完成此項目,因為我已經找到了所有問題的解決方案,但為了拉合同學關系、完成這個學分任務,才去組隊,而且報告要求也最好3-5人一隊)。
        我此次定的課題是“飄浮在空中的文字” 。組員賴可鐘、黃高松,還有我。當然指導老師非屬王偉名啦!感覺好有緣呢。從初二到現在高一,從開始的單片機新手到現在,玩這些電子技術的時候都有碰到與初二時教我們物理電學入門的陸麗莉老師(當然教我電學入門的還有我老爸,但他是小時候學前班一二年級就教我了,盡管從我出生到初二他就只在一年級還是二年級或是三年級?時拋下一句話“電源正負極不能短接”就溜走了....其他什么也沒說過,我也沒想過還會有什么。好郁悶的說,不過我并不覺得很難,因為我每一次嘗試都是新的效果、新的發現,不拘泥于后人得出的計算公式、規律。至于焊接技術、沖擊鉆之類的工具也都是我小時老是跑去別人施工地上、當我爸在修電器時,默默地看學來的。剩下的全是我自己在外婆家玩電器摸索。扯遠了,回來。有著各種關系的人,此次也不例外,王偉名老師在開學的第一節物理課上,說的第八句話“所以說,我們物理課是這樣的喔!”我馬上看到了陸老師的影子。因為他的講課方式和帶了我兩年的陸老師幾乎一致。我想:咦,不會是同一個師傅領出門的吧?事實證明,問了這兩人,兩人回答一致。聽說現在陸老師還當他弟弟的班主任?關系越來越緊密了……


        前面我也說過,我所做的東西沒有充分準備,沒有先前做過實驗測試某部分的功能是否成功時,我是不會繼續發展它的,F在既然已經打算作為研究性學習報告和二中這個學期的科技周的作品了,就說明我已經有信心、條件去完成它。

        經過半年,我想我最終決定要使用無線供電技術,因為我實在不愿意聽電刷的聲音。我在五一電子網站上,買到了一種無刷電機。聲稱卡死不燒壞,而且扭力、轉速都較大(在POVLED上算是較平衡的性能參數)。買回來后事實也如此。還有無線供電,無線供電我還沒有進行徹底的研究 ,但我找到了解決它的方案,總不能一直擱置著吧。我用淘寶上較受歡迎的無線供電模塊。做的還真保密,接收端的芯片被打磨掉型號等信息,發射端灌滿黑膠來封裝,只露出四個引腳。
        好吧!總有一天我會徹底研究,不止是知道它是電磁感應現象,還是要能自己焊接出它的等效電路,并為各電子元件取最合適的參數值達到最大效率。因為這種技術應用很廣。 
         
        這是加入了無刷電機后的效果,無線供電明天中午我再繼續裝。高中搞得我業余時間大大縮減了,真是的,但我不會甘心的。所謂“不到黃河心不死”




        2012年10月23日23:29:40
        中午完成了無線供電模塊的安裝,還有重新調整旋轉部分的重心以及去掉原來那種綠色的IC卡座,換成更輕更小的卡座。但我不太愿意會不要卡座直接焊上去的。我怕發光二極管的引腳可能會意外刮開漆包線的絕緣層,于是用了電工膠布墊底,外用簡單的透明膠布固定在板上。不過我也有點愁,下面的電機用什么固定好呢?就現在這一個小長方體盒子,一轉起來是放不穩的。因為我發現這個圓盤的中心軸的里面就不是平的,這個除了找到第二個可替代品外,很難處理,轉起來圓盤有點不是很完美的圓,稍微向下方斜一點。這個也無法通過改變重心使它們相互牽制來平衡了。希望影響不大。
        我原來還想弄個雙色的,但是手頭的74HC573不夠,只有兩塊,四塊效果就好了。還有很多電路沒有焊接完成,一步步來! 只要整個制作的計劃完善,一切都是充滿信心和樂趣的。



        2012年10月24日13:32:28
        電路焊接完成。實驗性編程測試表明電路沒有問題,LED發光二極管也沒問題,無線供電的功率也跟得上。而且較安靜,但是要做到絕對安靜,需要再來個大一點的底座,這次實驗表明我昨天所做的重心調整很成功,雖然轉的時候有點晃(晃的時候底座微微撞擊桌面發出聲音),但是底座的位置始終不改變,不會造成轉著轉著就全部倒下的這種危險現象。Good!程序將繼續改進。

         


        2012年10月27日20:40:45
        測試了兩天,終于解決字符顯示的延時問題了。但是我覺得這延時寫死不好,因為這樣的話,一旦轉速不穩定(達不到8r/s或9r/s) 時,可能會出現字符重復的BUG。因為在第一次外部中斷后的顯示的延時的時間內,外部中斷信號再次到來,兩個中斷函數穿插著執行,會出現兩個相連著的字符的BUG現象。聽說網上有流傳一種算法,叫做自適應算法。最初由“匠人”提出的,它可以動態調節這個延時時間,使它與電機轉速相平衡。有空我會去研究下看看。另外因為內外圈的半徑不同,還造成顯示的字的邊向圓心壓縮。這個我想應該可以通過延時來彌補。
        另外在發現這個BUG的時候,意外的出現了一幅好看的畫面。由“金”字排成一圈造成的。
         







        2012年10月28日16:09:37
        昨晚的重復字符的問題得到解決。
        今天我意外的發現,昨晚問題判斷錯誤了!
        今天我斷開電機電源,用手動慢慢轉它,想看看那個延時時間和字符顯示的關系。但我意外地發現,每當我轉過磁鐵時,這排LED燈總共閃了兩次。一般經過一次LED燈只閃一次(人眼可辨認出的轉速情況下),而我發現它閃了兩次,兩次的間隔大約0.5秒左右。于是我開始懷疑,問題不出在那個延時的數值上面!
         后來我再次調整程序,讓其中一組LED燈(8個)顯示一個變量的數值,這個變量是每一次外部中斷函數發生(下降沿信號過來時)時自加一,然后輸出顯示。
        結果我發現,每當我轉過一次,LED燈從最初的
        “00000000”全亮)

        變成“0000010”(從右到左數第二個不亮,其余全亮)LED燈顯示的二進制。
        即證明這個變量從0經過兩次自加一,成了2 。 
        也就是說外部中斷函數產生了兩次以上。

        既然如此,那我就改寫程序,只讓這兩次外部中斷的其中一次處理LED燈,另一次拋棄。
        具體如下:
        在外部中斷函數中

        SIGNAL(INT0_vect)

        {

        static char flag=0x01;//聲明一個靜態變量flag,并賦予初值0x01

        flag=~flag;//每次外部中斷產生時,靜態變量自身反轉

        if(flag==0x01)//當反轉后為0xFE時,下面的函數自然不能執行,然后第二次中斷到來時,又會反轉為0x01,然后就可以執行了
                {
        …………在此處為處理LED燈的數據,每兩次下降沿過來時,此處僅執行一次。
                }

        現在無論轉速如何,若不是我特意設置的,就完全不會出現重復字符的問題啦!~~~ 
        然后高興的我讓它一上電,顯示的第一句話就是“毛主席萬歲”!接著是我們班的口號“金鷹十四,威武之師,艱苦訓練,奮勇爭先”,然后“楊宇慶制作”
         

        問題雖解決了,但這是治標不治本。到底怎么會有兩次下降沿過來呢? 
        是不是無線供電的線圈磁場對霍爾傳感器有影響呢?我移掉磁鐵,發現并沒有任何中斷產生。
        我慢慢地手動轉它,發現是在靠近磁鐵和離開磁鐵后都產生了一次中斷(有時十幾個中斷。。。我是從8個LED中的每個的亮滅來看出來的)。但是這不太可能啊。
        按理說:
        中斷引腳一上電就被拉高了,外部中斷的控制寄存器(MCUCR)里,我設置為0x02。即“INT0 的下降沿產生異步中斷請求 ”。而且根據霍爾傳感器的設計,每當靠近磁鐵時,信號輸出引腳會被拉低,離開磁鐵后,引腳復原為高電平。
        這樣時序圖就應該是 
        ————\_________/————
         這樣的。由圖可知,整個只有一個下降沿、一個上升沿。并沒有兩個下降沿到達單片機。

        但確實是有兩個下降沿到了。我以前做的自行車安全行駛監控器時,沒有出現過這樣的情況。我又換了一個霍爾傳感器,發現問題依舊。

        難道是磁鐵和無線供電線圈共同作用的結果?此問題有待研究。 



        2012年12月3日12:04:42
        決定重寫代碼,特別是顯示部分。
        原先的代碼是以一個字一個字的字模輸出的 ,如下:
        for (;t<delay;t++)//最大延時142ms
        {
        _delay_ms(2);//旋轉幅度
        }
        if (delay == 71)//調整旋轉速度(延時顯示)最好令幅度*速度=142
        delay=0;
        else
        delay++;
        while(ShowID[cycle][0]!=0xFF && flag==0x01)
        {
         
        if (ShowID[cycle][1]==1)
        {
        //漢字
        for (i=0;i<32;i+=2)
        {
        //PORTB=pgm_read_byte(&Font16_16[ShowID[cycle][0]*32+i]);
        PORTA=pgm_read_byte(&Font16_16[ShowID[cycle][0]*32+i+1]);
         
        PORTB=pgm_read_byte(&Font16_16[ShowID[cycle][0]*32+i]);
        _delay_us(900);
        PORTA=0xFF;
        PORTB=0xFF;
        }
         
        }
         
        else if (ShowID[cycle][1]==0)
        {
        //字符
        for (i=0;i<16;i+=2)
        {
        PORTB=pgm_read_byte(&Font8_16[ShowID[cycle][0]*16+i]);
        PORTA=pgm_read_byte(&Font8_16[ShowID[cycle][0]*16+i+1]);
         
        _delay_us(900);
         
        PORTB=0xFF;
        PORTA=0xFF;
        }
        }
        cycle++;
        }
        這種顯示方式有較大的局限性,不夠靈活,很難顯示圖案。我改進的方向就是把文字圖形化,設置一個緩沖區,就直接顯示緩沖區的內容,而不去關注緩沖區里到底是什么東西。至于緩沖區則有另外的函數管理。
         
        本作品,我打算將它放到學校的科技節上展示,那我得想下我要顯示什么內容好。嗯,校園文化節嘛…………


        2012年12月6日23:10:49 
        這真是令我極其興奮的時刻!  今天中午我寫好了新的代碼,并且實驗成功。但是我覺得上次那個重復中斷的問題我的解決方案不好,我是屏蔽掉一次中斷的。這么一屏蔽的話,就會使顯示的頻率降低一半,導致畫面閃爍加劇。
        于是我睡覺在想,睡夢在想,吃飯在想,搭車都在想……到底是什么原因!為什么會時不時有多次中斷出現,而且霍爾傳感器還沒到指定位置就發出中斷了。

        今晚,我上網查有無類似的問題,以前我也查過,但沒發現結果,搜索到的內容千篇一律,沒有講到細節的問題。既然對于POVLED這個項目來說,沒有人提到過,于是我懷疑是不是單片機問題了。我再翻開三百多頁的ATmega16單片機官方數據手冊。著重看了下外部中斷,發現有一句話這么說道:(我用紅色線標注的部分)
         
        突然發現,下降沿觸發中斷涉及到系統IO時鐘 ,我在想在高速旋轉和底部的供電線圈作用下,如果IO時鐘出現錯亂,那么外部中斷的錯誤也會出現的。
        我先不管它是否是這個問題,我先嘗試著使用為低電平時觸發的觸發方式,不使用下降沿觸發,避開IO時鐘錯亂的因素。
         同時,因為低電平觸發的話,只要一出現低電平,就會不斷地觸發中斷,觸發速度很快,直到出現高電平為止。對于這點,我在觸發開始的第一句代碼就是關閉外部中斷使能,避免再次觸發,然后把顯示函數執行完,然后再把外部中斷使能。
        SIGNAL(INT0_vect)
        {
        char i;
        GICR&=~(1<<INT0);//外部中斷關閉
        for(i=0;i<Size;)//取模方式:陽碼,逐列式,逆向,字模高16
        {
         
        PORTB=BufferFirst[i];//顯示第一緩沖區
        PORTA=BufferFirst[++i];
        i++;
        _delay_us(700);
        PORTB=0xFF;//背景設為黑,即無燈光背景
        PORTA=0xFF;
        }
        GICR|=(1<<INT0);//外部中斷0使能
        }
        經我計算,顯示函數(掃描顯示112列)執行完總共需要156.8ms。而據上次測得轉速最大為9圈每秒,則1/9=0.1111111111約為111.1ms每圈。理論上這點時間的相差,會導致顯示內容的偏移和偶爾丟掉一次顯示機會。但是9圈每秒是最大速度,一般情況下為七八圈每秒,丟掉一次顯示機會的頻率較低,基本上看不出一次閃爍。

        實際運行情況表明,我的猜想正確!這么設置后,畫面幾乎不閃爍了,顯示得很順暢,字跡清晰。耶哈哈!~~~~
        此次解決結果遺留有一個小疑惑,如果是IO時鐘因某種外界影響出現錯亂 的話,而且官方數據手冊里說到這個時鐘也接到IO端口模塊里,為什么控制16個LED燈的端口數據不發生錯亂呢?我繼續查閱手冊得知,讀取IO口數據時會用協議來讀取,協議中的時序就必須要有時鐘的參與。但寫的時候是靠寄存器寫,是否也關聯到IO時鐘呢,這個今晚暫不追究,因為我要睡覺啦!~~~~



        2012年12月7日13:31:14
        新加入一個顯示效果:橫向逐列掃描顯示。就是從左到右把文字慢慢顯示出來。每隔0.1秒顯示出新的一列。因為底層所有顯示的算法代碼的我昨天已經重寫過,現在加入各種特效都很方便。程序代碼將在我完成所有功能后公布。
        關閉最外層和最內層的兩個藍色LED燈。讓更多的電流流過16個LED燈,使顯示的內容更加清晰明顯,原來的兩個做邊界的LED燈太亮了,我長期調試看多了對眼睛不好。


        2012年12月8日17:12:44
        去學校為同學們田徑賽跑加油后,回來繼續寫代碼。話說我真佩服跑1500米的人,不為能否拿冠,有勇氣參與就是一大勝利!而且在跑的過程中,我們觀戰的人時不時輪流陪跑,送去葡萄糖飲料。場面實在動人……

        這次我寫完了圖片的顯示代碼。最令我感受深刻的是,一旦核心代碼和程序架構做完了,剩余的部分就是自由發揮,最輕松,最爽的過程了。這就叫掌握核心技術的魅力!~~~~就像現在這樣,我想讓它顯示什么就顯示什么,靈活、自由得很。別嫉妒,程序代碼我做完會公布的。
        如果前幾天我沒重寫整個程序的代碼的話,現在我不會這么輕松了,好的開始是好的。
        我剛才寫的代碼,目前是讓一男一女站在橋的兩邊,然后會怎樣呢?敬請期待下次更新。嘻嘻。 
        不過取模累死我。。。用鼠標一個個點,以點陣的形式畫出男女圖像,還有動態的圖像。多虧了Photoshop的圖層復制和移動這些功能的輔助。
         




        2012年12月9日10:24:16
        哦也!所有代碼編寫完成。程序也正常 。
        顯示的內容為:
        "高一十四",
        "楊宇慶制作",
        "鵲橋仙 秦觀",
        "纖云弄巧",
        "飛星傳恨",
        "銀漢迢迢暗度",
        "金風玉露一相逢",
        "便勝卻人間無數",
        "柔情似水","佳期如夢",
        "忍顧鵲橋歸路",
        "兩情若是久長時",
        "又豈在朝朝暮暮" ,
        然后畫出一道橋,橋的兩邊一男孩一女孩
        然后慢慢走近。走得很近很近的時候,畫面就靜止2秒。
        然后回到開頭,重新顯示“高一十四” ……
        拍錄像不好拍,因為幀數的問題,看不到不連續的畫面。但人眼是可以看到的。


        程序源代碼預覽:http://www.thefapper.com/mcu/3418.html
        下載: http://www.thefapper.com/f/POVLED.zip 


        2013年1月27日
        我把它作為學校的課題研究報告,然后出乎我意料的是,居然被認為是年級的代表作。
        然后讓我設計一個展板去展示它。然后花了幾天時間設計。
        前幾天,學校把這個展板噴出來了。。。



         下面是設計原圖:(展板很大,2.4米*1.2米,像素一萬多乘五千多,我縮小10%上傳到QQ空間?赡茉谶@里看字不太清晰,但實際看展板時是很清晰的)
        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮