游标码光电角度编码器原理教育八讲(三)
一、脉冲式相对编码器早期的机械鼠标采用的是齿状塑料码盘码盘两侧是发光管和接收管这种光电管无法输出精度较高的sin/cos信号只能将光电管的输出信号输入比较器形成矩形的脉冲信号也就是说无法将光电管的输出信号当成sin/cos模拟量来使用只能当成数字量来使用转轴上的码盘有多少条齿状缝隙转轴旋转一周360度就输出多少个矩形信号脉冲我们就称这种编码器为多少线的编码器。假设转一圈编码器输出1024个矩形脉冲也就称为1024线编码器。此时转轴每转过0.3515625度编码器输出一个矩形脉冲如果当前输出脉冲是高电平转轴不转就一直输出高电平如果当前输出脉冲是低电平转轴不转就一直输出低电平。码盘上的齿状缝隙越多也就代表着编码器的解析度分辨率越高但是齿状的塑料码盘由于加工技术的限制齿状缝隙的数量很有限。因此为了提高编码器的解析度线数码盘开始采用玻璃材质通过镀膜技术在玻璃码盘上可以刻出近千条刻度线。但是增加刻线也是有物理限制的通常对于直径比较小的码盘能刻出近万条刻度线已经是接近极限了。为了更多地提高编码器的解析度这个时候就出现了所谓的脉冲细分技术转轴匀速运转的时候脉冲的宽度是一致的MCU的主频时钟是很高的可以利用MCU的主频时钟在编码器输出一个脉冲的时间内插入10倍或是更多倍数的脉冲称为倍频技术倍频技术又分锁相和锁频2种例如转轴均匀转动时正常的光电信号输出一个脉冲的时间是1ms利用MCU的主频时钟每隔0.1ms就输出一个脉冲这样原来1千条刻度线的编码器就输出了1万个脉冲好像有1万个刻度线似的。转轴匀速运转的时候这种脉冲细分技术是可以提高编码器的分辨率。但是转轴加减速运转时这种脉冲细分技术得到的编码器角度就有了很大的误差。这种编码器如果转轴不转动就没有输出信号。而且编码器刚上电的时候我们并不知道转轴当前所处的角度只有编码器输出的脉冲信号发生跳变了我们才知道转轴转过了一个脉冲分辩率的角度。通过脉冲计数我们只能知道转轴相对之前转过了多少度我们不知道转轴当前的绝对角度因此这种编码器才称为相对编码器。为了知道转轴当前的绝对角度相对编码器在码盘上增加了一个信号转轴转一圈只输出一个脉冲用这个脉冲信号的上升沿我们称这个信号为Z脉冲表示转轴的0度然后用存储器记下脉冲信号的计数。当0度的脉冲信号上升沿到来之时存储器清零后面根据存储器的脉冲计数就可以计算出转轴当前的绝对角度。但是这种编码器一但断电之后再重新上电角度信息就丢失了而且上电之后如果不转动一下得到Z脉冲也无法计算出绝对角度。因此早期的扫描仪、打印机一上电初始化的时候会转动一会儿再停下来就是为了让转轴转动找到Z信号脉冲的上升沿将存储器清零这样才能计算出来后面转轴的绝对角度。二、正交信号AB脉冲上面说找到Z信号脉冲的上升沿将存储器清零然后用存储器记下脉冲信号的计数就能得到转轴当前的绝对角度。这里其时有个问题转轴只有一直朝一个方向转动才可以得到转轴的绝对角度如果转轴在一圈之内一会儿正转一会儿反转编码器无法得出转轴正确的绝对角度。必须区分出转轴的转动方向才能得出转轴正确的绝对角度。为了判断转轴当前是在正转还是反转因此我们需要再增加一个脉冲信号这2个脉冲信号其中1个脉冲信号在另1个脉冲信号的中间发生跳变我们称为正交脉冲信号也称为编码器的AB脉冲当A脉冲信号是高电平B脉冲信号从低电平跳变到高电平转轴就是正转当A脉冲信号是高电平B脉冲信号从高电平跳变到低电平转轴就是反转。这样我们就能正确判断转轴是正转还是反转就能通过/-脉冲信号计数得出转轴正确的绝对角度。三、多圈计数方法如果转轴转动一圈至少产生一对正交的AB脉冲信号就可以计数得出转轴转动的圈数。得到圈数的AB正交脉冲可以在码盘上增加一对正交的MTA/MTB光栅轨道也可以利用一对磁极的磁铁和互成90度的开关霍尔元件来得到圈数的正交脉冲信号当施加在开关霍尔元件上的磁场强度是正的假设是磁铁的北极N超过一定的磁场强度开关霍尔的输出引脚会有一个从高电平到低电平的下降沿当施加在开关霍尔上的磁场强度换成是负的假设是磁铁的南极S超过一定的磁场强度开关霍尔的输出引脚会有一个从低电平到高电平的上升沿。开关霍尔的电气特性图如下假设我们把MTA或是开关霍尔A的信号状态标识为高位的0或1MTB或是开关霍尔B的信号状态标识为低位的0或1转轴转动一圈就有4种状态00、01、11、10类似于格雷编码每次只有一个状态位变化转轴正转的时候4种状态的变化顺序是00→01→11→10→00→01→11→100→1→3→2→0→1→3→2转轴反转的时候4种状态的变化顺序就是00→10→11→01→00→10→11→01→000→2→3→1→0→2→3→1记下上次的状态和这次的状态每次状态变化的时候圈数变量就1或是-1圈数变量÷4取整数就是最后的转轴的转动圈数了。四、4种状态的采样间隔假设转轴的转速是6000RPM也就是转轴转动一圈的时间是6000÷60s100rps转轴1秒转动100圈转轴的转动频率是100Hz一圈有4个信号状态所以信号状态的频率fs就是400Hz1000ms÷100round10ms每圈有4个状态每个状态的周期时间T就是10ms÷42.5ms也就是fs的倒数T1/fs也就是对每种状态的采样间隔时间应该要小于2.5ms否则可能就有一个信号状态没有记录到而无法正确计算转轴转动的圈数。根据香农采样原理采样频率最好是信号频率的2倍也就是说1.25ms采样频率800Hz采样一次是最妥当的。编码器必须是一直有电的状态才能计算保存得到的转轴圈数一但在掉电的状态下转轴转动超过1/4圈转轴圈数就无法正确计算重新上电之后编码器的圈数就会丢失出错。为了在没有电的状态下也能正确计算转轴转动的圈数由于游标码光电编码器一上电就可以得到当前转轴位置的绝对角度因此掉电的状态下可以不用计算一圈内的角度因此给编码器加上电池编码器掉电的状态下使用电池进行圈数的计算。对于使用光电池输出MTAMTB信号进行多圈计数的光编码器要输出MTAMTB信号LED灯要点亮光电池要工作MCU要工作需要的电量还是比较多的。如果使用很高的频率给LED通电获取MTAMTB信号来计算圈数电池的电量很快就会耗光了。考虑到编码器断电的时候只是一些外界振动或是外部的机械力量让转轴转动转轴的转动速度很慢因此可以适当降低MTAMTB信号的采样频率来节省电池电量如将采样频率降为400Hz或是300Hz大家可以计算一下400Hz或是300Hz的采样频率下能够正确进行多圈计数时转轴的最大转速可以是多少RPM。