体三维显示器-PCB部分-LED阵列

少女dtysky

世界Create

时刻2015.02.18

体三维显示器的PCB工程:
https://github.com/dtysky/Led_Array

体三维显示器为真三维显示的一种,即可以在真是的空间内显示一个三维的图像,图像占据一个真实的三维空间,不需要借助任何辅助视觉器件,我采用的方案是二维LED点阵的旋转,LED点阵为自行设计,这里记录了LED阵列的设计心得。


1.指标

既然要设计一个LED点阵,要考虑的无非就是颜色、大小、密度、亮度,以及无法避免的成本问题了。 对于这些指标,当然是越高越好,比如全彩、1080p、400ppi、高亮啥的,一开始我也是这么想的,但越往后设计越感受到自己的天真。

1.密度:
对于密度而言,通常的led封装到0402已经是封底了,而0402LED的大小能达到的最高密度也就是1/(0.4x0.2)=12.5ppi,而且这个理论密度是根本不可能达到,因为我们必须要为焊盘与布线预留间距(国内PCB打样厂的线宽线距一般要求不低于0.2mm),so...吹了

2.大小:
PCB的大小直接受到密度和成本的限制,对于PCB而言成本主要收到层数、大小和孔数的限制,再加上板子最后是要被电机带动旋转的,所以太大将会有风阻和力矩等问题。当然,最后选择的120x114(要知道这个分辨率的LED数量是1w+)实际上还是大了(以我当时的水准驾驭程度和成本的综合考虑而言是相当冒险的)。那么为什么我还要选择这么大的分辨率呢?当然是为了爱,因为当时实验所得这个分辨率下刚好可以显示一个萌妹子的轮廓www。

3.色彩:
颜色方面也是十分尴尬,能实现全彩自然是好的,但对于一个体三维显示器,彩色要考虑的事情非常多。
首先需要明白,RGB的LED的色彩是通过不同色彩通道的光混合而成,如果仅仅依靠“亮”与“不亮”来进行调色,三个通道最多出现8种颜色的光,更多的色彩是通过PWM来实现的,即调节一个大周期内每个通道的光的占空比,也就是调节每种颜色的光在一个发光周期中的能量(平均功率),这一点直接回影响控制器件的选择,因为如果想要实现全彩就必须在一个发光周期内至少进行256次PWM输出,加上LED扫描(后面会提到)的所占用的周期,这个要求的速度是比较高的,就算先不考虑控制部分,这一点也直接影响了LED的亮度,不停的变换会让LED的有效亮度减少,由于环境光的影响,LED的亮度将会随着扫描次数(包括色彩调节)大幅下降,由于分辨率已经定的比较大,导致扫描已经占用了不少周期,如果在这种情况下再加上色彩调节,不但会使亮度可能下降到一个不可见的等级,就算可见,色彩在此等亮度下可分辨的程度也是极低的,毫无意义。
当然我们说如果换一种扫描方式,加上优秀的供电(LED的接受电流极限一般是几ma到几十ma)和牛X的LED(最高亮度可达几千LM),全彩也不是不可能,但这时候就会遇到其他的问题了——钱,和PCB布局的难度。
对于一个全彩LED显示电路,6层的PCB是至少的(想要完全解决EMIEMC问题),而EMIEMC问题的解决是需要大量经验和理论的,本人无能,暂时无法解决。同时对于PCB工艺的要求也比较高,再者全彩SMD LED的价格比较高,PCB的价格又是随着层数成几何级上升的,对于一个新手而言失败概率极高,所以对于当时作为一个菜鸟的我,还是妥协了。
综合考虑,我选择了0603单色翠绿的LED,灰度暂时没有考虑。

4.亮度:
亮度虽然在上面说过了,不过还是有其他的部分没有提到。
亮度不仅仅要考虑LED本身,还要考虑供电部分,一开始是准备直接用控制芯片的IO脚来驱动LED,但很快就被否决了。由于显示条件的限制,我并不可能给每一个LED都加上单独的驱动源,所以肯定是以行扫描或者列扫描的方式来驱动,这也就是说每一行LED共阳,每一列LED共阴。
在这种情况下,驱动电流明显不够不说,每个引脚都以最大功率输出会使得芯片整体负载过高。
所以我只有进行迂回战术,选用中转的电源来驱动LED电路,这将会在下面说明。


2.设计

指标了解之后便可以开始电路设计。

1.LED:
LED是显示的核心,目标是亮度高、功耗低、便宜,最终我选择了国内某厂的LED,其最大电流是20mA,亮度也算可以。

2.驱动源:
由于不能够用控制芯片的IO脚驱动,但仍然要用其进行控制,所以我们需要考虑用间接的方法实现IO脚对LED的控制,这样我们就会自然地想到三极管,用PMOS作高端驱动控制阳极,NMOS做低端驱动控制阴极,MOS管的栅极链接到IO上,便可以实现IO对LED的间接控制,这样也解决了LED供电不足的问题。
当然,MOS管的选取需要考虑到LED的驱动电压和IO的输出电压,否则阈值范围不匹配就完蛋了www

3.电源:
电源部分的要求是稳定和足够的功率,在本例中可以预见到的最大瞬时电流输出为3.3V下的120x20=2.4A,我选择的是TI的某个电源模块,最大输出电流5A,宽电压输出,使用简单,十分满足需求。
这里提一下良心的TI,一百来块的东西就这么随便申请成功还包顺丰www

4.电路:
综合下来,LED、电源、MOS管全部选型完毕,接下来就是实际电路的设计了。
实际电路设计要考虑到的东西不少,但最主要的还是以下几点:

  1. 器件间距: 每个器件的焊盘肯定是不能够直接在一起的,而且厂家也有最低间距限制,所以必须确定好器件间距。
  2. 线宽线距: 和上面出于相似的考虑,而且走线相比器件而言,更多地不是工艺而是干扰等问题。
  3. 电源网络线宽: 这个单独拿出来说是因为电源网络比较特殊,一般的走线不需要考虑电流大小的问题,而电源网络由于电流很大不得不考虑,网上有专门的计算器,可以用来估算一下,给电源网络一个比较宽的线宽。那么如果线宽受到板子的限制无法加宽怎么办?方法还是有的,也是我所采用的保险措施——将电源网络的铜皮裸漏出来,放在丝印层之上,这样可以手动给它加锡,从厚度上解决问题。
  4. 孔径:过孔的直径,主要约束因素也是电流大小,同样可以通过计算器来计算,另外厂商也有一定的限制,比如内孔0.2mm,外孔0.3mm。

设计结束后便可以开始绘制电路板了。


3.生产

生产的第一步是电路板绘制,首先是原理图的设计,这点不在赘述,教程可以看本博客的PCB系列帖子,需要注意的是以下几点:

1.布局布线:
LED的数量达到五位数的级别,手动布局是完全不可取的做法,面对此等难题只能够借助于自动化的工具,好在Allegro支持脚本,所以我选择了用Python生成了.scr脚本,之后再运行脚本即可,脚本的内容如下:

add  connect;
pick  201.3  424.3;
pick  201.3  423.7;
done;
add  connect;
pick  203.3  424.3;
pick  203.3  423.7;
done;
add  connect;
pick  205.3  424.3;
pick  205.3  423.7;
done;
add  connect;
pick  207.3  424.3;
pick  207.3  423.7;
......

这样一来,五位数的约束性“半自动布局”便很快完成了(其实也用了一个来小时),接下来可以用同样的方式去布线,整体的板子很快就可以完成:
layout

2.模块化:
分割越细查错越容易,这是不变的真理,面对如此庞大的一个设计,模块化是必须的。
我将LED阵列作为了一个模块,将所有控制引脚全部引出到排针,降低风险。

3.个性化:
好不容易做出了个大东西,而且是个人的作品,你是否想要加点个性标志呢?
对于我而言当然是想的,而且是非常想,所以我花了一些功夫研究如何在PCB上印图案,也获得了成功,具体的方法将会在PCB教程系列写到。

4.打样:
联系打样厂家,注册账号,上传完整的设计文件(包括各层的Gerber文件、钻孔文件),算清费用,之后等待几天便拿到了产品。我这个板子的打样费总共1K+

5.贴片:
这么多的SMD芯片不可能自己焊,我找了一家贴片厂去进行焊接。
由于只是个人的一个板子,一般的厂家是不给焊的,最后好不容易连蒙带骗游说了一家,为我进行了焊接。
当然最后板子来回几次后还是有问题,我也懒得继续纠缠了,再继续下去说不定有更多其他的岔子,所以我保守了一下。
板子贴片费2K6。


4.总结

板子总共花费约5K,整体良好,有些许行列的MOS管缺焊。
说实话,作为一个菜鸟的第一块板子,我感到十分庆幸。
板子如下:
pcb

如果不是自己的创作,少女是会标识出来的,所以要告诉别人是少女写的哦。