用静态GMOS存储器组成的眼睛
在固态盘(CCD和CMOS)的摄像机和数码相机变得很普遍以前的长时间中,机器人实验者惯于使用CMOSRAM(随机存储器),用改造后的芯片当作他们的多元件眼睛。绝大部分半导体对光是敏感的。包括存储芯片内部的存储矩阵。通过使用静态存储器,你能够使芯片的接口有简单的了解。实际上.你要做的只是连接地址和数据线到你的电脑或微处理器的芯片上。
有时你能找到一些已经被改成视觉传感器的静态CMOS芯片。如果找不到,可以自己用诸如1K×4位的的存储芯片2114来做一个。需要找那种陶瓷外壳。并且焊有金属盖的芯片。
需要揭开金属盖子才能够看清芯片内部的半导体管芯。揭开金属盖子的最好方法是用一个瓦斯喷灯。用一个金属钳来保护芯片,并且要密切留意盖子上的火焰变化。5到10秒钟后,焊点就会熔化。迅速移开火焰。并始终不停地滑动盖子。注意不要碰到芯片的内芯或芯片里面的连线,否则可能会毁坏它。
下图显示了一个去掉盖子后的静态随机存取存储器芯片。在芯片变凉之前。
小心不要碰到已拿开的金属盖和存储芯片。
下图是连接2114到BASICSTAMPLL微处理器的接线示意图,图中用到了10条地址线和全部4条输出线,四条输出线直接地接到LM308线性放大器上。连接2114的写允许线I/WE)到StartIp的管脚⑩,并且置芯片的片选端(/CS)为低电平。代码表.1中的程序是示范如何从芯片内部读出几个像素的。对每个你使用的存储地址你可以组织四条输入/输出线。尽管程序仅仅示范了0000000000基地址的使用,但是你可以推断出芯片所有存储地址的存取方法。输入线上的逻辑1(高)代表芯片处于高亮度。
代码表.1AO接4A1接5低电平WE;设置写入允许端为低电平,开始低电平AO;置全部地址线为低电平(地址00000000)在调试窗口显示数据的一段程序:repeat_loop:HIGI-1TWEdebLJgdecif~O,tab,dec,irl1,tab,dec,itl2,tab,dec,ir~3,crLOWWEpalJse150gotorepeat—loop:因为2114芯片是设计用于存储器,而不是提供视觉应用的,存储芯片内部结构对于提供视觉并不很理想(基本上是四个1K位的芯片矩阵)。任一给定地址的4个输出分别置于半导体管芯的不同部分。因此为了组成一张合用的图片,你需要组合四个输出端的扫描数据。
尽管2114芯片存储管芯的形状导致了视觉画面的不够理想。但仍可用于检测诸如反射激光或聚焦红外光的图案。你可以使用2114芯片来制造自己的高精度三角距离测量系统,像将在后面“空间漫步”一讲中所要讨论的夏普GP2D02芯片一样。
使用2114组成半导体视觉系统很便宜。且使用方便。但由于其灵敏度比较低,所以想要在暗光的条件下使用它们是不可能的。实际上,通过2114芯片扫描的场景是相当清楚的。但应该给芯片配置合适的镜头。不管是下一节要说明的单镜头还是像精密相机那样的多镜头,都是非常理想的。芯片显示动态范围很小。这意味着亮度发生微小变化时输出线就会突然变“高”。这使得2114及类似的存储芯片最好用于可以控制光照条件为高对比度的情况。
如果在低亮度的条件下使用你的机器人,推荐传统的CCD或CMOS的图像设备。可以产生数字输出给2114类型的芯片。你可以很容易将相机或图像芯片直接连到计算机或微处理器上。
在光敏传感器上使用透镜和滤光器
使用简单的透镜和滤光器可以极大地提高单元件和多元件视觉系统的灵敏度、定向性和效率。例如.在一串光电元件上面放置一个透镜,就可以聚集房间内的光线使得光电元件对人的运动和其它移动目标更为敏感。透镜不需要太复杂:只要一个直径为O.5到1英寸的放大透镜,新买的或二手的都可以。
也可以用光学滤波器来提高光电元件的性能。滤光器功能是允许某一特定波长的光通过,而其它波长的光却不能通过。CdS光敏电阻倾向于对大范围可见光和红外线敏感。可以通过在光敏电阻上放置彩色凝胶或其它滤光器来突出对某一颜色的倾向。
在这一节中将简单地回顾透镜和滤光器的作用,并介绍如何与光电元件一起为的机器人服务。
一、透镜的使用
透镜由折射率高的光介质组成,光透过它时以特定的方式弯曲。对特定的应用的透镜的选择有两个重要的因素:
透镜的焦距和直径。
焦距:简单地说。透镜焦距是透镜和焦点【光线投射到的共同点l间的距离。
(实际上。这只在‘凸’透镜有效,‘凹’透镜的表现几乎相反,如后面所述)透镜直径:透镜直径取决定了收集光线的能力。透镜越大,它收集的光线越多。
下图列出了六种主要的透镜。根据透镜各面有平凸和两面凸等类型。平凸透镜是一面平坦的。而另一面弯曲。两面凸透镜则两面都弯曲的。透镜的焦距可正可负。这取决于透镜本身的设计。
透镜可以形成两种图像:实像和虚像。实像是由于光线聚焦在透镜前面而形成的,例如太阳光聚集在一张白纸上而形成的圆盘图像。
虚像则不是由离散的光线形成的。
当把一个透镜看成一个放大镜时。会在透镜的后面看到一个虚像。正透镜可以放大目标的面积,不管是实像还是虚像。它们的焦距用用正数来表示,如+1,+2.5。负透镜缩小目标的大小,仅仅可以产生虚像,它们的焦距用负数来表示。
透镜经常可以在储藏的旧物品中找到,当然不能保证能得到什么样的。
对机器人视觉应用来说。直径在O5英寸到1.25英寸的平凸镜或双面凸透镜是比较理想的。焦距应该比较小,1到3英寸。我们买某种透镜的时候会被告知透镜的直径和焦距,如果他们没有提供。则可以用卷尺测量透镜的直径和它的焦距(如下图)。测量要用除了太阳以外的其他点光源(将太阳光聚集在一点上可能引起火灾)。
为了使用透镜。要用便捷的安装技术将它安装在光电元件上。一种方法是将透镜粘在一个塑料或木制的透镜板上。或者,如果透镜的直径合适。可以将它安装在长度很短的PVC塑料管里;管的另一端连接到光电元件上。确保遮蔽掉所有杂散的光线,可以用黑色的纸遮光。使得机器人只能看见穿过透镜的光线。如果喜欢。可以在光电元件上装一个滤光片。用胶水将滤光片粘在合适的位置。
以下图为例,在每四个一组的光敏电阻前放置一个透镜。就可以制造一种双眼机器人。透镜被放置在光敏电阻前面。这对于四个一组的两组电路板是安全的。在一个项目中我使用了8个集成在一起的微型光敏电阻。这些元件直径大约1/8英寸,虽然难于使用(无法焊接到的电路中),但它们的小体积对于组成紧凑的多单元视觉系统是很理想的。
八个元件中的每一个分别连到一个八输入端的模数转换器芯片独立的输入口。通过使用八输入的模数转换器,八个元件的值可以容易的被感觉到,不需要独立的模数转换器芯片和额外的连线。
二、使用滤光器滤光器
允许通过一定波长的光线而阻隔其他的光线。通常用在机器人设计中的滤光器让红外射线通过而阻隔可见光。这样的滤光器通常用在光电晶体管和光电二极管前面。来阻隔不想要的环境光线。只有红外线【例如,从激光管发出的)被允许经过并照射到传感器。光学滤光器有三种常见形式:有色凝胶,干涉片,分光镜。
●有色凝胶滤光器是通过混合颜料到聚酯或塑料基质中形成的。好的凝胶滤光器使用的颜料在制造过程中是精确控制的,因此只能通过某种颜色光。根据使用的颜料,滤光器能够通过某种特定的波长。好的凝胶滤光器的带宽有40—60纳米。考虑到可见光的频率范围从400到600 nm多一点。50纳米的平均带宽范围大约是可见光的15%c.几乎等于基本的六色彩虹中的一种颜色。
●干涉滤光器由几种电介质有时还有金属层组成,每层阻挡一种特定波长,一层阻挡低于500纳米的光线,另一层阻挡高于550纳米的光线。使500—550纳米之间的波段可以通过滤波光器。干涉滤光器可以做成仅让很小的波长范围内的光通过。