描述
這是一個(gè)小小的閃爍,由一個(gè)CR2032硬幣電池
和一個(gè)ATTiny45大腦驅(qū)動(dòng)的20個(gè)LED 。固件是用純C編寫的,并
用avr-gcc工具鏈編譯。PCB是由
KiCad 制成的兩層設(shè)計(jì) 。
細(xì)節(jié)
前一段時(shí)間,我正在考慮如何縮小LED閃爍。第一個(gè)顯而易見的步驟是從3毫米的LED到SMD。但是,在焊接時(shí)喜歡與焊橋短路的LED之間仍然存在這樣的微小間隙。我們能否以某種方式避免這種差距?如果我們將每個(gè)陽極連接到LED鏈中的前一個(gè)LED的陰極,我們是否仍然可以單獨(dú)尋址每個(gè)LED?因?yàn)槊總€(gè)LED一個(gè)GPIO不是一個(gè)選項(xiàng)。它必須像charlieplexing一樣。所以我開始草繪拓?fù)洹?/p>
使用charlyplexing時(shí),每個(gè)可能的GPIO引腳對用于兩個(gè)LED(極性相反)。例如,在2個(gè)引腳(引腳0和引腳1)的情況下,一個(gè)LED的陽極連接到引腳0,陰極連接到引腳1,第二個(gè)LED的陽極連接到引腳1,陰極連接到引腳0。簡而言之:LED1:0-1,LED2:1-0。隨著更多的IO引腳,你有更多的對,可以解決更多的LED。有3個(gè)IO,已經(jīng)有6對:0-1,0-2,1-0,1-2,2-0和2-1。一般來說,用n個(gè)IO可以建立n *(n-1)對。到目前為止,這是Charlieplexing。
像往常一樣,如果你知道如何,這很簡單。但是花了一些時(shí)間才能達(dá)到這個(gè)目的:我們可以像多米諾骨牌那樣連接這對,來構(gòu)建一個(gè)鏈。再次,我們可以用3個(gè)IO來創(chuàng)建鏈:(0-1)(1-2)(2-0)(0-2)(2-1)(1-0)或者short 0-1-2-0 -2-1-0。一個(gè)LED的陽極和下一個(gè)LED的陰極使用相同的IO引腳。瞧,他們可以焊在同一個(gè)墊上!對于更多的IO,找到構(gòu)建每個(gè)可能對的IO對序列有點(diǎn)困難。但總有一個(gè)。我真的很喜歡這個(gè)LED菊花鏈焊接的簡單性和簡單性。給我留個(gè)便條,當(dāng)你用這種技術(shù)建立下一個(gè)美麗的閃爍!
對于LED環(huán),我使用5個(gè)來自ATTiny45的IO來指示20個(gè)LED,這是最多5個(gè)IO的LED:n *(n-1)= 5 * 4 = 20。用于這個(gè)的序列是:0-1- 2-3-4-0-2-4-1-3-0-3-1-4-2-0-4-3-2-1-0
原理圖,示意圖
您可以在項(xiàng)目庫中找到這個(gè)序列的原理圖。我跳過了通常用于復(fù)合電路的限流電阻,并完全依靠每個(gè)IO引腳的內(nèi)部電阻。這可能超出規(guī)格,但從3V紐扣電池運(yùn)行時(shí),我從來沒有遇到過麻煩。我喜歡簡約的設(shè)計(jì):-)。
PCB
PCB是在KiCad中設(shè)計(jì)的。KiCad是PCB設(shè)計(jì)的一個(gè)很好的開源工具,我可以推薦使用!它甚至可以讓你的玩具只需點(diǎn)擊一下即可。
我試圖建立一些東西,看起來非常對稱。前面主要有水平痕跡,后面是垂直痕跡。PB5(復(fù)位引腳)連接到一個(gè)小按鈕,不連接到任何LED。在默認(rèn)的設(shè)置中,按鈕可以從關(guān)閉模式中重置/喚醒微小的視頻,并顯示一些動(dòng)畫。2分鐘超時(shí)后,再次進(jìn)入掉電模式,關(guān)機(jī)。在與RSTDISBL熔絲編程不同的設(shè)置中,這是一個(gè)微弱的IO引腳,編程為“關(guān)閉電源”,“打開”和“動(dòng)畫更改”。一個(gè)小引導(dǎo)程序允許通過PB5進(jìn)行串行電路編程 - 但這是一個(gè)不同的項(xiàng)目。
能量消耗
在激活模式下運(yùn)行一個(gè)動(dòng)畫,許多LED燈亮,我測量大約8-10毫安。在掉電模式下(關(guān)閉時(shí)),我便宜的萬用表顯示0.09μA - 如果我可以信任這個(gè)值,則不確定。但是數(shù)據(jù)表中,禁用WDT的掉電模式和Vcc = 3V,Icc最大為2μA。紐扣電池的自放電可能更高。如果沒有使用,可能會(huì)持續(xù)很多年。“如果”:-)。