描述
这是一个小小的闪烁,由一个CR2032硬币电池
和一个ATTiny45大脑驱动的20个LED 。固件是用纯C编写的,并
用avr-gcc工具链编译。PCB是由
KiCad 制成的两层设计 。
细节
前一段时间,我正在考虑如何缩小LED闪烁。第一个显而易见的步骤是从3毫米的LED到SMD。但是,在焊接时喜欢与焊桥短路的LED之间仍然存在这样的微小间隙。我们能否以某种方式避免这种差距?如果我们将每个阳极连接到LED链中的前一个LED的阴极,我们是否仍然可以单独寻址每个LED?因为每个LED一个GPIO不是一个选项。它必须像charlieplexing一样。所以我开始草绘拓扑。
使用charlyplexing时,每个可能的GPIO引脚对用于两个LED(极性相反)。例如,在2个引脚(引脚0和引脚1)的情况下,一个LED的阳极连接到引脚0,阴极连接到引脚1,第二个LED的阳极连接到引脚1,阴极连接到引脚0。简而言之:LED1:0-1,LED2:1-0。随着更多的IO引脚,你有更多的对,可以解决更多的LED。有3个IO,已经有6对:0-1,0-2,1-0,1-2,2-0和2-1。一般来说,用n个IO可以建立n *(n-1)对。到目前为止,这是Charlieplexing。
像往常一样,如果你知道如何,这很简单。但是花了一些时间才能达到这个目的:我们可以像多米诺骨牌那样连接这对,来构建一个链。再次,我们可以用3个IO来创建链:(0-1)(1-2)(2-0)(0-2)(2-1)(1-0)或者short 0-1-2-0 -2-1-0。一个LED的阳极和下一个LED的阴极使用相同的IO引脚。瞧,他们可以焊在同一个垫上!对于更多的IO,找到构建每个可能对的IO对序列有点困难。但总有一个。我真的很喜欢这个LED菊花链焊接的简单性和简单性。给我留个便条,当你用这种技术建立下一个美丽的闪烁!
对于LED环,我使用5个来自ATTiny45的IO来指示20个LED,这是最多5个IO的LED:n *(n-1)= 5 * 4 = 20。用于这个的序列是:0-1- 2-3-4-0-2-4-1-3-0-3-1-4-2-0-4-3-2-1-0
原理图,示意图
您可以在项目库中找到这个序列的原理图。我跳过了通常用于复合电路的限流电阻,并完全依靠每个IO引脚的内部电阻。这可能超出规格,但从3V纽扣电池运行时,我从来没有遇到过麻烦。我喜欢简约的设计:-)。
PCB
PCB是在KiCad中设计的。KiCad是PCB设计的一个很好的开源工具,我可以推荐使用!它甚至可以让你的玩具只需点击一下即可。
我试图建立一些东西,看起来非常对称。前面主要有水平痕迹,后面是垂直痕迹。PB5(复位引脚)连接到一个小按钮,不连接到任何LED。在默认的设置中,按钮可以从关闭模式中重置/唤醒微小的视频,并显示一些动画。2分钟超时后,再次进入掉电模式,关机。在与RSTDISBL熔丝编程不同的设置中,这是一个微弱的IO引脚,编程为“关闭电源”,“打开”和“动画更改”。一个小引导程序允许通过PB5进行串行电路编程 - 但这是一个不同的项目。
能量消耗
在激活模式下运行一个动画,许多LED灯亮,我测量大约8-10毫安。在掉电模式下(关闭时),我便宜的万用表显示0.09μA - 如果我可以信任这个值,则不确定。但是数据表中,禁用WDT的掉电模式和Vcc = 3V,Icc最大为2μA。纽扣电池的自放电可能更高。如果没有使用,可能会持续很多年。“如果”:-)。