本文作者李王,创客马拉松深大站参赛选手,深职院大二学生。本文详细介绍了他自己DIY的一款“8X8X8”点阵3D显示器(下图)的全部制作过程。
3Dcube8(光立方)是一个由LED组成的3D显示器,是一个集实际型 、经济型、性价比高的艺术品, 它不仅仅局限于装饰,更是能够帮助更好的学习C语言实际应用、满足单片机爱好者对单片机的研究的个好工具。3Dcube8有多种规格,常见的有单色4*4*4、单色8*8*8、RGB全彩光立方等。其中前者是这之中最简单的,制作难度和成本最高的是采用RGB的全彩光立方,这里我选择制作单色8*8*8。
1、项目材料简介:
Led的选择:市面上有很多种发光二极管,按形状分方形和圆形草帽状、按效果又有高亮雾面等区别。考虑到美观和降低制作难度,我选择了3mm长脚高亮雾面发光二级管,长脚的最大优势就是可以作为支架,省时省力。
驱动方式利用人眼视觉暂留特性,利用逐层扫描的方式,来达到显示各种图案的目的。常见的coms锁存器(cmos发热低,优先选择)有74hc573和74hc595,前者为并入,后者串入。因为不需要光立方的级联设计,所以采用573锁存器。
主控芯片选择较多,有常见的AVR、STC、ARDUINO 等。根据之前学过的课程,我们决定采用stc系列的STC89c5A60S2增强型单片机作为主控芯片。之所以不选89C52等芯片,不是因为他们的运算速度不够,主要原因是它们的片上flash太小,难以满足需求,其次是因为自己有闲置的STC89C5A60S2,片上内存大,运算速度1T,即充分利用资源节省成本,又可以实现所需要的功能需求。最后就是附属配件 usb转ttl串口的stc下载线。选择采用cp2102作为usb转串口芯片方案,下载STC单片机完胜PL2303方案,最高下载速度可达115200波特率。
2、详细制作步骤
一. 电路设计
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)
到了这里,我们的单色8*8*8光立方也就结束了,套上外壳并插上电源,期待已久的画面瞬间亮瞎了我的眼睛 好咯,接下来让我们一起来欣赏那动人的画面
视频演示:
项目补充:
1. 测试方案
a、在8片点阵屏搭建完成之后采用点阵屏整面点亮方式检查每一面LED的通电情况,有过亮、过暗或者完全不亮的及时拆换。
b、检查电路板的焊点和飞线是否有虚焊或者漏焊情况,元件正负极有无颠倒情况。
c,、电路组装采用整体组装整体测试方式。
d、烧录测试程序,检查光立方的全亮状态下有没坏点。
2. 注意事项
a、搭建LED一定要主要,焊接温度和静电问题!
以上情况,会照成LED损坏,和LED微亮的情况。
(距离LED灯头 3mm左右 电烙铁 放在上面加锡。5-10秒LED就会坏的,尽量焊接一个点在3秒左右,就算一次不成功也没事等他冷却了,在焊接)。电烙铁接地处理里没有地的,在电烙铁头铁壳上绑一根电线,脚踩在水泥地板上线踩在脚下。
b、 LED的间距
LED间距为20M,就是刚刚好标准洞洞板9个孔间距。
3.后期制作
在后期,我们将继续对光立方进行更深入的研究与制作,做出更大更绚丽的光立方。
全球创客马拉松北科大站现已火热开启报名!详情请点招募帖。关注硬创邦微信公众号,回复“北科大”即可参与报名!