3Dcube8(光立方)是一个由 LED 组成的 3D 显示器,是一个集实际型 、经济型、性价比高的艺术品, 它不仅仅局限于装饰,更是能够帮助更好的学习 C 语言实际应用、满足单片机爱好者对单片机的研究的个好工具。3Dcube8 有多种规格,常见的有单色 444、单色 888、RGB 全彩光立方等。其中前者是这之中最简单的,制作难度和成本最高的是采用 RGB 的全彩光立方,这里我选择制作单色 888。
项目材料简介
LED 的选择:市面上有很多种发光二极管,按形状分方形和圆形草帽状、按效果又有高亮雾面等区别。考虑到美观和降低制作难度,我选择了3mm长脚高亮雾面发光二级管,长脚的最大优势就是可以作为支架,省时省力。
驱动方式利用人眼视觉暂留特性,利用逐层扫描的方式,来达到显示各种图案的目的。常见的 coms 锁存器(cmos 发热低,优先选择)有 74hc573 和 74hc595,前者为并入,后者串入。因为不需要光立方的级联设计,所以采用 573 锁存器。
主控芯片选择较多,有常见的 AVR、STC、ARDUINO 等。根据之前学过的课程,我们决定采用 stc 系列的 STC89c5A60S2 增强型单片机作为主控芯片。之所以不选 89C52 等芯片,不是因为他们的运算速度不够,主要原因是它们的片上 flash 太小,难以满足需求,其次是因为自己有闲置的 STC89C5A60S2,片上内存大,运算速度 1T,即充分利用资源节省成本,又可以实现所需要的功能需求。最后就是附属配件 usb 转 ttl 串口的 stc 下载线。选择采用 cp2102 作为 usb 转串口芯片方案,下载 STC 单片机完胜 PL2303 方案,最高下载速度可达 115200 波特率。
详细制作步骤
电路设计
1. 软件部分
实验环境:AD13,
该部分我们在 altlium designer 13 上完成,及用 altlium designer 13 画出所有原理图,然后生成 PCB,最后将 PCB 图发给工厂,制造出对应的电路板.
a. 控制模块——单片机最小系统
b. 驱动电路—— p 口接 8 片 573le 端
在驱动电路上,图中的电阻都是 150r 的限流电阻,限流电阻 130r 为理论值.大于这个小于这个都可以。限流电阻 r=(vcc-vf)/i,Vcc 电源电压,Vf 为 LED 的正向电压降,I 为 LED 的工作电流,I 大了,就亮,小了就会偏暗。
到此,光立方的原理部分就结束了,接下来就该做 PCB 部分了.全部原理图如下图所示:
c. PCB 图的生成
我们将完成的原理图(图4)导入到 PCB 项目里,并进行合理的布局,然后开始布线,最后覆铜(如图5,图6)保存文件并将文件发给 PCB 板制造工厂。接下来就是短暂的等待。
在此期间我们可以进行下一步的制作。
2. 硬件部分
a. 显示电路 —— LED 点阵屏的制作
现将选定的 LED 灯弯曲成图7的样子,再按照图 8 将 LED 灯焊接在一起,一共需要焊接512个,共 8 片,每片 64 个。单片焊接完成如图 9,图 10, 8 片焊接结束如图 11 图 12。将 8 片 LED 按照 8X8X8 排列在一起,如图 13 图 14。
将 LED 灯焊接完成后,相信我们定做的 PCB 板也完成了,那么接下来我们开始焊接电路板,因为电路板上都是贴片,元器件非常小,所以在焊接过程中我们可以选用镊子夹住元器件,先在电路板上固定一只管脚,在逐一将其焊接……
到此,我们的焊接部分全部结束,接下来又要开始软件部分,不过在进行软件部分以前,我们需要吧焊接好的 LED 灯插入到 PCB 正面上的排母里,如图 17、图 18。
3.软件部分
所需软件:keil4.0、STC-ISPv4.80
这里主要是将程序烧录到单片机内,当然,这需要经过很多次的调试才能完成,呈现出自己想要的效果,感觉这是一个巨大工程,不过只要有恒心,一切都不是事,哈哈……下图是程序中的一小小小部分
补充:程序的设计分为4部分
1. 初始化部分
主要是设置对应的中断,定时工作方式。
2. 显示部分
把立方体看作 8 位数码管,每个面即为一个数码管,每个面的显示原理是和 8X8 点阵是完全一样的,保证这段程序正确的,可以直接调用。查表的方式是自 0 起递增的,每次加 1,每个画面查表 64 次。当然,实际的情况是要小于 65536 的,控制程序的代码也会占用 rom 空间,就会导致了画面次数减少,所以,要想在有限的空间内显示更多的画面,就得尽量把程序写的简短。c 语言可以直接定义 16 位变量。
3. 中断部分
为了达到动画效果切换时间可准确调节性,画面的切换用中断方式。把时间通过一个变量来表示,这样每次只需修改一个变量,就可以设置动画的速度了。每次发送中断后,查表的变量就加 64(i=i+64),然后返回显示程序继续显示,中断程序只做变量的计算,改变的是查表的地址。
4. 循环
程序循环,循环的条件是 i 变量不满足动画显示的上限值。比如做八个画面,那么i的的值不满足 8X64 时,就继续显示,满足就清零从新开始。
显示循环
主题的显示程序,应该是一个死循环,一直在显示一个画面,只有中断产生的时候,改变了查表的变量,才切换一次动画。每个画面都显示后,注意修正变量,能使其显示同一个画面,不管是查表的变量还是 Z 轴,Y 轴的控制变量,都要进行初始化,直到中断的产生才改变查表的变量数值。
经过多次反复的调试,终于成功了,达到了我们想要的结果,可是那么高大上的东西,总要有个外壳吧,为了方便,实惠,我们选用3D打印机自己做咯,首先我们 3D 建模软件(这里使用 soildwork,也可以使用其他,如 3DMax 等)画出相应尺寸的模型(如图 19 然后使用 cura 设定打印参数,最后将文件导入打印机,开始打印,几个小时之后,就可得到我们想要的模型了,如图 20)
到了这里,我们的单色 888 光立方也就结束了,套上外壳并插上电源,期待已久的画面瞬间亮瞎了我的眼睛好咯,接下来让我们一起来欣赏那动人的画面
项目补充
测试方案
a、在 8 片点阵屏搭建完成之后采用点阵屏整面点亮方式检查每一面 LED 的通电情况,有过亮、过暗或者完全不亮的及时拆换。
b、检查电路板的焊点和飞线是否有虚焊或者漏焊情况,元件正负极有无颠倒情况。
c、电路组装采用整体组装整体测试方式。
d、烧录测试程序,检查光立方的全亮状态下有没坏点。
注意事项
a、搭建 LED 一定要主要,焊接温度和静电问题!
以上情况,会照成 LED 损坏,和 LED 微亮的情况。
(距离 LED 灯头 3mm 左右 电烙铁 放在上面加锡。5-10 秒 LED 就会坏的,尽量焊接一个点在3秒左右,就算一次不成功也没事等他冷却了,在焊接)。电烙铁接地处理里没有地的,在电烙铁头铁壳上绑一根电线,脚踩在水泥地板上线踩在脚下。
b、 LED 的间距 LED 间距为 20M,就是刚刚好标准洞洞板 9 个孔间距。
后期制作
在后期,我们将继续对光立方进行更深入的研究与制作,做出更大更绚丽的光立方。