电路

如何构建一个8x8x8 LED立方体并使用Arduino控制它:7个步骤(带图片)

目录:

Anonim

Instructables上有很多LED立方体,为什么还有另一个?大多数用于由27或64个LED组成的小型立方体,由于它们仅限于微控制器上可用的输出数量,因此很少大。这个立方体将是512个LED,只需要11个Arduino输出线。这怎么可能?使用Allegro Microsystems A6276EA LED驱动器。
我将告诉你我是如何制作立方体本身,控制器板,以及最后使代码发光的代码。


供应:

第1步:材料

构建多维数据集所需的所有部分:
1个带有Atmega168或更高芯片的Arduino / Freeduino
512个LED,尺寸和颜色由您决定,我使用3毫米红色
Allegro的4个A6276EA LED驱动芯片
8个NPN晶体管来控制电压流,我使用了BDX53B达林顿晶体管
4个1000欧姆电阻,1/4瓦或更高
12 560欧姆电阻,1/4瓦或更高
1个330uF电解电容器
4个24针IC插座
9个16针IC插座
4“x4”(或更大)的穿孔板,用于固定所有零件,
一个旧电脑迷
一个旧的软盘控制器电缆
一台旧电脑电源
很多连接线,焊料,烙铁,焊剂,其他任何东西
这样做可以让你的生活更轻松。
用于制造LED焊接夹具的7“x7”(或更大)木材
一个很好的案例来显示你完成的立方体
我选择的Arduino / Freeduino是来自www.moderndevice.com的Bare Bones Board(BBB)。这些LED是在eBay上购买的,从中国发货的1000个LED售价23美元。剩余的电子产品是从纽瓦克电子公司(www.newark.com)购买的,价格仅为25美元左右。如果你必须购买所有东西,这个项目只需要花费100美元左右。
我有很多旧的计算机设备,所以那些零件从废料堆中脱落。

第2步:组装图层

如何制作这个512 LED立方体的1层(64个LED):
我买的LED直径为3mm。我决定使用小型LED来降低成本,并使立方体的最终尺寸足够小,可以放在我的桌子或架子上,而无需完全占据桌面或架子。
我绘制了一个8x8网格,线条之间大约有0.6英寸。这给了我一个每边大约4.25英寸的立方体尺寸。钻出3mm的孔,在这些孔的相遇处形成一个夹具,当您焊接每一层时,该夹具将固定LED。
A6276EA是一款电流吸收器件。这意味着它提供了接地路径,而不是源电压路径。您需要在共阳极配置中构建立方体。大多数立方体都是共阴极。
LED的长边通常是阳极,请检查以确保。我做的第一件事是测试每个LED。是的,这是一个漫长而无聊的过程,如果你愿意,你可以跳过它。我宁愿花时间测试LED,也不愿在组装后找到我方块中的死点。我在1000中找到了1个死LED。还不错。
将11片坚固的非绝缘连接线切成5英寸。将1个LED放入夹具中每排的一端,然后将导线焊接到每个阳极。现在将剩余的6个LED放入排中并将这些阳极焊接到电线上。这可以是垂直或水平,只要您以相同的方式执行所有图层就没关系。完成每一行后,修剪阳极上多余的导线。我离开1/8“左右。
重复,直到你完成所有8行。现在,在您刚刚制作的行上焊接3条挂钩线,将它们全部连接成一个整体。然后,我通过将5伏电压连接到电池上来测试该层
通过电阻器连接导线晶格并接触每个阴极的地线。更换任何不亮的LED。
小心地从夹具上取下层并将其放在一边。如果弯曲电线,请不要担心,只要尽可能地将它们拉直。弯曲很容易。从你的照片中我可以看出,我有很多弯曲的电线。
恭喜你,你完成了1/8。再制作7层。
可选:为了使这些层焊接在一起(步骤3)更容易,而每个后续层仍然在夹具弯曲中,阴极的前四分之一英寸向前45至90度。这将允许
导致触及它所连接的LED周围,并使焊接更容易。不要对你的第一层执行此操作,我们将声明一个是底层,并且引线必须是直的。

第3步:组装多维数据集

如何将所有层焊接在一起以制作立方体:
困难的部分几乎结束了。现在,小心地将一层放回夹具中,但不要使用太大的压力,我们希望能够在不弯曲的情况下将其移除。第一层是立方体的顶面。在第一层顶部放置另一层,将引线对齐并开始焊接。我发现最简单的方法是首先进行角落,然后是外边缘,然后是内部行。
继续添加图层,直到完成为止。如果您预先弯曲引线,请确保使用直线引线保存最后一层。它是底部。
我在每一层之间有太多空间,所以我没有得到立方体形状。没什么大不了的,我可以忍受它。

第4步:构建控制器板

如何构建控制器板并将其连接到Arduino:
按照原理图并按照您的选择构建电路板。我将控制器芯片放在电路板的中心,用左侧固定控制电流的晶体管到立方体的每一层,并用右侧固定从控制器芯片到阴极的连接器。 LED柱。
我发现了一个旧的40毫米电脑风扇,带有一个女性molex连接器,可将其插入计算机电源。这很完美。通过芯片的少量气流是有用的,我现在有一种简单的方法可以为控制器芯片和Arduino本身提供5伏电压。
在原理图中,RC是连接到每个A6276EA的所有LED的限流电阻。我使用了1000欧姆,因为它为LED提供了5毫安,足以点亮它。我使用的是高亮度,而不是Super Brite LED,因此电流消耗较低。如果一列中的所有8个LED同时点亮,则仅为40毫安。 A6276EA的每个输出可以处理90毫安,所以我在范围内。
RL是连接到逻辑或信号引线的电阻。只要存在并且不是太大,实际值就不是很重要。我使用560欧姆,因为我有一堆可用。
我使用了一个能够处理高达6安培的功率晶体管来控制流向立方体每层的电流。这对于这个项目来说太过分了,因为立方体的每一层只能在所有LED点亮的情况下绘制320毫安。我想要增长的空间,可能会使用控制器板来获得更大的功能。使用适合您需求的任何尺寸晶体管。
电压源上的330 uF电容可以帮助消除任何微小的电压波动。由于我使用的是旧的计算机电源,这不是必需的,但我留下它以防万一有人想使用5伏墙式适配器为其立方体供电。
每个A6276EA控制器芯片有16个输出。我没有任何其他合适的连接器,所以我将引线焊接到一些16针IC插座,并将使用它们将控制器板连接到立方体。我还将IC插座切成两半,并用它连接将晶体管连接到立方体层的8根导线。
我从旧软盘电缆的末端切下约5英寸,用作Arduino的连接器。软盘电缆是2排20针,裸骨板有18针。这是一种非常便宜的方式(免费)将Arduino连接到电路板。我将带状电缆分成2组电线分开,剥去两端并将它们焊接在一起。这允许您将Arduino插入连接器的任一行。按照原理图将连接器焊接到位。不要忘记为连接器焊接5伏和接地引线,为Arduino供电。
我打算将这个控制器板用于其他项目,因此模块化设计对我来说很有效。如果你想硬连接连接,那很好。

第5步:构建展示柜

让您的最终产品看起来不错:
我在Hobby Lobby以4美元的价格找到了这个木箱,并认为它很完美,因为它里面有空间可容纳所有电线,而且看起来不错。我染了一个红色,我在电脑桌上使用的同样的污渍,所以它们匹配。
在网格上绘制与用于焊接夹具的网格尺寸相同的网格(线间距离.6英寸)。钻孔以使引线穿过顶部,并在栅格后面钻出另一个孔用于层/平面导线(来自步骤4中的晶体管)。我学到了很难的方法,试图排队64导致通过小洞非常困难。我终于决定重新钻一个更大的孔,以使过程更快。我最终使用了.2钻头。
现在,立方体位于显示器顶部,弯曲角落引线,以便在连接电线时立方体将保持在原位。确保以正确的顺序连接所有电线。
1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32
33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48
49 50 51 52 53 54 55 56
57 58 59 60 61 62 63 64
并连接各层之间的导线(原理图上标有“平面”)和晶体管。 Arduino引脚6上的晶体管是立方体的顶层。
如果你弄错了电线,它在代码中有些可纠正,但它可能需要大量的工作,所以尽量按正确的顺序进行。
好的,一切都已建好并准备好了,让我们得到一些代码并试一试。

第6步:代码

这个多维数据集的代码与大多数代码完全不同,我将解释如何适应。
大多数立方体代码使用直接写入列。代码说X列需要点亮所以给它一些果汁,我们就完成了。使用控制器芯片时,这不起作用。
控制器芯片使用4根线与Arduino通信:SPI输入,时钟,锁存和使能。我通过电阻(RL)使Enable引脚(引脚21)接地,因此始终使能输出。我从来没有使用过Enable,所以我把它从代码中删除了。 SPI-in是来自Arduino的数据,Clock是两者在通话时的定时信号,而Latch告诉控制器它是接受新数据的时候。
每个芯片的每个输出由16位二进制数控制。例如;将1010101010101010发送到控制器将导致控制器上的每个其他LED点亮。您的代码需要运行显示所需的所有内容并构建该二进制数,然后将其发送到芯片。它听起来比听起来容易。从技术上讲,它是一堆按位添加,但我在按位数学上很糟糕,所以我用十进制做所有事情。
前16位的十进制如下:
1 << 0 == 1
1 << 1 == 2
1 << 2 == 4
1 << 3 == 8
1 << 4 == 16
1 << 5 == 32
1 << 6 == 64
1 << 7 == 128
1 << 8 == 256
1 << 9 == 512
1 << 10 == 1024
1 << 11 == 2048
1 << 12 == 4096
1 << 13 == 8192
1 << 14 == 16384
1 << 15 == 32768
这意味着如果要点亮输出2和10,则将小数(2和512)一起添加到514.将514发送到控制器,输出2和10将亮起。
但是我们有超过16个LED,因此稍微困难一些。我们需要为4个芯片构建显示信息。这就像为1构建它一样简单,只需再做3次。我使用全局变量数组来保存控制代码。这样更简单。
准备好发送所有4个显示代码后,丢弃锁存器(将其设置为LOW)并开始发送代码。你需要先发送最后一个。发送芯片4的代码,然后是3,然后是2,然后是1,然后再次将Latch设置为HIGH。由于Enable引脚始终接地,因此显示会立即更改。
我在Instructables上看到的大多数立方体代码,以及一般的Web,都包含一个巨大的代码块来执行预设动画。这适用于较小的多维数据集,但每次要更改显示时需要存储,读取和发送512位二进制文​​件会占用大量内存。 Arduino无法处理超过几帧。所以我写了一些简单的函数来显示依赖于计算而不是预先设置动画的多维数据集。我添加了一个小动画来展示它是如何完成的,但我会留给你构建自己的显示器。
cube8x8x8.pde是Arduino代码。我计划继续向代码添加功能,并定期更新程序。
matrix8x8.pde是Processing中用于构建自己的显示的程序。给出的第一个数字进入pattern1 ,第二个进入pattern2 等。
A6276EA的数据表可在以下位置获得:
http://www.allegromicro.com/en/Products/Part_Numbers/6276/6276.pdf

第7步:展示您的手艺

你已经完成了,现在是享受你的立方体的时候了。


正如你所看到的,我的立方体出现了一点弯曲。我不是很热衷于建造另一个,所以我会忍受它弯曲。我有几个死角,我需要调查。这可能是一个糟糕的连接,或者我可能需要一个新的控制器芯片。
我希望这个Instructable能够激发您使用A6276AE构建自己的立方体或其他LED项目。如果您构建一个链接,请在评论中发布链接。
我一直在努力决定从这里开始。控制器板还将控制4x4x4 RGB立方体,因此这是可能的。我认为做一个球体和编写代码的方式都很简洁,做起来并不难。