摘 要: 基于人眼视觉暂留特性及LED 的高速发光特性, 设计了一套LED 体三维显示系统。首先利用Matlab 生成三维数据, 通过红外模块传输到显示驱动电路; 其次快速旋转LED 阵列, 由角度编码器获取旋转角度值, 并根据角度值计算对应的二维截面图形; 最后通过调制LED 的发光与消隐实现相应的显示。该系统基于24×16 二维LED 阵列, 具有69120个体像素, 实现了空间尺寸为Φ9414 mm ×66.8 mm 的稳定柱体内三维显示。
引 言
众所周知, 视觉是人类感知世界的最重要的方式, 而现实生活中的所有物质形态都是以三维空间而客观存在。三维显示能真正地再现客观世界的立体空间, 提供更符合人们观察习惯的交流方式, 有助于人们在综合运用各种深度暗示之后, 通过大脑的计算感知而获得真实、丰富、可靠的视觉体验, 对社会的发展以及在科技、经济等方面的发展具有重要的作用。
目前, 三维显示大致可以分为四类: 体视三维显示、全息三维显示、透视三维显示和体三维显示 ,其显示的原理和特点如表1 所示。
表1 各类三维显示原理及特点
本文通过旋转24×16 二维LED 阵列实现了具有69120个体像素, 空间尺寸为Φ9414 mm ×6618mm 柱体内的三维显示, 文中论述了系统的整体结构、显示原理及其各组成部分的实现方法。最后并以显示“茶壶”为例, 对此体三维显示系统进行了分析和讨论。
1 LED 体三维显示系统设计
1.1 整体方案
由于人眼具有视觉暂留的特性, 即人类视觉对亮度改变的跟踪会由于意识处理延迟而滞后。基于此特性, 利用电机驱动置于对称转轴两侧的发光二极管阵列, 使之高速旋转, 周期性地扫出一个柱体空间。同时, 寻址驱动控制电路根据需要调制不同时刻LED阵列的发光状态, 这样通过快速显示一幅幅二维图像截面序列来实现三维显示。由于人眼视觉暂留时间约为50~100ms, 当电机转速超过10r/s时, 人便不会有闪烁的感觉, 而是看到三维的立体图像。根据此原理可设计如图1 所示的LED体三维显示系统。
利用计算机生成三维数据再通过数据传输电路把数据传输到旋转驱动板上面的存储器中, 并且由角度编码器来测试电机的旋转角度并把信号送给FPGA , 然后由FPGA 根据采集的角度编码器输出信号驱动LED 屏显示并按时刷新LED 显示屏。同时, 整个旋转驱动板在电机的驱动下快速的旋转, 快速显示一幅幅二维截面图像来实现三维显示。
1.2 三维数据生成
利用Matlab 软件的强大功能, 首先可以通过im read ()、im f info ()、m eshgrid ()、m eshc () 和su rf ()等语句来实现具有灰度值的三维图像, 假设获得的三维图像角坐标为P (X0, Y0, Z0)。
令LED阵列旋转所得的圆柱空间中LED 灯的柱坐标为F ( r, H, z ) , 根据柱坐标与直角坐标的转换关系, 求得空间LED灯的三维直角坐标E (X 1, Y 1,Z 1) 可表示如下:
其中r, H, z 均为整数, 且有: - 12< r≤12, 0< H≤360, 0< z ≤16。
最后, 令D(X2, Y2, Z2) = P(X0, Y0, Z0) ∩E (X1, Y1, Z1 ) 求出该显示的L ED 灯的三维直角坐标, 以此作为三维数据的信息源。
从Matlab 610 版本开始,Mathworks 公司在软件中增加了设备控制箱( Instrument controltoolbox ) , 提供对RS2232/RS2485 通信标准的串口通信的正式支持。因此本系统使用该工具箱的serial 类及fopen、fw rite 等函数, 通过RS2232 串口并利用数据传输电路把获得的三维图像数据传输到LED 驱动电路板上。
1.3 数据传输电路
三维图像数据利用设备控制箱通过RS2232 串口后, 再利用红外编解码技术把数据传到旋转的LED驱动板上, 其整个数据传输的通讯结构图如图2 所示。
在单片机串口模块中选用电平转换芯片MAX232 芯片实现TTL 电平与RS2232 电平的双向转换, 从而把三维图像数据传送到单片机的串行接收端口RXD 上, 然后单片机再通过其发送端口TXD把数据送出。图中的调制与红外发射模块通过由N E555 芯片构成的多谐振荡电路调制成38 kHz 的载波信号, 最后利用红外发射管TSAL6238 以光脉冲的形式向外发送。为了保证红外接收数据的准确性,N E555 产生的振荡频率要尽可能接近38 kHz,所以在选择电阻电容时要选用精密的元件并保证电源电压的稳定性。
数据传输电路中的红外接收解调模块选择Vishay 公司的TSOP1738, 其内部电路功能已包括把接收到的载波频率为38 kHz 的脉冲调制红外光信号转化为电信号, 并由前放大器和自动增益控制电路进行放大处理。然后, 通过带通滤波器进行滤波, 滤波后的信号由解调电路进行解调。最后, 由输出级电路进行反向放大输出。
所以, 选用此红外接收模块只要把其数据输出直接送到FPGA 处理即可。经实验测定, 利用此红外传输电路传输数据, 速率最高可达1 kB/ s。
1.4 角度编码器与电机模块电路
本系统立体显示是通过快速显示旋转空间中的一系列二维截面来实现的, 把LED 屏旋转一周分成180 个截面, 即每转2°要刷新一次显示屏。为了准确刷新显示屏, 本系统选用角度编码器来识别显示屏转过的角度, 角度编码器通过测试电机旋转发出脉冲可识别电机的旋转角度。本系统选用的角度编码器型号为ZSP38062022G2360B25224E。此编码器旋转一周可输出360 个脉冲信号。这样电机每转2°, 角度编码器便可发出2 个脉冲信号,LED 显示屏控制系统通过计数采集的角度编码器输出脉冲数来控制刷新LED 屏。
同时, 利用角度编码器的输出脉冲再通过单片机的处理可测出电机的旋转速度, 并可送到数码管显示。此外, 单片机可对测得的电机速度进行判断,判断其是否超出一定的范围, 如超出范围可通知由单片机控制的报警电路报警。其电机模块电路图如图3 所示。
电路中所用的电机为无源电机, 所以需要电机的驱动电路, 考虑电机在加负载时速度会减慢, 设计电机的速度可调, 其调节范围为0~ 4 200 r/m in。电路中电机与角度编码器套在一起, 其转速v ( r/s ) 与角度编码器的输出脉冲频率f (Hz) 具有如下关系:
v = f/360 (2)
通过此对应关系利用单片机可测出电机的旋转速度并可送到数码管显示。同时利用设计的报警器可达到对电机旋转速度的监控。
1.5 LED 寻址驱动电路
LED 寻址驱动控制电路主要是利用FPGA 芯片EP1C3 来控制LED的专门驱动芯片BHL2000, 并且EP1C3 根据采集的角度编码器的输出脉冲数按时读取存储器中的三维图像数据, 然后传送给BHL 2000, 从而来驱动LED 屏的列显示。同时, FP2GA 又将行扫描信号输出经后级放大来驱动L ED 屏的行显示, 其具体的原理框图如图4 所示。
由于LED屏在旋转的过程中会造成亮度损失,所以FPGA 的行扫描信号输出需经过74HC245和UDN2981 的放大, 这样行信号输出最大电流可达到500 mA。此外,BHL 2000 属于灌电流型器件且每个数据输出端电流可达到80 mA , 可直接驱动L ED 显示。驱动电路中的存储器选择STC62WV 5128, 其容量为512 k×8 b it, 而本系统一幅三维图像的数据量为6715 k×8 b it, 所以选择STC62WV 5128 是足够的。
值得说明的是, EP1C3 对BHL 2000 的写数据是在BHL 2000 写入时钟WR 的驱动下, 数据从D in02D in7 输入, 在内部移位寄存器中串行移位16 次后,由级联口SHO02SHO7移出。同时BHL 2000 行、场控制信号HS、VS确定数据在存储器中的存储位置, 最多可存8×16×32 个字节。此外,BHL 2000 的输出行、场控制信号HCL K 和CLR 确定取数位置, 在读出时钟CLK控制下进行灰度调制, 输出脉宽信号O02O15, 从而驱动LED显示屏。
2 软件设计
设计的主要原理是在逐行扫描信号的驱动下,在每次行扫描信号来临时, 送出8 位的列数据, 电机每旋转2°的时间内, FPGA 一直扫描同一幅切面图像数据, 然后每旋转两度后就刷新扫描另一幅切面图像数据, 值得注意的是, 每一行扫描信号后面要加一个消隐信号, 即再显示下一行数据时要把前一行L ED 灯关掉, 否则会产生串扰, 图5 所示即为加消隐信号后的16 个行扫描信号。
3 分析与讨论
本文根据人眼所具有的视觉暂留特性及L ED高速发光特性实现了一套基于旋转24×16 二维LED 屏, 具有69120个体像素, 空间尺寸为Φ9414mm ×6618 mm 的体三维显示系统。从对此系统中的三维数据获取、数据的无线传输、电机旋转角度值的获取以及L ED 屏的寻址驱动电路等模块的分析和讨论来看, 本系统具有可行性高、技术实现容易、系统简单和便于控制等特点。图6 所示为根据本系统显示的“茶壶”, 从图中可以看出显示的三维效果。
当然, 从图中也可以看出本系统的LED 阵列尺寸还比较小,LED 灯排列还不够密, 其横向和纵向间距为412 mm。此外, 本系统也存在数据传输速度限制、不能实时显示以及亮度均匀性控制等问题, 但这同时也为以后实现更高质量的三维显示提供了努力的方向。体三维显示也将在包括科学可视化、虚拟现实、数字娱乐、空中交通控制、核磁共振成像、三维流体分析在内的很多领域有着广泛的应用前景。