咱们想把轮子转一圈这个动作,变成一串能算的数字,就得靠这个叫增量式光电编码器的东西。它里面有一个盘,上面刻了好多一样宽的透光缝。把LED光打过去,光线穿过这些缝,就会被切成一明一暗的光斑。旁边的光敏二极管一看见这些光斑,就会输出高低电平,转一圈就有多少个脉冲出来。 为了知道从哪儿开始数,工程师特意在盘边上留了条零位标记槽。只要这个槽转到了底下,系统就能把这儿当成起点。要想知道是顺时针还是逆时针转,大家通常会用两个接收器,一个管正弦波,一个管余弦波。这两套信号在同一圈里是差了90度相位的,电子电路一比较相位差,就能判断方向。 虽然编码器本身是测角位移的,但咱们可以通过装个齿轮齿条或者滚珠螺母丝杠这种机械装置,把直线的小移动变成旋转的小移动。这样一来,原本的角分辨率就能直接变成直线分辨率。不过得注意机械部分的背隙和重复定位精度,不然精度上会吃亏。 精度到底由谁定?这得看码盘上有多少条条纹。计算公式就是360度除以条纹数。比如说条纹数是1024条,算下来分辨率就是0.325度,连半度的转动都能认出来。要是想让分辨率再高点儿,可以在光路上加个固定光栅或者小狭缝,限制一下光敏二极管的视野范围。这样光斑只落在几个槽孔宽的地方,“看得见”的条纹数翻了倍,分辨率自然也就上去了。 方向怎么判呢?还是得看那90度的相移。顺时针转的时候A信号先于B信号出现;逆时针转的时候就是B领先A。通过电子电路把这个相位差转成高低电平的组合代码,就能让人一眼看出往哪个方向走。系统一边数着脉冲一边输出方向码,既能告诉咱们走了多少距离(是增加还是减少),也能提供完整的轨迹信息供后面的算法用。