在论坛上看到有Freescale赞助的智能小车大赛,好像是地面上有一条黑色的轨道线,请设计一辆可按轨道自动前进的小车。
参加竞赛的朋友第一想法就是要让小车能自动识别黑色的轨道,这个想法是对的,不过后面的想法就不一定是简洁有效了,通常都会想到装一个摄像头,然后让程序从图像中识别出轨道线,进而控制小车的运转。不能说这种处理方法不对,如果从系统设计和程序编写来说,如果一个新人从头到尾做下来,相信能力会得到很大的提升,今天我要说一个简单的方法,完全不需要如此复杂的系统和程序,甚至不用单片机都可以实现。
许多年前我们做过一个类似的样板,不过并不是我们自己想的方法,是在一本书上找到的。在车头的两侧分别装一个光敏三极管,用套管封好后感应面向下,两路光敏管的输出接为一个比较器的两路输入,比较器的输出用来来驱动一侧的车轮,反相后又用来驱动另外一侧的车轮。
图一 简单自动寻轨小车电路示意图
从图一我们可以看出,如果右侧光敏管的输出电压大于左侧,比较器就会输出高电平,此时右侧马达转动,左侧停止,反之是左侧转动右侧停止。
图二 小车工作状态示意图
图二a左右两个光敏管的输出相近,此时左右两个车轮会被随机驱动;图二b因为右侧光敏管下面为浅色,左侧光敏管下面为黑色,所以右侧光敏管输出幅度大,右轮被驱动,小车前进的同时车头向左侧转;图二c和b的情况刚好相反,当从b状态转化成c状态后小车就会反相转。这样小车就会车头左右摆动,同时顺着黑色的轨迹自动前进,只是要防止车速过快冲出轨道。
这样我们不用单片机就实现了小车自动寻轨的功能,如果再用一个简单的单片机对光敏信号进行更细致的处理,只要简单的程序就可以实现各种控制。
说完智能小车再说另外一个有点关联的应用,智能小车可以理解成最简单的颜色识别,通过黑白两种颜色来判断轨道,接下来我会讲一种更精细的颜色测量方法,同样我们不需要利用摄像头。
还是利用光敏管,但这次直接用光敏管会存在问题,不同的颜色有可能反射的光强度一致,比如浅红和浅绿光敏管输出电压就有可能一样,这样就有许多颜色无法识别。我们知道一个物体,对于不同颜色的光吸收效果不同,同样反射效果也不同,比如红色的物体,对于红色的光反射最强,比较少吸收,其它颜色的光则吸收得厉害一些。如果我们利用这一特性,就有可能利用光敏管进行精确的颜色识别。
假设我们用红绿蓝三种颜色的分别照射被测物,根据三原色原理可知不同颜色的物体对这三种光的吸收反射效果不同,红色物体主要反射红色,绿色反色绿色,蓝色反射蓝色。如果在这三种颜色照射被测物的同时用光敏管测反射光强度,实际上就间接的测出了被测物三原色的成分(电压幅度与颜色分量不是1:1线性关系,但趋势一致),这样就实现了颜色的精确识别。
以前我们的实验即便是超过一百种颜色的标准色卡,都可以分毫不差的识别出来,当然这是在自我矫正之后才达到的效果。实际应用需要考虑发光二极管的发光强度具有较大的离散性,每一套都需要提前进行自我矫正,并将矫正数据保存在课保持存储器中。另外蓝色发光二极管价格昂贵,建议改用红绿黄或橙黄绿。
也许,有些时候并不一定需要很复杂的方法就能实现你的想法。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。