角度传感器

  Aaron ·  2010-08-06 21:53  ·  16360 次点击
角度传感器,顾名思义,是用来检测角度的。它的身体中有一个孔,可以配合乐高的轴。当连结到RCX上时,轴每转过1/16圈,角度传感器就会计数一次。往一个方向转动时,计数增加,转动方向改变时,计数减少。计数与角度传感器的初始位置有关。当初始化角度传感器时,它的计数值被设置为0,如果需要,你可以用编程把它重新复位。
data/attachment/portal/201111/06/152250tzddm3mdmmz3tmyy.jpg角度传感器
通过计算旋转的角度,你可以很容易的测出位置和速度。当在机器人身上连接上轮子(或通过齿轮传动来移动机器人)时,可以依据旋转的角度和轮子圆周数来推断机器人移动的距离。然后就可以把距离转换成速度,你也可以用它除以所用时间。实际上,计算距离的基本方程式为:
距离=速度×时间
由此可以得到:
速度=距离/时间
如果把角度传感器连接到马达和轮子之间的任何一根传动轴上,必须将正确的传动比算入所读的数据。举一个有关计算的例子。在你的机器人身上,马达以3:1的传动比与主轮连接。角度传感器直接连接在马达上。所以它与主动轮的传动比也是3:1。也就是说,角度传感器转三周,主动轮转一周。角度传感器每旋转一周计16个单位,所以16*3=48个增量相当于主动轮旋转一周。现在,我们需要知道齿轮的圆周来计算行进距离。幸运地是,每一个LEGO齿轮的轮胎上面都会标有自身的直径。我们选择了体积最大的有轴的轮子,直径是81.6CM(乐高使用的是公制单位),因此它的周长是81.6×π=81.6×3.14≈256.22CM。现在已知量都有了:齿轮的运行距离由48除角度所记录的增量然后再乘以256。我们总结一下。称R为角度传感器的分辨率(每旋转一周计数值),G是角度传感器和齿轮之间的传动比率。我们定义I为轮子旋转一周角度传感器的增量。即:
I=G×R
在例子中,G为3,对于乐高角度传感器来说,R一直为16.因此,我们可以得到:
I=3×16=48
每旋转一次,齿轮所经过的距离正是它的周长C,应用这个方程式,利用其直径,你可以得出这个结论。
C=D×π
在我们的例子中:
C=81.6×3.14=256.22
最后一步是将传感器所记录的数据-S转换成轮子运动的距离-T,使用下面等式:
T=S×C/I
如果光电传感器读取的数值为296,你可以计算出相应的距离:
T=296×256.22/48=1580距离(T)的单位与轮子直径单位是相同的.
实际上,在程序不仅仅会用到乘法和除法的数学运算,还有更多的需要多留心(有关内容我们将在第12章进行进一步的讨论)。
使用角度传感器来控制你的轮子可以间接的发现障碍物。原理非常简单:如果马达运转,而齿轮不转,说明你的机器已经被障碍物给挡住了。此技术使用起来非常简单,而且非常有效;唯一要求就是运动的轮子不能在地板上打滑(或者说打滑次数太多),否则你将无法检测到障碍物。如果是一个空转的齿轮连接到马达上就可以避免这个问题,这个轮子不是由马达驱动而是通过装置的运动带动它:在驱动轮旋转的过程中,如果惰轮停止了,说明你碰到障碍物了。
在许多情况下角度传感器是非常有用的:控制手臂,头部和其它可移动部位的位置。值的注意的是,当运行速度太慢或太快时,RCX在精确的检测和计数方面会受到影响。事实上,问题并不是出在RCX身上,而是它的操作系统,如果速度超出了其指定范围,RCX就会丢失一些数据。SteveBaker用实验证明过,转速在每分钟50到300转之间是一个比较合适的范围,在此之内不会有数据丢失的问题。然而,在低于12rpm或超过1400rm的范围内,就会有部分数据出现丢失的问题。而在12rpm至50rpm或者300rpm至1400rpm的范围内时,RCX也偶会出现数据丢失的问题。

0 条回复

暂无讨论,说说你的看法吧!

 回复

你需要  登录  或  注册  后参与讨论!