最近,门户网站上出现了有关创建LED立方体的文章。这些是可以形成三维图像的玩具,但是要进行较大的分辨率非常麻烦且耗时。大多数工作仅限于3x3x3格式,或者最好为5x5x3。一段时间后,我找到了原来的10个“地板”多维数据集,对其进行了一些还原,然后决定写出我在创建设备方面的经验。
我将第一个立方体焊接在2012年某个地方,作为礼物,其分辨率为4x4x4,它使用现成的电路和Internet上找到的程序。搬走之后,我决定为自己做同样的事情,但是将分辨率提高到5x5x5。他依靠现成的解决方案制作了电路,方法是完全复制向LED引脚施加电压的逻辑。我必须说,在那些立方体中,LED一直是MK得出的结论,所以我不得不选择MK的许多支腿,因为它们已经只需要25个列和5个行。在MK和LED之间的缝隙中,只有一个限流电阻,“地板”上的电压通过场效应晶体管流到地面。
然后我向Ebay订购了1000个二极管,并决定按照我的标准组装一个非常大的立方体。顺便说一下,我的小实验导致了一个事实,那就是最好的选择落在具有大辐射方向图的二极管上。它们并不像往常一样拉长,而是形成一个半球,几乎可以从各个角度看到它们的辉光,您可以根据要求找到它们。它们的价格更高,但它们的发光效果更出色。焊接立方体是另一项测试。在这里,与我的情况一样,我的好朋友帮助了我,因为我非常适应这种艰苦的工作。他们确实像其他所有人一样,在二极管的盖子上钻孔,并制作了10x10的矩阵。然后,我们分别焊接所有地板,并将它们彼此叠放。该过程耗时约三天,几乎没有在烙铁前坐下。
外壳由普通的有机玻璃制成,我们将其切割成激光切割。用Cosmofen PMMA胶粘,就像有机玻璃的专用胶一样,实际上,普通的强力胶并不会变差,但需要更高的准确性,因为如果您施涂的过多,就不可能将其洗掉。
在下部平台上,预先通过激光切割勾勒出100个LED孔。用螺丝刀轻松钻孔,小心地将焊接好的立方体浸入其中,然后从下面焊接适配器。
另外,要隐藏电子设备,我必须调整立方体的底部并为其着色。这项任务很简单,主要是我们从过去的绘画一个小立方体的经验中学到了-您需要以一定的角度(最好是从上到下)进行绘画,以便在重力的影响下该油漆不会渗透到脸上的胶合间隙中。
现在剩下的事情就是弄清楚如何将立方体和底座固定在装饰盒中。必须在与喷漆部件的连接处用孔固定平台。为此,切割了带有旋入螺钉的有机玻璃小方格。它们必须做得很小,以至于二极管的立方体可以“蠕变”到正确的位置。广场上充斥着强力胶,保持了出色的状态。在平台本身上也钻了孔,并用螺母固定了立方体。
哦,是的,我们仍然需要谈谈焊接后如何清洁它。他们分别使用LTI 120焊接了一个立方体,所有的二极管都是由松香制成的黄色斑块。没有这么大的超声波浴,甚至都没有用刷子手动清洗。顺便说一下,二极管会因丙酮而变得有点混浊,这是不可接受的。通过反复试验意外发现了该溶液-氨水。我们将其从以前的玻璃清洁剂中装入容器中,然后在立方体上膨化。然后等待五分钟,然后用水冲洗。再说一遍,氨水-大约有四种方法,立方体闪闪发亮。
在最终组装之后,多维数据集采用以下形式:
不幸的是,电子设计过程并没有经过深思熟虑,结果,他们以类似于旧立方体的方式焊接了基体,地板上有一个公共阴极,而二极管的阳极则点燃了圆柱。从向色谱柱提供大电流的角度来看,该解决方案不是很有利,因为如果在5层立方体中足以提供一个电流以获得良好的亮度,那么在10层立方体中,至少需要2倍以上。我对此问题并没有考虑太多,第一板是使用众所周知的移位寄存器74hc595创建的,因为我已经有使用它们的经验。开关任务由AtMega128 MK执行,场效应晶体管控制地板上的电流。
密封好所有元件并使用相同的电阻器后,我编写了一个简单程序,震惊于只能在黑暗中愉悦地观看立方体。下午,它的亮度不合适,软件方法也无法解决。这个问题并不复杂-我认为并密封了标称值较低的电阻器,希望二极管能得到约70mA的电流。接通电源后,失望情绪进一步加剧-立方体几乎什么也没显示,只点亮稀有的二极管,但它很亮。在74hc595处打开数据表后,一切都变得很清楚-输出端的电压已针对不超过8 mA的电流进行了标准化,并且流经接地和电源线的总电流不应超过70 mA。这绝对不适合我们。他开始研究适合此任务的微电路。在我们的南部首都,几乎没有可用的产品,在所有设计用于大电流的微电路的数据表中,我开始注意到一个令人讨厌的问题-它们都在最后的级联中包含一个达林顿对,并且根据数据表中的方案将输出触点接地。对于我们的立方体配置,阴极位于地板上,这不合适。看了流行的uln2003的电路并看了LED矩阵驱动器上的类似物后,我意识到该解决方案无法以任何方式应用:
我认为,稍后研究了流行的芯片的设计后,我决定通过一个功能强大的晶体管和具有以下特性的列将其应用于地板更容易使用ULN2003,抛开地面,即制作一个带有公共阳极的立方体图。渴望找到解决方案的多维数据集被无限期地推迟了,一次事件突然需要它。我们有三天的时间以正常亮度运行它。他们提出了一个简单的解决方案-在每个74hc595输出上,我们都挂起一个常规的晶体管键,并反转程序中的位。一包已经和EBAY在一起很长时间的简单BC846B的包装被打开包装,董事会迅速离婚。
原来很麻烦,但是微控制器已从中移除。仅在旧板上,我们将三根控制线传递给了新的控制线,以防将来将来切换至stm32或另一种电路解决方案。连接所有结论后,多维数据集启动,并以出色的图片使我们感到高兴。
我在任何地方都找不到此类程序的源代码,而且我的写作技巧远非理想。但是结果已经实现,因此我将简要描述该算法。该程序当时是用CodeVision编写的,效果通过酒店文件加载到主列表中。最初,编写了将十位二进制数分解为每行10个单独变量的子例程,然后将这100个变量发送到移位寄存器,清零和延迟以形成下限。所有这些导致了一种格式,该格式描述了我们在特定楼层上看到的内容(单位是发光二极管):a=0b1000000001;
b=0b0000000000;
c=0b0000000000;
d=0b0001111000;
e=0b0001111000;
f=0b0001111000;
g=0b0001111000;
h=0b0000000000;
i=0b0000000000;
j=0b1000000001;
addr();output_shift();
level1();
数字的类型为0b0001111000的细分是通过一种简单的算法进行的。if (a>0b0111111111) {
out[1]=1;
a=a-0b1000000000;
}
if (a>0b0011111111) {
out[2]=1;
a=a-0b0100000000;
}
等通过比较检查最高有效位是否为零或一。如果更多,则将寄存器变量设置为1并将该数字减少该位数。我们执行此操作十次,以选择一行的所有10个值,并将它们保存在移位寄存器的临时变量中,然后将其立即发送到显示器。描述移位寄存器的过程没有任何意义;它已经在许多地方进行了分解。然后,在描述了所有10个级别之后,将所有这些驱动到一个动态显示例程中,在此过程中,将整个周期重复所需的次数(为每个帧设置每个帧的时间)以欺骗人眼。当然,对于大型立方体,编写效果可能会变成一种折磨,您需要制作一个计算机界面。但是对于我们来说,我迅速编译了几种效果,然后将其扔到avrmega128 MK中,几乎占据了闪存的20%。当然,这是没有最终视频的3D立方体。不幸的是,我没有设法在相机上进行设置来传达立方体的色彩,然后二极管彼此融合,有时它们太暗了,我交替使用动作相机进行拍摄。我希望我们在创建多维数据集和允许的错误方面的经验对某人有用,因为我们大约在两年前就这样做了,所以关于这种设备的信息很少。最近,我在地下室找到了它,清洗后放在我的商店里,所有顾客都喜欢,每个人都问他们在哪里买的,并且几乎总是花几分钟观察效果。